深度强化学习(DRL)算法 2 —— PPO 之 Clipped Surrogate Objective 篇

125 阅读2分钟

在之前的文章里介绍了 深度强化学习(DRL)算法 1 —— REINFORCE - 掘金 (juejin.cn),提出了两个缺点,其中缺点一,在后续提出的 DRL 算法 PPO 解决了,今天我们就来看看大名鼎鼎的 PPO 算法。

回顾

在 REINFORCE 算法里,用于产生 τ\tau 的策略和用来学习的策略(on-policy)是同一个,导致 τ\tau 不能复用,使得训练效率很低。那么直觉上,是不是把这两个策略分开来,一个用来产生 τ\tau ,一个用来学习(off-policy),是不是就可以了呢?答案是,对的!PPO 也是这么做的,接下来,我们来看看算法描述(建议先阅读 深度强化学习(DRL)算法 1 —— REINFORCE - 掘金 (juejin.cn),文章接下来用文1指代这篇文章)。

算法描述

根据文1,最大期望回报表达如下:

Rˉθ=Eτpθ(τ)[R(τ)]=τpθ(τ)R(τ)\bar{R}_{\theta} = E_{\tau\sim p_{\theta}(\tau)}[R(\tau)] = \sum_{\tau}p_{\theta}(\tau)R(\tau)

现在我们希望有一个新的策略 q,用来产生 τ\tau ,原有策略 p 用来学习,那么我们可以对 Rˉθ\bar{R}_{\theta} 做如下修改:

Rˉθ=τqθ(τ)pθ(τ)qθ(τ)R(τ)=Eτqθ(τ)[pθ(τ)qθ(τ)R(τ)]\bar{R}_{\theta} = \sum_{\tau}q_{\theta'}(\tau)\frac{p_{\theta}(\tau)}{q_{\theta'}(\tau)}R(\tau) = E_{\tau\sim q_{\theta'}(\tau)}[\frac{p_{\theta}(\tau)}{q_{\theta'}(\tau)}R(\tau)] (Importance Sampling) 为了写起来方便,我们用 g 来表示文1里的 Rˉ(θ)\nabla \bar{R}(\theta) ,那么新的 g 如下:

g=θτqθ(τ)pθ(τ)qθ(τ)R(τ)  =1mi=1mR(τ(i))t=1Tpθ(τ(i))qθ(τ(i))θlog pθ(at(i)st(i))  =1mi=1mR(τ(i))t=1Tpθ(τ(i))qθ(τ(i))θpθ(at(i)st(i))pθ(at(i)st(i))  =1mi=1mR(τ(i))t=1Tt=0Tpθ(at(i)st(i))p(st+1(i)st(i),at(i))t=0Tqθ(at(i)st(i))q(st+1(i)st(i),at(i))θpθ(at(i)st(i))pθ(at(i)st(i))  1mi=1mR(τ(i))t=1Tθpθ(at(i)st(i))qθ(at(i)st(i))g = \nabla_{\theta} \sum_{\tau}q_{\theta'}(\tau)\frac{p_{\theta}(\tau)}{q_{\theta'}(\tau)}R(\tau) \\ \ \ = \frac{1}{m}\sum_{i=1}^{m}R(\tau^{(i)})\sum_{t=1}^{T}\frac{p_{\theta} (\tau^{(i)})}{q_{\theta'}(\tau^{(i)})}\nabla_{\theta}log\ p_\theta(a_{t}^{(i)}|s_{t}^{(i)}) \\ \ \ = \frac{1}{m}\sum_{i=1}^{m}R(\tau^{(i)})\sum_{t=1}^{T}\frac{p_{\theta}(\tau^{(i)})}{q_{\theta'}(\tau^{(i)})}\frac{\nabla_{\theta}p_\theta(a_{t}^{(i)}|s_{t}^{(i)})}{p_\theta(a_{t}^{(i)}|s_{t}^{(i)})} \\ \ \ = \frac{1}{m}\sum_{i=1}^{m}R(\tau^{(i)})\sum_{t=1}^{T} \frac{\prod_{t=0}^{T}p_{\theta}(a_{t}^{(i)}|s_{t}^{(i)})p(s_{t+1}^{(i)}|s_{t}^{(i)}, a_{t}^{(i)})} {\prod_{t=0}^{T}q_{\theta'}(a_{t}^{(i)}|s_{t}^{(i)})q(s_{t+1}^{(i)}|s_{t}^{(i)}, a_{t}^{(i)})} \frac{\nabla_{\theta}p_\theta(a_{t}^{(i)}|s_{t}^{(i)})}{p_\theta(a_{t}^{(i)}|s_{t}^{(i)})} \\ \ \ \approx \frac{1}{m}\sum_{i=1}^{m}R(\tau^{(i)})\sum_{t=1}^{T} \frac{\nabla_{\theta}p_\theta(a_{t}^{(i)}|s_{t}^{(i)})}{q_\theta'(a_{t}^{(i)}|s_{t}^{(i)})}

这里对 g 取了近似,那么上面的 Rˉθ\bar{R}_{\theta} 也可以近似为:

RˉθEτqθ(τ)[pθ(atst)qθ(atst)R(τ)]\bar{R}_{\theta} \approx E_{\tau\sim q_{\theta'}(\tau)}[\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})}R(\tau)]

这就是论文里说的 Surrogate Objective,那这里是不是直接求导,使得新的期望回报值最大就行了吗? 当然不是!注意上面 g 近似成立的前提是 p 和 q 的值差距不大,如果差距太大的话,等式就不成立了,求导也没有意义,所以我们需要对 Surrogate Objective 进行截断,让 p 和 q 的值不要差距太大。 所以有了 Clipped Surrogate Objective:

Eτqθ(τ)[min(pθ(atst)qθ(atst)R(τ),clip(pθ(atst)qθ(atst),1ϵ,1+ϵ)R(τ))]E_{\tau\sim q_{\theta'}(\tau)}[min(\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})}R(\tau), clip(\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})}, 1-\epsilon, 1 + \epsilon)R(\tau))]

clip 代表把 pθ(atst)qθ(atst)\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})} 限制在区间 (1- ϵ\epsilon, 1 + ϵ\epsilon)。 那么当 R > 0 时,Surrogate Objective 等同于:

Eτqθ(τ)[min(pθ(atst)qθ(atst)R(τ),(1+ϵ)R(τ))]E_{\tau\sim q_{\theta'}(\tau)}[min(\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})}R(\tau), (1 + \epsilon)R(\tau))]

这就确保会增大 pθ(atst)p_\theta(a_{t}|s_{t}) 但最大不会让 pθ(atst)qθ(atst)\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})} 大于 1 + ϵ\epsilon 当 R < 0,Surrogate Objective 等同于:

Eτqθ(τ)[min(pθ(atst)qθ(atst)R(τ),(1ϵ)R(τ))]E_{\tau\sim q_{\theta'}(\tau)}[min(\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})}R(\tau), (1-\epsilon)R(\tau))]

这就确保会减小 pθ(atst)p_\theta(a_{t}|s_{t}) 但最小不会让 pθ(atst)qθ(atst)\frac{p_\theta(a_{t}|s_{t})}{q_\theta'(a_{t}|s_{t})} 小于 1 - ϵ\epsilon 从而满足了让 p 和 q 的值不要差距太大的约束条件。 再把 R 替换成文一里提到的 Credit Assignment 的形式,我们对 REINFORCE 的算法的优化暂时到这里。

缺点

总结一下,我们用 Clipped Surrogate Objective 和 Credit Assignment 让 REINFORCE 可以做 off-policy,并且让 R 的表示更合理,但是我们再次看一下 R 现在的表示方法,虽然更合理了,但是还是有可以优化的地方。

Rt(τ)=t=t(a)Tγtt(a)rt,γ[0,1]R_{t}(\tau) = \sum_{t=t(a)}^{T}\gamma^{t-t(a)}r_{t},\gamma \in [0,1]

虽然对每个 a 都有相应的 R,但是回到最开始 a 是怎么来的,每一步的 a 是采样来的,所以这种 Monte-Carlo 式的评估 R 的方式会引入大的方差。

改进

下篇文章会给出方差大的解决办法。

参考

  1. Proximal Policy Optimization Algorithms
  2. 深度解读:Policy Gradient,PPO及PPG
  3. 李宏毅深度强化学习(国语)课程(2018)