PG类算法总结
1. On-Policy类算法
1.1 VPG:Vanilla Policy Gradient
- on policy 算法
- 可用于动作空连续或者离散动作空间
这个就是最初的PG版本。我们的目的是最大化有限的return。J代表的是无折扣的有限return。
下面的公式推导见从PG到A3C
τ \tau τ就是我们的采样序列。
A是Advantage function
可见我们需要获得完整的动作序列。
伪代码:
1.2 TROP: Trust Region Policy Optimization
- On-policy算法
- 离散或者连续动作空间
VPG算法在参数更新的时候,是原始参数+学习率*梯度
。在现实应用上,如果有一步走的比较差,就会影响整个PG算法的性能。TROP的思路就是在一定的限制内,来决定这个步长迈出多大。
这个限制来自于新旧两个策略的KL-散度,KL散度可以认为是衡量两个分部的距离的。两个策略越接近,我们迈出的步子越小,策略相差越大,我们迈出的步子就可以越大。
TROP的具体数学推导可看原论文。关键的几个公式如下:
- 更新规则
我们的 L ( θ k , θ ) L(\theta_k, \theta) L(θk,θ)衡量新的策略(分子)和就得策略(分母)结果相关性的。他们的结果越相同,L越小。
散度的计算:
如果新旧两个策略相等,那么梯度就等于0。从数学上可以证明。(我没证。。)
-
TROP实际应用
- 上述实际应用很难,所以使用了泰勒公式近似来求解以更快得到结果。-
- 因为是带有限制的求极值问题,使用拉格朗日对偶(Lagrangian duality)来处理。
- 添加 α \alpha α的原因是通过泰勒公式进行估计,引入了误差,可能不满足KL的限制,所以加一个系数
最终的结果:中间推导过程或者原论文
而且对于H的逆矩阵计算很困难,还用到了共轭梯度算法( conjugate gradient algorithm)
1.3 PPO: Proximal Policy Optimization
TRPO算法效果很好,但是应用起来十分复杂。PPO算法解决和TROP一样的问题,就是每次迈多大的步子。PPO更加简单,并且实际效果至少和TRPO一样好。
- on-policy
- 连续或者离散动作空间
PPO两个版本:
- PPO-Penalty:
- PPO-Clip
具体论文分析Spinningup和Blog-PPO
2. Off-policy类算法
2.1 DDPG
-
off-policy
-
连续动作空间
-
可认为是DQN的连续动作空间版本
off-policy:能够使用experience replay。off-policy的根本原因是在计算Q值的时候,不再需要整个动作序列了,on-policy策略使用整个动作序列的reward累加或者带有折扣的reward累加来确定Q值,从而帮助选择策略。off-policy利用了TD-learning的思想,使用神经网络来估计Return,Q值计算只需要当前奖励和之后的估计Q值。这样不需要记录完整序列,只需要记录状态、动作、奖励即可。所以我们可以将使用其他episode采样的数据来训练当前的policy。坏处就是又引入了误差(因为多了一处估计)
2.2 TD3 Twin Delayed DDPG
DDPG超参多、参数不好难以收敛,复杂维度训练困难。
DDPG有四个网络,即Critic-net Critic-target-net、Actor-net、Actor-Target-Net
TD3除了critic-target-net,还同时学习两个critic-net来估计Q值,即有两个Critic-net通过反向传播进行更新。
- Actor网络输出平滑化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ws6vPEgI-1603099010531)(20-MF类算法总结(VPG, TROP, PPO, DDPG, TD3, SAC)].assets/8efd61c40551db4eddb3f780d2804cac34c8ae52.svg)
μ \mu μ是Actor网络, a l o w a_{low} alow是action范围最小值
为了探索,我们往往在Actor网络中增加正态分布的噪声。我们对输出进行剪切处理。
这么做解决了一个DDPG可能失败的一个情形:Q-function输出了一个某些动作的错误的峰值,policy会快速利用这个峰值,那么就会产生错误的动作行为。target policy这么做,可以平滑Q-function在相似动作上的输出。
- 在计算y_target时,两个Q-function的结果选择最小的一个
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U0SR3fJ8-1603099010535)(20-MF类算法总结(VPG, TROP, PPO, DDPG, TD3, SAC)].assets/70901eaea34c31e03bb878d7a710a33cb75d1143.svg)
- policy的梯度计算只通过其中一个。
2.3 SAC Soft Actor-Critic
SAC算法继承了TD3的两个Q-net的结构。同时,引入了交叉熵,不需要手动设置探索率。
Reference
本文所有公式和伪代码来自:
SpinningUp