0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【将棋AI】将棋所のデータで学習する♪

Last updated at Posted at 2019-10-25

今回は、やっと将棋所のデータで学習できたのでまとめておこうと思う。
floodgateの棋譜をダウンロードして使わせていただいていたが、
①優秀なソフトも利用できるので、対戦させてその棋譜で学習する。
②強化学習でどんどん強くする
ということをやってみたいということでやってみました。

やったこと

・棋譜をcsav2.2からv2に変更する
・Toryoで終了した棋譜のみにする
・学習する
・自己対戦で新たな棋譜を生成し学習する

・棋譜をcsav2.2からv2に変更する

まず、CSA標準棋譜というv2.2の標準棋譜が以下にある。
CSA標準棋譜ファイル形式
一方、以前のもの(v2)は以下のとおり
CSA標準棋譜ファイル形式
実際の将棋所の棋譜とFloodgateの棋譜を比較します。

将棋所の棋譜.
V2.2
N+Gikou 2 (v2.0.2)
N-policy_player
P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI *  *  *  *  * -KA * 
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 *  *  *  *  *  *  *  *  * 
P5 *  *  *  *  *  *  *  *  * 
P6 *  *  *  *  *  *  *  *  * 
P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
P8 * +KA *  *  *  *  * +HI * 
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
P+
P-
+
+6978KI,T1
-3334FU,T1
+2726FU,T1
-3142GI,T1
+3948GI,T1
...
-0082KA,T1
+7181UM,T1
%TORYO,T1
floodgate.
V2
N+3Aeval-Ryzen5-1600
N-sinbo-elmo
'Max_Moves:256
'Least_Time_Per_Move:0
'Increment:10
$EVENT:wdoor+floodgate-300-10F+3Aeval-Ryzen5-1600+sinbo-elmo+20171208180004
$START_TIME:2017/12/08 18:00:01
P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI *  *  *  *  * -KA * 
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 *  *  *  *  *  *  *  *  * 
P5 *  *  *  *  *  *  *  *  * 
P6 *  *  *  *  *  *  *  *  * 
P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
P8 * +KA *  *  *  *  * +HI * 
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
+
'rating:3Aeval-Ryzen5-1600+65b01fc0c3f1f281715ac70adea53388:sinbo-elmo+b08e315e662fb441f32bee7d0f4966e7
'black_rate:3Aeval-Ryzen5-1600+65b01fc0c3f1f281715ac70adea53388:3977.0
'white_rate:sinbo-elmo+b08e315e662fb441f32bee7d0f4966e7:3582.0
+7776FU
T0
'** 0
-3334FU
T0
'** 0 +2726FU
+2726FU
T0
'** 0
-8384FU
T0
'** 0 +2625FU
+2625FU
T0
'** 0
-8485FU
T0
...
'** 100000 +0075KI
+0075KI
T0
'** 100000
%TORYO
'P1 * +GI-KA *  *  * -GI * -KY
'P2+KI * +NG *  *  *  *  *  * 
'P3 * -FU-KE-FU *  *  *  * -FU
'P4-FU-OU *  *  *  * +UM-FU * 
'P5 *  * +KI * -KE *  * +FU * 
'P6+FU * +KI *  * +FU *  * +FU
'P7 * +OU+KE * +FU * -TO *  * 
'P8 *  *  * +GI *  * -RY *  * 
'P9+KY *  *  *  *  *  *  * +KY
'P+00FU00FU00FU00KI00KY
'P-00FU00FU00FU00FU00HI00KE
'-
'summary:toryo:3Aeval-Ryzen5-1600 win:sinbo-elmo lose
'$END_TIME:2017/12/08 18:23:52

v2.2からのv2への変換

上記の仕様と上記のそれぞれの内容を比較すると、v2.2からv2への変換は以下二つのことをすればよいことがわかる。
①v2にはP+,P-がない
②v2.2は+6978KI,T1と,区切りだが、v2では\nで改行されている
③'** 0 +2726FUのように’で始まるコメント行は無視されるので特に追加しない
つまり、上の①と②だけ変換すればよい
コード例は以下のとおり
dlShogi-kai/Data/convert2222.py

・Toryoで終了した棋譜のみにする

上記で変換はできるが、実は時々あのencoding errorが発生する。
それは時間切れで終了したり、300手で引き分けになった場合、%時間切れや%持将棋などが発生してこれがs-jis記載でencoding errorをだす。
ということで、そもそも%TORYOで終了したものを学習したいので、%TORYO以外の棋譜を削除した。
コード例は以下のとおり
dlShogi-kai/Data/filter_csa_toryo.py

・学習する

GikouD9, GikouD10で500回対戦(2min/battle)させて、またmctsで作成したものの棋譜などを1000個集めてtrain_policy_value.pyで学習させてみました。
結果は以下のとおり、
Figure_1_giko.png
一見学習できているようにも見えますが、。。。
lossは減少してますし、policyは0.3辺りまで学習できていますが、valueが0.5のままで全く学習できていません。
この原因がどこにあるのかは今のところ全く不明です。

・自己対戦で新たな棋譜を生成し学習する

こっちはもっと悲惨です。
まだPlocyしか学習していませんが、Policyだと指し手が一意なのでバリエーションが全くでません。特に自己対戦では全く同じ手ばかりなので、これは学習のしようがないということです。ということで、一定の乱数要素を入れてMCTSで自己学習をやってみようと思います。

まとめ

・将棋所のデータで学習してみた

・今の方法では強化学習が成功する可能性が低い
・棋譜が読めるようになったので、将棋所(dlshogi)で詰将棋も出来そうな気がする

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?