「Combining policy gradient and Q-learning」を読んで、実装する為に最低限必要な知識をまとめてみた。
前提
二人零和有限確定完全情報ゲームで、自己対局の結果からPGQ(論文の提案アルゴリズム)を用いて評価関数パラメータの学習を行う事を目的とします。
報酬は「勝ち:+1、引き分け:0、負け:-1」と設定し、終局後に報酬を与えるものとします。
方策勾配法やQ学習に関しては本エントリでは解説しませんので、適当なリソースに当たって下さい。
論文の重要な部分
まず、エントロピー正則化ありの方策勾配法を考えます。方策π・状態sに対するエントロピーHは次式です。
この時、方策勾配法の停留点*1における状況から、「方策π・エントロピーH・状態価値Vを元に行動価値Qを計算出来る」というのが最大のポイントです。
具体的には、論文の式(5)です。(一部省略して記載します。)
パラメータ更新則
方策πはパラメータθを、状態価値関数Vはパラメータwを持ちます。この時、パラメータ更新則は次式の通りです。(論文の式(14)。)
ηは第一項と第二項のバランスを取る為のパラメータで、0~1の値を設定します。は方策πに従って得られた報酬を用いれば良い様です。
で期待値を取る計算が出て来ますが、これはREINFORCEの様にサンプリング結果から計算すればOKかと。
また、は最適ベルマンオペレータで、論文中では3ページ目に記載があります。
まー要するに、通常のQ学習の目標値を求めるやり方ですね。
GA将?の実装にあたって
ここからは論文に書いてない事で、「私はこうしました」って話です。
まず、論文ではパラメータθとwは別個に持っている様でしたが、わざわざ2つに分ける必要性を感じませんでしたので、θのみにしてあります。
具体的には、方策πと状態価値関数Vは下記の通りです。
evl(s,a|θ)は「パラメータθを用いて、局面sから手aを指した後の探索結果(評価値)」、evl_qui(s|θ)は「パラメータθを用いて、局面sから静止探索をして得られた探索結果(評価値)」です。Vに関しては、報酬が-1~+1なのでVの値もその範囲に収まる様にしています*2。
メタパラメータですが、α=0.1・η=0.5が三目並べでの実験結果では最適でしたので、本将棋モードでも同様の値を使用しています。