Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

強化学習への導入

強化学習(Reinforcement Learning、RL)は、 エージェント環境 との相互作用を通じて逐次的な意思決定を学び、フィードバックとして 報酬 を受け取り、時間の経過に伴う累積報酬を最大化するように 方策 を最適化する枠組みです (Sutton and Barto 2018)。ラベル付きの入出力ペアを必要とする教師あり学習とは異なり、RLは試行錯誤を通じて最適な振る舞いを発見します。

マルコフ決定過程(MDP)

MDPは5つ組 \((S, A, P, R, \gamma)\) です。

  • \(S\):状態空間 — 環境が取りうるすべての構成

  • \(A\):行動空間 — エージェントが利用できるすべての行動

  • \(P(s'\vert s, a)\):遷移関数 — 行動 \(a\) を取った後に状態 \(s\) から状態 \(s'\) に到達する確率

  • \(R(s, a, s')\):報酬関数 — 遷移に対する即時のスカラー・フィードバック

  • \(\gamma \in [0, 1]\):割引率 — 即時の報酬に対して将来の報酬をどの程度重視するか

マルコフ性 :未来は履歴ではなく現在の状態だけに依存します。

\[ P(s_{t+1} | s_t, a_t, s_{t-1}, a_{t-1}, \ldots) = P(s_{t+1} | s_t, a_t) \]

これにより、問題を扱いやすくできます。

Tip

エージェントと環境の相互作用ループ

各時刻 \(t\) で次を行います。

  1. エージェントが状態 \(s_t\) を観測する

  2. エージェントが方策 \(\pi(a\vert s)\) に従って行動 \(a_t\) を選択する

  3. 環境が \(s_{t+1} \sim P(\cdot\vert s_t, a_t)\) へ遷移する

  4. エージェントが報酬 \(r_t = R(s_t, a_t, s_{t+1})\) を受け取る

  5. 終端状態またはホライズン \(T\) に達するまで繰り返す

中核概念と定義

方策(Policy) \(\pi(a\vert s)\):状態から行動確率への写像。決定論的な場合は \(a = \pi(s)\)、確率論的な場合は \(a \sim \pi(\cdot\vert s)\) です。

リターン(Return) (累積割引報酬):

\[ G_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k} = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \cdots \]

価値関数(Value Function) (方策 \(\pi\) の下で状態 \(s\) から得られる期待リターン):

\[ V^\pi(s) = \mathbb{E}_\pi\left[G_t \mid s_t = s\right] = \mathbb{E}_\pi\left[\sum_{k=0}^{\infty} \gamma^k r_{t+k} \mid s_t = s\right] \]

行動価値関数(Action-Value Function) (状態 \(s\) で行動 \(a\) を取り、その後 \(\pi\) に従う場合の期待リターン):

\[ Q^\pi(s, a) = \mathbb{E}_\pi\left[G_t \mid s_t = s, a_t = a\right] \]

アドバンテージ関数(Advantage Function) (行動 \(a\) が平均と比べてどれだけ優れているか):

\[ A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s) \]

ベルマン方程式(Bellman Equations) (再帰的な関係):

\[ \begin{aligned} V^\pi(s) &= \sum_a \pi(a|s) \sum_{s'} P(s'|s,a)\left[R(s,a,s') + \gamma V^\pi(s')\right] \\ Q^\pi(s,a) &= \sum_{s'} P(s'|s,a)\left[R(s,a,s') + \gamma \sum_{a'} \pi(a'|s') Q^\pi(s', a')\right] \end{aligned} \]

Important

最適方策とベルマン最適性

最適方策 \(\pi^*\) は次を満たします。 \[ V^*(s) = \max_a \sum_{s'} P(s'|s,a)\left[R(s,a,s') + \gamma V^*(s')\right] \]

\[ Q^*(s,a) = \sum_{s'} P(s'|s,a)\left[R(s,a,s') + \gamma \max_{a'} Q^*(s', a')\right] \] \(Q^*\) が分かれば、最適方策は単純に \(\pi^*(s) = \arg\max_a Q^*(s,a)\) となります。

RL手法の分類

強化学習アルゴリズムは、いくつかの軸に沿って分類できます。この分類を理解すると、問題に適したアプローチを選びやすくなります。

Important

分類における重要な違い

モデルフリー(Model-Free)とモデルベース(Model-Based)

  • モデルフリー :経験から方策または価値関数を直接学ぶ。環境ダイナミクスに関する知識は持たない。LLMでは言語ダイナミクスをモデル化するのが困難なため、最も実用的です。

  • モデルベース :環境の遷移 \(P(s'\vert s,a)\) のモデルを学習または利用する。先の計画を立てられるため、サンプル効率は高い一方、正確なモデルが必要です。

価値ベース(Value-Based)と方策ベース(Policy-Based)

  • 価値ベース :\(Q(s,a)\) または \(V(s)\) を学び、\(\arg\max_a Q(s,a)\) として方策を導く。離散的で小さな行動空間(例:Atari)ではうまく機能します。連続的または大規模な行動空間では苦戦します。

  • 方策ベース :\(\pi_\theta(a\vert s)\) を直接パラメータ化して最適化する。連続的または高次元の行動空間に自然に適用できます。LLMには不可欠です(語彙が32K〜128K個の行動に相当するため)。

  • アクター・クリティック(Actor-Critic) :両者を組み合わせる。方策(アクター)が行動を提案し、価値関数(クリティック)が評価します。LLM向けのPPOはアクター・クリティックです。

オンポリシー(On-Policy)とオフポリシー(Off-Policy)

  • オンポリシー現在の方策が生成したデータから学ぶ。更新のたびにデータを再生成する必要があります。例:REINFORCE、PPO、A2C。より安定しますが、サンプル効率は低くなります。

  • オフポリシー :任意の方策(古いバージョンや他のエージェントを含む)が生成したデータから学ぶ。過去の経験を再利用できます。例:Q学習、DQN、SAC。サンプル効率は高い一方、安定化が難しくなります。

TD学習(Temporal Difference Learning)

TD学習 (Sutton 1988) はブートストラップを行います。つまり、エピソード全体が終わるのを待たず、別の価値推定を使って価値推定を更新します。

TD誤差を理解する:「驚き」を学習シグナルにする

TD誤差 は、エージェントが持つ将来報酬の 現在の推定 と、1ステップ進んだ後の 新しく更新された推定 とのずれを測ります。簡単に言えば、エージェントが「起こると思っていたこと」と「実際に起こったことに、次に起こると予想することを加えたもの」の差です。これはエージェントの「驚き」を表します。

Note

運転にたとえると

車で自宅に帰るとき、所要時間は30分だと予想しているとします。

  • 予測 :合計30分。

  • 現実の変化 :10分走ったところで、予期せぬ道路工事に遭遇しました。GPSが更新され、残り35分かかると表示しました。

  • TD誤差 :現在の合計予想時間は45分(経過10分+残り35分)です。新しい推定(45分)と古い推定(30分)の差は、 +15分のTD誤差 です。この「驚き」を使って、次回はルートを変更します。

正のTD誤差 は、結果が予想より良かったことを意味します \(\rightarrow\) この状態の価値を高めます。\ 負のTD誤差 は、結果が予想より悪かったことを意味します \(\rightarrow\) この状態の価値を下げます。

TD誤差の式

\[ \boxed{\delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t)} \]

  • \(R_{t+1}\):行動を取った後に受け取る 即時報酬

  • \(\gamma V(S_{t+1})\):次の状態の推定 割引価値 (次の状態以降で得られるとエージェントが予想するものを、割引率 \(\gamma\) でスケールした値)。

  • \(V(S_t)\):現在の状態の価値に対する 元の推定

\((R_{t+1} + \gamma V(S_{t+1}))\) の合成項を TDターゲット と呼びます。したがって、次のようになります。

\[ \text{TD Error} = \text{TD Target} - \text{Old Estimate} \]

エージェントはTD誤差をどう使うか

エージェントは、TD誤差をゼロに近づけるように価値関数を調整します。

\[ \boxed{V(S_t) \leftarrow V(S_t) + \alpha \cdot \delta_t} \]

  • \(\delta_t > 0\) の場合:結果が予測より良かった \(\rightarrow\) エージェントがこの状態を求めるように \(V(S_t)\) を増やします。

  • \(\delta_t < 0\) の場合:結果が予測より悪かった \(\rightarrow\) エージェントがこの状態を避けるように \(V(S_t)\) を減らします。

  • \(\delta_t = 0\) の場合:予測が完全だった \(\rightarrow\) 更新は不要です(収束)。

Tip

TDとモンテカルロ法

モンテカルロ法 :エピソードが終わるまで待ち、実際のリターン \(G_t\) を使います。不偏ですが、分散が大きくなります(1本の軌跡は代表的でない可能性があります)。

TD :推定した将来価値 \(\gamma V(s_{t+1})\) を使って、各ステップの後に更新します。偏りがあります(\(V\) の精度に依存します)が、分散は大幅に小さくなります(1ステップ更新なので、ノイズが累積しません)。

TD(\(\lambda\)) :TD(0)とモンテカルロ法の間を補間します。\(\lambda=0\) は純粋なTD、\(\lambda=1\) は純粋なMCです。PPOでGAEが行っていることはまさにこれです(\(\lambda=0.95\))。

TDターゲット :\(y_t = r_t + \gamma V(s_{t+1})\) — 近づけていく「より良い推定」。

マルチステップTD (nステップ・リターン):

\[ G_t^{(n)} = r_t + \gamma r_{t+1} + \cdots + \gamma^{n-1} r_{t+n-1} + \gamma^n V(s_{t+n}) \]

Q学習

Q学習 (Watkins 1989) は、基礎的な オフポリシー・価値ベース アルゴリズムです。実際に従っている方策にかかわらず、最適な \(Q^*\) を直接学びます。

更新則

\[ \boxed{Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha\left[r_t + \gamma \max_{a'} Q(s_{t+1}, a') - Q(s_t, a_t)\right]} \]

Tip

Q学習がオフポリシーである理由

更新では \(\max_{a'} Q(s_{t+1}, a')\) を使います。これは、エージェントが実際にどの行動を取ったかにかかわらず、次の状態での最良の行動の価値です。したがって、振る舞い方策がランダムに探索していても(\(\epsilon\)-greedy)、ターゲットは常に最適方策の下で計算されます。

これが、Q学習がリプレイバッファ、デモンストレーション、その他あらゆる経験源から学べる理由です。データが現在の方策から生成されている必要はありません。

SARSA (Rummery and Niranjan 1994)(オンポリシーの代替手法)は、最大値の代わりに実際に取った行動を使います。

\[ Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha\left[r_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t)\right] \]

Deep Q-Network(DQN) (Mnih et al. 2015):表形式の \(Q(s,a)\) をニューラルネットワーク \(Q_\theta(s,a)\) に置き換えます。主な革新は、経験リプレイバッファ(オフポリシーデータの再利用)、ターゲットネットワーク(安定性)、\(\epsilon\)-greedy探索です。

DQNの損失関数 :リプレイバッファからサンプリングしたミニバッチについて、平均二乗TD誤差を最小化するようネットワークを学習します。

\[ \boxed{\mathcal{L}(\theta) = \mathbb{E}_{(s,a,r,s') \sim \mathcal{B}}\!\left[\left(r + \gamma \max_{a'} Q_{\bar{\theta}}(s', a') - Q_\theta(s, a)\right)^2\right]} \]

ここで \(Q_{\bar{\theta}}\) は ターゲットネットワーク です。これは \(Q_\theta\) の凍結コピーで、\(C\) ステップごとにだけ更新されます(例:\(C = 10{,}000\))。これにより移動するターゲット問題を防ぎます。ターゲットネットワークがなければ、予測とターゲットが同時に変化し、発散を引き起こします。

勾配更新 :損失を \(\theta\) について微分します(ターゲット \(y\) は定数として扱い、\(\bar{\theta}\) を通じて勾配は流れないことに注意してください)。

\[ \nabla_\theta \mathcal{L} = -\mathbb{E}\!\left[\underbrace{\left(r + \gamma \max_{a'} Q_{\bar{\theta}}(s', a') - Q_\theta(s, a)\right)}_{\text{TD error } \delta}; \nabla_\theta Q_\theta(s, a)\right] \]

\[ \theta \leftarrow \theta - \alpha \cdot \delta \cdot \nabla_\theta Q_\theta(s, a) \]

学習手順 (学習ステップごと):

  1. 行動 :\(\epsilon\)-greedyで行動を選択します。確率 \(\epsilon\) でランダムな行動を取り、それ以外では \(a = \arg\max_a Q_\theta(s, a)\) とします。最初の100万ステップで \(\epsilon\) を1.0 \(\rightarrow\) 0.01へアニーリングします。

  2. 保存 :遷移 \((s, a, r, s', d)\) を容量約1Mのリプレイバッファ \(\mathcal{B}\) に保存します。

  3. サンプリング :\(\mathcal{B}\) から32個の遷移を一様にミニバッチとして取り出します。

  4. ターゲット計算 :\(y = r + \gamma(1 - d)\max_{a'} Q_{\bar{\theta}}(s', a')\) とします(終端状態なら将来価値をゼロにする)。

  5. 更新 :\((y - Q_\theta(s,a))^2\) に対して勾配降下を行います。勾配を \([-1, 1]\) にクリップします(Huber損失の変種)。

  6. ターゲット同期 :\(C\) ステップごとに \(\bar{\theta} \leftarrow \theta\) としてコピーします。

リプレイバッファを理解する

リプレイバッファ (Lin 1992)(経験リプレイ)は、過去の経験を保存し、後からエージェントが再び学習できるようにするデータ保存機構です。行動の直後にデータを捨てるのではなく、エージェントは遷移をメモリーバンクに保存し、ランダムなミニバッチをサンプリングして学習します。

保存されるもの :各遷移は次のタプルです。

\[ e_t = (s_t, a_t, r_t, s_{t+1}, d_t) \]

ここで \(d_t\) は、エピソードが終了したかどうかを示すブール値フラグです。

Important

リプレイバッファが不可欠な理由

  • データの相関を断つ :連続するステップは強く相関しています。ニューラルネットワークは系列データ上でうまく一般化できません。バッファからランダムにサンプリングすると、学習サンプルはおおむね独立同分布(i.i.d.)になります。

  • 壊滅的忘却を防ぐ :バッファがなければ、難しいレベルをクリアしたエージェントが、次のレベルで1万ステップ失敗し続ける間に、そのクリア方法を忘れる可能性があります。バッファにより、過去の状況を練習し続けられます。

  • サンプル効率を高める :環境の実行には時間がかかることがあります。リプレイバッファがあれば、同じ遷移から複数回重みを更新でき、各ステップからより多くの価値を引き出せます。

import random
from collections import deque

class ReplayBuffer:
    def __init__(self, capacity):
        self.buffer = deque(maxlen=capacity)  # 上限付きキュー
    
    def push(self, state, action, reward, next_state, done):
        self.buffer.append((state, action, reward, next_state, done))
        
    def sample(self, batch_size):
        # ランダムな経験を選び、相関を断つ
        return random.sample(self.buffer, batch_size)
        
    def __len__(self):
        return len(self.buffer)

Tip

優先経験リプレイ(PER)

標準的なバッファでは、すべての経験が同じ確率でサンプリングされます。しかし、なかには他よりも多くを学べる経験があります。 PER (Schaul et al. 2016) は、サンプリング確率を TD誤差の大きさ に応じて調整します。ある遷移が大きな「驚き」(高い \(\vert \delta_t\vert\))を生じさせた場合、エージェントはその遷移をより頻繁にサンプリングし、より速くモデルを修正します。これにより、Atariベンチマークでは学習が2〜3\(\times\)高速化されます。

Warning

Q学習がLLMで失敗する理由

言語生成の行動空間は全語彙(\(\vert A\vert = 32\text{K}\)〜\(128\text{K}\))であり、状態空間は取りうるすべてのトークン列(無限)です。各トークン位置で128K個の行動について \(\max_a Q(s,a)\) を計算するのは扱いきれません。これが、LLMのRLで方策ベース手法(PPO、GRPO)を使う理由です。

方策勾配法 — REINFORCE

価値関数を学習して方策を導く代わりに、方策パラメータ \(\theta\) を直接最適化して期待リターンを最大化します (Williams 1992)。

目的関数 :\(J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}[R(\tau)] = \mathbb{E}_{\pi_\theta}\left[\sum_{t=0}^T r_t\right]\)

方策勾配定理

\[ \boxed{\nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t\right]} \]

Important

方策勾配定理 — 形式的な導出(5ステップ)

ステップ1 :目的関数を定義します。期待リターンを最大化したいので、次のようにします。 \[ J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}!\left[\sum_{t=0}^T r_t\right] = \sum_\tau P(\tau|\theta) R(\tau) \] ここで \(P(\tau\vert \theta) = p(s_0)\prod_{t=0}^T \pi_\theta(a_t\vert s_t), p(s_{t+1}\vert s_t, a_t)\) は軌跡の確率です。

ステップ2 :勾配を取ります。\(\theta\) に依存するのは \(\pi_\theta\) の項だけです(ダイナミクス \(p\) は依存しません)。 \[ \nabla_\theta J = \sum_\tau \nabla_\theta P(\tau|\theta), R(\tau) \]

ステップ3対数微分トリック を適用します:\(\nabla_\theta P(\tau\vert \theta) = P(\tau\vert \theta), \nabla_\theta \log P(\tau\vert \theta)\)。 \[ \nabla_\theta J = \mathbb{E}_{\tau \sim \pi_\theta}!\left[\nabla_\theta \log P(\tau|\theta), R(\tau)\right] \]

ステップ4 :\(\log P(\tau\vert \theta)\) を展開します。\(\log p(s_0)\) と \(\log p(s_{t+1}\vert s_t,a_t)\) の項は \(\nabla_\theta\) によって消えます。 \[ \nabla_\theta \log P(\tau|\theta) = \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \]

ステップ5 :組み合わせます。未来の報酬は過去の行動に依存しないため(因果性)、各 \(\nabla\log\pi\) は未来のリターン \(G_t = \sum_{t'=t}^T r_{t'}\) とのみ組み合わさります。 \[ \boxed{\nabla_\theta J = \mathbb{E}_{\pi_\theta}!\left[\sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_t\right]} \]

Tip

この定理が美しい理由

勾配は 環境ダイナミクス \(p(s'\vert s,a)\) を微分する必要がありません。対数微分トリックにより、単に方策を実行して報酬を観測するだけで推定できる期待値に変換されます。\(G_t\) をアドバンテージ \(\hat{A}_t = G_t - V(s_t)\) に置き換えると、偏りを導入せずに分散を減らせます(任意の状態依存ベースラインについて \(\mathbb{E}[\nabla\log\pi \cdot b(s)] = 0\) だからです)。

REINFORCEアルゴリズム (Williams 1992)(Williams、1992):

  1. \(\pi_\theta\) の下で完全な軌跡 \(\tau = (s_0, a_0, r_0, s_1, a_1, r_1, \ldots)\) をサンプリングする

  2. 各時刻についてリターン \(G_t = \sum_{k=0}^{T-t} \gamma^k r_{t+k}\) を計算する

  3. 更新する:\(\theta \leftarrow \theta + \alpha \sum_t \nabla_\theta \log \pi_\theta(a_t\vert s_t) \cdot G_t\)

Tip

REINFORCEの直感 — 「報酬重み付き最尤推定」

\(\nabla_\theta \log \pi_\theta(a_t\vert s_t)\) は、行動 \(a_t\) の確率を高める方向です。これに \(G_t\) を掛けると、次のようになります。

  • 高報酬の軌跡:取ったすべての行動の確率を高める(\(G_t\) が正)

  • 低報酬の軌跡:取った行動の確率を下げる(ベースライン適用後の \(G_t\) が負)

これは、どれだけ良い結果になったかに応じて重み付けした、行動を「ラベル」とする教師あり学習です。

ベースラインによる分散削減

\[ \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\left[\sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot (G_t - b(s_t))\right] \]

\(a_t\) に依存しない任意のベースライン \(b(s_t)\) は、勾配を不偏のまま保ちつつ分散を減らします。最良の選択は \(b(s_t) = V^\pi(s_t)\) です。このとき \(G_t - V(s_t) \approx A^\pi(s_t, a_t)\) = アドバンテージとなります。

Warning

REINFORCEの限界

  • 高分散 :各勾配は1本の軌跡を使います。安定した更新には数千のサンプルが必要です。

  • ブートストラップなし :エピソード全体が終わるまで待つ必要があります(途中の貢献を評価できません)。

  • サンプル効率が低い :データは1回使うと破棄されます(オンポリシー)。

  • ステップサイズの制御なし :方策を壊滅的に大きく更新する可能性があります。

これらの限界が、REINFORCE \(\to\) アクター・クリティック \(\to\) TRPO \(\to\) PPO という発展を促しました。

アクター・クリティック法

方策勾配(アクター)と学習した価値関数(クリティック)を組み合わせ、方策最適化の柔軟性を保ちながら分散を減らします。

アーキテクチャ

  • アクター \(\pi_\theta(a\vert s)\):方策。行動を提案します。

  • クリティック \(V_\phi(s)\) または \(Q_\phi(s,a)\):状態/行動がどれだけ良いかを評価します。低分散のベースラインを提供します。

アクターの更新 (クリティックから得たアドバンテージを使用):

\[ \nabla_\theta J = \mathbb{E}\left[\nabla_\theta \log \pi_\theta(a_t|s_t) \cdot \hat{A}_t\right], \quad \hat{A}_t = r_t + \gamma V_\phi(s_{t+1}) - V_\phi(s_t) \]

クリティックの更新 (TD誤差を最小化):

\[ \mathcal{L}_\text{critic} = \mathbb{E}\left[(r_t + \gamma V_\phi(s_{t+1}) - V_\phi(s_t))^2\right] \]

Important

LLM向けPPOへの発展

  1. REINFORCE (Williams 1992):高分散でブートストラップなし \(\rightarrow\) LLMには実用的でない

  2. A2C/A3C (Mnih et al. 2016)(Advantage Actor-Critic):TDベースのアドバンテージを使います。分散は低下しますが、ステップサイズに上限がありません。

  3. TRPO (Schulman et al. 2015):方策更新間のKLダイバージェンスを制約します。安定しますが、2次最適化のため高コストです。

  4. PPO (Schulman et al. 2017):方策比をクリップし、1次最適化だけでTRPOと同程度の安定性を実現します。LLMのRL学習における標準手法です。

  5. GRPO :クリティックを完全に取り除き、グループ統計をベースラインとして使います。検証可能な報酬に対して、より単純で効果的です。

一般化アドバンテージ推定(GAE)

動機 :アクター・クリティックの枠組みには、アドバンテージ \(A(s,a) = Q(s,a) - V(s)\) — この行動は平均よりどれだけ良かったのか — の良い推定が必要です。しかし、ここには根本的な緊張関係があります。

  • 1ステップTDアドバンテージ (\(r_t + \gamma V(s_{t+1}) - V(s_t)\)):分散が低い(ランダムなステップは1つだけ)一方、 偏りがある — 価値関数 \(V\) が間違っていれば、アドバンテージ推定も体系的にずれます。

  • モンテカルロ・アドバンテージ (\(G_t - V(s_t)\)):不偏(実際のリターンを使う)ですが、 分散が高い — 多数のランダムな報酬の合計はエピソードごとに大きく変動します。

GAE (Schulman et al. 2016)(Schulmanら、2016)は、単一のパラメータ \(\lambda \in [0, 1]\) によって、この両極端の間を 滑らかに補間 します。すべての \(n\) について、nステップ・アドバンテージ推定を指数重み付き平均し、偏りと分散を原理的にトレードオフできるようにします。

中心となる考え方 :各時刻で1ステップTD誤差 \(\delta_t\) を計算し、それらを指数的に減衰する重み \((\gamma\lambda)^l\) で混ぜ合わせます。最近のTD誤差には完全な重みを与え、遠いTD誤差の重みは小さくします。

\[ \boxed{\hat{A}_t^{\text{GAE}} = \sum_{l=0}^{T-t} (\gamma\lambda)^l \delta_{t+l}, \quad \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)} \]

Tip

\(\lambda\) が制御するもの — 偏りと分散のトレードオフ

  • \(\lambda = 0\):\(\hat{A}_t = \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t)\)。価値関数を完全に信頼します。分散は低いですが、\(V\) が不正確だと偏ります。

  • \(\lambda = 1\):\(\hat{A}_t = \sum_l \gamma^l r_{t+l} - V(s_t)\)。完全なモンテカルロ・リターンからベースラインを引きます。不偏ですが、分散は非常に高くなります。

  • \(\lambda = 0.95\)(標準値):最適な中間点です。主に \(V\) を信頼しながら、遠い影響については実際のリターンで補正します。初期学習後に価値ヘッドが正確になるため、うまく機能します。

LLMの場合は特に、\(\gamma = 1.0\)(時間割引なし — 単一ターンではすべてのトークンを等しく重視)および \(\lambda = 0.95\) とします。

GAEにおける偏りと分散の直感的な対応

教師あり学習では、偏りと分散は構造的なモデル仮定から生じます。GAEによる強化学習では、偏りと分散は 不完全なモデルをどれだけ信頼し、混沌とした環境をどれだけ信頼するか から生じます。

  • 偏り(体系的なずれ) :価値ネットワーク \(V_\theta\) の構造的な仮定と不完全な予測に推定器が依存すると生じます。\(\theta\) が十分に学習されていない、または容量が不足している場合、ベースラインの推測は体系的に間違います。

  • 分散(サンプルの揺らぎ) :制約のない長い環境軌跡に推定器が依存すると生じます。確率的な遷移、乱数シード、方策実行時のノイズが長いホライズンにわたって蓄積し、ロールアウト間で実測報酬が大きく揺れます。

アーキテクチャ上のスペクトラム:境界分析

ハイパーパラメータ \(\lambda\) は、2つの基本的な推定パラダイムの間を調整するスライドルールとして機能します。

Important

高い偏り/低い分散の極限($\lambda = 0$)

\[ \hat{A}_t^{\text{GAE}(\gamma, 0)} = \delta_t^V = r_t + \gamma V_\theta(s_{t+1}) - V_\theta(s_t) \]

  • 振る舞い :アドバンテージは現在のパラメータ \(\theta\) の状態に強く左右されます。

  • 直感 :ネットワークが1ステップの窓で自分の性能を採点しているため、非常に 偏り があります。\(V_\theta\) が不正確なら勾配ステップが壊れます。一方、\(t+1\) より先の確率的なイベントを無視するため、 分散 は低く、パラメータ更新は滑らかで安定します。

  • リスク :方策が最適でない局所最小値に陥り、複雑な遅延報酬の系列を発見できません。

Important

低い偏り/高い分散の極限($\lambda = 1$)

\(\lambda = 1\) のとき、中間の価値項は望ましい形で相殺され、GAEはベースラインを引いたモンテカルロ・リターンになります。 \[ \hat{A}_t^{\text{GAE}(\gamma, 1)} = \sum_{l=0}^{\infty} \gamma^l r_{t+l} - V_\theta(s_t) \]

  • 振る舞い :ブートストラップによる先読みを捨て、エピソード全体の文字どおりの現実を合計します。

  • 直感 :ニューラルネットワークによる近似ではなく実際の報酬を測るため、真の環境ダイナミクスに対して完全に 不偏 です。しかし、極端な 分散 を示します。エピソード序盤の小さな変化がリターン全体を大きく分岐させ、方策更新が不安定になる可能性があります。

  • リスク :破壊的な勾配更新、学習の爆発。

トレードオフ行列

\(\lambda \in [0.95, 0.99]\) を選ぶと、GAEはアドバンテージ推定の平均二乗誤差全体を最小化します。

設定統計的性質主な依存先実用上のリスク
\(\lambda = 0\)高い偏り、低い分散モデルパラメータ(\(\theta\))方策が最適でない局所最小値に陥る
\(\lambda \in [0.95, 0.99]\)バランス(最適なMSE)ハイブリッドな混合環境の確率性に応じた調整が必要
\(\lambda = 1\)低い偏り、高い分散実測された環境ロールアウト破壊的な勾配更新、学習の爆発

GAEのパラメータ選択の実務上の比較。

\(\lambda\) 調整の診断

学習曲線を監視すると、偏りと分散のどちらが支配的かを直接把握できます。

  1. 高分散の兆候 :方策エントロピーが急激に低下する一方、価値関数の説明分散が大きく負になる、または不規則になる \(\rightarrow\) 方策更新がノイジーです。 対策 :\(\lambda\) を下げてターゲット更新を滑らかにします。

  2. 高偏りの兆候 :エージェントは早期には安定して学習するものの、複雑な遅延報酬の系列をまったく発見できない \(\rightarrow\) ブートストラップにより長期依存を過小評価しています。 対策 :\(\lambda\) を1.0に近づけ、実際の下流軌跡のシグナルを方策に与えます。

オンポリシーとオフポリシー — 詳細比較

オンポリシーオフポリシー
データ源現在の方策 \(\pi_\theta\) のみ任意の方策(リプレイバッファ)
更新後古いデータは無効になり、再生成が必要古いデータも引き続き利用可能
サンプル効率低い(データを1回使う)高い(データを何度も再利用)
安定性より安定(分布が一貫している)発散する可能性(分布の不一致)
REINFORCE、PPO、A2C、GRPOQ学習、DQN、SAC、DPO
LLMの場合PPO、GRPO(各ステップで新しく生成)DPO(固定された選好データセット)

Tip

RLHF手法におけるオン/オフポリシー

PPO/GRPOはオンポリシー :現在の方策で応答を生成し、アドバンテージを計算し、更新してデータを破棄し、再び生成します。これが生成に計算量の60%が費やされる理由です。各ステップで再生成する必要があります。

DPOはオフポリシー :固定された選好データセットで学習します。学習中の生成はありません。はるかに安価ですが、方策が変化するとデータが古くなるため、分布シフトの影響を受けます。

Online DPOはハイブリッド :新しいデータを生成し(オンポリシー生成)、DPOの教師あり損失を使います(オフポリシー型の最適化)。両方の利点を得られます。

PPOの巧妙さ :クリップ比 \(r = \pi_\text{new}/\pi_\text{old}\) を使い、オンポリシーデータの1つのバッチから複数回の勾配ステップ(4エポック)を引き出します。これにより、制御された形で「少しだけオフポリシー」になります。

モデルベースとモデルフリー

モデルフリーモデルベース
学習するもの方策 \(\pi\) および/または価値 \(V\)/\(Q\) を直接環境モデル \(\hat{P}(s'\vert s,a)\)
計画計画なし、反応的な意思決定将来の軌跡をシミュレートできる
サンプル効率低い(すべてを経験する必要がある)高い(想像上の環境で計画できる)
正確さモデルによる偏りなしモデル誤差が累積する
使う場面複雑/未知のダイナミクス単純なダイナミクス、効率が必要な場合
PPO、DQN、SAC (Haarnoja et al. 2018)MuZero (Schrittwieser et al. 2020)、Dreamer (Hafner et al. 2020)、AlphaGo (Silver et al. 2016)

Tip

LLMのRLがモデルフリーである理由

言語生成のダイナミクスは単純です(系列にトークンを追加する — 決定論的な遷移)。環境の「モデル」はボトルネックではありません。難しいのは 報酬 、つまり人間が何を好むかを予測することです。そのため、LLMのRLにはモデルベース手法は不要です。

RLHFの報酬モデルは、ある意味では「モデル」とみなせます(人間の選好を予測するためです)。しかし、報酬シグナルとして使われるのであって、計画やシミュレーションに使われるわけではありません。LLMのRLは本質的にモデルフリーの方策最適化です。

報酬シェーピング

報酬シェーピング (Ng et al. 1999) は、開発者が環境本来の報酬関数を変更または補完する手法です。主な目的は、エージェントが最終的なタスク完了時にしかフィードバックを受け取らない 疎な報酬 の状況を、中間的なフィードバックシグナルを持つ 密な報酬 の状況に変換し、収束を速めることです。

数学的枠組み

時刻 \(t\) における元の報酬を \(R_t(s, a, s')\) とします。報酬シェーピング後の報酬は補助的なシェーピング関数 \(F\) を加えます。

\[ \boxed{R'_t(s, a, s') = R_t(s, a, s') + F(s, a, s')} \]

Warning

素朴なシェーピングのリスク:報酬ハッキング

\(F(s, a, s')\) を恣意的に設計すると、エージェントは全体の目的を無視しながら、補助シグナルを最大化する構造上の抜け道を見つけます。

:中間のランドマークに到達すると報酬を受け取るナビゲーションエージェントは、目的地に到達することなく、1つのチェックポイントの周りを無限にループして報酬を無限に蓄積するよう学習する可能性があります。

LLMの場合、「自信がありそうに聞こえる」ことに報酬を与えると、正確さにかかわらず、常に「Absolutely!」で始めるよう学習する可能性があります。

ポテンシャルベース報酬成形(PBRS)

報酬成形によって最適方策が変わらないことを数学的に保証するには、 ポテンシャルベース報酬成形 を使います。成形関数 \(F\) を、状態間のスカラー・ポテンシャル関数 \(\Phi\) の差に制約します。

\[ \boxed{F(s, a, s') = \gamma\, \Phi(s') - \Phi(s)} \]

ここで \(\Phi: \mathcal{S} \to \mathbb{R}\) は、状態が目標にどの程度近いかを評価する実数値のポテンシャル関数であり、\(\gamma\) は割引率です。

PBRS後の完全な報酬は次のとおりです。

\[ R'(s, a, s') = R(s, a, s') + \gamma\, \Phi(s') - \Phi(s) \]

理論的保証

Important

PBRS方策不変性定理

  • 方策不変性 :シェーピング後の報酬 \(R'\) に対する最適方策 \(\pi^*\) は、元の報酬 \(R\) に対する最適方策と 同一 です。シェーピングによって最適でない振る舞いが導入されることはありません。

  • ループ耐性 :同じ状態から始まり同じ状態で終わる任意の循環軌跡では、ポテンシャルの正味の変化は正確にゼロになります(\(\Phi(s) - \Phi(s) = 0\))。エージェントはループを利用して報酬をハックできません。

  • 収束の高速化 :最適方策は変わらないまま、シェーピング後の報酬はより密な勾配シグナルを提供するため、疎な報酬の環境でエージェントは5〜50\(\times\)速く収束できます。