方策勾配法とは?仕組み・価値関数との違い・活用例を解説

方策勾配法とは?仕組み・価値関数との違い・活用例を解説

AIの初心者

「方策勾配法」って、たくさんの選択肢から最適な行動を探す方法ですよね。選択肢が少ない場合とは何が違うのでしょうか?

AI専門家

ポイントは、行動ごとの価値を一つずつ評価するのではなく、行動を選ぶルールそのものを直接よくしていく点だよ。選択肢が少なければQ学習のような方法でも扱いやすいんだ。

AIの初心者

では、選択肢が多いときは価値を全部調べるのが大変になる、ということですか?

AI専門家

その通り。行動の候補が多い場合や、角度や速度のように連続的な行動を扱う場合は、方策を直接調整する方策勾配法が有力な選択肢になるんだ。

方策勾配法とは。

方策勾配法は、強化学習で使われる手法の一つです。AIエージェントが「どの状態で、どの行動を選ぶか」という方策を直接学習し、得られる報酬が大きくなるように方策のパラメータを更新します。価値関数を先に作ってから行動を選ぶ方法と比べ、行動の種類が多い問題や連続的な操作を扱う問題で使いやすい点が特徴です。

方策勾配法とは

方策勾配法の全体像

方策勾配法とは、強化学習において方策そのものを直接改善する学習方法です。ここでいう方策とは、ある状態を見たときに、どの行動をどの程度選びやすくするかを決めるルールです。迷路なら「この分かれ道では右へ進みやすくする」、ゲームなら「この局面では攻める手を選びやすくする」といった行動選択の指針にあたります。

強化学習では、エージェントが環境の中で行動し、その結果として報酬を受け取ります。方策勾配法は、報酬が高くなった行動の選び方を強め、報酬が低かった行動の選び方を弱めるように方策を調整します。つまり、経験を通じて「より良い行動を選ぶ確率」を上げていく方法です。

この手法が重要なのは、行動の候補が非常に多い問題や、行動が連続値で表される問題で、すべての行動を一つずつ評価するのが難しいためです。方策勾配法は、行動の価値を網羅的に調べるよりも、行動を選ぶルールを直接動かすことで学習を進めます。

観点 内容
学習対象 状態から行動を選ぶ方策
目的 期待される報酬が大きくなるように方策を調整する
向いている問題 行動候補が多い問題、連続的な行動を扱う問題

Q学習や価値関数との違い

価値関数と方策勾配法の違い

Q学習などの価値関数に基づく手法では、「この状態でこの行動を選ぶと、どれくらい良さそうか」を数値として推定します。この数値が価値であり、状態と行動の組み合わせごとに価値を見積もって、最も価値が高い行動を選びます。

一方、方策勾配法は価値をすべて比較してから行動を決めるのではなく、行動を選ぶ方策を直接更新します。もちろん実際の発展的な手法では価値関数を補助的に使うこともありますが、基本の考え方は「よい行動を選びやすくするように方策のパラメータを動かす」ことです。

囲碁や将棋のようなゲームを考えると、局面と候補手の組み合わせは膨大です。すべての候補を細かく評価しようとすると計算量が大きくなりすぎます。方策勾配法では、各手の価値表を完全に作る発想ではなく、ある局面で良い手を出しやすいルールへ少しずつ近づけます。

手法 学習するもの 行動の選び方 特徴
Q学習など 状態と行動の価値 価値が高い行動を選ぶ 離散的で候補が少ない行動では理解しやすい
方策勾配法 行動を選ぶ方策 方策から行動または行動確率を出す 多数の行動や連続行動を扱いやすい

方策をパラメータで表す仕組み

パラメータで表す方策

方策勾配法では、方策をパラメータ付きの関数として表します。パラメータは、関数の振る舞いを変える調整つまみのようなものです。ニューラルネットワークを使う場合は、重みやバイアスがこのパラメータにあたります。

状態を入力すると、方策は行動そのもの、または各行動を選ぶ確率を出力します。たとえば迷路で「右へ進む」「左へ進む」「戻る」という行動があるなら、最初はそれぞれの確率が似ていても、学習が進むにつれて出口に近づく行動の確率が高くなります。

この考え方は、次のように表せます。

\(\pi_\theta(a|s)\)

ここで、\(s\) は状態、\(a\) は行動、\(\theta\) は方策を決めるパラメータです。\(\pi_\theta(a|s)\) は「状態 \(s\) のときに行動 \(a\) を選ぶ確率」を表します。方策勾配法は、この \(\theta\) を報酬が大きくなる方向へ更新します。

勾配で方策を更新する流れ

勾配による方策更新

勾配とは、関数の値がどちらの方向へ大きく変化するかを示す情報です。方策勾配法では、期待報酬が大きくなる方向を勾配で推定し、その方向へ方策のパラメータを少しだけ動かします。

基本的な更新の形は、次のように考えられます。

\(\theta \leftarrow \theta + \eta g_t\)

\(\theta\) は方策のパラメータ、\(g_t\) は時刻 \(t\) で得られた勾配の推定値、\(\eta\) は学習率です。学習率は一回の更新でどれくらい大きく動かすかを決めます。大きすぎると良い方策を通り過ぎ、小さすぎると学習に時間がかかります。

実際の学習では、エージェントが行動し、報酬を受け取り、その結果をもとに「今回の行動を選びやすくすべきか、選びにくくすべきか」を判断します。報酬が高ければ、その行動につながった方策を強めます。報酬が低ければ、その行動を選ぶ確率が下がるように調整します。

行動の種類が多い場合に強い理由

方策勾配法は、行動の種類が多い場合に特に効果を発揮します。価値関数ベースの方法では、状態と行動の組み合わせごとに価値を見積もる必要があります。行動の候補が増えるほど、その評価対象は急激に増えます。

方策勾配法では、行動一つひとつの価値表をすべて作るのではなく、行動を選ぶルールを表すパラメータを更新します。そのため、候補が多い問題でも、方策の形をうまく設計できれば効率的に学習できます。

たとえばゲームAIでは、ある局面で候補となる操作や戦略が大量にあります。ロボット制御でも、関節の角度、速度、力の入れ方などを細かく変えられます。このような問題では、全候補を列挙して評価するより、方策を直接学習する方が自然です。

連続的な行動を扱える理由

連続的な行動への対応

方策勾配法の大きな利点は、連続的な行動を扱いやすいことです。連続的な行動とは、「右か左か」のような離散的な選択ではなく、角度、速度、力、アクセル量のように滑らかに変化する値を指します。

ロボットアームを動かす場合、関節角度を0度、10度、20度のように粗く区切るだけでは、自然な動作を作りにくくなります。方策勾配法では、確率分布を使って行動を表すことで、連続的な値を直接出力できます。正規分布の平均や分散をパラメータとして学習すれば、どの範囲の動作をどれくらい選びやすくするかを調整できます。

この性質は、自動運転のハンドル操作、ドローンの姿勢制御、ゲームキャラクターの滑らかな移動などにもつながります。細かい操作量を扱う問題ほど、方策勾配法の考え方が役に立ちます。

学習時の注意点

方策勾配法は強力ですが、万能ではありません。第一に、学習には多くの試行が必要になる場合があります。報酬がまれにしか得られない環境では、どの行動が良かったのかを判断しにくく、学習が進みにくくなります。

第二に、学習率 \(\eta\) の設定が重要です。値が大きすぎると方策が不安定になり、小さすぎると改善に時間がかかります。また、探索が不足すると、たまたま見つけた行動に偏り、本当に良い方策へたどり着けないことがあります。

実務や研究では、方策勾配法をそのまま使うだけでなく、Actor-Critic、PPO、A3Cのような改良手法を使うことも多くあります。これらは、方策を直接更新する考え方を土台にしながら、学習の安定性や効率を高めるための工夫を加えた手法です。

まとめ

方策勾配法は、強化学習において方策を直接学習する方法です。価値関数を使って行動の良し悪しを一つずつ評価する方法とは異なり、報酬が大きくなる方向へ方策のパラメータを更新します。

特に、行動候補が多い問題や、ロボット制御のように連続的な行動を扱う問題で有効です。一方で、試行回数が多くなりやすいこと、学習率や探索の設定によって学習が不安定になることには注意が必要です。まずは「方策を直接動かす」「報酬が増える方向へ勾配で更新する」という二つの軸で理解すると、関連手法も追いやすくなります。

更新履歴

日付 内容
2025年2月1日 初回公開
2026年7月5日 価値関数との違い、式の読み方、連続行動の例を追記