前回将棋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 | ブロック数 | 時間 | 比率(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にするかは別途検証するつもり。