Skip to main content

Policy Gradient

Policy Gradient は、policy πθ\pi_\theta を直接 parameter 化し、期待 return を最大化する方向に θ\theta を更新 する RL の流派です。連続行動や stochastic policy を自然に扱え、PPO / SAC / GRPO / RLHF の基礎になっています。

目的関数

J(θ)=Eτπθ[G(τ)]J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\bigl[G(\tau)\bigr]

ここで τ=(s0,a0,r1,s1,)\tau = (s_0, a_0, r_1, s_1, \ldots) は trajectory、G(τ)G(\tau) はその return です。

Policy gradient theorem

Log-derivative trick を使うと、勾配は次のように書けます。

θJ(θ)=Eτπθ ⁣[tθlogπθ(atst)Gt]\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\!\left[\sum_{t} \nabla_\theta \log \pi_\theta(a_t \mid s_t)\, G_t\right]

これが policy gradient theorem です。直感的には、

  • Return が大きかった action の log 確率を上げる
  • Return が小さかった action の log 確率を下げる

REINFORCE

最も基本的な policy gradient algorithm:

for each episode:
sample trajectory using pi_theta
compute G_t for each t
theta <- theta + alpha * sum_t [grad_theta log pi(a_t|s_t) * G_t]

シンプルですが、return の分散が大きく、学習が不安定になりがちです。

Baseline と variance reduction

Return GtG_t の代わりに、baseline b(st)b(s_t) を引いた advantage を使うと分散が減ります。

θJE ⁣[tθlogπθ(atst)(Gtb(st))]\nabla_\theta J \approx \mathbb{E}\!\left[\sum_t \nabla_\theta \log \pi_\theta(a_t \mid s_t)\, (G_t - b(s_t))\right]

b(s)=Vπ(s)b(s) = V^\pi(s) とすると advantage:

At=GtVπ(st)A_t = G_t - V^\pi(s_t)

これが actor-critic (次のページ) の入り口です。

On-policy vs off-policy

REINFORCE は on-policy (現在の policy で集めた data を 1 回使う) のため、sample 効率が悪いです。Importance sampling や replay buffer を組み合わせると off-policy 学習に拡張できますが、安定性が課題になります。

なぜ LLM で policy gradient が使われるのか

LLM の RLHF / GRPO では、

  • Action = 1 token を出すこと (または 1 response 全体)
  • Reward = reward model のスコアや verifiable reward

として、policy gradient の枠組みを使います。詳細は PPOGRPO を参照してください。

数式で見る policy gradient theorem

Policy gradient の基本形は次の通りです。

θJ(θ)=Eπθ[θlogπθ(atst)Aπ(st,at)]\nabla_\theta J(\theta) =\mathbb{E}_{\pi_\theta}\left[ \nabla_\theta\log\pi_\theta(a_t\mid s_t)A^{\pi}(s_t,a_t) \right]

ここで、Aπ(s,a)=Qπ(s,a)Vπ(s)A^{\pi}(s,a)=Q^{\pi}(s,a)-V^{\pi}(s) は advantage です。この式の気持ちは、「平均より良かった action の確率を上げ、平均より悪かった action の確率を下げる」というものです。

Monte Carlo return GtG_t を使う REINFORCE は、advantage の代わりに return から baseline を引いたものを使います。

θJ(θ)tθlogπθ(atst)(Gtb(st))\nabla_\theta J(\theta) \approx\sum_t \nabla_\theta\log\pi_\theta(a_t\mid s_t)(G_t-b(s_t))

Baseline b(st)b(s_t) は期待値を変えずに分散を下げるために使われます。Actor-critic では、この baseline を value network Vϕ(st)V_\phi(s_t) として学習します。

関連ページ

主なソース