TadaoYamaokaの日記

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

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

前回将棋AIのモデルでSENetを組み込むと精度が上がることが確かめられた。
今回は、SENetなしで層を増やした場合と比較を行ってみた。
また、SENetのreduction rateを16から8、4にした場合とも比較を行った。

測定方法は前回と同じ。

比較条件

  • SENetなしでブロック数を10から15にした場合
  • SENetのreduction rateを16、8、4にした場合

測定結果

損失
SENet ブロック数 訓練損失 (合計) テスト損失 (Policy) テスト損失 (Value) テスト損失 (評価値)
あり(reduction=16) 10 1.5167899 1.0261396 0.5962995 0.6469054
なし 10 1.5300623 1.0379672 0.5983292 0.649161
なし 15 1.526083 1.028182 0.59961534 0.6483236
あり(reduction=8) 10 1.5169188 1.0353688 0.5979779 0.6470782
あり(reduction=4) 10 1.5154685 1.0254688 0.59864444 0.65126425
テストaccuracy
SENet ブロック数 テスト accuracy (Policy) テスト accuracy (Value)
あり(reduction=16) 10 0.37059274 0.66360927
なし 10 0.36444074 0.6569804
なし 15 0.37001005 0.66283417
あり(reduction=8) 10 0.3681227 0.65989923
あり(reduction=4) 10 0.3702458 0.6590785
テストデータの局面を推論した際の平均エントロピー
SENet ブロック数 エントロピー (Policy) エントロピー (Value)
あり(reduction=16) 10 2.159858 0.62993383
なし 10 2.1666162 0.6287371
なし 15 2.117287 0.6346602
あり(reduction=8) 10 2.0927737 0.6311473
あり(reduction=4) 10 2.0914755 0.63237906

実行時間

SENet ブロック数 時間 比率(SEnetなし10ブロック基準)
あり(reduction=16) 10 3:10:01 1.076886748
なし 10 2:56:27 1
なし 15 4:19:39 1.471521678
あり(reduction=8) 10 3:02:32 1.034476244
あり(reduction=4) 10 3:06:52 1.059034665

考察

SENet(reduction=16)のPolicyとValueのaccuracyは、15ブロックの精度と同等になっている。
学習時間は、SENetを組み込んだ場合は1.077倍の増加だが、15ブロックにした場合は1.472倍増加しており、論文の通りの少ない計算量で層を増やした場合と同じ効果があることが確かめられた。

reductionを8、4にした場合は、全結合の素子は増えるが、精度は上がっていない。
元の論文でも16がバランスがよいと書かれている。層ごと調整する方がよい場合もあると書かれているが試していない。


SENetは将棋AIでも有効であることが確かめたられたので、世界コンピュータ将棋選手権に向けてAlphaZeroと同じ20ブロックにすることも考えていたが、10ブロックでSENetありの構成でしばらく実験してみようと思う。
フィルタを256にするかは別途検証するつもり。

2019/5/27 追記

フィルタを256にして測定した。

損失
SENet ブロック数 訓練損失 (合計) テスト損失 (Policy) テスト損失 (Value) テスト損失 (評価値)
あり(reduction=16) 10 1.4987164 1.0213467 0.5983112 0.65234095
テストaccuracy
SENet ブロック数 テスト accuracy (Policy) テスト accuracy (Value)
あり(reduction=16) 10 0.37272987 0.6554523
テストデータの局面を推論した際の平均エントロピー
SENet ブロック数 エントロピー (Policy) エントロピー (Value)
あり(reduction=16) 10 2.0600474 0.6246097

実行時間

SENet ブロック数 時間 比率(SEnetなし10ブロック基準)
あり(reduction=16) 10 4:20:58 1.478983659

フィルタ192と比べてPolicyの精度は上がったが、Valueは少し下がっている。
Policyのエントロピーが下がっているため、指し手か決定的になる傾向がある。
学習時間は、フィルタ192と比べて1.37倍に伸びている。

この結果からは、フィルタは192のままでよさそう。