前回まで棋譜を用いた教師あり学習で、将棋の方策ニューラルネットワークを学習した。
今回から、強化学習で方策改善を行う。
強化学習の手法は、AlphaGoの論文と同じREINFORCE algorithm*1を試す。
AlphaGoの論文の強化学習の手法は以下の通りである。
AlphaGoの強化学習の手法
教師あり学習で学習した方策ニューラルネットワーク(SL policy network)をベースラインとして、自己対戦を行い勝敗を報酬として方策改善を行う。
以下の式で表されるパラメータの勾配を求め、パラメータを更新する。
i | ミニバッチ内の1回の対局番号 |
n | ミニバッチサイズ |
t | ステップ番号(手数) |
終局までのステップ数 | |
tステップ後の報酬 = | |
勝敗の報酬(-1,1) | |
ステップtの局面の価値 | |
ステップtの局面で行動を選択する確率(方策) | |
学習率 |
※のは先手、後手で符号を反転するという意味
は、バリューネットワークを学習した後にさらに方策改善する際に使用するもので、初めは0とする。
自己対戦は、方策改善を行うネットワークと、以前にパラメータ更新した方策ネットワークの中からランダムに選んだもので対戦を行う。
AlphaGoの論文では、500イテレーションごとにパラメータを保存している。
理論的背景について知りたければ、
Sutton & Barto Book: Reinforcement Learning: An Introduction
の「13.4 REINFORCE with Baseline」を読むとよい。
式自体は単純であり、実装はそれほど難しくない。
パラメータの更新はミニバッチ単位に行うので、n回対局してパラメータ更新を繰り返す。
AlphaGoの論文では、ミニバッチサイズはn=128として、10,000イテレーション学習している。
次回は、これの実装を行う予定。
まだ方策ニューラルネットワークを用いて対局できるようになっていないので、まずはそこから行う予定。
*1:Williams, R. J. Simple statistical gradient-following algorithms for connectionist reinforcement learning. Mach. Learn. 8, 229–256 (1992).