各种AC系列算法的伪代码

TD3的技巧

技巧一:裁剪的双Q学习(Clipped Double-Q learning). 与DDPG学习一个Q函数不同的是,TD3学习两个Q函数(因此称为twin),并且利用这两个Q函数中较小的哪个Q值来构建贝尔曼误差函数中的目标网络。

技巧二:延迟的策略更新(“Delayed” Policy Updates). TD3算法中,策略(包括目标策略网络)更新的频率要低于Q函数的更新频率。文章建议Q网络每更新两次,策略网络才更新一次。

技巧三:目标策略平滑(Target Policy Smoothing). TD3在目标动作中也加入了噪声,通过平滑Q函数沿着不同动作的变化,使得策略更难利用Q函数的错误。

各种AC系列算法的伪代码


各种AC系列算法的伪代码


各种AC系列算法的伪代码


各种AC系列算法的伪代码

DPPO的算法流程如下图所示,其中W是workers的数量;D是一个阈值,它指定更新全局网络参数时所需的workers的数量,也就是说如果有一定数量的worker的梯度是available时,就同步地更新全局网络参数,这一个全局网络参数等于各个worker的梯度的均值;M和B是在给定一把mini batch数据的条件下,更新actor和critic网络的迭代步数;T是每一个worker在参数更新之前的date points数量;K是K-steps return的数量。

各种AC系列算法的伪代码


各种AC系列算法的伪代码


各种方法的对比

DDPG在小型任务上收敛很快效果贼好,连续控制任务,TD3,简单的改动比DDPG强太多,真香

PPO类方法不一定是效果最好的方法,但一般是最稳定的方法,DPPO用orthogonal initialization ➕ 硬件条件允许的最大batch size训练,有奇效,真香

但是PPO面临的问题是采样效率低下,需要大量数据才能够使用。

SAC想跑出最好的结果需要learned temperature ➕ grid search for reward scaling ratio,玄学成分太高

search for reward scaling ratio,玄学成分太高