方策勾配法 — 価値を経由せず、方策を直接磨く

DQN は「価値を学び、行動は価値から導く」路線でした。この章はもうひとつの大きな路線 — 行動の出やすさそのものをパラメータにして、良かった行動が出やすくなる方向へ直接勾配を登る方策勾配法。REINFORCE と、その泣きどころ「高分散」を抑えるベースラインまで動かして理解します。

1. 方策を直接パラメータ化する

価値ベースの手法では、方策は Q値の「おまけ」でした(Q が決まれば argmax で行動が決まる)。方策勾配法では、方策 π(a|s; θ) をそれ自体パラメータ θ を持つ確率分布として持ちます。離散行動なら定番はソフトマックス方策:各行動に「選好」h(a) という数値を持たせ、指数を取って正規化するだけです。

π(a) = eh(a)/T / Σb eh(b)/T h(a)=行動 a の選好(パラメータ)、T=温度。T が低いほど最大の h に確率が集中し、高いほど均等になる

下のデモで、「良い結果だった」と思う行動のバーをクリックしてみてください。その行動の選好が上がり、確率が押し上げられます。学習の正体は「これを報酬に応じて自動でやる」ことに過ぎません。

ソフトマックス方策を手で動かす — クリックで選好を上げる
バー(またはボタン)のクリック=「その行動が良かった」→ 選好 h を +0.5。確率の合計は常に 1 なので、ひとつを持ち上げると他は自動的に下がります。価値関数はどこにも登場しない — 方策そのものを直接いじっている点に注目。温度 T を下げると貪欲に、上げると探索的になります。
POINT — 方策を直接持つと何がうれしいか ①連続行動に強い:ロボットのトルクのような連続値では maxa Q(s,a) を解くこと自体が難しいが、π を正規分布などにすればサンプルするだけ。②確率的方策を表せる:じゃんけんのように「混ぜること」自体が最適な課題では、決定的になりがちな価値ベースは苦しい。③行動確率が θ に対して滑らかに変わるので、勾配法がそのまま使える。
価値ベース(Q学習・DQN)方策勾配法
学ぶもの行動価値 Q(s, a)方策 π(a|s; θ) を直接
行動の決め方argmax Q(+ε-greedy)π からサンプル
行動空間離散が得意連続もそのまま扱える
方策の性質決定的になりがち確率的方策が自然
弱点max による過大評価・不安定さ高分散・サンプル効率の低さ

2. REINFORCE — 良かった行動を、もっと出やすく

目的ははっきりしています:期待リターン J(θ) = E[G] を最大化する θ を見つけたい。勾配で登るには ∇J が要りますが、これが驚くほど素直な形になることが知られています(方策勾配定理)。

∇θ J(θ) = Eπ[ Gt · ∇θ log π(At | St; θ) ] 簡略形。∇ log π は「その行動の確率を上げる方向」。つまり リターン G で重み付けした「出やすくする方向」の平均

読み方はこうです。∇θ log π(At|St) は「いま取った行動 At をもっと出やすくする θ の動かし方」。それに係数 Gt(実際に得たリターン)を掛ける — 結果が良かった行動ほど強く「もっとやれ」、悪かった行動は「控えろ」。REINFORCE はこの期待値を、実際に走らせた1エピソードのサンプルで置き換えて θ ← θ + α Gt ∇ log π と更新するだけのアルゴリズムです。

下のデモは1状態・3行動の課題です。各行動の真の期待報酬は隠されています(報酬には大きなノイズが乗っています)。エージェントが 行動→報酬→確率の増減 を繰り返す様子を見てください。

REINFORCE の学習ライブ — 行動確率が報酬に揉まれて動く
右のグラフは3行動の確率の推移。最終的には最良の行動に寄っていきますが、道中がひどくガタつくのがポイント — 1回のリターンというノイズまみれのサンプルをそのまま勾配に使っているからです。「別の乱数」で何度か再実行すると、系列によってはしばらく最良でない行動に固執することも。これも高分散の現れです。

3. 高分散 — REINFORCE の泣きどころ

なぜこれほどブレるのでしょうか。REINFORCE の更新係数 Gt はたった1エピソードのサンプルで、環境の運(ノイズ)を丸ごと含みます。さらに報酬が全部プラスの課題では、どの行動を取っても「もっとやれ」方向に更新されるため、たまたま多くサンプルされた行動がそれだけで伸びてしまう — 相対的な良し悪しの情報が、大きな共通オフセットに埋もれるのです。

注意 — サンプル効率の低さ REINFORCE はオンポリシー:勾配の式は「いまの方策 πθ で集めたデータ」を前提にしているので、θ を一歩更新した瞬間に手持ちのエピソードは古くなり、基本的に使い捨てです。DQN のようにリプレイバッファで過去の経験を再利用することができず、更新のたびに新しい試行が必要になります。高分散と並ぶ、方策勾配法の代表的なコストです。

分散を下げる定番がベースラインです。リターンから基準値 b(たとえば平均リターン)を引き、「平均よりどれだけ良かったか」を係数にします。

∇θ J(θ) = Eπ[ ( Gt − b ) · ∇θ log π(At | St; θ) ] b=ベースライン(例:リターンの移動平均)。「平均超え」なら出やすく、「平均未満」なら出にくく
ベースラインの効果 — 同じ課題・12回ずつの学習カーブ
viz2 と同じ課題(期待報酬 1.0 / 2.0 / 3.0 — どれもプラス)を、生のリターン G を使うエージェントと G − 平均(ベースライン)を使うエージェントで 12 回ずつ学習。帯は 12 回分のばらつき(±1σ)。ベースライン側は帯が細いまま、まっすぐ最適へ向かいます。ノイズ σ を上げてもベースラインの帯はほとんど太りません。
POINT — ベースラインは「タダ」で分散だけ下げる b を引いても勾配の期待値は変わりません(不偏)。b が行動に依存しなければ E[b·∇log π] = b·∇Σaπ(a) = b·∇1 = 0 だからです。つまり平均を引くのは統計的にノーコスト — 期待値はそのまま、ばらつきだけが減る。「引き算ひとつ」が学習の安定性を一変させる、強化学習屈指のコスパの良いテクニックです。

4. まとめと次への伏線

一歩先へ — ベースラインの最強候補は「状態価値」 ベースライン b を定数ではなく状態価値 V(s) にすると、係数は G − V(s)、すなわち「その状態の平均的な見込みより、この行動はどれだけ良かったか」=アドバンテージになります。では V(s) は誰が学ぶのか? — 方策(アクター)とは別に、価値を推定するクリティックを並走させればいい。この分業こそが次章の Actor-Critic であり、現代の主力アルゴリズム PPO へと続く本流です。