基本思想

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

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

最大熵学习(MERL)

(1)H(p)=Exp[logP(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γtr(st,at)|s0=s,a0=a]Vπ(s)=E(st,at)ρπ[t=0γtr(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)=αlogexp(1αQsoft(s,a))da

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

解释:

xmax=max{x1,x2,,xn},则exmax<i=1nexii=1nexmax=nexmax

对以上不等式两边取log,得xmax<logi=1nexixmax+logn

误差logn与x无关,故

xmax/τ<logi=1nexi/τxmax/τxmax<τlogi=1nexi/τxmax+τlogn

τ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)=exp1αr(sT,aT)e

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

得到

π(aT|sT)=exp1αr(sT,aT)exp(1αr(sT,aT))daQ(st,at)=r(sT,aT)V(sT)=αlogexp[1αQ(sT,a)]da=exp1αQ(st,aT)exp1αV(st)=exp(1α(Q(sT,aT)V(ST)))

注:对于F[y]=abL(x,y(x),y(x))dx,该泛函取得极值的必要条件:LyxLy=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)]Emax

其中,V(st)=αlogexp(1αQ(st,at))dat

 

策略优化

(14)πnewat|st=exp1αQsoftπold(st,at)exp1α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