教材讲解 第五章

第五章 近端策略优化(PPO)

策略梯度会走,但学习率难调:平地需要大步,悬崖边一步就掉下去,掉下去还很难爬回来。PPO 的办法是:新策略不许离旧策略太远,用裁剪把更新按在「近端」。

  1. 步子太大,策略崩溃。从糟糕策略采出的轨迹,会把训练越带越差。
  2. 想要新策略不比旧的差:J(θnew) − J(θold) ≥ 0。
  3. 比值 r = πθ(a|s) / πold(a|s)。r = 1 表示没改。
  4. clip 把 r 卡在 [1−ε, 1+ε]。论文里 ε = 0.2。
  5. 第一次反向传播时新旧相同,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 看新旧策略在同一动作上的概率比:

rt(θ) = πθ(at|st) / πθold(at|st) 式 (5.10) · p.96。r = 1 表示这个动作的概率没变。

目标大致是 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 之后。看哪一段被削平。

1.00
1.0
未裁 r·Aclip 后
数值

r 落在 0.8~1.2 时,两边一样。冲出这条带子,裁剪开始工作。伪代码见图 5.7。

下一章。把 clip 和 GAE 接进训练循环:采样一批,算优势,多轮更新。

合上这一章

  1. 大步会崩。差策略采出差轨迹,恢复很慢。
  2. 近端。只在旧策略旁边更新。
  3. 比值 r。新概率除以旧概率。
  4. clip。r 卡在 [1−ε, 1+ε] 再乘优势。

章末自测

讲完了。下面几题核对本讲刚说过的概念。点选立刻看对错;做错也不会锁下一章。

第六章 PPO 实战 · 原书 p.99–103

打开第六章 回到目录