はじめに
強化学習を学び始めると、PPO TRPO SAC といったアルゴリズム名がたくさん出てきて、「結局どれをいつ使えばいいの?」と迷いがちです。
この記事では、代表的な3つのアルゴリズムを 初学者でもわかるように 整理し、実際のタスクでどう選べばよいかの指針をまとめます。数式は最小限にとどめ、「性格の違い」と「選び方」に重点を置いて説明します。
この記事は各アルゴリズムの 原論文 をあたって内容を確認しています。記事末尾に出典をまとめてあるので、より深く学びたい方はそちらもどうぞ。
前提:2つの大きな分類「on-policy」と「off-policy」
3つのアルゴリズムを理解するうえで、まず押さえておきたいのが on-policy / off-policy という区別です。ここが使い分けの一番の軸になります。
on-policy(オンポリシー)
「いま使っている方策(policy)で集めたデータだけ」を使って学習する方式です。方策を更新したら、その前に集めたデータは基本的に使えなくなるので捨てます。
- 該当:TRPO、PPO
- 性格:安定しているが、データを使い捨てるので効率は悪め
off-policy(オフポリシー)
過去に集めたデータを リプレイバッファ(replay buffer) に貯めておき、それを繰り返し再利用して学習する方式です。
- 該当:SAC(ほかに DDPG、TD3 など)
- 性格:同じサンプル数でも効率よく学べるが、挙動がやや不安定になりやすい
off-policy 手法は経験再生(experience replay)によって、一般にサンプル効率が高いとされています。
この違いを頭に入れたうえで、各アルゴリズムを見ていきましょう。
TRPO:理論的にしっかりした「元祖」
TRPO(Trust Region Policy Optimization) は 2015年に John Schulman らが発表した手法です。
方策勾配法では「更新のステップ幅(step size)」の選び方が難しく、大きくしすぎると性能が一気に崩壊する問題がありました。TRPO はこれを解決するために、更新前後の方策の差を KLダイバージェンス という指標で測り、「差が一定以下(信頼領域=trust region の内側)」に収まるよう制約をかけながら更新します。
これによって 単調改善(monotonic improvement)、つまり「更新するたびに性能が下がらない」ことを理論的に保証できる、というのが最大の売りです。
一方で弱点もあります。この制約を厳密に扱うために 2次近似(フィッシャー情報行列や共役勾配法など)を使う必要があり、計算が重く実装も複雑 です。そのため大規模な問題にはスケールしづらい、という課題があります。
まとめ:理論的な後ろ盾は強いが、計算コストと実装の重さがネック。次に紹介する PPO の「ご先祖」的な位置づけ。
PPO:実務で最も使われる定番
PPO(Proximal Policy Optimization) は 2017年に、同じく Schulman らが TRPO を簡略化する形で発表した手法です。
TRPO の「KL制約を厳密に守る」という重い仕組みの代わりに、クリッピング(clipping) という単純な仕掛けで「方策が前から離れすぎないように」します。ざっくり言うと、更新の比率が一定範囲 $[1-\epsilon,\ 1+\epsilon]$ を超えたら、それ以上更新しても得しないようにブレーキをかける、というアイデアです。
これによって、TRPO のような複雑な2次近似を使わず、シンプルな1次の最適化(ふつうの勾配降下法)だけ で、信頼領域の考え方を近似的に実現できます。
PPO の強みは次の通りです。
- 実装がシンプルで扱いやすい
- ハイパーパラメータに対して頑健で、とりあえず動かしても安定して結果が出やすい
- ロボット制御からゲームプレイまで、幅広い応用で使われる 事実上の標準
原論文でも、PPO は「TRPO の利点の一部を持ちつつ、実装がずっと容易で、経験的にサンプル効率も良い」と述べられています。このため、「まず最初に試すベースライン」として非常に人気があります。
まとめ:TRPO のいいとこ取りをして実用性を高めたもの。迷ったらまず PPO、というくらいの定番。
SAC:サンプル効率に優れた off-policy 手法
SAC(Soft Actor-Critic) は 2018年に Tuomas Haarnoja らが発表した、off-policy のアクター・クリティック手法です。
SAC の特徴は 最大エントロピー強化学習(maximum entropy RL) という枠組みにあります。ふつうの強化学習は「報酬の合計」だけを最大化しますが、SAC はそれに加えて 方策のエントロピー(=行動のランダムさ)も一緒に最大化 します。論文の言葉を借りれば「タスクを成功させつつ、できるだけランダムに振る舞う」ことを目指します。
このエントロピー項には嬉しい効果があります。
- 探索(exploration)が促進される:行動に適度なランダムさが残るため、環境をよく探索できる
- 早すぎる収束を防ぐ:悪い局所解にハマりにくくなる
さらに SAC は off-policy なのでリプレイバッファでデータを再利用でき、サンプル効率が高い のが大きな武器です。SAC の原論文でも、連続制御のベンチマークにおいて、それまでの on-policy / off-policy 手法をサンプル効率・最終性能の両面で上回ったと報告されています。
エントロピーの強さを決める 温度パラメータ(temperature $\alpha$) は、後続論文(Haarnoja et al., 2018/2019)で自動調整できるようになり、チューニングの手間はかなり減っています。
注意点:SAC は本来 連続行動(continuous action) 向けの設計です。離散行動に対応する変種(Christodoulou, 2019 など)もありますが、離散なら PPO のほうが素直に扱えます。
使い分けの判断軸
ここからが本題の「どう選ぶか」です。いくつかの軸で整理します。
軸1:サンプル(環境とのやり取り)はどれくらい高価か?
これが一番効く判断軸です。
-
サンプルが高価な場合(実機ロボット、遅いシミュレータなど)
→ SAC- off-policy でデータを使い回せるため、少ない試行回数で学べます。
-
サンプルが安価で大量並列できる場合(高速シミュレータ、ゲームなど)
→ PPO- 1サンプルあたりの効率は劣りますが、大量のデータを一気に集めて安定して学べます。
ポイントは「サンプル効率」と「実時間(wall-clock time)」は別物だということです。SAC はサンプル効率で勝りますが、off-policy 手法は実際の実行時間が長くなりがちという指摘もあります。一方で PPO は多数の環境を並列に回せる場面では、実時間ではむしろ速く済むことがあります。
軸2:行動空間は離散か連続か?
- 離散行動(ゲームの操作、選択肢から選ぶタスクなど)→ PPO が素直
- 連続行動(ロボットの関節トルクなど)→ どちらも使えるが、SAC の効率が光りやすい領域
軸3:安定性と最終性能、どちらを重視するか?
一般的な傾向として、次のような特徴が知られています。
- SAC:初期の学習が速く、サンプル効率が高い
- PPO:安定性が高く、幅広いタスクで頑健に動く
つまり「早く立ち上がってほしいなら SAC」「安定重視・大量並列できるなら PPO」という見方もできます(もちろんタスク依存です)。
結局どう選べばいい?(フローチャート的まとめ)
初学者向けのスタート地点として、次のように考えると大きく外しません。
- とりあえず動かしたい/離散行動/大量に並列できる → まず PPO
- 連続制御でサンプル効率が重要(実機ロボットなど) → SAC
- PPO で試したがサンプル効率が足りない → SAC や TD3 など他の off-policy 手法を検討
- TRPO は「理論を学ぶ/PPO の背景を理解する」目的で押さえておく(実装の第一候補になることは少なめ)
ここで挙げた指針は一般的な傾向です。強化学習はタスクや環境設定への依存が非常に大きいので、最終的には 自分のタスクで実際に試して比較する ことが何より大切です。
3手法の比較表
| 項目 | TRPO | PPO | SAC |
|---|---|---|---|
| 発表年 | 2015 | 2017 | 2018 |
| 種別 | on-policy | on-policy | off-policy |
| 手法の系統 | 方策勾配(信頼領域) | 方策勾配(クリッピング) | アクター・クリティック(最大エントロピー) |
| 行動空間 | 連続・離散 | 連続・離散 | 主に連続(離散版もあり) |
| サンプル効率 | 低め | 低め | 高い |
| 安定性 | 高い | 高い | 中〜高 |
| 実装の手軽さ | 複雑 | シンプル | 中程度 |
| データ再利用 | しない | しない | する(リプレイバッファ) |
おわりに
- TRPO:KL制約で単調改善を理論保証する元祖。計算は重い。
- PPO:TRPO を簡略化した実務の定番。まず試すならこれ。
- SAC:エントロピーを活かした off-policy 手法。サンプル効率が高く、連続制御で強い。
まずは PPO で全体像をつかみ、必要に応じて SAC を試す、という進め方が学習・実務ともにおすすめです。
参考文献(出典)
- Schulman, J., Levine, S., Abbeel, P., Jordan, M., & Moritz, P. (2015). Trust Region Policy Optimization. ICML 2015. https://arxiv.org/abs/1502.05477
- Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. (2017). Proximal Policy Optimization Algorithms. arXiv:1707.06347. https://arxiv.org/abs/1707.06347
- Haarnoja, T., Zhou, A., Abbeel, P., & Levine, S. (2018). Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor. ICML 2018 / arXiv:1801.01290. https://arxiv.org/abs/1801.01290
- Haarnoja, T., et al. (2018/2019). Soft Actor-Critic Algorithms and Applications(温度パラメータの自動調整). arXiv:1812.05905. https://arxiv.org/abs/1812.05905
- Christodoulou, P. (2019). Soft Actor-Critic for Discrete Action Settings(離散版 SAC). arXiv:1910.07207. https://arxiv.org/abs/1910.07207
- OpenAI. Spinning Up in Deep RL — Soft Actor-Critic. https://spinningup.openai.com/en/latest/algorithms/sac.html