0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

強化学習アルゴリズムの使い分け:TRPO / PPO / SAC

0
Last updated at Posted at 2026-07-24

はじめに

強化学習を学び始めると、PPO TRPO SAC といったアルゴリズム名がたくさん出てきて、「結局どれをいつ使えばいいの?」と迷いがちです。

この記事では、代表的な3つのアルゴリズムを 初学者でもわかるように 整理し、実際のタスクでどう選べばよいかの指針をまとめます。数式は最小限にとどめ、「性格の違い」と「選び方」に重点を置いて説明します。

この記事は各アルゴリズムの 原論文 をあたって内容を確認しています。記事末尾に出典をまとめてあるので、より深く学びたい方はそちらもどうぞ。

前提:2つの大きな分類「on-policy」と「off-policy」

3つのアルゴリズムを理解するうえで、まず押さえておきたいのが on-policy / off-policy という区別です。ここが使い分けの一番の軸になります。

on-policy(オンポリシー)

いま使っている方策(policy)で集めたデータだけ」を使って学習する方式です。方策を更新したら、その前に集めたデータは基本的に使えなくなるので捨てます。

  • 該当:TRPOPPO
  • 性格:安定しているが、データを使い捨てるので効率は悪め

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」という見方もできます(もちろんタスク依存です)。

結局どう選べばいい?(フローチャート的まとめ)

初学者向けのスタート地点として、次のように考えると大きく外しません。

  1. とりあえず動かしたい/離散行動/大量に並列できる → まず PPO
  2. 連続制御でサンプル効率が重要(実機ロボットなど)SAC
  3. PPO で試したがサンプル効率が足りないSAC や TD3 など他の off-policy 手法を検討
  4. TRPO は「理論を学ぶ/PPO の背景を理解する」目的で押さえておく(実装の第一候補になることは少なめ)

ここで挙げた指針は一般的な傾向です。強化学習はタスクや環境設定への依存が非常に大きいので、最終的には 自分のタスクで実際に試して比較する ことが何より大切です。

3手法の比較表

項目 TRPO PPO SAC
発表年 2015 2017 2018
種別 on-policy on-policy off-policy
手法の系統 方策勾配(信頼領域) 方策勾配(クリッピング) アクター・クリティック(最大エントロピー)
行動空間 連続・離散 連続・離散 主に連続(離散版もあり)
サンプル効率 低め 低め 高い
安定性 高い 高い 中〜高
実装の手軽さ 複雑 シンプル 中程度
データ再利用 しない しない する(リプレイバッファ)

おわりに

  • TRPO:KL制約で単調改善を理論保証する元祖。計算は重い。
  • PPO:TRPO を簡略化した実務の定番。まず試すならこれ。
  • SAC:エントロピーを活かした off-policy 手法。サンプル効率が高く、連続制御で強い。

まずは PPO で全体像をつかみ、必要に応じて SAC を試す、という進め方が学習・実務ともにおすすめです。

参考文献(出典)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?