TadaoYamaokaの開発日記

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

将棋でディープラーニングする その48(ResNet)

これまでニューラルネットワークの構成に、5ブロックのResNetを使ってきたが、層を増やすると精度がどれくらい上がるか実験を行ってみた。

これまでは、ResNetの構成は、こちらの論文([1603.05027] Identity Mappings in Deep Residual Networks)で精度が高いとされている「full pre-activation」の構成に、こちらの論文([1605.07146] Wide Residual Networks)で提案されている畳み込み層の間にdropoutを加えた構成を使用していた。

一方、AlphaGo Zeroでは通常のResNetの構成を使用している。

そこで、通常のResNet構成で層を増やした場合とWideResNetで層を増やした場合でも比較を行った。
また、フィルター数も変更して比較した。

比較したパターンは以下の通り。

ResNet構成 ブロック数 フィルター枚数
パターン1 WideResNet 5 192
パターン2 通常 5 192
パターン3 通常 10 192
パターン4 通常 10 128
パターン5 通常 10 64
パターン6 WideResNet 10 192

測定結果

測定条件
  • 訓練データ:1億局面
  • テストデータ:100万局面
  • 学習率:0.01
  • 最適化:MomentumSGD
  • ミニバッチサイズ:64
  • 訓練局面elmoの自己対局で生成
  • policyとvalueマルチタスク学習
  • 1000万局面ごとに評価
policyのtest accuracy

f:id:TadaoYamaoka:20171121211820p:plain

valueのtest accuracy

f:id:TadaoYamaoka:20171121211840p:plain

学習時間

f:id:TadaoYamaoka:20171121210536p:plain
※1000万局面あたり
※パターン1とパターン6は1080Ti、残りは1080で学習したのでそのまま比較はできないが参考として記載

考察

policyのtest accuracy

10ブロック、192フィルターのResNet、WideRestがtest accuracyが高い値になっている。
層数を増やすと精度が上がることが確かめられた。

同じ10ブロックでも、フィルター枚数を64にすると、5ブロック192フィルターより精度が落ちている。
10ブロック、128フィルターで、5ブロック192フィルターと同じくらいになっている。
層数とフィルター枚数はともに重要であり、バランスをとる必要がありそうである。

valueのtest accuracy

傾向は、policyとほぼ同じとなった。

学習時間

ResNetのブロックを倍にすると学習時間は、1.76倍になった。
層を増やすと実行時のNPSにも影響するので、精度と学習時間、対局時の速度でバランスをとる必要がある。
どれがベストか探るには実験時間がかかりすぎる。
前回35億局面学習したときよりは精度を上げたいので、今後はとりあえず10ブロックで実験していこうと思う。