赞
踩
PPO算法是目前最主流的DRL算法,但是PPO是一种on-policy算法,存在sample inefficiency的缺点,需要巨量的采样才能学习。DDPG及其拓展是面向连续控制的off-policy的算法,相对于PPO来说更sample efficient,但是它存在对其超参数敏感,收敛效果差的问题。SAC算法是面向最大熵强化学习开发的一种off-policy算法。与DDPG相比,SAC使用的是随机策略,相比确定性策略具有一定的优势。
我们在寻求最优动作的时候,很多时候并不是说最优动作就只有一个的。比如说我们想要机器人去追一个小球,机器人其实有无数条路径可以去实现这个目标,而不是说只有唯一的一种路径。我们需要DRL算法能够给出一个随机策略,在每一个状态都能输出每个动作的概率,比如说有3个动作是最优的,概率是一样大的,那么就可以在这三个动作中随机选择一个。
上式为DRL的学习目标,与传统的DRL学习目标不同,不仅想要长期的回报最大,还想要policy的每一次输出的action的熵最大。这样做其实就是为了让策略随机化,也是在鼓励探索,为具有相似的Q值的动作分配近乎均等的概率,不会给动作范围内任何一个动作分配非常高的概率,避免了反复选择同一个动作而陷入次优。同时通过最大化奖赏,放弃明显没有前途的策略(放弃低奖赏策略)。总的来说,具有以下几个优势:
1.更强的探索能力;
2.更鲁棒,面对干扰的时候能更容易做出调整;
3.训练速度加快(最大熵使探索更加均匀)。
下面会根据SAC算法论文来介绍。
通常强化学习的目标是最大化累计reward:
最大熵强化学习中考虑的是最大化带熵的累计奖励:
上式中的α确定了熵项对于奖励的相对重要性。
下面所有的推导都是基于表格型的。
soft policy evaluation
对于一个固定的策略π,其软Q值可以通过Bellman backup 算子迭代出来:
论文中的引理1告诉我们soft policy evaluation可以通过:
进行迭代,若迭代无数次,最终会收敛到策略π的软Q值函数。
policy improvement
在策略改进中有:
与往常的off-policy方法最大化Q值不同的是,在SAC中策略是向正比于Q的指数分布更新的。在实际操作中,为了方便策略的处理,我们还是将策略输出为高斯分布,通过最小化KL散度去最小化两个分布的差距。
其中:
为对Q值进行归一化分布。由论文中的引理2我们可以知道,对于所有的:
满足:
这样保证每次更新的策略至少是由于旧策略的。
与传统强化学习的策略迭代一样,不断重复策略评估和策略改进两个过程,最终能够得到最优策略。即为论文中定理1所述:
由于是非常大的连续域的情况,就需要引入函数逼近。
定义软状态值函数:
定义软Q值函数:
定义策略函数:
对应的参数分别是:
软状态值函数的目标函数为:
梯度:
软Q值函数的目标函数是:
其中:
梯度:
策略更新的目标函数:
我们策略的目标就是最小化两个分部之间的KL散度。
由于策略是一个分布,动作a采样后无法对其进行求导,所以要用到重参数化技巧来对动作采样。在这里,策略表示为一个带噪声的神经网络:
其中epsilon t为一个输入的噪声向量。那么策略的目标函数可以重新写为:
少了:
是因为它与参数无关,求导为0,所以可以直接省略。
梯度:
整个算法流程就如下所示:
参考:
1.https://blog.csdn.net/u011501388/article/details/78447839
2.https://zhuanlan.zhihu.com/p/70360272
3.https://zhuanlan.zhihu.com/p/114236301
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。