引言(Introduction)#
Soft Actor-Critic (SAC) 是一种基于最大熵强化学习的 Off-Policy(离线策略) 算法,于 2018 年提出。
SAC 的前身是 Soft Q-learning (SQL)。相比于 SQL 需要复杂的采样过程,SAC 引入了 Actor-Critic 架构,使其训练更加稳定且高效。SAC 在各类 Benchmark 及真实机器人任务中表现出色,以其极强的抗干扰能力和对超参数的鲁棒性著称,是现代深度强化学习的基石算法之一。
最大熵强化学习 (Maximum Entropy RL)#
熵的定义#
熵 (Entropy) 表示对一个随机变量的随机程度的度量。如果 X 是一个随机变量,它的概率密度记为 p,那么它的熵 H 定义为:
H(X)=Ex∼p[−logp(x)]=−∫xp(x)logp(x)dx
在强化学习中,可以使用 H(π(⋅∣s)) 来表示策略 π 在状态 s 下的随机程度。
目标函数#
最大熵强化学习(maximum entropy RL)的思想是除了最大化累计奖励,还要使得策略更加随机。如此,强化学习的目标中加入了一项熵的正则项,定义为:
πMaxEnt∗=argπmaxEπ[t=0∑∞r(st,at)+αH(π(⋅∣st))]
其中,α 是一项正则项系数,用来权衡熵的重要程度。
SAC 算法加入熵正则项,有利于增加强化学习算法的探索,α 越大,探索性越强,有助于加速策略的学习,降低策略陷入局部最优的可能性。
基于能量的模型 (Energy-Based Model, EBM)#
基于能量的模型(Energy-Based Model,EBM)是一类基于统计物理学原理的概率模型,通过能量函数为每个可能的状态分配一个标量能量值,低能量区域对应高概率区域。在强化学习中,EBM 将状态-动作对 (s,a) 映射到能量值 E,从而表示策略分布,定义为:
π(a∣s)=Z(s)exp(−E(s,a))
其中,Z(s)=∫Aexp(−E(s,a))da 是配分函数,负责归一化能量值以形成有效的概率分布。
Soft 策略迭代 (Soft Policy Iteration)#
Soft 贝尔曼方程#
Vsoftπ(s)=Ea∼π(⋅∣s)[Qsoftπ(s,a)−αlogπ(a∣s)]=Ea∼π(a∣s)[Qsoftπ(s,a)]+αH(π(⋅∣s))
Qsoftπ(s,a)=r(s,a)+γEs′∼p(⋅∣s,a)[Vsoftπ(s′)]
Soft 策略评估 (Soft Policy Evaluation)#
在 SAC 算法中,Soft 价值函数定义为:
Vsoftπ(s)≜Ea∼π(⋅∣s)[Qsoftπ(s,a)−αlogπ(a∣s)]
Soft 动作价值函数定义为:
Qsoftπ(s,a)≜r(s,a)+γEs′∼p(⋅∣s,a)[Vsoftπ(s′)]
动作价值函数的 Soft 贝尔曼迭代算子定义为:
TπQsoftk(s,a)≜r(s,a)+γEs′∼p(⋅∣s,a)[Vsoftk(s′)]≜r(s,a)+γEs′∼p(⋅∣s,a)[Ea′∼π(⋅∣s′)[Qsoftk(s′,a′)−αlogπ(a′∣s′)]]
Soft 策略评估定理:基于上述的算子 Tπ 以及初始化的映射 Qsoft0:S×A→R,且 ∣A∣<∞,Qsoftk+1=TπQsoftk。那么当 k→∞ 时,序列 {Qsoftk} 会收敛至 Qsoftπ。
接下来证明这是一个压缩映射。文章重新定义了奖励 rπ(s,a):
rπ(s,a)≜r(s,a)+Es′∼p(⋅∣s,a)[H(π(⋅∣s′))]
迭代式可以重写为:
TπQsoftk(s,a)≜rπ(s,a)+γEs′∼p(⋅∣s,a),a′∼π(⋅∣s′)[Qsoftk(s′,a′)]
在算法中,我们假设 ∣A∣<∞,那么 rπ(s,a) 就是有界的,那么只需要证明此不等式:
TπQsoftN(s,a)−TπQsoftM(s,a)∞≤kQsoftN(s,a)−QsoftM(s,a)∞,∃k∈(0,1)
左式化简为:
TπQsoftN(s,a)−TπQsoftM(s,a)=γEs′∼p(⋅∣s,a),a′∼π(⋅∣s′)[QsoftN(s′,a′)−QsoftM(s′,a′)]≤γEs′∼p(⋅∣s,a),a′∼π(⋅∣s′)[QsoftN(s′,a′)−QsoftM(s′,a′)]≤γEs′∼p(⋅∣s,a)[a′∈AmaxQsoftN(s′,a′)−QsoftM(s′,a′)]≤γs′∈S,a′∈AmaxQsoftN(s′,a′)−QsoftM(s′,a′)
最终可以得出:
s∈S,a∈AmaxTπQsoftN(s,a)−TπQsoftM(s,a)≤γs′∈S,a′∈AmaxQsoftN(s′,a′)−QsoftM(s′,a′)
其中,折扣因子 γ∈(0,1),可以证明 Tπ 是压缩映射。
Soft 策略提升 (Soft Policy Improvement)#
Soft 策略提升定理:对于任意 πold∈Π,并以下式优化 πnew。假设 ∣A∣<∞,那么对于 ∀(s,a)∈S×A,有 Qsoftπnew(s,a)≥Qsoftπold(s,a)。
πnew(⋅∣s)=argπ′∈ΠminDKL(π′(⋅∣s)Zπold(s)exp(α1Qsoftπold(s,⋅)))
其中 Zπold(s) 是配分函数,负责归一化分布。
定义 J(π(⋅∣s);πold) 为:
J(π(⋅∣s);πold)=DKL(π(⋅∣s)Zπold(s)exp(α1Qsoftπold(s,⋅)))=∫aπ(a∣s)logexp(α1Qsoftπold(s,a)−logZπold(s))π(a∣s)da=Ea∼π(⋅∣s)[logπ(a∣s)−α1Qsoftπold(s,a)+logZπold(s)]
那么对于 πold 和 πnew,满足 J(πnew(⋅∣s);πold)≤J(πold(⋅∣s);πold),即:
Ea∼πnew(⋅∣s)[logπnew(a∣s)−α1Qsoftπold(s,a)+logZπold(s)]≤Ea∼πold(⋅∣s)[logπold(a∣s)−α1Qsoftπold(s,a)+logZπold(s)]
Zπold(s) 与 a 无关,相约后得:
Ea∼πnew(⋅∣s)[logπnew(a∣s)−α1Qsoftπold(s,a)]≤Ea∼πold(⋅∣s)[logπold(a∣s)−α1Qsoftπold(s,a)]
化简为:
Ea∼πnew(⋅∣s)[Qsoftπold(s,a)−αlogπnew(a∣s)]≥Ea∼πold(⋅∣s)[Qsoftπold(s,a)−αlogπold(a∣s)]=Vsoftπold(s)
接下来证明 Qsoftπnew(s,a)≥Qsoftπold(s,a),我们利用上式进行迭代展开:
Qsoftπold(s,a)=r0+γEs1∼p(⋅∣s,a)[Vsoftπold(s1)]≤r0+γEs1∼p(⋅∣s,a)[Ea1∼πnew(⋅∣s1)[Qsoftπold(s1,a1)−αlogπnew(a1∣s1)]]=r0+γEs1∼p(⋅∣s,a)[Ea1∼πnew(⋅∣s1)[r(s1,a1)+γEs2[Vsoftπold(s2)]+αH(πnew(⋅∣s1))]]⋯≤t=0∑∞γtE(st,at)∼ρπnew[r(st,at)+αH(πnew(⋅∣st))]=Qsoftπnew(s,a)
证明完毕。
Soft 策略迭代定理#
假设 ∣A∣<∞,对于任意 π∈Π,重复应用 Soft 策略评估和 Soft 策略提升,会收敛到 π∗,使得对于任意 π∈Π 以及 (s,a)∈S×A,都有 Qsoftπ∗(s,a)≥Qsoftπ(s,a)。
证明过程:
令 πi 为第 i 轮迭代的策略,根据 Soft 策略迭代定理,序列 {Qsoftπi} 是单调递增的。对于任意 π∈Π, Qsoftπ 是有上界的(奖励与熵均是有界的),因此序列会收敛到某个 π∗,接下来需要证明 π∗ 是最优的。
在收敛时,必然满足:对于任意 π∈Π 且 π=π∗,都有 J(π∗(⋅∣s);π∗)<J(π(⋅∣s);π∗),即:
Ea∼π∗(⋅∣s)[logπ∗(a∣s)−α1Qsoftπ∗(s,a)]<Ea∼π(⋅∣s)[logπ(a∣s)−α1Qsoftπ∗(s,a)]
化简为:
Vsoftπ∗(s)>Ea∼π(⋅∣s)[Qsoftπ∗(s,a)−αlogπ(a∣s)]
接下来证明 π∗ 是最优的,即证明 Qsoftπ∗(s,a)>Qsoftπ(s,a):
Qsoftπ∗(s,a)=r0+γEs1∼p(⋅∣s,a)[Vsoftπ∗(s1)]>r0+γEs1∼p(⋅∣s,a)[Ea1∼π(⋅∣s1)[Qsoftπ∗(s1,a1)−αlogπ(a1∣s1)]]=r0+γEs1∼p(⋅∣s,a)[Ea1∼π(⋅∣s1)[r(s1,a1)+γEs2[Vsoftπ∗(s2)]+αH(π(⋅∣s1))]]>t=0∑∞γtE(st,at)∼ρπ[r(st,at)+αH(π(⋅∣st))]=Qsoftπ(s,a)
证明完毕。
算法实现#
在 SAC 算法中,我们为两个动作价值函数 Qsoft(参数分别 ω1 为和 ω2)和一个策略函数 π(参数为 θ)建模。基于 Double DQN 的思想,SAC 使用 Qsoft 两个网络,但每次用 Qsoft 网络时会挑选一个 Qsoft 值小的网络,从而缓解 Qsoft 值过高估计的问题。
动作价值函数 (Critic)#
任意一个函数 Qsoft 的损失函数为:
LQsoft(ω)=E(st,at,rt,st+1)∼R[21(Qsoftω(st,at)−(rt+γVsoftω−(st+1)))2]=E(st,at,rt,st+1)∼R[21(Qsoftω(st,at)−(rt+γEat+1∼πθ(⋅∣st+1)[j=1,2minQsoftωj−(st+1,at+1)−αlogπθ(at+1∣st+1)]))2]
其中,R 是策略过去收集的数据,因为 SAC 是一种离线策略算法。为了让训练更加稳定,这里使用了两个目标网络 Qsoftωj−。目标网络的更新方式是 Soft 更新:
ωj−←τωj+(1−τ)ωj−,j=1,2
策略函数 (Actor)#
接下来根据 Soft 策略提升定理中的 KL 散度来推导策略 πθ 的损失函数 Lπ(θ):
θ=argθminLπ(θ)=argθminEst∼R[DKL(πθ(⋅∣st)Z(st)exp(α1Qsoftω(st,⋅)))]=argθminEst∼R[Eat∼πθ(⋅∣st)[log(exp(α1Qsoftω(st,at))πθ(at∣st)Z(st))]]=argθminEst∼R,at∼πθ(⋅∣st)[logπθ(at∣st)−α1Qsoftω(st,at)+logZ(st)]=argθminEst∼R,at∼πθ(⋅∣st)[logπθ(at∣st)−α1Qsoftω(st,at)]=argθminEst∼R,at∼πθ(⋅∣st)[αlogπθ(at∣st)−Qsoftω(st,at)]=argθmaxEst∼R[Vsoftω(st)]
考虑到两个 Qsoftω 网络,损失函数写为:
Lπ(θ)=argθminEst∼R,at∼πθ(⋅∣st)[αlogπθ(at∣st)−j=1,2minQsoftωj(st,at)]
重参数化技巧 (Reparameterization Trick)#
对于连续动作空间的环境,策略输出 Gauss 分布的均值和标准差,但是 Gauss 分布采样动作的过程是不可导的。因此,我们使用了重参数化技巧。
重参数化的做法是先从标准的 Gauss 分布 N 进行采样,然后再将采样值乘以标准差后加上均值,如下:
at=fθ(ϵt;st)=μθ(st)+ϵtσθ(st),ϵ∼N(0,I)
这样就可以认为是从策略高斯分布采样,并且这样对于策略函数是可导的,损失函数写为:
Lπ(θ)=argθminEst∼R,ϵt∼N[αlogπθ(fθ(ϵt;st)∣st)−j=1,2minQsoftωj(st,fθ(ϵt;st))]
自动调整熵系数 (Automating Entropy Adjustment)#
在 SAC 算法中,如何选择熵正则项的系数非常重要。在不同的状态下需要不同大小的熵:在最优动作不确定的某个状态下,熵的取值应该大一点;而在某个最优动作比较确定的状态下,熵的取值可以小一点。
为了自动调整熵正则项,SAC 将强化学习的目标改写为一个带约束的优化问题:
argθmaxE(st,at)∼ρπθ[t=0∑∞r(st,at)]s.t.E(st,at)∼ρπθ[−logπθ(at∣st)]≥H0
将上述问题转化为 KKT(Karush-Kuhn-Tucker)条件下的约束问题:
argθminE(st,at)∼ρπθ[−t=0∑∞r(st,at)]s.t.H0−E(st,at)∼ρπθ[−logπθ(at∣st)]≤0
通过拉格朗日乘数法,转化为无约束问题,拉格朗日函数为:
L(θ,α)=E(st,at)∼ρπθ[−t=0∑∞r(st,at)]+α[H0−E(st,at)∼ρπθ[−logπθ(at∣st)]]
其中 α≥0 是拉格朗日乘数,将拉格朗日函数中与 α 相关的提取出来:
L(α)=Est∼R,at∼πθ(⋅∣st)[−αlogπθ(at∣st)−αH0]
即当策略的熵低于目标值 H0 时,训练目标 L(α) 会使 α 的值增大,进而在上述最小化损失函数 Lπ(θ) 的过程中增加了策略熵对应项的重要性;而当策略的熵高于目标值 H0 时,训练目标 L(α) 会使 α 的值减小,进而使得策略训练时更专注于价值提升。