第五章 近端策略优化(PPO)
策略梯度会走,但学习率难调:平地需要大步,悬崖边一步就掉下去,掉下去还很难爬回来。PPO 的办法是:新策略不许离旧策略太远,用裁剪把更新按在「近端」。
- 一步子太大,策略崩溃。从糟糕策略采出的轨迹,会把训练越带越差。
- 二想要新策略不比旧的差:J(θnew) − J(θold) ≥ 0。
- 三比值 r = πθ(a|s) / πold(a|s)。r = 1 表示没改。
- 四clip 把 r 卡在 [1−ε, 1+ε]。论文里 ε = 0.2。
- 五第一次反向传播时新旧相同,PPO 退化成普通策略梯度。
书 §5.1–5.2 · p.91–98
5.1 策略梯度法存在的问题
是什么。回顾 ∇J = E[ Σ G ∇log π ],以及 θ ← θ + α ∇J。α 太大:新策略走太远,动作差之毫厘,从悬崖掉下去。α 太小:学得像爬。
奖励函数像山。平地为了走得动,学习率得偏大;一步踏进陡坡,同样的学习率会触发爆炸更新。图 5.1–5.3。掉到表现很差的策略之后,采出来的轨迹也差,再拿去训练,恢复很慢。
问题一句话。训练出来的新策略可能比旧策略还差。有没有办法保证 J(θnew) − J(θold) ≥ 0?式 (5.3)。
书 §5.1 · 图 5.1–5.3 · 式 (5.1)–(5.3) · p.91–93
迈一步:小步留下,大步掉下去
示意。点两个按钮看球的位置。
真实损失曲面是几亿维的。这里只留下「大步会过冲」的手感。
接下节。优化里有线搜索和置信域。PPO 走「在旧策略附近的信任区里更新」这一路,再用裁剪实现。
5.2 近端:把比值裁进舒适区
是什么。线搜索:先定方向再迈步(普通梯度)。置信域:先圈一块「信任的邻域」,只在这块里找改进。图 5.4–5.5 · p.94。
PPO 看新旧策略在同一动作上的概率比:
目标大致是 r × A。A 是优势(上一章的 GAE 或 TD)。若 r 冲出 [1−ε, 1+ε],就裁回来再乘 A。ε 常用 0.2。图 5.6、表 5.1。
裁剪在干什么。优势为正:想提高这个动作的概率,但不许一次提高超过 1+ε。优势为负:想压低,但不许一次压过 1−ε。策略被按在旧策略旁边,所以叫近端。
训练最开始 θ = θold,r = 1,第一次反向传播和普通策略梯度一样。式 (5.8)(5.9) · p.96。
书 §5.2 · 图 5.6 · 表 5.1 · p.93–98
拖比值 r 和优势 A
ε = 0.2。左边是未裁的 rA,右边是 clip 之后。看哪一段被削平。
| 未裁 r·A | clip 后 | |
|---|---|---|
| 数值 | — | — |
r 落在 0.8~1.2 时,两边一样。冲出这条带子,裁剪开始工作。伪代码见图 5.7。
下一章。把 clip 和 GAE 接进训练循环:采样一批,算优势,多轮更新。
合上这一章
- 大步会崩。差策略采出差轨迹,恢复很慢。
- 近端。只在旧策略旁边更新。
- 比值 r。新概率除以旧概率。
- clip。r 卡在 [1−ε, 1+ε] 再乘优势。
章末自测
讲完了。下面几题核对本讲刚说过的概念。点选立刻看对错;做错也不会锁下一章。