DDPG ,TD3,SAC

DDPG与SAC

Soft Actor Critic (SAC) 是一种以非策略方式优化随机策略的算法,在随机策略优化和 DDPG 风格的方法之间架起了一座桥梁。它不是 TD3 的直接继承者(大致同时发布),但它包含了裁剪的双 Q 技巧,并且由于 SAC 中策略的固有随机性,它最终也受益于诸如目标策略平滑之类的东西.

SAC 的一个核心特征是熵正则化。该策略被训练为最大化预期回报和之间的权衡,熵是策略中随机性的一种度量。这与探索-利用权衡密切相关:增加熵会导致更多探索,这可以加速以后的学习。它还可以防止策略过早收敛到不好的局部最优值。

DDPG与SAC的区别:

  • DDPG训练得到的是一个deterministic policy确定性策略,也就是说这个策略对于一种状态state只考虑一个最优的动作。Deterministic policy的最终目标找到最优路径。
  • Stochastic policy随机策略在实际应用中往往是更好的做法。比如我们让机器人抓取一个水杯,机器人是有无数条路径去实现这个过程的,而并不是只有唯一的一种做法。因此,我们就需要DRL算法能够给出一个随机策略,在每一个state上都能输出每一种action的概率,比如有3个action都是最优的,概率一样都最大,那么我们就可以从这些action中随机选择一个做出action输出。最大熵maximum entropy的核心思想就是不遗落到任意一个有用的action,有用的trajectory。对比DDPG的deterministic policy的做法,看到一个好的就捡起来,差一点的就不要了,而最大熵是都要捡起来,都要考虑。
    Stochastic policy要求熵最大,就意味着神经网络需要去explore探索所有可能的最优路径,优势如下:
  1. 学到policy可以作为更复杂具体任务的初始化。因为通过最大熵,policy不仅仅学到一种解决任务的方法,而是所有all。因此这样的policy就更有利于去学习新的任务。比如我们一开始是学走,然后之后要学朝某一个特定方向走。
  2. 更强的exploration能力,这是显而易见的,能够更容易的在多模态reward (multimodal reward)下找到更好的模式。比如既要求机器人走的好,又要求机器人节约能源
  3. 更robust鲁棒,更强的generalization。因为要从不同的方式来探索各种最优的可能性,也因此面对干扰的时候能够更容易做出调整。(干扰会是学习过程中看到的一种state,既然已经探索到了,学到了就可以更好的做出反应,继续获取高reward)

DRL中,特别是面向连续控制continuous control,主要的三类算法:

  • TRPO,PPO
  • DDPG及其拓展(D4PG,TD3等)
  • Soft Q-Learning, Soft Actor-Critic

PPO算法是目前最主流的DRL算法,同时面向离散控制(discrete control)和连续控制(continuous control)。但是PPO是一种on-policy的算法,面临着严重的sample inefficiency,需要巨量的采样才能学习,因此在实际应用中较难实现。

DDPG及其拓展则是面向连续控制的off policy算法,相对PPO 更sample efficient。DDPG训练的是一种确定性策略deterministic policy,即每一个state下都只考虑最优的一个动作。

Soft Actor-Critic (SAC)是面向Maximum Entropy Reinforcement learning 开发的一种off policy算法,和DDPG相比,Soft Actor-Critic使用的是随机策略stochastic policy,相比确定性策略具有一定的优势。Soft Actor-Critic效果好,且能直接应用到真实机器人上。

DDPG与TD3:

DDPG 有时可以实现出色的性能,但它在超参数和其他类型的调整方面经常很脆弱。DDPG 的一个常见故障模式是学习的 Q 函数开始显着高估 Q 值,然后导致策略中断,因为它利用了 Q 函数中的错误。Twin Delayed DDPG (TD3) 是一种通过引入三个关键技巧来解决此问题的算法: 

技巧一:剪裁双Q学习。TD3 学习两个Q 函数而不是一个(因此是“双胞胎”),并使用两个 Q 值中较小的一个来形成贝尔曼误差损失函数中的目标。

技巧二:“延迟”政策更新。TD3 更新策略(和目标网络)的频率低于 Q 函数。该论文建议每两次 Q 函数更新进行一次策略更新。

技巧三:目标策略平滑。TD3 将噪声添加到目标动作,使策略更难通过沿着动作变化平滑 Q 来利用 Q 函数错误。

总之,这三个技巧可以显着提高基线 DDPG 的性能。

猜你喜欢

转载自blog.csdn.net/aaaaPIKACHU/article/details/124850014