【쇼기 AI】쇼기소의 데이터로 학습한다♪

이번에는, 드디어 장기소의 데이터로 학습할 수 있었으므로 정리해 두려고 한다.
floodgate의 기보를 다운로드하여 사용해 주셨지만,
①우수한 소프트도 이용할 수 있으므로, 대전시켜 그 기보로 학습한다.
②강화학습으로 점점 강하게 한다
라는 것을 해보고 싶다는 것으로 해 보았습니다.

했던 일



· 기보를 csav2.2에서 v2로 변경
・Toryo로 종료한 기보만으로 한다
· 학습
・자기 대전으로 새로운 기보를 생성해 학습한다

· 기보를 csav2.2에서 v2로 변경



우선 CSA 표준기보라는 v2.2의 표준기보가 아래에 있다.
CSA 표준 기보 파일 형식
반면 이전(v2)은 다음과
CSA 표준 기보 파일 형식
실제 장기의 기보와 플러드 게이트의 기보를 비교합니다.

장기소의 기보.
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로의 변환은 이하 2개의 일을 하면 되는 것을 알 수 있다.
①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 이외의 기보를 삭제했다.
코드 예는 다음과 같습니다.
dl 쇼기카이/다타/훗l r_c사_토리. py

· 학습



GikouD9, GikouD10에서 500회 대전(2min/battle)시켜, 또 mcts로 작성한 것의 기보 등을 1000개 모아 train_policy_value.py로 학습시켜 보았습니다.
결과는 다음과 같습니다.

언뜻 배우고있는 것처럼 보이지만. . .
loss는 감소하고 policy는 0.3 근처까지 학습할 수 있지만 value가 0.5인 채로 전혀 학습할 수 없습니다.
이 원인이 어디에 있는지 현재는 전혀 알 수 없습니다.

・자기 대전으로 새로운 기보를 생성하고 학습한다



이쪽은 더 비참합니다.
아직 Plocy 밖에 학습하고 있지 않습니다만, Policy라고 가리키는 손이 일의이므로 바리에이션이 전혀가 아닙니다. 특히 자기 대전에서는 똑같은 일뿐이므로, 이것은 학습할 수 없다는 것입니다. 그래서 일정한 난수 요소를 넣고 MCTS에서 자기 학습을 해보려고 생각합니다.

요약



・쇼기소의 데이터로 학습해 보았다

・지금의 방법으로는 강화 학습이 성공할 가능성이 낮다.
・기보를 읽을 수 있게 되었기 때문에, 장기소(dlshogi)에서 막장기도 할 수 있을 것 같은 생각이 든다

좋은 웹페이지 즐겨찾기