Reading

Reinforcement Learning: 从旧策略数据到 PPO


Fanyi Pu · GPT‑5.6 Sol · GPT-6 Astra

· Updated

上一篇 从采样轨迹构造了 policy gradient 和 advantage estimate。这篇接着回答:策略已经变化后,旧数据还能怎么用,以及一轮更新应该走多远。沿用 πθ(a∣s) 表示当前策略,A^(s,a) 表示求导时固定的 advantage estimate;轨迹记为 τ,总 reward 为 r(τ)。

系列导读 · 上一篇 · 下一篇

有了 advantage estimate,还要决定如何使用一批轨迹更新策略。先看旧数据与当前策略之间的分布差异,再看 TRPO 和 PPO 如何限制单轮更新的幅度。

Off-Policy Policy Gradients

上一篇的梯度估计 使用 on-policy 数据。但真实在训练的时候,我们很难做到稍稍改一点 θ,就重新生成一堆新的 τ。这样是非常 inefficient 的。

所以现在可能的问题是,我们没有关于 τ∼πθ 的数据,但是我们可能有一个其他的 distribution,通过这个 distribution 来 sample 出的数据。也就是 τ∼π―。

我们需要使用的一个 trick 叫做 importance sampling:

Ex∼p(x)[f(x)]=∫p(x)f(x)dx=∫q(x)p(x)q(x)f(x)dx=Ex∼q(x)[p(x)q(x)f(x)]

所以说我们的 RL objective 可以改成:

J(θ)=Eτ∼π―[πθ(τ)π―(τ)r(τ)]=Eτ∼π―[p(s1)∏t=1Tπθ(at∣st)p(st+1∣st,at)p(s1)∏t=1Tπ―(at∣st)p(st+1∣st,at)r(τ)]=Eτ∼π―[r(τ)∏t=1Tπθ(at∣st)π―(at∣st)]

所以说我们可以推导梯度

∇θJ(θ)=Eτ∼π―[πθ(τ)π―(τ)∇θlog⁡πθ(τ)r(τ)]=Eτ∼π―[(∏t=1Tπθ(at∣st)π―(at∣st))(∑t=1T∇θlog⁡πθ(at∣st))(∑t=1Tr(st,at))]=Eτ∼π―[∑t=1T∇θlog⁡πθ(at∣st)(∏t′=1tπθ(at′∣st′)π―(at′∣st′))⋅(∑t′=tTr(st′,at′)∏t″=t+1t′πθ(at″∣st″)π―(at″∣st″))]

完整 trajectory ratio 给出了复用数据的理论起点,但长轨迹上的乘积权重可能难以使用。接下来转向旧策略访问的 state 上的 surrogate,并限制新旧策略之间的变化。

Trust Region Policy Optimization

TRPO (Schulman et al., 2015) / Spinning Up tutorial (Achiam, 2018)。

θk+1=arg⁡maxθLθk(θ)s.t.D―KL(θk‖θ)≤δ.

其中

Lθk(θ)=E(s,a)∼πθk[πθ(a∣s)πθk(a∣s)A^πθk(s,a)],
D―KL(θk‖θ)=Es∼πθk[DKL(πθk(⋅∣s)‖πθ(⋅∣s))].

这里的 state 分布来自旧策略的访问分布;一轮优化中,采样数据、旧策略与 advantage estimates 都固定。

Proximal Policy Optimization

PPO paper (Schulman et al., 2017) / OpenAI tutorial (Achiam, 2018) / Hugging Face tutorial (Simonini & Sanseviero, 2023)。

TRPO 这么复杂,主要是因为它的限制和 L 是分开的。文章提出了两种把更新限制放进 surrogate objective 的方法:PPO-Penalty 和 PPO-Clip。

PPO-Clip

我们对式子略加修改。先记概率比

ρθ(s,a)=πθ(a∣s)πθk(a∣s).

那么

θk+1=arg⁡maxθE(s,a)∼πθk[min{ρθ(s,a)A^(s,a),clip⁡(ρθ(s,a),1−ϵ,1+ϵ)A^(s,a)}].

其中

clip⁡(x,l,u)={l,x<l,x,l≤x≤u,u,x>u.

大概感性理解是这样的:A^>0 时,我们希望增大这个 action 的概率;A^<0 时,希望减小它的概率。但是当概率比沿着有利方向变化太多,就不再继续奖励这个变化。具体地,正 advantage 在 ρθ>1+ϵ 时截平,负 advantage 在 ρθ<1−ϵ 时截平。

它不是把所有概率比硬限制在区间里;共享参数下,其他样本的梯度仍可能继续改变这个 action 的概率。

PPO-Penalty

非常直觉的式子:

θk+1=arg⁡maxθ{E(s,a)∼πθk[ρθ(s,a)A^(s,a)]−βD―KL(θk‖θ)}.

但是捏,固定一个 β 不一定合适。我们既想优化前面那部分,又想控制每一步离旧策略多远。那咋搞呢,就是让 β 动起来。跑一段优化,就去康康这个

d=E^s∼πθk[DKL(πθk(⋅∣s)‖πθ(⋅∣s))].

直觉上就是这玩意儿如果大了,就说明太远了,那我们得稍微调高一下 β;如果太小,就可以把 β 搞低,允许更大的更新。

所以说我们可以定一个阈值 dtarg:

β←{β/2,d<dtarg/1.5,β,dtarg/1.5≤d≤1.5dtarg,2β,d>1.5dtarg.

系列导读 · 上一篇 · 下一篇

References

Achiam, J. (2018). Spinning Up in Deep Reinforcement Learning. spinningup.openai.com
Schulman, J., Levine, S., Moritz, P., Jordan, M., & Abbeel, P. (2015). Trust region policy optimization. Proceedings of the 32nd International Conference on International Conference on Machine Learning - Volume 37, 1889–1897. proceedings.mlr.press
Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. (2017). Proximal policy optimization algorithms. arXiv Preprint arXiv:1707.06347. arxiv.org
Simonini, T., & Sanseviero, O. (2023). The Hugging Face Deep Reinforcement Learning Class. In GitHub repository. GitHub. github.com

Cite this post

@misc{pu2024mlmlrevisitrlpolicyupdates,
  author = {Pu, Fanyi and {GPT‑5.6 Sol} and {GPT-6 Astra}},
  title  = {Reinforcement Learning: 从旧策略数据到 PPO},
  year   = {2024},
  month  = {10},
  url    = {https://pufanyi.com/blog/ml/ml-revisit/rl-policy-updates}
}