在之前的文章里介绍了 深度强化学习(DRL)算法 1 —— REINFORCE - 掘金 (juejin.cn),提出了两个缺点,其中缺点一,在后续提出的 DRL 算法 PPO 解决了,今天我们就来看看大名鼎鼎的 PPO 算法。
回顾
在 REINFORCE 算法里,用于产生 τ 的策略和用来学习的策略(on-policy)是同一个,导致 τ 不能复用,使得训练效率很低。那么直觉上,是不是把这两个策略分开来,一个用来产生 τ ,一个用来学习(off-policy),是不是就可以了呢?答案是,对的!PPO 也是这么做的,接下来,我们来看看算法描述(建议先阅读 深度强化学习(DRL)算法 1 —— REINFORCE - 掘金 (juejin.cn),文章接下来用文1指代这篇文章)。
算法描述
根据文1,最大期望回报表达如下:
Rˉθ=Eτ∼pθ(τ)[R(τ)]=∑τpθ(τ)R(τ)
现在我们希望有一个新的策略 q,用来产生 τ ,原有策略 p 用来学习,那么我们可以对 Rˉθ 做如下修改:
Rˉθ=∑τqθ′(τ)qθ′(τ)pθ(τ)R(τ)=Eτ∼qθ′(τ)[qθ′(τ)pθ(τ)R(τ)]
(Importance Sampling)
为了写起来方便,我们用 g 来表示文1里的
∇Rˉ(θ)
,那么新的 g 如下:
g=∇θ∑τqθ′(τ)qθ′(τ)pθ(τ)R(τ) =m1∑i=1mR(τ(i))∑t=1Tqθ′(τ(i))pθ(τ(i))∇θlog pθ(at(i)∣st(i)) =m1∑i=1mR(τ(i))∑t=1Tqθ′(τ(i))pθ(τ(i))pθ(at(i)∣st(i))∇θpθ(at(i)∣st(i)) =m1∑i=1mR(τ(i))∑t=1T∏t=0Tqθ′(at(i)∣st(i))q(st+1(i)∣st(i),at(i))∏t=0Tpθ(at(i)∣st(i))p(st+1(i)∣st(i),at(i))pθ(at(i)∣st(i))∇θpθ(at(i)∣st(i)) ≈m1∑i=1mR(τ(i))∑t=1Tqθ′(at(i)∣st(i))∇θpθ(at(i)∣st(i))
这里对 g 取了近似,那么上面的
Rˉθ
也可以近似为:
Rˉθ≈Eτ∼qθ′(τ)[qθ′(at∣st)pθ(at∣st)R(τ)]
这就是论文里说的 Surrogate Objective,那这里是不是直接求导,使得新的期望回报值最大就行了吗?
当然不是!注意上面 g 近似成立的前提是 p 和 q 的值差距不大,如果差距太大的话,等式就不成立了,求导也没有意义,所以我们需要对 Surrogate Objective 进行截断,让 p 和 q 的值不要差距太大。
所以有了 Clipped Surrogate Objective:
Eτ∼qθ′(τ)[min(qθ′(at∣st)pθ(at∣st)R(τ),clip(qθ′(at∣st)pθ(at∣st),1−ϵ,1+ϵ)R(τ))]
clip 代表把 qθ′(at∣st)pθ(at∣st) 限制在区间 (1- ϵ, 1 + ϵ)。
那么当 R > 0 时,Surrogate Objective 等同于:
Eτ∼qθ′(τ)[min(qθ′(at∣st)pθ(at∣st)R(τ),(1+ϵ)R(τ))]
这就确保会增大 pθ(at∣st) 但最大不会让 qθ′(at∣st)pθ(at∣st) 大于 1 + ϵ
当 R < 0,Surrogate Objective 等同于:
Eτ∼qθ′(τ)[min(qθ′(at∣st)pθ(at∣st)R(τ),(1−ϵ)R(τ))]
这就确保会减小 pθ(at∣st) 但最小不会让 qθ′(at∣st)pθ(at∣st) 小于 1 - ϵ
从而满足了让 p 和 q 的值不要差距太大的约束条件。
再把 R 替换成文一里提到的 Credit Assignment 的形式,我们对 REINFORCE 的算法的优化暂时到这里。
缺点
总结一下,我们用 Clipped Surrogate Objective 和 Credit Assignment 让 REINFORCE 可以做 off-policy,并且让 R 的表示更合理,但是我们再次看一下 R 现在的表示方法,虽然更合理了,但是还是有可以优化的地方。
Rt(τ)=∑t=t(a)Tγt−t(a)rt,γ∈[0,1]
虽然对每个 a 都有相应的 R,但是回到最开始 a 是怎么来的,每一步的 a 是采样来的,所以这种 Monte-Carlo 式的评估 R 的方式会引入大的方差。
改进
下篇文章会给出方差大的解决办法。
参考
- Proximal Policy Optimization Algorithms
- 深度解读:Policy Gradient,PPO及PPG
- 李宏毅深度强化学习(国语)课程(2018)