Posted at

【将棋AI】「将棋AIで学ぶディープラーニング」を読む♪~学習次第で強くなる

将棋AIで学ぶディープラーニング

第廿七夜は、本書にこんなことは書いてないけど、学習に関してちょっと工夫してみたら、うまくいっているようなのでまとめておく。


やったこと

(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で圧勝

Q22_300vsLkai.jpg

Gikou2D1(1512)に対して、3-2-5で惜敗

Q22_300vsGikou2D1.jpg

Gikou2D2(1799)に対して、1-0-9で大敗

Q22_300vsGikou2D2.jpg

これって、当初LesserKaiやGikou2D1に勝てなかったのと比べるとすごいと思う。


(2)学習データをまとめてみる

学習データの準備の仕方は、ほぼ前回の説明の通りです。

しかし、一か所工夫します。

つまり、Floodgateの2016の棋譜と2017の棋譜をまとめて学習させる工夫です。

以下のように、学習データを同じディレクトリwdoor2017に格納します。

wdoor2017

 |-2016
 |-2017

そして、以前と同じように以下で実行します。

>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が惜敗

Q22_16_1617_300vsGikou2D2.jpg

Gikou2D1にも4-0-6でepoch=4が惜敗、こっちはぶっちぎりのはずだったんだけど、。。

Q22_1617_e4_300vsGikou2D1.jpg

さらに、Try24層を同じように学習すると、

epoch=3、playout=300で、Gikou2D1に対して、5-0-5で引き分け

Gikou2D1vsTry161617e3.jpg

epoch=5、playout=300で、Gikou2D2に対して、3-0-7で惜敗(まあ、レート差200で24%なのでほぼかな)

Gikou2D2vsTry161617e5.jpg


まとめ

・学習の改善として、方策と価値のLossバランスと学習データの統合を実施して、強くなることを示した

・Playout=300でGikou2D2に10回対戦で、勝利を挙げられるようになった

・最適化はまだまだできていない