0%

TRPO & PPO 论文笔记(下)

二、 PPO:近端策略优化

1. PPO 概述

标准的策略梯度方法是在每个数据样本都进行一次梯度更新,PPO 方法可以进行 mini-batch 更新。比起 TRPO,PPO 继承了它部分优点,但是更容易实现,更通用,和更简单的采样方法。TRPO 方法使用了二阶近似,PPO 旨在于用一阶近似来达到 TRPO 类似的效果,同时提高数据的利用效率。通过交替利用策略采样和对采样的数据进行多个 epoch的优化,来提高数据的利用效率。

在连续的任务上,“概率比截断”版本的 PPO 方法表现得最好。在离散的动作空间任务上,PPO 方法和 ACER 方法效果类似,但更容易实现。

2. 相关知识

2.1 策略梯度

策略梯度算法中策略梯度的公式推导结果为:

其中 $\pi_\theta$ 表示随机策略,$\hat{A}_t$ 是时刻 $t$ 对优势函数的估计值。$\hat{\mathbb{E}}_t$ 表示一个 batch 的样本进行经验估计。

以上的策略梯度对应的目标函数是:

虽然可以对以上的目标函数进行多次 epoch 优化,但是这样做实际上是经验主义上的,并且找不到充分的理由,而且还会对较大规模的梯度更新造成破坏。

2.2 TRPO

TRPO 中的代理目标函数为:

然后对目标函数进行进行一阶近似,约束进行二阶近似,然后结合共轭梯度进行求解。

实际上为 TRPO 提供保证的理论是采用惩罚项,而非约束项(这项理论应用在 Natural PG 中,TRPO 是对这项理论改造后的结果),也就是优化无约束问题,代理目标函数为:

其中 $\beta$ 可以看作惩罚因子,是一个超参数。实际上这种代理目标函数背后的理论是优化策略 $\pi$ 的下界,让每次策略更新后的新策略都能得到提升。但是 $\beta$ 的取值非常难以确定,即使在很简单的问题上,都没办法简单地找到 $\beta$ 值,甚至在同一个问题中,$\beta$ 的取值随着学习过程而改变。这就导致 TRPO 采用了硬约束的方式,而不是惩罚项。

所以现在的问题就是,如果我们想在学习过程中找到性能单调递增的策略,光靠简单地选择一个惩罚项系数和 SGD 是不够的,但是使用 TRPO 又太复杂,需要涉及二阶近似,计算量太大。这个时候 PPO 就出现了。

3. 截断代理目标函数

令 $r_t(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$,很明显,$r(\theta_{old})=1$,TRPO 的代理目标可以重写成:

上标 $CPI$ 表示 conservative policy iteration,是一篇著名文章中提出来的策略迭代方法 [1],以上的目标函数就是这篇文章所提出来的。注意,此时目标函数没有加上约束,可能会导致很大的梯度更新,导致策略梯度失去意义。

现在考虑当 $r_t(\theta)$ 偏移 $1$ 的时候进行惩罚,引入截断代理目标函数。将等式 $\eqref{3.1}$ 改写为:

其中 $\epsilon$ 是一个超参数。可以发现 $min$ 函数中的第一项就是 $L^{CPI}$,第二项对 $r_t(\theta)$ 进行裁剪,超出 $[1-\epsilon,1+\epsilon]$ 的部分直接抹去,最后对两项取最小值,确保 $L^{CLIP}$ 取得结果是 $L^{CPI}$ 的下界。

注意,不是什么时候都将 $r_t$ 的值限制在 $[1-\epsilon,1+\epsilon]$,只有当目标函数获得提升时,我们将会对 r 进行限制;当目标函数变差时,我们不会对 r 进行处理。

至于 $r_t$ 什么时候被限制在 $1-\epsilon$,什么时候被限制在 $1 + \epsilon$,这取决于 $\hat{A}_t$的符号。

  • 如果 $\hat{A}_t$ 大于零,则 $r_t$ 将限制在 $< 1 + \epsilon$ 范围内,注意此时没有将 $r_t$ 限制在 $> 1-\epsilon$ 的范围。
  • 如果 $\hat{A}_t$ 小于零,则 $r_t$ 将限制在 $> 1 - \epsilon$ 范围内,注意此时没有将 $r_t$ 限制在 $< 1+\epsilon$ 的范围。

具体如图 3-1 所示。

PPO_clip_explain

图 3-1 对 r 裁剪的两种情况

图 3-2 的结果也说明了 $L^{CLIP}$ 取得结果是 $L^{CPI}$ 的下界。图中的横轴表示沿着策略梯度方向插值的参数 $\theta$,横坐标为 $1$ 时是初始参数,往左是沿着梯度下降,往右是沿着梯度上升。可以发现沿着梯度上升时, $L^{CLIP}$ 永远在 $L^{CPI}$ 的下方。

L_clip

图 3-2 几种代理目标函数的取值

4. 自适应 KL 惩罚系数

除了第 3 节所说的截断代理目标函数的方法,本文还提出利用一个对 KL 的自适应惩罚项系数来构建代理目标,将新旧策略的 KL 散度值限定在一个目标 KL 散度值 $d_{targ}$ 附近。文中说这种方法的效果不如截断代理目标函数的方法好,不过可以作为补充和 baseline。

实现过程如下:

  • 首先利用 SGD 对带有惩罚项的代理目标函数(等式 $\eqref{2.5}$ )进行几个 epochs 的优化:

  • 计算当前新旧策略的 KL 散度值: $d = \hat{\mathbb{E}}_t KL \left[\pi_{\theta_{old}}(\cdot|s_t),\pi_\theta(\cdot|s_t)] \right]$

    • 如果 $d < d_{targ}/1.5$,$\beta \leftarrow \beta /2$
    • 如果 $ d > d_{targ}*1.5 $ ,$ \beta \leftarrow \beta*2 $

更新后的 $\beta$ 值将用于下一次更新。其中 $d_{targ}$ 是一个超参数,$1.5$ 和 $2$ 都是一个启发值,可以自己设定。文中说算法对这两个启发值不是很敏感。初始的 $\beta$ 也是一个超参数,但是不敏感,会随着算法持续自适应更新。

5. PPO 算法

5.1 代理目标函数改进

算法中涉及对优势值 $\hat{A}_t$ 的估计,为了降低优势估计值的方差,可以使用“广义优势估计”(GAE)方法[2]

当策略往前看 $T$ 步时($T$ 小于 episode 的总数),上面公式变为:

当 $\lambda = 1$ 时,等式 $\eqref{5.2}$ 变为:

当 $\lambda = 0$ 时,等式 $\eqref{5.2}$ 变为

在论文 [2] 中证明 $\hat{A}^{GAE}_t$ 实质上是 $\hat{A}^{(1)}_t,\hat{A}^{(2)}_t,\cdots,\hat{A}^{(k)}_t$ 的指数加权和。

如果策略网络和状态网络共用一套参数,代理目标函数还需要加上状态值函数的误差项。另外,为了鼓励智能体探索,可以给目标函数添加一个熵奖励项。最终,代理目标函数的形式为:

其中 $c_1$,$c_2$ 是超参数,$S$ 表示熵奖励函数,$L_t^{VF}$ 表示状态值函数的误差项 $(V_\theta(s_t)-V_t^{targ})^2$ 。

但是实际上论文中的实验并没有加上 $L_t^{VF}$ 和 $L_t^{S}$ 这两项,说明它们未必在任何时候都能取得效果。

5.2 PPO 伪代码

PPO 方法的伪代码如下:

首先用 $N$ 个智能体并行收集 $T$ 步的数据,构成大小为 $NT$ 的数据集,然后使用 minibatch SGD (或 Adam)方法优化代理目标函数。

PPO_peudo

6. 工程设置和实验比较

网络结构和 TRPO 论文中的类似,两层全连接层,每层 64 个神经元,激活函数使用 tanh 非线性函数,输出为高斯分布策略的均值,标准差用另外一个独立的可变的参数来表示。另外,代理目标函数没有加上状态函数误差项和熵奖励项。

工程设置没有其他特别注意的点,下面是实验比较中采用的一些方法。

6.1 不同代理目标函数的比较

  • 使用 7 个环境,3 个随机种子,结果取最后 100 个 episode 总奖励和。然后归一化,定义随机策略的结果为 0,最好的结果为 1 。最后跑 21 次 取平均。

  • 超参数取多几个,然后进行比较:

    target_func_comp

6.2 连续动作空间的其他算法比较

diff_method_comp

6.3 两个有意思的评价标准

(1) average reward per episode over entire training period 可以用来评价学习的速度。

(2) average reward per episode over last 100 episodes of training 可以用来评价最终学习的效果。

参考文献

[1] S. Kakade and J. Langford. “Approximately optimal approximate reinforcement learn- ing”. In: ICML. Vol. 2. 2002, pp. 267–274.

[2] J. Schulman, P. Moritz, S. Levine, M. Jordan, and P. Abbeel. “High-dimensional contin- uous control using generalized advantage estimation”. In: arXiv preprint arXiv:1506.02438 (2015).