
第廿七夜は、本書にこんなことは書いてないけど、学習に関してちょっと工夫してみたら、うまくいっているようなのでまとめておく。
### やったこと
(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に格納します。
そして、以前と同じように以下で実行します。
>python utils\make_kifu_list.py D:\wdoor2017 kifulist3000
このTrainデータとTestデータを利用して学習すると
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 |
Quad22_1617 |
3.38789 |
0.41730803 |
0.6915467 |
epoch=3、22層※1 |
Quad22_1617 |
3.261292 |
0.42490402 |
0.69353837 |
epoch=4、22層※1 |
Quad22_1617 |
2.951929 |
0.43959206 |
0.679099 |
epoch=10、22層※1 |
Try24_1617 |
3.26445 |
0.42895943 |
0.69723386 |
epoch=3、24層※1 |
Try24_1617 |
3.076979 |
0.44028142 |
0.69179535 |
epoch=5、24層※1 |
※1;$Loss=1.6Loss_{policy}+0.4Loss_{value}$としている |
|
|
|
|
Gikou2D2に3-1-6でepoch=3が惜敗 |
|
|
|
|
 |
|
|
|
|
Gikou2D1にも4-0-6でepoch=4が惜敗、こっちはぶっちぎりのはずだったんだけど、。。 |
|
|
|
|
 |
|
|
|
|
さらに、Try24層を同じように学習すると、 |
|
|
|
|
epoch=3、playout=300で、Gikou2D1に対して、5-0-5で引き分け |
|
|
|
|
 |
|
|
|
|
epoch=5、playout=300で、Gikou2D2に対して、3-0-7で惜敗(まあ、レート差200で24%なのでほぼかな) |
|
|
|
|
 |
|
|
|
|
まとめ
・学習の改善として、方策と価値のLossバランスと学習データの統合を実施して、強くなることを示した
・Playout=300でGikou2D2に10回対戦で、勝利を挙げられるようになった
・最適化はまだまだできていない