第廿七夜は、本書にこんなことは書いてないけど、学習に関してちょっと工夫してみたら、うまくいっているようなのでまとめておく。
###やったこと
(1)Lossのバランスを変える
(2)学習データをまとめてみる
###(1)Lossのバランスを変える
これは、以前から方策ネットワークの学習と価値ネットワークの学習が、方策は学習しやすいが、価値ネットワークの学習がなかなか進まないという現象があった。
そこで、一番簡単な工夫は価値ネットワークのLossの重みを大きくして、より価値ネットワークを学習しやすくするということである。
ところが、これをやると方策ネットワークのAccuracyが上がってこない、さらに価値ネットワークのAccuracyも実はもとより悪い。
ということで、逆に価値ネットワークはあきらめて、方策ネットワークのLossの割合を増やしてみた。これだと勿論方策ネットワークのAccuracyがあがった。さらに価値ネットワークのAccuracyもあまり下がらないようだ。
結果は以下のとおり
※同じNetworkモデルじゃないので比較しずらいが、少ない層で同等な精度が出ている
network | loss | policy_accuracy | value_accuracy | note |
---|---|---|---|---|
Quad32 | 2.054025 | 0.41139683 | 0.65907264 | epoch=8、32層 |
Quad32 | 2.34428 | 0.42745194 | 0.6892166 | epoch=11、32層 |
Quad22_16 | 3.071567 | 0.41298786 | 0.66631365 | epoch=8、22層※1 |
Quad22_16 | 3.28406 | 0.42357165 | 0.6909092 | epoch=11、22層※1 |
※1;$Loss=1.6Loss_{policy}+0.4Loss_{value}$としている |
また、レーティングはPlayout=300のままで
LesserKai(718)に対して、9-0-1で圧勝
Gikou2D1(1512)に対して、3-2-5で惜敗
Gikou2D2(1799)に対して、1-0-9で大敗
これって、当初LesserKaiやGikou2D1に勝てなかったのと比べるとすごいと思う。
###(2)学習データをまとめてみる
学習データの準備の仕方は、ほぼ前回の説明の通りです。
しかし、一か所工夫します。
つまり、Floodgateの2016の棋譜と2017の棋譜をまとめて学習させる工夫です。
以下のように、学習データを同じディレクトリwdoor2017に格納します。
wdoor2017
|-2016
|-2017
そして、以前と同じように以下で実行します。
>python utils\make_kifu_list.py D:\wdoor2017 kifulist3000
このTrainデータとTestデータを利用して学習すると
・最適化はまだまだできていない