基本思想

最大熵强化学习的思想除了要最大化累积奖励,还要使得策略更加随机。而熵正则化增加了强化学习算法的探索程度,α越大,探索性就越强,能让策略尽可能随机,Agent可以更充分地探索状态空间S,避免策略早早落入局部最优点,并且可以探索到多个可行的方案完成指定任务,提高抗干扰能力。

SAC算法优势:基于能量的模型在面对多模态(multimodal)的值函数( Q(s,a) )时,具有更强的策略表达能力,而一般的高斯分布只能将决策集中在 Q 值更高的部分,忽略其他次优解。

最大熵学习(MERL)

熵

(1)H(p)=Ex∼p[−log⁡P(x)]

标准强化学习算法的目标

(2)πstd∗=argmaxπ∑tE(st,at)∼ρπ[r(st,at)]⟶找到能收集最多累计收益的策略

引入熵最大化的RL算法的目标

πmaxEntropy∗=argmaxπ∑tE(st,at)∼ρπ[r(st,at)+αH(π(⋅|st))]⟶从概率图模型推出,可参考SVI

思想来源于最大熵方法,好处:模型在匹配观察到的信息时,对未知的假设最少

soft value function & Energy based policy

原本的RL值函数

(3)Qπ(s,a)=E(st,at)∼ρπ[∑t=0∞γt⋅r(st,at)|s0=s,a0=a]Vπ(s)=E(st,at)∼ρπ[∑t=0∞γt⋅r(st,at)|s0=s]

根据目标函数(3),得到Soft value function(SVF)

(4)soft Q function: Qsoftπ(s,a)=E(st,at)∼ρπ[∑t=0∞γtr(st,at)+α∑t=1∞γtH(π(⋅|st))|s0=s,a0=a]
(5)soft V function: Vsoftπ(s)=E(st,at)∼ρπ[∑t=0∞γt⋅(r(st,at)+αH(π(⋅|st)))|s0=s]

soft Q function和soft V function的关系:

(6)Qsoftπ(s,a)=E(st,at)∼ρπ[∑t=0∞γtr(st,at)+α∑t=1∞γtH(π(⋅|st))|s0=s,a0=a]=E(st,at)∼ρπ[r(s0,a0)+∑t=1∞γt(r(st,at)+αH(π(⋅|st)))|s0=s,a0=a]=E(st,at)∼ρπ[r(so,a0)+γ⋅Vsoftπ(st+1)|s0=s,a0=a]
(7)Vsoftπ(s)=E(st,at)∼ρπ[∑t=0∞γt⋅(r(st,at)+αH(π(⋅|st)))|s0=s]=E(st,at)∼ρπ[∑t=0∞γtr(st,at)+α∑t=1∞γtH(π(⋅|st)+αH(π(⋅|s0)))|s0=s,a0=a]=Eat∼π[Qsoftπ(st,at)+α⋅H(π(⋅|s0))|s0=s]

Energy Based Policy (EBP,基于能量的策略模型)

为了适用更复杂的任务,MERL不再是以往的高斯分布形式,使用EBP表示策略:

(8)π(at|st)∝exp⁡(−ξ(st,at))⟶ξ是能量函数

为了让EBP与值函数联系起来,设定

(9)ξ(st,at)=−1αQsoft(st,at)

从而有

(10)π(at|st)∝exp⁡(1αQsoft(st,at))

soft Q-learning 中的策略评估和策略优化

策略评估

SAC中使用(6)(7)进行值迭代

soft Q-learning使用不同的值迭代公式

(11)Vsoft(s)=α⋅log⁡∫exp⁡(1αQsoft(s,a))da

log⁡∫exp相当于softmax,也是soft一词的由来,所以式(11)在离散情况下等价于V(s)=α⋅softmax1αQ(s,a)

解释:

记xmax=max{x1,x2,⋯,xn},则exmax<∑i=1nexi≤∑i=1nexmax=n⋅exmax

对以上不等式两边取log,得xmax<log⁡∑i=1nexi≤xmax+log⁡n

误差log⁡n与x无关,故

xmax/τ<log⁡∑i=1nexi/τ≤xmax/τ⇒xmax<τ⋅log⁡∑i=1nexi/τ≤xmax+τ⋅log⁡n

当τ→0时,误差也趋近于0

式(3)可以用策略梯度算法暴力求解,但通过将soft value function和Energy based policy联系起来,可以推出值迭代算法,根据式(3)整理出目标函数,并加入折扣因子:

(12)J(π)=∑t=0TγtE(st,at)∼ρπ[r(st,at)+α⋅H(π(⋅|st))]

现在的目标是调整输入π,使J最大化,由易到难,先解J的最后一项(t=T):

J(⋅|sT)=argmaxπ(⋅|sT)EaT∼π(⋅|sT)[r(sT,aT)+α⋅H(π(⋅|sT))]=argmaxπ(⋅|sT)∫[r(sT,aT)−α⋅log⁡π(aT|sT)]π(aT|sT)daT

对π(⋅|sT)求导,令导数为0,得

r(sT,aT)−α⋅log⁡π(aT|sT)−α=0⇒π(aT|sT)=exp⁡1αr(sT,aT)e

又由于π(aT|sT)是概略,所以∫π(a|sT)da=1

得到

π(aT|sT)=exp⁡1αr(sT,aT)∫exp⁡(1αr(sT,aT))da⟶此时Q(st,at)=r(sT,aT),V(sT)=αlog⁡∫exp⁡[1αQ(sT,a)]da=exp⁡1αQ(st,aT)exp⁡1αV(st)=exp⁡(1α(Q(sT,aT)−V(ST)))

注:对于F[y]=∫abL(x,y(x),y′(x))dx,该泛函取得极值的必要条件:∂L∂y−∂∂x∂L∂y′=0

进一步推广到通常情况,依然可得:

(13)π(at|st)=exp⁡(1α(Q(st,at)−V(ST))

得到soft Q-learning得值迭代算法:

V(sT+1)=0

for t=T to 0:

Q(st,at)=r(st,at)+γEp(st+1|st,at)[V(st+1)]⟶不是人为控制得,所以用E,而不是max

其中,V(st)=αlog⁡∫exp⁡(1αQ(st,at))dat

 

策略优化

(14)πnewat|st=exp⁡1αQsoftπold(st,at)exp⁡1αVsoftπold(st)

soft Q-learning(SQL)存在的问题及解决方法

参考资料

#Feliks SAC(Soft Actor-Critic)阅读笔记 https://zhuanlan.zhihu.com/p/85003758

张伟楠 沈键 俞勇 《动手学强化学习》 人民邮电出版社

Pytorch深度强化学习4. SAC中的Squashed Gaussian Trick - 0xAA的文章 - 知乎 https://zhuanlan.zhihu.com/p/138021330