深度策略梯度的实现关键点:PPO与TRPO案例研究
PPO相较于TRPO,不是利用KL-Divergence限制策略的更新幅度,而是直接clipping的方式。在PPO论文中表明直接clipping的方式使其性能超越TRPO。然而,Logan等人表明,不是clipping导致PPO算法性能优越,而是代码级的优化使其性能优越,这些代码级优化限制策略在可信区域更新。
PPO算法实现中包含了如下优化:
- 价值函数clipping: 与基于MSE作为损失函数的价值函数训练不一样,以式(1)为损失函数
$$
\begin{aligned}
L^V=min[(V_{\theta_t}-V_{targ})^2,(clip(V_{\theta_t},V_{\theta_{t-1}}-\xi,V_{\theta_{t-1}}+\xi)-V_{targ})^2]
\end{aligned}\tag{1}
$$
- 奖励缩放: 奖励按照算法1缩放。
- 正交初始化:策略网络与价值网络使用正交初始化,且随着层数的增加缩放初始化取值范围。梯度爆炸与梯度消失,是由于权重系数连乘造成的,那么正交初始化有利于权重矩阵有范数保持性,从而降低误差传播过程中梯度爆炸和梯度消失的现象。
- Adam学习率衰退: 根据不同的任务决定学习率衰退。

图1 奖励缩放算法
其它的优化
- 奖励裁剪
- 观测正则化
- 观测裁剪
- tanh作为激活函数
- 全局梯度裁剪
对于PPO算法更多的实现细节,可见 ppo-implementation-details
版权: 本篇博文采用《CC BY-NC-ND 4.0》,转载必须注明作者和本文链接