基本思想最大熵学习(MERL)soft value function & Energy based policy原本的RL值函数根据目标函数(3),得到Soft value function(SVF)soft Q function和soft V function的关系:Energy Based Policy (EBP,基于能量的策略模型)soft Q-learning 中的策略评估和策略优化策略评估策略优化soft Q-learning(SQL)存在的问题及解决方法参考资料
最大熵强化学习的思想除了要最大化累积奖励,还要使得策略更加随机。而熵正则化增加了强化学习算法的探索程度,
SAC算法优势:基于能量的模型在面对多模态(multimodal)的值函数( Q(s,a) )时,具有更强的策略表达能力,而一般的高斯分布只能将决策集中在 Q 值更高的部分,忽略其他次优解。
熵
标准强化学习算法的目标
引入熵最大化的RL算法的目标
思想来源于最大熵方法,好处:模型在匹配观察到的信息时,对未知的假设最少
为了适用更复杂的任务,MERL不再是以往的高斯分布形式,使用EBP表示策略:
为了让EBP与值函数联系起来,设定
从而有
SAC中使用(6)(7)进行值迭代
soft Q-learning使用不同的值迭代公式
相当于softmax,也是soft一词的由来,所以式(11)在离散情况下等价于 解释:
记
,则 对以上不等式两边取
,得 误差
与x无关,故 当
时,误差也趋近于0
式(3)可以用策略梯度算法暴力求解,但通过将soft value function和Energy based policy联系起来,可以推出值迭代算法,根据式(3)整理出目标函数,并加入折扣因子:
现在的目标是调整输入
对
又由于
得到
注:对于
,该泛函取得极值的必要条件:
进一步推广到通常情况,依然可得:
得到soft Q-learning得值迭代算法:
for t=T to 0:
其中,
策略评估时,根据式(11),对动作求积分,这个操作在连续空间不可能实现
解决方法:采样+importance sampling 以近似V的期望,即:
其中,q是用于采样的分布,初期随即均匀采样,后期根据policy采样。
基于能量的模型式难以处理的
策略函数可以用值函数表示成EBP,却无法用它来采样(即可以算出
算法的作者使用近似推理,如马尔科夫链蒙特卡洛,同时为了加速推理,使用了SVGD训练的推理网络生成近似样本,然后利用KL散度来缩小代理策略
在SAC中,算法作者放弃了使用softmax来直接求V函数的值(即式11)
方法一:只打算维持一个值函数Q,即式(6):
方法二:同时维持V、Q两个函数,即式(6)(7)
SAC中的理想策略依然是式(10)的EBP形式,不过因为EBP的采样问题依然存在,只能利用一个高斯分布
其中
Z函数取代了式14中的
作者证明了式15可以像式14一样保证策略的优化。
交替执行策略评估和策略优化将收敛到最优的值函数和最优策略
根据式(6),Q的损失函数:
其中
策略
同样,这里的
因为高斯分布采样的过程不可导,由
即先从一个单位高斯分布
此外,最后包含Z的那一项不受
最终:
其中
在初版的SAC中作者表示同时维护两个值函数可以使训练更稳定,不过在第二版中,作者引入自然调整温度系数
,使得SAC更稳定,于是就只保留了Q函数。
锦上添花的trick: double Q network,target work
前文提到过,温度系数
作者将其构造为一个带约束的优化问题:最大化期望收益的同时,保持策略的熵大于一个阈值。为了自动调整熵正则化项,SAC将强化学习的目标改为一个带约束的优化问题:
其中,
最终得到关于
即当策略的熵低于目标值
action从正态分布中得到,则动作的值
有:
其中D是U的维度,det是求行列式。
但在实际的运算中,使用的计算式为:
证明:
用随机的网络参数
分别初始化Critic网络 和Actor网络 复制相同的参数
,分别初始化目标网络 和 初始化经验回放池D
for 序列e=1 to E do:
获取环境初始状态
for 时间步 t=1 to T do:
D.append((
)) for 训练轮次 k=1 to K do:
从D中取N个元组样本
对每个元组,用目标网络计算
对两个Critic网络都进行如下更新:对j=1,2,最小化损失函数
用重参数化技巧采样动作
,然后用以下损失函数更新当前Actor网络: 更新熵正则项的系数
更新目标网络:
end for
end for
end for
#Feliks SAC(Soft Actor-Critic)阅读笔记 https://zhuanlan.zhihu.com/p/85003758
张伟楠 沈键 俞勇 《动手学强化学习》 人民邮电出版社
Pytorch深度强化学习4. SAC中的Squashed Gaussian Trick - 0xAA的文章 - 知乎 https://zhuanlan.zhihu.com/p/138021330