TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

将棋AIのモデルでSENetを試す

先日Chainerで実装したSENetを将棋AIのモデルで試してみた。

dlshogiで使用している10ブロック、192フィルタのWideResNetにSENetを組み込んで、SENet有無による精度を比較した。

測定方法

比較条件

  • SENetの有無
  • reductionは16

測定結果

バッチサイズ1024で試すとメモリを11GB搭載したGeForce 2080TiでもOutOfMemoryErrorになったため、バッチサイズは512で比較した。

損失
SENet 訓練損失 (合計) テスト損失 (Policy) テスト損失 (Value) テスト損失 (評価値)
あり 1.5167899 1.0261396 0.5962995 0.6469054
なし 1.5300623 1.0379672 0.5983292 0.649161
テストaccuracy
SENet テスト accuracy (Policy) テスト accuracy (Value)
あり 0.37059274 0.66360927
なし 0.36444074 0.6569804
テストデータの局面を推論した際の平均エントロピー
SENet エントロピー (Policy) エントロピー (Value)
あり 2.159858 0.62993383
なし 2.1666162 0.6287371

実行時間

SENet 時間
あり 3:10:01
なし 2:56:27

考察

テスト損失、テストaccuracyともにSENetありの方が上回っている。
エントロピーは、SENetありの場合Policyが低く、ValueはSENetありの方が高い。
実行時間の増加は1.077倍で、それほど増えていない。

SENetを組み込むことで、将棋AIのモデルで精度が高くなることが確かめられた。


元の論文では、SENetありだとResNet50がオリジナルのResNet101と同程度の精度になっているので、将棋AIのモデルでResNetのブロック数を増やした場合とも比較を行ってみるつもり。
またreductionを変えた場合の効果についても比較してみるつもり。