Python
DeepLearning
データ分析
ディープラーニング
コンピュータ将棋

【将棋AI】「将棋AIで学ぶディープラーニング」を読む♪~将棋AIを強くするために

将棋AIで学ぶディープラーニング
第廿五夜は、将棋AIを強くするにはどうすればいいかを考察します。

やったこと

(1)将棋AIの性質から考える
(2)Gikou2と対戦する

(1)将棋AIの性質から考える

そもそも将棋AIの強さは以下の4点が重要である。
①評価関数の精度
②実行速度
③初期盤面における定跡利用
④詰将棋

本書では以下のことが取り上げられている。
①【評価関数】Networkモデルをチューニングして強くする
②【評価関数】PolicyとValueを同時学習により学習効率を上げる
③【評価関数】学習する棋譜をカスタマイズして最適化する
④【実行速度】処理を並列化する
⑤【実行速度】UCT探索の工夫
⑥【実行速度】実行速度の速い言語(C++)にする
⑦【詰将棋】詰み探索の導入
⑧【評価関数と定石】強化学習
ウワンの実力から言って、①から③はここで取り上げたが、④以降はすぐに実行するにはちょっと難しい。
そこで、④の並列化は本書ダウンロードサイトからアプリをもらって利用することとし、さらに実行速度を上げることは難しいので持ち時間を大幅に増加して、さらに探索深さをなるべく大きな値にするということでどこまで強くなるかを実施してみた。

(2)Gikou2と対戦する

Gikou2のソフトレーティングは、読みの深さで調整できて以下の参考ページで公開されている。そしてイロレーティングで見たようにだいたいレート差200だと勝負になることから、Gikou2のDepth1違うとレート差がほぼ200程度となっていることから強さを見るのに都合がよい。
【参考】
コンピュータ将棋 まとめサイト
実は、ここに並んでいる将棋ソフトはほとんどC言語で書かれている。
C言語とPythonの速度差は以下の参考によると、だいたい15倍程度の差がある。
逆に言うと、15倍持ち時間を与えれば速度差は吸収される可能性がある。
【参考】
色々な言語で計算速度を比較してみた
ということで、持ち時間を長くして(最大1時間程度)かつ探索深さを10000にして対戦してみた。

Gikou2 D1 1512 +17/-9

GikouL1vsTry.jpg

Gikou2 D2 1799 +12/-9

Gikou2D2vsTry.jpg

Gikou2 D3 2001 +12/-12

Gikou2D3vsTryp.jpg
Gikou2D3vsTry10000Condi.jpg

Gikou2 D5 2187 +14/-13

Gikou2D5vsTry10000R.jpg
Gikou2D5vsTry10000.jpg
ちなみに、Gikou2D5の強さについてはこういう強さ(技巧2と私)だそうです。
探索深さは上記は10000の結果だが、30000まで増加してやってみたが、あまり向上しなかった。

まとめ

・将棋AIの強さのポイントをまとめた
・速度向上はスキル的に難しいので、持ち時間を長くして10000探索局面(playout)に増やしてGikou2とDepthを変えて対戦した
・だいたいレーティング1800程度だと見える

・探索局面がほぼ同一なら、評価関数レベルではGikouと同様なレベルになったかもしれないが確証はない