TadaoYamaokaの日記

山岡忠夫Homeで公開しているプログラムの開発ネタを中心に書いていきます。

将棋AIの進捗 その28(弱点の克服)

前回、自己対局の報酬を詰み探索の結果に変更したことで、valueの精度向上したことを書いた。

詰み探索結果を報酬にしたのは、評価値が2000近くある局面から、詰みが見つかり一気に負ける局面があるためだが、そのような局面をより積極的に是正することにした。

方法

優勢と考えていた局面から負けた局面の評価を正しくするには、そのような局面を学習する機会を増やせばよいため、そのような局面を抽出して初期局面集に追加することにした。

今まで自己対局で生成した局面を3億局面以上残しているので、その中から評価値が高い状態から負けた局面を抽出した。
似た局面を減らすために、同一局面で抽出する間隔は10手以上空けた。

そのように抽出した局面を初期局面集に追加して、自己対局を継続した。
初期局面集はもともと3.7億くらい用意していたところに、100万局面くらいを追加した。
元の初期局面集が十分に大きいので、今回追加した局面に極端に偏った学習はされないという見込みである。
なお、初期局面集から1手ランダムに指した後の局面を自己対局の開始局面としている。

15サイクル自己対局を行った結果

1サイクルあたり250万局面生成して学習するというサイクルを15サイクル回した結果、floodgate R3500以上の棋譜との一致率は以下の通りとなった。

policy loss value loss policy acc. value acc.
120サイクル(初期局面集に追加前) 1.1045078 0.53318536 0.4404205 0.71591663
135サイクル(初期局面集に追加後) 1.1010139 0.5307383 0.44042057 0.7164469

一致率は、それほど変わっていないが、value lossが低下している。グラフで見ると、120サイクルまでは横ばいだったvalue lossが120サイクル以降下がっているのが確かめられる。
f:id:TadaoYamaoka:20190323112724p:plain
※80サイクル目以降、policyのlossが上がっているのは、詰み探索を報酬にした結果、詰みに関係する指し手とそれ以外の指し手の予測が難しくなったためと思われる。

このことから、勝率の予測がより正確になったと考えられる。

強さの測定

実際に強くなっているか確認するため、やねうら王 2017 Early KPPT 4.55 64SSE4.2と対局させてみた。
1手3秒で100回対局させた結果、勝率は29%となった。
f:id:TadaoYamaoka:20190323113215p:plain
※CPUは4コアのCorei7 6700K、GPUは1080Ti1枚、やねうら王互角局面集を使用

今までは数%程度だったので、勝率が上がっている。
苦手な局面を初期局面集に追加することは、偏りがでないように注意が必要だが、効果があったと言えそうだ。

余談

モンテカルロ木探索とディープラーニングを使う方法は、工夫しだいで個人レベルでも十分に強くできる見込みがあると思います。
将棋AIはαβ探索が主流ですが、選択的探索の方法が同じくらいの強さになると、コンピュータ将棋の大会も対立構造ができてより面白くなるのではないかと思います。

ということで、モンテカルロ木探索+ディープラーニングを盛り上げるべく、技術書典6で本を出します。
techbookfest.org


以上、宣伝でした。