TRPO and PPO
TRPO (Trust Region Policy Optimization) と PPO (Proximal Policy Optimization) は、policy 更新が過度に大きくならないように制約する policy gradient algorithm です。PPO は RLHF の標準として LLM の世界でも中核を担っています。
なぜ trust region なのか
純粋な policy gradient は、step size を大きく取りすぎると policy が崩壊することがあります。Trust region 系は、
- 1 step の更新で policy 分布が 大きく変わらない ことを保証
- 結果として安定した monotonic な改善
を狙います。
TRPO
TRPO は、KL 制約付き の surrogate objective を解きます。
subject to
実装は二次計画と conjugate gradient が必要で重いです。
PPO
PPO は TRPO を clipped surrogate に置き換えた、単純で実用的な algorithm です。
- の領域では更新を抑制
- の領域でも同様
- 結果として policy 更新の大きさを暗黙的に制限
PPO の構成要素
実用 PPO loss は通常:
- : value function の loss
- : entropy bonus (exploration)
なぜ LLM で PPO なのか
InstructGPT 以来、RLHF の reward optimization は PPO で行うのが標準でした。
理由:
- on-policy で安定
- KL を reward に組み込めば、SFT policy から離れすぎない
- 実装が枯れている
ただし、reward model + value model + reference model + policy で 4 つの大規模 model が必要なため、メモリ要求が大きいです。これを単純化するために DPO や GRPO が提案されました。
数式で見る trust region と clipping
TRPO は、policy を改善しつつ、old policy から離れすぎないように KL 制約を置きます。
この式の気持ちは、「良い action の確率を上げたいが、policy を一度に大きく変えすぎると学習が壊れる」というものです。
PPO は、この KL 制約をより実装しやすい clipping に置き換えます。確率比を とすると、clipped objective は次の通りです。
この式は、advantage が正のときに確率を上げすぎること、advantage が負のときに確率を下げすぎることを防ぎます。
関連ページ
主なソース
- TRPO: https://arxiv.org/abs/1502.05477
- PPO: https://arxiv.org/abs/1707.06347
- The 37 Implementation Details of PPO: https://iclr-blog-track.github.io/2022/03/25/ppo-implementation-details/