TL

方策勾配法と Actor-Critic・PPO

方策を直接勾配で動かす強化学習の本流を、定理の導出から実装の勘所まで一気通貫で理解できます。ベースラインで分散を抑え、PPOのクリップで暴走を止める設計の理由がつながります。

応用強化学習方策勾配Actor-CriticPPOアドバンテージ最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.方策勾配定理は「報酬の勾配」を「方策の対数の勾配×リターンの期待値」に書き換え、微分不能な環境を通さず方策を直接最適化できるようにします。
  • 2.リターンからベースライン(状態価値)を引いたアドバンテージを使うと、勾配の向きを変えずに分散だけを下げられます。これがActor-Criticの核心です。
  • 3.PPOは確率比をクリップして「1ステップで方策が動きすぎる」のを防ぐ目的関数で、TRPOの重い制約を軽い実装で近似したのが設計の要点です。

価値ベースではなく「方策を直接動かす」

ベルマン方程式と価値関数 で見た価値ベースの手法は、まず最適価値 Q* を求め、そこから貪欲方策を取り出します。しかしこの経路には弱点があります。行動空間が連続だと argmax_a Q(s,a) が解けず、確率的な方策(同じ状態でも確率的に行動を変える)も表現しにくい。そこで発想を逆転させ、価値を経由せず方策そのものをパラメータ化し、勾配で直接最適化する のが方策勾配法です。

方策をパラメータ θ を持つ関数 π_θ(a|s)(例えばニューラルネットの出力)とし、最大化したい目的を「方策に従ったときの期待リターン」と置きます。

J(θ) = E_{τ~π_θ}[ R(τ) ]
   τ     : 軌跡(状態・行動・報酬の系列 s0,a0,r0,s1,...)
   R(τ)  : その軌跡で得た割引リターンの合計

学習は単純で、θ ← θ + α·∇J(θ) と勾配を登るだけです(最適化の土台は 勾配降下法、ここでは符号が逆の勾配上昇)。問題は ∇J(θ) をどう計算するか。リターン R(τ) は環境の遷移を通って決まり、環境は普通微分できません。この壁を越えるのが方策勾配定理です。

方策勾配定理の導出

軌跡 τ の確率は方策と遷移確率の積です。P(τ|θ) = p(s0)·Π_t π_θ(a_t|s_t)·P(s_{t+1}|s_t,a_t)。目的関数の勾配を素直に書くと、期待値の中に確率自身の勾配が現れます。ここで使うのが 対数微分のトリック です。

∇P = P·(∇P / P) = P·∇log P

この恒等式を使うと、勾配を再び期待値の形(サンプルで近似できる形)に戻せます。

∇J(θ) = ∇ Σ_τ P(τ|θ)·R(τ)
      = Σ_τ P(τ|θ)·∇log P(τ|θ)·R(τ)
      = E_{τ~π_θ}[ ∇log P(τ|θ)·R(τ) ]

ここが導出の山場です。log P(τ|θ) を展開すると、初期分布 p(s0) と遷移確率 P(s'|s,a)θ を含まない ので勾配を取ると消えます。残るのは方策の対数だけです。

∇log P(τ|θ) = Σ_t ∇log π_θ(a_t|s_t)
なぜ環境を微分しなくてよいのか

これが方策勾配定理の最大の威力です。遷移確率 P(s'|s,a) は勾配計算から完全に消えるため、環境のダイナミクスを一切知らなくても(微分できなくても)勾配を推定できます。必要なのは「自分が選んだ行動の確率 π_θ(a|s)」の勾配だけ。これはこちらが設計したニューラルネットなので、誤差逆伝播でいくらでも微分できます。報酬は重み(スカラー係数)として掛かるだけで、報酬自体を微分する必要はありません。

これを軌跡からサンプリングして平均すれば勾配が得られます。これが最も素朴な方策勾配法 REINFORCE です。

∇J(θ) ≈ (1/N) Σ_n Σ_t ∇log π_θ(a_t|s_t)·G_t
   G_t : 時刻t以降の実際のリターン(その時点の行動の「成績」)

直感はこうです。∇log π_θ(a_t|s_t) は「その行動の確率を上げる方向」。それに G_t を掛けるので、良い結果(大きなリターン)につながった行動の確率を大きく上げ、悪い結果につながった行動の確率を下げる。試行錯誤の結果を確率に焼き戻しているわけです。

因果性:未来は過去の行動を評価しない

厳密には、時刻 t の行動 a_t の係数には「軌跡全体のリターン」ではなく「t 以降のリターン G_t」を使います。a_t より前にもらった報酬は a_t の良し悪しと無関係(因果的に影響を受けない)なので、係数から外しても勾配の期待値は変わりません。むしろ無関係な項を除くぶん分散が下がります。これを reward-to-go と呼びます。

ベースラインとアドバンテージ:分散を下げる

REINFORCE は不偏(期待値としては正しい勾配を与える)ですが、分散が極端に大きい ため実用しづらい欠点があります。原因は G_t の絶対値です。たとえば全行動のリターンが「+100 か +102」のような場合、どの行動も大きな正の係数を持ち、確率を一様に押し上げるだけで「どちらがマシか」の差がノイズに埋もれます。

解決策が ベースライン の導入です。係数 G_t から、行動に依存しない基準値 b(s_t) を引きます。

∇J(θ) ≈ E[ Σ_t ∇log π_θ(a_t|s_t)·(G_t − b(s_t)) ]

驚くべきことに、b が行動 a に依存しなければ 勾配の期待値は一切変わりません(不偏性が保たれる)

ベースラインを引いても偏らない理由

追加された項の期待値はゼロになります。E_a[∇log π_θ(a|s)·b(s)] = b(s)·Σ_a π_θ(a|s)·∇log π_θ(a|s) = b(s)·∇Σ_a π_θ(a|s) = b(s)·∇1 = 0。確率の総和は常に 1 で、定数を微分すると 0 だからです。つまり ベースラインは勾配の向きを変えず、分散だけを調整する自由なノブ として使えます。最適な b は分散を最小化する値ですが、実用上は状態価値 V(s) が良い近似になります。

ベースラインに状態価値 V(s) を選ぶと、係数は アドバンテージ関数 になります。

A(s,a) = Q(s,a) − V(s)
   Q(s,a) : 状態sで行動aを取ったときの価値
   V(s)   : その状態の平均的な価値(基準)

アドバンテージは「その状態の平均と比べて、この行動がどれだけ良かったか」を表す相対指標です。A > 0 なら平均より良い行動なので確率を上げ、A < 0 なら下げる。絶対的なリターンの大小に振り回されず、行動間の差だけを学習信号にできるため、分散が劇的に下がります。

Actor-Critic:方策と価値を同時に学ぶ

アドバンテージを使うには V(s)(やそれを通じた A)を知る必要がありますが、真の価値は未知です。そこで 価値関数もニューラルネットで近似し、方策と同時に学習する のが Actor-Critic です。役割分担が明快です。

要素Actor(行動器)Critic(評価器)
正体方策 π_θ(a|s)価値関数 V_φ(s)
役割行動を選ぶ・確率を出す状態の良さを見積もる
学習信号アドバンテージ A で勾配上昇実測リターンとの誤差(TD誤差)
更新の向き良い行動の確率を上げる予測価値を実測に近づける

Critic の学習は価値の予測誤差を縮める回帰問題で、典型的には TD誤差 を使います。δ_t = r_t + γ·V_φ(s_{t+1}) − V_φ(s_t)。これはベルマン期待方程式の残差そのもので、A(s_t,a_t) の1ステップ推定にもなっています。Actor はこの Critic が出すアドバンテージを係数に使って ∇log π の方向へ進む。両者が互いの出力を使い合いながら同時に良くなっていく構造です。

バイアスと分散のトレードオフ(GAE)

アドバンテージの推定には「何ステップ先まで実測を使うか」という選択があります。1ステップTD(δ_t のみ)は分散が小さい代わりに Critic の誤差がそのまま乗る バイアス が大きい。逆に reward-to-go の実測まで使うと不偏だが 分散 が大きい。実務では両者を割引和でなめらかに混ぜる GAE(Generalized Advantage Estimation) が標準で、パラメータ λ(0 から 1)でバイアスと分散のバランスを調整します。λ が大きいほど実測寄り(低バイアス・高分散)です。

PPO:方策が「動きすぎる」のを止める

Actor-Critic にもまだ落とし穴があります。方策勾配はオンポリシー——「今の方策で集めたデータ」でしか正しく更新できません。ところが1回の更新で方策を大きく動かすと、集めたデータが新しい方策と乖離し、勾配の推定が壊れます。1つのバッチで何度も勾配ステップを踏みたい(サンプル効率を上げたい)のに、踏みすぎると方策が崩壊する。このジレンマを解くのが PPO(Proximal Policy Optimization) です。

PPO はまず「旧方策に対する新方策の確率比」を定義します。r_t(θ) = π_θ(a_t|s_t) / π_θ_old(a_t|s_t)。この比に重要度サンプリングでアドバンテージを掛けたものが、更新したい素朴な目的です。問題は、この比が 1 から大きく外れると更新が暴走する点。PPO の核心は、比を一定範囲に クリップ して目的関数自体に歯止めを組み込むことです。

L_CLIP(θ) = E[ min( r_t(θ)·A_t ,  clip(r_t(θ), 1−ε, 1+ε)·A_t ) ]
   ε : クリップ幅(典型的に 0.1〜0.2)
   clip(x, lo, hi) : x を [lo, hi] の範囲に丸める

ここで min を取るのが巧妙な設計です。読み解きます。

min とクリップが効く仕組み

アドバンテージが正(良い行動)のとき、目的を上げようと r_t を増やしますが、1+ε でクリップされるので それ以上比を伸ばしても目的は増えません。確率を上げすぎる動機が消えます。アドバンテージが負(悪い行動)のときは r_t を下げたいが、1−ε を割ると クリップ側の値 (1−ε)·A_t で目的が頭打ちになりmin がこの小さい方を選ぶ)、それ以上下げても目的は増えなくなります。min を取ることで目的関数は常に クリップなしの値の悲観的な下界 になり、「比を有利な向きへ動かしすぎたぶんは目的に反映しない」効果が働きます。結果として 信頼領域を外れた更新は目的関数の傾きがゼロになり、勾配がそこで止まる のが本質です。

なぜこんな仕掛けが要るのか。先行手法の TRPO は「新旧方策の KL ダイバージェンスを一定以下に抑える」という制約付き最適化で同じ目的を達成しましたが、二次近似や共役勾配が必要で実装が重い。PPO は KL 制約を、確率比のクリップという一次の単純な操作で近似 しました。制約付き最適化を解く代わりに、制約を破ろうとすると勾配が消える目的関数を設計した、という発想の転換です。

観点TRPOPPO(クリップ版)
方策の制約KLダイバージェンスを明示的に制約確率比のクリップで暗黙に制約
最適化制約付き最適化(共役勾配+二次近似)通常のSGD/Adamで一次最適化
実装の重さ重い・実装が複雑軽い・数十行で書ける
1バッチの再利用理論は厳密だが計算が高い数エポック回せてサンプル効率が良い
位置づけ原理的な信頼領域法その実用的近似(事実上の標準)

実際の PPO 目的は、このクリップ項に Critic の価値損失 と、探索を促す エントロピーボーナス を足した合成です。L = L_CLIP − c1·L_value + c2·H[π_θ]。価値損失で Critic を、クリップ項で Actor を、エントロピー項で「決め打ちしすぎない確率的な方策」を同時に保ちます。

まとめ

概念解決した問題核心アイデア
方策勾配定理環境が微分できない対数微分で勾配を log π の期待値に変換
reward-to-go無関係な過去報酬がノイズt以降のリターンだけを係数に
ベースライン勾配の分散が大きすぎる行動非依存の基準を引く(不偏のまま)
アドバンテージ絶対リターンに振り回される平均との差 Q−V で相対評価
Actor-Critic真の価値が未知価値関数も同時に近似学習
PPO方策が1ステップで暴走確率比をクリップし信頼領域を近似

方策勾配法の系譜は、「方策を直接微分する」という一点から出発し、分散と安定性という二つの敵を順に潰してきた歴史 として読めます。定理が微分の壁を越え、ベースラインとアドバンテージが分散を抑え、Actor-Critic がそれを実装可能にし、PPO がオンポリシー更新の脆さに歯止めをかけた。この PPO が、まさに RLHF と DPO で LLM のアライメントに使われる本体です。強化学習 の全体像と合わせて押さえれば、現代の強化学習が「価値を解くか、方策を動かすか」の二系統で見通せるようになります。

AI/機械学習 Article

方策勾配法と Actor-Critic・PPOを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

強化学習

比較で見る軸

難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5

導入後に効く点

リターンからベースライン(状態価値)を引いたアドバンテージを使うと、勾配の向きを変えずに分散だけを下げられます。これがActor-Criticの核心です。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
AI/機械学習
タグ数
5

判断チェックリスト

  • 自社の用途が「強化学習 / 方策勾配」に近いか確認する。
  • 強みである「方策勾配定理は「報酬の勾配」を「方策の対数の勾配×リターンの期待値」に書き換え、微分不能な環境を通さず方策を直接最適化できるようにします。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

強化学習方策勾配Actor-CriticPPOアドバンテージ強化学習方策勾配Actor-Critic
参考: 公式情報