E資格対策・強化学習の重要数式の覚え方(10)方策勾配定理とREINFORCEを語呂合わせと計算例で確実に覚える

こんにちは。ゆうせいです。

E資格の強化学習で出題される重要数式を、1つずつ覚えていくシリーズの最終回です。

これまでの第6回から第9回では、TD学習、SARSA、Q学習、DQNと、価値(V や Q)を学習する手法を学んできました。これらは、価値を学習してから、その価値をもとに行動を選ぶ「価値ベース」の手法です。

最終回は、価値を経由せずに、方策そのものを直接学習する「方策ベース」の手法の土台となる「方策勾配定理」と、その代表的な手法である「REINFORCE」を取り上げます。方策勾配定理は、Actor-Critic、A3C、PPOなど、現在よく使われる深層強化学習の手法の出発点です。

この記事のゴール

  • 方策勾配定理の式を、何も見ずに書けるようになる
  • 価値ベースの手法と方策ベースの手法の違いを説明できるようになる
  • 式に log が入っている理由を、直感的に説明できるようになる
  • REINFORCE による方策の更新を手計算できるようになる

これまでの復習

第3回で学んだ方策の記号を確認します。

π(a|s) は、「状態 s で、方策 π が行動 a を選ぶ確率」でした。覚え方は「状態を見てから行動する。だから縦棒の右は状態」です。

また、第3回の行動価値関数と、第2回の状態価値関数の覚え方も思い出しておきましょう。

  • Q は、状態 s で最初に行動 a を選び、その後は π に従ったときの割引収益の平均
  • G は1回のテストの点数、V は平均点

価値ベースと方策ベースの違い

これまでの価値ベースの手法では、次の手順で行動を決めていました。

  1. 行動価値 Q を学習する
  2. Q が最大の行動を選ぶ(ε-greedy 法なら、ときどきランダムに選ぶ)

一方、方策ベースの手法では、方策そのものをパラメータ θ を使って表し、θ を直接学習します。

\pi_{\theta}(a \mid s)

この記号は、「パラメータ θ で決まる方策が、状態 s で行動 a を選ぶ確率」を表します。ニューラルネットワークを使う場合、θ はネットワークの重みです。状態を入力すると、各行動を選ぶ確率が出力されます。

項目価値ベース方策ベース
学習するもの価値(Q など)方策(行動を選ぶ確率)
行動の決め方Q が最大の行動を選ぶ方策の確率に従って選ぶ
代表的な手法Q学習、DQNREINFORCE、Actor-Critic、PPO
連続値の行動扱いにくい(max の計算が難しい)扱いやすい
確率的な方策表しにくいそのまま表せる

ロボットの腕の角度のように、行動が連続した値になる場合、価値ベースの手法では「無数にある行動の中から Q が最大のものを探す」計算が難しくなります。方策ベースの手法なら、方策が直接「どの角度にするか」を出力するので、この問題を避けられます。

覚え方は「価値ベースは評価してから選ぶ、方策ベースは選び方を直接鍛える」です。

練習問題1

方策ベースの手法の説明として、最も適切なものを選んでください。

  • ア:行動価値を学習し、その値が最大になる行動を常に選ぶ手法
  • イ:環境の遷移確率を推定して、計画を立ててから行動する手法
  • ウ:損失を小さくするため、勾配と逆の向きに重みを更新する手法
  • エ:方策をパラメータで表し、期待収益が増える向きに直接更新する手法

練習問題1の解答と解説

正解はエです。

方策ベースの手法では、方策をパラメータ θ で表し、期待される収益が大きくなるように θ を直接更新します。

  • アは誤りです。価値ベースの手法の説明です。
  • イは誤りです。環境のモデルを使って計画を立てる、モデルベースの手法の説明です。
  • ウは誤りです。方策勾配法では、収益を大きくしたいので、勾配と同じ向きに更新します。この点は次の節で説明します。

目的関数と勾配上昇法

方策ベースの手法では、方策の良さを表す目的関数 J(\theta) を考えます。J(\theta) は、パラメータ θ の方策に従ったときに期待される収益です。たとえば、スタートの状態の状態価値を使います。

J(\theta) = V^{\pi_{\theta}}(s_0)

目的関数は大きいほど良いので、勾配の向きにパラメータを更新します。

\theta \leftarrow \theta + \alpha \nabla_{\theta} J(\theta)

∇(ナブラ)は勾配を表す記号で、「各パラメータを少し増やしたとき、目的関数がどれだけ増えるか」をまとめたものです。

ディープラーニングでは、損失を小さくするために勾配と逆の向き(マイナスの向き)に重みを更新する勾配降下法を使いました。方策勾配法では、収益を大きくしたいので、勾配の向き(プラスの向き)に更新します。この方法を勾配上昇法と呼びます。

覚え方は「損失は谷へ下る、収益は山へ登る」です。

方策勾配定理の式

問題は、\nabla_{\theta} J(\theta) をどうやって計算するかです。収益は、方策だけでなく環境の遷移確率にも左右されるため、そのままでは微分できそうにありません。

この問題を解決するのが、今回覚える方策勾配定理です。

\nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}}[\nabla_{\theta} \log \pi_{\theta}(a \mid s) Q^{\pi_{\theta}}(s, a)]

記号の意味は次のとおりです。

記号読み方意味
\nabla_{\theta} J(\theta)ナブラ・ジェイ目的関数(期待収益)の勾配。パラメータをどちらに動かせば収益が増えるか
\mathbb{E}_{\pi_{\theta}}イー・パイ・シータ方策 \pi_{\theta} に従って行動したときの期待値
\log \pi_{\theta}(a \mid s)ログ・パイ行動 a を選ぶ確率の対数
\nabla_{\theta} \log \pi_{\theta}(a \mid s)ナブラ・ログ・パイ行動 a を選ぶ確率を上げるには、パラメータをどちらに動かせばよいか
Q^{\pi_{\theta}}(s, a)キュー状態 s で行動 a を選んだときの行動価値

この式の大切な点は、右辺に環境の遷移確率 p が含まれていないことです。方策の勾配は、方策の確率の微分と行動価値だけで計算できます。そのため、遷移確率が分からなくても、実際に行動して得た経験から勾配を見積もれます。

式全体を日本語にすると、次のようになります。

「期待収益を増やす向きは、各行動の確率を上げる向きに、その行動の良さ(Q)で重みを付けて平均したもの」

式の意味:良かった行動は出やすく、悪かった行動は出にくく

方策勾配定理の式は、2つの部分の掛け算になっています。

  • \nabla_{\theta} \log \pi_{\theta}(a \mid s):行動 a を選ぶ確率を上げる向き
  • Q^{\pi_{\theta}}(s, a):その行動がどれくらい良かったか

Q が大きい(良い)行動ほど、その行動を選ぶ確率を強く上げる向きに、パラメータが動きます。Q が負の(悪い)行動なら、確率を下げる向きに動きます。

スポーツの練習で考えてみます。試合中に、ある場面でシュートを打って得点できたら、次に同じ場面が来たときにシュートを打つ確率を上げます。失敗して相手に得点されたら、その確率を下げます。得点が大きいほど、確率を大きく上げます。方策勾配法は、このような「結果に応じて行動のくせを直す」学習を、数式で表したものです。

覚え方は「よかった手はもう一度、まずかった手は控えめに」です。

なぜ log が入っているのか

式に log が入っている理由は、log の微分の性質にあります。

\nabla_{\theta} \log \pi_{\theta}(a \mid s) = \frac{\nabla_{\theta} \pi_{\theta}(a \mid s)}{\pi_{\theta}(a \mid s)}

log を微分すると、「確率の勾配を、確率そのもので割った形」になります。この割り算には、次のような意味があります。

方策に従って行動すると、確率の高い行動ほど何度も選ばれ、そのたびに更新されます。もし割り算がなければ、よく選ばれる行動ほど、たくさん更新されて有利になってしまいます。確率で割ることで、選ばれる回数の差を打ち消し、行動の良さ(Q)だけで公平に評価できるようにしているのです。

覚え方は「ログで割ってひいきなし」です。よく選ばれる行動をひいきしないために、確率で割っている、と覚えておきましょう。

語呂合わせで覚える

語呂合わせ1:なぶらログパイ、キューで重み付け

式の期待値の中身を、左から順に読むと次のようになります。

ナブラ・ログ・パイ・キュー

覚え方は「なぶらログパイ、キューで重み付け」です。

「なぶら(∇)」「ログ(log)」「パイ(π)」の順に書き、最後に「キュー(Q)」を掛けます。前回までの語呂合わせ「パイキュー」と同じく、π と Q が並ぶことを確認しておきましょう。ただし、方策勾配定理では π に log とナブラが付きます。

語呂合わせ2:イーパイシータで平均

期待値の記号 \mathbb{E}_{\pi_{\theta}} は、第2回の「イーパイで、ジーを平均」と同じ考え方です。方策がパラメータ θ で表されているので、π の右下に θ が付きます。

覚え方は「イーパイシータで平均、なぶらログパイ、キューで重み付け」です。この順に唱えながら書くと、右辺全体を書けます。

左辺は「なぶらジェイ」です。目的関数 J(期待収益)の勾配であることを表しています。

練習問題2

方策勾配定理の式として正しいものを選んでください。

  • ア:\nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}}[\nabla_{\theta} \pi_{\theta}(a \mid s) Q^{\pi_{\theta}}(s, a)]
  • イ:\nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}}[\nabla_{\theta} \log \pi_{\theta}(a \mid s) Q^{\pi_{\theta}}(s, a)]
  • ウ:\nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}}[\nabla_{\theta} \log \pi_{\theta}(s \mid a) Q^{\pi_{\theta}}(s, a)]
  • エ:\nabla_{\theta} J(\theta) = \mathbb{E}_{\pi_{\theta}}[\nabla_{\theta} \log Q^{\pi_{\theta}}(s, a) \pi_{\theta}(a \mid s)]

練習問題2の解答と解説

正解はイです。

「なぶらログパイ、キューで重み付け」の順に並んでいます。

  • アは誤りです。log がありません。log がないと、よく選ばれる行動がひいきされてしまいます。ログで割ってひいきなしです。
  • ウは誤りです。方策の縦棒の左右が逆になっています。状態を見てから行動するので、縦棒の右は状態 s です。
  • エは誤りです。log とナブラが Q に付いています。微分するのは方策 π の方です。

REINFORCE:Q の代わりに実際の収益を使う

方策勾配定理の式には、行動価値 Q^{\pi_{\theta}}(s, a) が含まれています。しかし、本当の Q の値は分かりません。

そこで REINFORCE(リインフォース)では、Q の代わりに、実際にエピソードを最後まで行って得た割引収益 G_t を使います。第2回で学んだとおり、Q は G の平均なので、1回分の G を Q の見積もりとして使えるのです。

REINFORCE の更新式は次のとおりです。

\theta \leftarrow \theta + \alpha \nabla_{\theta} \log \pi_{\theta}(A_t \mid S_t) G_t

覚え方は「リインフォースは結果主義、キューの代わりにジー」です。

実際の結果(G)だけを使うので、第6回で学んだモンテカルロ法と同じく、エピソードが終わるまで更新できません。また、1回ごとの結果は運に左右されるため、勾配の見積もりのばらつき(分散)が大きくなりやすいという特徴があります。

なお、教科書によっては、更新式に割引率の t 乗が掛かった形で書かれていることもあります。実装では省略されることも多いので、試験では問題文の式の形に合わせて読み取りましょう。

計算例1:ソフトマックス方策での更新

具体的な計算をしてみます。行動が2つ(a_1 と a_2)あり、方策を次のソフトマックス関数で表すとします。

\pi_{\theta}(a_i \mid s) = \frac{e^{\theta_i}}{e^{\theta_1} + e^{\theta_2}}

\theta_1 と \theta_2 は、それぞれの行動の「好み」を表すパラメータです。好みが大きい行動ほど、選ばれる確率が高くなります。

ソフトマックス方策では、log π の勾配が次のような簡単な形になることが知られています。

\frac{\partial \log \pi_{\theta}(a_i \mid s)}{\partial \theta_j} = \mathbf{1}[i = j] - \pi_{\theta}(a_j \mid s)

\mathbf{1}[i = j] は、i と j が同じなら 1、違えば 0 になる記号です。つまり、次のようになります。

  • 選んだ行動の好みについての勾配:1 − その行動の確率
  • 選ばなかった行動の好みについての勾配:0 − その行動の確率

では、次の条件で計算してみます。

  • 初期のパラメータ:\theta_1 = 0、\theta_2 = 0
  • このとき、2つの行動の確率はどちらも 0.5
  • 実際に選んだ行動:a_1
  • 得られた割引収益:G_t = 10
  • 学習率:α = 0.1

まず、log π の勾配を計算します。

  • \theta_1 について(選んだ行動):1 − 0.5 = 0.5
  • \theta_2 について(選ばなかった行動):0 − 0.5 = -0.5

次に、REINFORCE の更新式でパラメータを更新します。

  • \theta_1 \leftarrow 0 + 0.1 \times 0.5 \times 10 = 0.5
  • \theta_2 \leftarrow 0 + 0.1 \times (-0.5) \times 10 = -0.5

更新後の、行動 a_1 を選ぶ確率は次のようになります。

\pi_{\theta}(a_1 \mid s) = \frac{e^{0.5}}{e^{0.5} + e^{-0.5}} \approx \frac{1.649}{1.649 + 0.607} \approx 0.731

収益が正だったので、選んだ行動 a_1 の確率が 0.5 から約 0.73 に上がりました。「よかった手はもう一度」のとおりです。

計算例2:収益が負だった場合

計算例1と同じ条件で、得られた割引収益が G_t = -10 だったとします。

  • \theta_1 \leftarrow 0 + 0.1 \times 0.5 \times (-10) = -0.5
  • \theta_2 \leftarrow 0 + 0.1 \times (-0.5) \times (-10) = 0.5

今度は、選んだ行動 a_1 の好みが下がり、確率は約 0.27 に下がります。「まずかった手は控えめに」のとおりです。

練習問題3

ソフトマックス方策で、\theta_1 = 0、\theta_2 = 0 のとき、行動 a_1 を選び、割引収益 G_t = 4 を得ました。学習率 α = 0.5 で REINFORCE による更新を行ったとき、更新後の \theta_1 の値を選んでください。

  • ア:1.0
  • イ:2.0
  • ウ:-1.0
  • エ:0.25

練習問題3の解答と解説

正解はアです。

選んだ行動 a_1 の好みについての勾配は、1 − 0.5 = 0.5 です。

\theta_1 \leftarrow 0 + 0.5 \times 0.5 \times 4 = 1

  • イの2.0は、log π の勾配 0.5 を掛け忘れて、0.5 × 4 とした値です。
  • ウの-1.0は、勾配降下法のように、勾配と逆の向きに更新した値です。方策勾配法は勾配上昇法なので、プラスの向きに更新します。
  • エの0.25は、収益 G を掛け忘れて、0.5 × 0.5 とした値です。

ベースライン:平均点との差で評価する

収益がすべて正だとどうなるか

REINFORCE には、勾配のばらつきが大きいという弱点があります。たとえば、どの行動を選んでも収益が 100 前後になる問題を考えます。

この場合、どの行動を選んでも収益は正なので、選んだ行動の確率は必ず上がってしまいます。本当は、収益 110 の行動の方が収益 90 の行動より良いのに、どちらも確率を上げる向きに更新されます。違いは更新の大きさだけなので、学習がなかなか安定しません。

ベースラインを引く

この問題を和らげるために、収益からベースライン b(s) を引いた値を使います。

\theta \leftarrow \theta + \alpha \nabla_{\theta} \log \pi_{\theta}(A_t \mid S_t) (G_t - b(S_t))

ベースラインには、状態価値 V(S_t) の見積もりを使うことがよくあります。収益が「その状態での平均的な収益」より良かったか悪かったかで、確率を上げるか下げるかを決めるようになります。

第2回の「G は1回のテストの点数、V は平均点」を思い出してください。ベースラインを引くことは、「点数そのもの」ではなく「平均点との差」で評価することに当たります。

覚え方は「ベースラインは平均点との差で評価」です。

先ほどの例で、平均の収益 100 をベースラインにすると、次のようになります。

行動の収益ベースラインなしベースライン 100 を引いた値確率の変化
11011010上がる
9090-10下がる

ベースラインを引くと、平均より良かった行動の確率は上がり、平均より悪かった行動の確率は下がるようになります。

ベースラインには、次の大切な性質があります。行動に依存しない値を引いても、勾配の期待値(平均)は変わりません。一方で、勾配のばらつき(分散)は小さくなります。この「期待値は変わらず、分散が小さくなる」という点は、E資格でよく問われます。

Actor-Critic へのつながり

ベースラインとして状態価値 V を使うとき、G_t - V(S_t) は「その行動が平均よりどれだけ良かったか」を表します。これを Q を使って書いたものを、アドバンテージ関数と呼びます。

A(s, a) = Q(s, a) - V(s)

さらに、G の代わりに第6回で学んだ TD 誤差を使うと、エピソードの終わりを待たずに、一歩ごとに方策を更新できます。

\theta \leftarrow \theta + \alpha \nabla_{\theta} \log \pi_{\theta}(A_t \mid S_t) \delta_t

方策を学習する役(Actor)と、価値を学習して TD 誤差を計算する役(Critic)を組み合わせたこの手法を、Actor-Critic と呼びます。方策ベースの方策勾配法と、価値ベースの TD 学習を組み合わせた手法です。

練習問題4

REINFORCE で、log π の勾配が 0.5、割引収益が G_t = 7、ベースラインが b(S_t) = 5、学習率が α = 0.1 のとき、パラメータの更新量(θ に足される値)を求めてください。

練習問題4の解答と解説

答えは0.1です。

ベースラインを引いた値は 7 − 5 = 2 です。

更新量 = 0.1 × 0.5 × 2 = 0.1

ベースラインを引かなかった場合の更新量は 0.1 × 0.5 × 7 = 0.35 です。ベースラインを引くと、平均点との差だけで評価されるので、更新量が小さく落ち着いたものになります。

練習問題5

方策勾配法について、適切でないものを選んでください。

  • ア:行動が連続値の問題にも、比較的適用しやすい
  • イ:REINFORCE は、実際に得た収益を Q の代わりに使う
  • ウ:ベースラインを引くと、勾配の期待値が大きく変わる
  • エ:パラメータは、期待収益が増える向きに更新する

練習問題5の解答と解説

正解はウです。

ベースラインを引いても、勾配の期待値は変わりません。変わるのは勾配のばらつき(分散)で、ベースラインを引くと分散が小さくなります。

  • アは正しい説明です。方策が直接行動を出力するので、Q が最大の行動を探す必要がありません。
  • イは正しい説明です。リインフォースは結果主義、キューの代わりにジーです。
  • エは正しい説明です。損失は谷へ下る、収益は山へ登る、の勾配上昇法です。

初学者がつまずきやすい点

つまずきやすい点正しい理解
勾配と逆の向きに更新してしまう収益を増やしたいので勾配上昇法。損失は谷へ下る、収益は山へ登る
log を書き忘れるログで割ってひいきなし。よく選ばれる行動を公平に扱うための log
ナブラと log を Q に付けてしまう微分するのは方策 π。なぶらログパイ、キューで重み付け
π の縦棒の左右を逆にする状態を見てから行動する。だから縦棒の右は状態
REINFORCE が一歩ごとに更新できると考える実際の収益 G を使うので、エピソードが終わるまで更新できない
ベースラインで期待値が変わると考える期待値は変わらず、分散が小さくなる

シリーズのまとめ:重要数式10選と語呂合わせ一覧

最終回なので、シリーズ全体で学んだ10個の数式と、主な語呂合わせを1つの表にまとめます。試験直前の総復習に使ってください。

回数式主な語呂合わせ
1割引収益 G_t = R_{t+1} + \gamma G_{t+1}ガンマは我慢。じいさんは、ある我慢じいさん
2状態価値関数 V^{\pi}(s) = \mathbb{E}_{\pi}[G_t \mid S_t = s]価値(V)はパイ次第、イーパイでジーを平均
3行動価値関数 Q^{\pi}(s, a) = \mathbb{E}_{\pi}[G_t \mid S_t = s, A_t = a]Vは場所だけ、Qは場所と一手。ブイサインで、パイキュー
4ベルマン期待方程式パイで分かれて、ピーで分かれて、ある我慢ブイ
5ベルマン最適方程式期待はパイ、最適はマックス。選べるところはマックス、選べないところは平均
6TD誤差 \delta_t = R_{t+1} + \gamma V(S_{t+1}) - V(S_t)ある我慢ブイ、引く今のブイ。アルファは、ある程度だけ直す
7SARSAサルサは5ステップで踊る。ブイをキューに、次は実際の一手
8Q学習キュー学習は、究極の一手で答え合わせ。口では最善、足では冒険
9DQNの損失関数DQNの損失は、Q学習のズレの2乗。目標は昔の自分、予想は今の自分
10方策勾配定理なぶらログパイ、キューで重み付け。ログで割ってひいきなし

10個の数式は、ばらばらに存在しているわけではありません。次のように、1本の流れでつながっています。

  1. 将来の報酬を割り引いて合計する(第1回)
  2. その平均が状態の価値と行動の価値になる(第2回、第3回)
  3. 価値は一歩先の価値で表せる(第4回、第5回)
  4. その関係を経験から学ぶと、TD学習、SARSA、Q学習になる(第6回から第8回)
  5. Q学習をニューラルネットワークで行うと DQN になる(第9回)
  6. 価値ではなく方策を直接学ぶと、方策勾配法になる(第10回)

この流れを意識しながら、10個の数式を白紙に書いてみてください。すべて書ければ、E資格の強化学習の数式問題には十分に対応できる力が付いています。

白紙に書いて確認しよう

記事を読み終えたら、何も見ずに次の5つを紙に書いてみてください。

  1. 方策勾配定理の式
  2. 勾配上昇法によるパラメータの更新式
  3. REINFORCE の更新式
  4. ベースライン付きの REINFORCE の更新式
  5. アドバンテージ関数の式

書き終えたら、ナブラと log が π に付いているか、π の縦棒の右が状態になっているか、更新の向きがプラスになっているかの3点を確認してください。

まとめ

  • 方策ベースの手法は、方策をパラメータ θ で表し、直接学習します。価値ベースは評価してから選ぶ、方策ベースは選び方を直接鍛える、です
  • 期待収益を大きくしたいので、勾配上昇法で更新します。損失は谷へ下る、収益は山へ登る、です
  • 方策勾配定理は「イーパイシータで平均、なぶらログパイ、キューで重み付け」の順に書きます
  • 良い行動の確率を上げ、悪い行動の確率を下げます。よかった手はもう一度、まずかった手は控えめに、です
  • log は、よく選ばれる行動をひいきしないために入っています。ログで割ってひいきなし、です
  • REINFORCE は、Q の代わりに実際の収益 G を使います。リインフォースは結果主義、です
  • ベースラインを引くと、期待値は変わらず分散が小さくなります。ベースラインは平均点との差で評価、です

シリーズはこれで最終回です。次のステップとしては、方策勾配法と TD 学習を組み合わせた Actor-Critic や、方策の更新幅を制限して学習を安定させる PPO の式に進むことをおすすめします。どちらも、今回の「なぶらログパイ」と、第6回の TD 誤差が組み合わさった形をしているので、このシリーズで覚えた10個の数式がそのまま土台になります。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。