DeepLearningによる将棋の学習3~フィルタサイズの変更~

 前回はブロック数を10、optimizerをAdamにして実験してみましたが良い結果は得られませんでした。

 今回はブロック数ではなくフィルタサイズを3→5に変更して学習させてみました。ブロック数は5、optimizerはSGD、patienceは7です。下の表が結果となります。

epoch Loss Move Accuracy Value Accuracy
1 3.6433 0.2979 0.6583
2 3.2917 0.3352 0.6791
3 3.1746 0.3504 0.6803
4 3.1395 0.3576 0.6763
5 3.1447 0.3643 0.6744
6 3.1594 0.3686 0.6778
7 3.1695 0.3709 0.6735
8 3.2584 0.3708 0.6730
9 3.3467 0.3706 0.6707
10 3.3977 0.3705 0.6708
11 3.4479 0.3679 0.6675

 グラフとして描くと下の様になります。

f:id:tokumini:20180418095416p:plain

 フィルタサイズ3のものに比べると以下のようになります。

フィルタサイズ Loss Move Accuracy Value Accuracy 1エポックあたりの学習時間
3 2.9753 0.3879 0.6853 約40分
5 3.1447 0.3643 0.6744 約47分

 性能が悪化していることがわかります。また学習時間も伸びているため良いとこなしです。

 これを書く段階で気づきましたがoptimizerはフィルタサイズ3のときに合わせてNesterovにするべきでした。ここが統一されていない時点で今回の実験は比較に値しないものかもしれません。

 学習曲線の気になるところとしてはロスが下がらなくなったあともMove Accuracyは少し上がっていることでしょうか。しかしValue Accuracyは下がっているため、良い学習ができているわけでもなさそうです。

 この実験に限らずDeepLearningではValueの学習がなかなか難しいという印象を持っており、2駒関係などでそれなりな性能が出ることを考えると少し意外だと感じます。なにか実装を間違えているのではないかという気にもなりますが、山岡さんの本でもあまりValue Accuracyは高くなっておらず、これくらいなものなのかもしれません。