TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

将棋AIの進捗 その25(自己対局による強化学習の経過)

前回からだいぶ期間が空きましたが、自己対局による強化学習で、教師ありで収束するまで学習したモデルより有意に強くすることができました。前回は、19イテレーションでほぼ互角の強さでしたが、38イテレーションまで自己対局を行うことで有意に強くなりました。

自己対局における探索延長

強化学習の方法は前回までの方法とほとんど同じですが、途中から探索延長を行うように変更しました。
探索延長は、固定回数シミュレーションの結果、1番目に訪問回数が多い手が2番目に訪問回数が多い手の1.2倍未満の訪問回数のときに、シミュレーション回数を1.5倍にするという実装です。
シミュレーション回数を増やすことで、生成される教師データの精度をあげることができますが、計算時間が増えてしまいます。
結果がわかりきった局面に対してもシミュレーション回数を増やすと無駄があるので、探索延長を行うことでより計算効率を上げることができます。

強さの測定方法

前回までは、平手の初期局面から対局を行っていましたが、多少ランダムは入れていますがソフト同士の対局ではゲームの進行が偏る傾向があるので、24手までは「やねうら互角局面集」を使うようにしました。

教師ありで収束するまで学習したモデルとの対局結果

100回対局の結果は以下の通りです。

対局数100 先手勝ち47(47%) 後手勝ち49(49%) 引き分け4
selfplay038
勝ち63(63%) 先手勝ち31(31%) 後手勝ち32(32%)
model110
勝ち33(33%) 先手勝ち16(16%) 後手勝ち17(17%)

selfplay038が自己対局で38イテレーション学習したモデルで、model110が、elmoで生成した11億局面を学習したモデルです。
100回対局で有意水準を5%とすると、臨界値は58.2%なので、有意に強くなっています。

floodgateの棋譜に対する一致率

イテレーション回数 policyの一致率 valueの一致率
19(前回) 0.4090266 0.68762606
38 0.437221587 0.706173778

イテレーションごとのfloodgate棋譜との一致率グラフ
f:id:TadaoYamaoka:20180826213515p:plain

GPSFishとの対局結果

GeForce 1080を搭載したノートPCでの対局結果です。
GPSFishとはほぼ互角になりました。教師ありで学習したモデルよりも勝率が上がっています。
eloレーティングで言うと、GPSFishのと対局を基準として前回から35.6の向上です。
GeForce 1080 TiだとGPSFishに勝ち越せそうですが、未測定です。

38イテレーション自己対局で学習したモデルとGPSFishの対局結果
対局数100 先手勝ち50(50%) 後手勝ち47(47%) 引き分け3
selfplay038
勝ち45(45%) 先手勝ち24(24%) 後手勝ち21(21%)
GPSfish 0.2.1+r2837 gcc 4.8.1 osl wordsize 32 gcc 4.8.1 64bit
勝ち52(52%) 先手勝ち26(26%) 後手勝ち26(26%)
教師ありで学習したモデルとGPSFishの対局結果
対局数100 先手勝ち50(50%) 後手勝ち47(47%) 引き分け3
model110
勝ち40(40%) 先手勝ち21(21%) 後手勝ち19(19%)
GPSfish 0.2.1+r2837 gcc 4.8.1 osl wordsize 32 gcc 4.8.1 64bit
勝ち57(56%) 先手勝ち29(28%) 後手勝ち28(28%)

自己対局にかかった時間と電気代

前回から、2GPUのPCを2ヵ月以上動かし続けました。
去年の同じ時期よりも、1月あたり200kWhくらい消費電力が増えて、電気代は8000円くらい増えました(´;ω;`)

今後の見通し

20イテレーションで、レーティング35.6の向上なので、現在のトップが4300くらいなので、GPSFishと同じ3100とすると、あと1200必要です。
楽観的に線形にレーティングが伸びるとすると、674イテレーションは必要です(実際はlogの形なのでもっとかかる)。
1ヵ月10イテレーションとすると、67.4ヵ月=5.6年以上かかる見込みです。

今後も継続するつもりですが、より短時間で学習できる方法を見つけたいところです。
もしくは他力本願でGPUの性能が数十倍になってくれることを祈っています。