TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

将棋でディープラーニングする その41(モーメントありSGD)

AlphaGo Zeroニューラルネットワークの学習の最適化に使用されているモーメントありSGDを将棋AIで試してみた。

以前に、最適化手法を比較した際、Adamのような学習率を自動で調整する手法よりSGDの方が学習効率が高かった。
AlphaGo FanバージョンでもSGDが使われている。

AlphaGo Zeroでは、SGDにモーメントを付けた、モーメントありSGDが使われている。
そこで、SGDとモーメントありSGDの比較を行った。

SGDとモーメントありSGDの比較

測定条件
  • 訓練データ:7000万局面
  • テストデータ:100万局面
  • 1000万局面ごとに評価
  • 学習率:0.01
  • モーメントパラメータ:0.9
  • ミニバッチサイズ:64
  • policyとvalueマルチタスク学習
  • policyは勝敗をアドバンテージにした強化学習
  • valueは勝敗をelmoの探索結果でブートストラップして学習
average train loss

f:id:TadaoYamaoka:20171103094720p:plain
※policyとvalueの損失の合計

test loss

f:id:TadaoYamaoka:20171103094740p:plain
※policyとvalueの損失の合計

test accuracy policy

f:id:TadaoYamaoka:20171103094758p:plain

test accuracy value

f:id:TadaoYamaoka:20171103094812p:plain

考察

比較結果から、モーメントありSGD(MomentumSGD)の方がSGDより、policy、valueともに学習効率が高いことがわかった。


電王トーナメント向けに35.8億局面学習したモデルでは3エポックの途中でtest accuracyが飽和したが、モーメントありにして3エポックをやり直したところ、SGDで飽和した値より学習が進むようになった。
現在、policyの一致率:46.1%、valueの一致率:78.2%になっており、約0.1%程改善している(学習継続中)。
SGDでは3エポックの途中で飽和した後さらに学習を続けると発散したが、モーメントありSGDでは発散していないので、間に合えば4エポック目の学習もできそうである。
※追記
とおもったが、やはり3エポック目の途中で飽和した後、発散した。