dlshogiを改造して遊びたい方のために、dlshogiの学習則についてちゃんと書いてなかったので書いておく。
主に、学習部のソースtrain_rl_policy_with_value_using_hcpe_bootstrap.pyの解説になっている。
AlphaZeroの学習則
AlphaZeroの学習則は、
となっている。
dlshogiではこれとは異なる学習則を使用している。
ルートノードの分布の使用有無
まず、AlphaZeroでは、MCTSのシミュレーション結果のルートの子ノードの訪問回数の分布(上式の)を使用しているが、dlshogiでは分布ではなく指し手を使用している。
これは、学習に分布を使用すると学習データのサイズが大幅に増えてしまうので、データサイズを抑えたいという理由による。
Actor-Critic
dlshogiでは、方策をActor-Criticで学習している。
一般的な方策勾配法では、目的関数の勾配に報酬zを使用する。
Actor-Criticでは、分散を低下させる(過剰適合を避ける)ために、ベースラインとして価値関数の値を報酬zから引く。
ベースラインを追加しても、の期待値自体は変わらないが、推定分散を小さくする効果がある。
の項はアドバンテージと呼ばれる。
なお、期待値が変わらないというのは、期待値を行動aの積分で表すと、以下の式展開で確かめられる。
式展開では微分の連鎖則を利用している。
dlshogiでは、この式をそのまま適用してもうまく学習ができなかった。
そこで、ベースラインにさらに0.5を加えている。
この意味は、負けた対局でも探索した指し手はある程度信用できるので、半分は信用してあげようという気持ちである。
特に理論的な背景があるわけではない。
参考までに、OpenAIのbaselinesのPPOの実装では、アドバンテージの正規化を行っている。
なぜ、正規化が必要かについて不思議だったので、ネットで検索したらいくつかの議論が見つかった。
- A2C vs PPO Advantage normalisation · Issue #102 · ikostrikov/pytorch-a2c-ppo-acktr-gail · GitHub
- Why do we normalize the discounted rewards when doing policy gradient reinforcement learning? - Data Science Stack Exchange
引用されていた資料(4.1.2 Advantage Normalization)によると、推定量の分散を小さくすることにより、通常、経験的パフォーマンスを向上させることが知られているトリックだそうだ。
dlshogiの学習でも効果があるかもしれない。
エントロピー正則化
dlshogiの方策は指し手を学習しているため、方策が決定論的に偏りやすい。
そのため、A3Cでも行われているエントロピー正則化を行っている。
方策のエントロピーは以下の式で与えられる。
エントロピーは、方策の分布が均一の場合に最大になり、どれか一つの行動の確率が1(決定論的)になったときに最小となる。
を正則化項として損失に加えることで、決定論的になる方向にペナルティが加えられる。
価値関数の学習
AlphaZeroでは、価値の損失には平均二乗誤差(MSE)を使用している。
dlshogiでは、方策の損失が交差エントロピーなので、価値の損失もエントロピーの方が自然と考えて、シグモイド交差エントロピーを使用している。
価値関数の出力の範囲は、勝率を表すとなっている(AlphaZeroでは、勝ちを1、負けを-1として、出力範囲はとなっている)。
価値の学習のブートストラップ
強化学習では、報酬そのものを学習する代わりに、Nステップ後の推定収益を学習することで、学習を加速するということが行われる。
この手法は、ブートストラップと呼ばれる。
なお、ブートストラップとは、OSのブートとかでも使われている語であるが、語源は靴のかかとについているタグのことだそうだ。タグをつまむと靴が履きやすくなることのアナロジーである。
コンピュータ将棋では、elmoが報酬のシグモイド交差エントロピーと、深さNの評価関数の出力とルートの評価関数の2つの確率変数の交差エントロピーの加重平均を損失にするという手法を導入して成功している。
dlshogiもこれに倣い、MCTSシミュレーションを行った結果のルートノードの指し手のQ値と、ルートノードの状態価値の2つの確率変数の交差エントロピーを価値の損失に加え、報酬の損失と按分している。
SWA
SWA(Stochastic Weight Averaging)は、一定間隔での重みを平均化することで、ニューラルネットワークのテスト精度を改善するテクニックである。
一般的なアンサンブルの手法では予測の結果を平均化するが、SWAでは重みを平均化することで実現する。
Leela Chess ZeroでもSWAを導入している。
dlshogiでも効果があったため導入した。
学習則まとめ
以上の学習則を式で表すと以下のようになる。
は指し手のone-hotベクトルを表す。