以前に、活性化関数を変えると同じデータを学習した場合でも、方策の傾向が変わることを実験で確かめた。
現状のdlshogiのモデルでは、活性化関数にSwishを使用していたが、最善手を見つけるのに時間のかかると指摘を受けた以下の局面が、活性化関数をReLUにすることで速く見つけられるようになったため、活性化関数をReLUに変更して収束するまで学習を行い、以前のモデルと比較を行った。
sfen lns2gsnl/3k1pr2/p1ppp2Gp/5Ppp1/7r1/2P1+B4/PP1PP1P1P/1bS2S3/LN1GK1GNL b Pp 1
活性化関数をReLUにして学習
現状の20ブロックのモデルは、強化学習で生成したデータを継ぎ足しながら学習したが、ReLUのモデルではすべてのデータをはじめから使用して学習した。
14エポックで収束して、SWAを適用後のモデルの精度は以下のようになった。
現状のモデルは15エポック学習している。
テストデータには、floodgateのR3500以上の棋譜からサンプリングした856,923局面(重複なし)を使用した。
Swishのモデル(現状)
steps = 8367092, swa test loss = 1.3681549, 0.4552350, 0.6860540, 1.8233899, swa test accuracy = 0.5376619, 0.7680360, swa test entropy = 1.2785398, 0.4921690
ReLUのモデル
steps = 7988708, swa test loss = 1.3578349, 0.4554342, 0.6836113, 1.8132691, swa test accuracy = 0.5412843, 0.7685150, swa test entropy = 1.2647612, 0.4957720
ReLUのモデルの方が、方策が0.36%、価値が0.047%だけ正解率が高くなった。
価値は誤差の範囲だが、方策は少し良くなっている。
ReLUは、はじめからすべてのデータを使用しているため、活性化関数により精度が上がったとも言えないが、収束した際の精度は、ReLUでも高くなることが確かめられた。
Swishが効果があるのは、学習初期の効率だけと言えそうだ。
課題局面の指し手
ReLUのモデルで課題の局面を検討したところ、1万ノード読むだけで、最善手が8三馬となった。
Swishのモデルでは50万ノード以上探索が必要だったのに比べて、一瞬で読めるようになった。
この局面では、方策の質が良くなっていると言える。
強さの比較
特定局面だけが改善されただけではうれしくないため、互角局面集を使用して対局させて強さを比較した。
振り飛車を含む10手目互角局面集を使用した。
持ち時間400秒1手2秒加算で、基準に水匠5をリーグに混ぜて対局した。
dlshogiはスレッド数3、水匠5は32スレッドで持ち時間を4倍にしている。
# PLAYER : RATING ERROR POINTS PLAYED (%) CFS(%) W D L D(%) 1 relu : 41.1 32.4 102.5 175 59 91 87 31 57 18 2 swish : 2.7 33.5 86.5 172 50 94 75 23 74 13 3 suisho5-32thx4 : -43.8 33.3 68.0 167 41 --- 53 30 84 18 White advantage = 9.49 +/- 19.82 Draw rate (equal opponents) = 16.64 % +/- 2.33
ReLUの方がR+38.4となった。対局数が少ないため誤差が±32.4あるが、少なくとも弱くはなっていない。
NPSの比較
活性化関数をReLUにしたことで、演算が減るためNPSが高くなるはずである。
8GPU4スレッドでのNPSを比較した。
floodgateからサンプリングした100局面を1秒思考して測定した。
3回測定し、局面ごとの平均をとった。
Swish | ReLU | ReLU/Swish | |
---|---|---|---|
mean | 313397 | 323511 | 1.03227 |
std | 19703.6 | 20566.3 | 1.04378 |
min | 273692 | 273354 | 0.998765 |
25% | 301892 | 310787 | 1.02946 |
50% | 313026 | 322770 | 1.03113 |
75% | 321653 | 335926 | 1.04437 |
max | 431920 | 395399 | 0.915445 |
100局面の平均値で、NPSが3.2%高くなっている。
75パーセンタイルで、4.4%高い。
モデルの精度よりもNPSが向上した分で強くなっている可能性がある。