【強化学習】Bellman方程式の導出
はじめに
Qrunchに投稿した記事に少し追記したものです.というのも,現状Qrunchだと外部からの検索で上手く引っかからないよう(つまりGoogle検索で出てこない).QrunchはQrunchコミュニティ内での気軽な技術系情報共有を目的にしているところがコンセプトっぽいので,あえて閉鎖的なコンテンツにしているということなのかもしれません.個人の勉強メモとして引き続きQrunchも活用していきたいと思っていますが,多少なりとも誰かの役に立ちそうな内容のものは積極的に外部に公開しても良いのかなと考えて,はてなも活用していこうと思っています.(Qrunchには「クロス投稿」機能があるので,それを使うのが良さそう)
モチベーション
強化学習のお勉強のため,Pythonで実装しようぜ系の本をしばらく読んでいたのですが,肝心のBellman方程式はわりとサラッと導出されていて,自分で手を動かして式を追ってみないとなんだかよくわからない.そうするにあたって瀧先生の深層学習本の強化学習の章における説明が個人的に分かりやすかったので,これを参考にBellman方程式導出の過程をまとめておく.この記事の目的はあくまでもBellman方程式を導出するまでのひとつひとつの式変形のステップを省略せずにまとめておくことなので,強化学習そのものについては次節で挙げている書籍を参考にされてください.
Bellman方程式ってなに
Bellman方程式とは,価値関数を状態と次の状態についての漸化式として表したものである.再帰的に価値関数を表すことの必要性は書籍「Pythonで学ぶ強化学習」に易しい解説があり,分かりやすいと思う.
Bellman方程式の導出の流れ
量の書き換えがいくつか出て来て最初は混乱したのですが,やっていることは単純で,以下の二点にまとめられる.
報酬の再帰性を使って,価値関数を漸化式の形に書く.
マルコフ性によって依存関係を整える.
参考書籍
メイン
サブ
Richard S.Sutton,Andrew G.Barto,三上貞芳(訳),皆川 雅章(訳),「強化学習」,森北出版,2000.
久保隆宏,「機械学習スタートアップシリーズ Pythonで学ぶ強化学習 入門から実践まで (KS情報科学専門書) 」,講談社,2019.
計算ルール(確率,期待値の基本)
Bellman方程式の導出で必要になる計算ルールを予備知識としてまとめておく. これらに加えて,強化学習の問題設定がマルコフ決定過程であることを利用して話が進んでいきます. 確率の基礎にまつわる話は個人的に「プログラミングのための確率統計」が直感的で分かりやすいので,脳が混乱したときには読み返している.
周辺化
基本
ですよね.同時分布をある確率変数について和を取れば,括弧からそいつが消えます.得られたを周辺分布という.
例
Bellman方程式の導出では,たとえば遷移確率を周辺化によって次のように式変形する. 強化学習では基本的に条件付き分布ばかりを扱いますが,上で見た基本式のおしりに条件がくっついてるだけ.
同時確率と条件付き確率の関係(乗法定理)
基本
例
これを使って先ほどの周辺化の例を,
というように変形していったりする.
条件付き期待値
基本1
条件付き期待値の定義はこう.
基本2
こうなることを一応確認しておく.
\begin{align} \sum_aE[Y|a]P(a) &= \sum_a\sum_bbP(b|a)P(a) \\ &= \sum_a\sum_bbP(a,b) \\ &= \sum_bb\left(\sum_aP(a,b)\right) \\ &= \sum_bbP(b) \\ &= E[Y=b] \end{align}
例
本題
登場人物(強化学習に出てくる基本概念)
遷移確率
状態で行動を取ったときに状態に遷移する確率.
取り得る全ての行動について足し合わせると(計算ルールのところで確認した周辺化),状態からへの遷移確率になる.
ここで,状態において行動を選択する確率は方策と呼ばれ,特別にと書く.
利得(累積報酬)
は割引率.累積報酬とか割引報酬和,割引累積報酬なんて呼ぶのが意味が分かりやすくて好きだが,単に報酬や利得と呼ばれることも多いっぽい.これは第1項と残りを分けることで再帰的に書くことができる.
ちなみには,行動によって,状態から状態になったときに得る即時報酬.貰うタイミングは時刻.
即時報酬の期待値
大文字ので書いているが,上の累積報酬ではなく時刻の即時報酬についての話である.
上で書いているようになので,右辺の意味は以下のとおり.
状態での報酬の期待値は,上記の量を行動と次の状態について期待値を取る.要するに,行動や次の状態にかかわらず,「ただ状態にいるだけで」これくらいの報酬が得られるだろうと期待できるということ.ここで重みとして用いる確率は,を取る確率と,となる確率なのだから,すなわち方策と遷移確率ですね.
価値関数
状態価値関数
ある状態であったとき,得られるであろう累積報酬の期待値を状態価値関数と呼ぶ.これによって各状態の良し悪し(価値)が評価できる. ] ここでの添字との意味は,さきほど出て来た即時報酬の期待値と同様に,遷移確率と方策で期待値を取っているよということ.
行動価値関数
状態において行動を取ったときの累積報酬の期待値.
との関係
計算ルールの条件付き期待値のところで見たように,
と書き換えられる.最右辺の条件付き期待値はまさにだから,
ようやくBellman方程式へ
状態価値関数についてのBellman方程式
さきほどの「との関係」で出て来たように,
予備知識の計算ルールである条件付き期待値の性質を使って,条件にを追加する.
するとVは
となりますね.
累積報酬を再帰的に書くと
だったから,これを上の式に入れてやる.そうすると,
となって,即時報酬の期待値が出て来た.これは上で見たように
]
と表していたので,これを使ってさらに書き換えると
ここで出て来たは
なのでした.したがって
この第2項目には遷移確率が含まれているから,
さてここで,は状態からとなった時点以降の累積報酬である.これは状態と行動には依存しない(マルコフ性). そういうわけで上の式の中の条件付き期待値は,
となり,これは結局,次の状態での状態価値関数であった. したがって最終的に,
となって,これが状態価値関数についてのBellman方程式です.
行動価値関数についてのBellman方程式
行動価値関数は
]
なのでした.これをに対してやったのと同様に,計算ルールである条件付き期待値の性質を使ってについて和を取ります. それからを代入して二つの項に分けます. そうすると第1項にはが現れます. 第2項はマルコフ性によって条件付き期待値からとが除かれて,その結果が出て来る.
「との関係」で見たように
だったから,
である.これを使って書き換えれば,
となる.これが行動価値関数についてのBellman方程式.
Sutton本との比較
Sutton本と瀧深層学習本はそれぞれ量の表記が異なるので,同じ方程式であるのか一目見るだけでは私は脳のメモリが足りずよく分からない.というわけで互いに同一の結果を得ていることを確認しておく.Sutton本だとp.76の式(3.10)でについてのBellman方程式が示されている.
まずであるが,p.56にて説明がなされており,これはこれまで見てきたと同じものである.Sutton本では,がとの関数であることを明示した表記を取っていると私は解釈した. 次にとはp.72の式(3.6)と(3.7)で説明がされているように,
である.ここでと書かれているのは,ということである. 以上を踏まえて,瀧深層学習本での表記に合わせるようにSutton本のBellman方程式を書き換えてみる.
この時点で,あぁ,同じやんけ,と安心するのだが,折角なので最後まで書き換える.ここで以下の3つを思い出す.
これらを使って書き換えると,
となって,瀧深層学習本のBellman方程式に一致した.安心した.