dlshogiの強化学習では、最大手数(320手)に達した局面の価値を0.5として学習対象としている。
補助タスクの学習の際に、教師データを調べていた際に、あと数手で詰みの局面で引き分けになっている局面が含まれていることに気付いた(これまであまりチェックしていなかった)。
ほぼ勝ち(or負け)の局面を引き分けで学習すると、価値の精度に悪影響がありそうなので、除外した方がよさそうなので、引き分けも学習した場合と除外した場合の精度を比較してみた。
結論から言うと、ほとんど変わらなかったが、記録として残しておく。
除外方法
強化学習で教師データを作り直すのは時間がかかるので、生成済みの教師データから最大手数に達した引き分けの局面を除外した。
なお、dlshogiで使用しているhcpeフォーマットは、局面を対局と紐づけずに記録しており、候補が1手のみの局面やリーグ戦の対局では局面が数手飛びになっている。
局面の差分が小さいかで対局か判定して、最後のevalが0の場合は千日手として残して、それ以外を除外するようにした。
除外用コード(千日手と入玉を補助ターゲットとする処理も含む):
ElmoTeacherDecoder/hcpe_to_hcpe2.cpp at master · TadaoYamaoka/ElmoTeacherDecoder · GitHub
比較方法
引き分けを除外する前の局面を学習した場合と、引き分けを除外した場合を学習した場合を比較した。
引き分けを除外すると学習局面が少なくなるが、それでも精度が高くなるようであれば除外した方がよいと言える。
比較結果
約1億局面に対して、引き分けを除外すると局面数は以下の通りとなった。
引き分け | 訓練局面数 |
---|---|
あり | 60911062 |
なし | 60679983 |
0.379%が引き分けの対局の局面であった。
訓練損失
引き分け | 訓練平均方策損失 | 訓練平均価値損失 |
---|---|---|
あり | 0.68108568 | 0.38443670 |
なし | 0.68366737 | 0.38153932 |
テスト損失
引き分け | テスト方策損失 | テスト価値損失 |
---|---|---|
あり | 0.97650576 | 0.54598011 |
なし | 0.97590881 | 0.54592327 |
テスト正解率
引き分け | テスト方策正解率 | テスト価値正解率 |
---|---|---|
あり | 0.42818923 | 0.70668091 |
なし | 0.42822660 | 0.70638313 |
ほぼ誤差の範囲である。
初期局面集を序盤のみにして生成したデータでも比較した(上記の初期局面は終盤まで含む5億局面を使用)。
引き分け | 訓練局面数 |
---|---|
あり | 5709861 |
なし | 5699771 |
0.176%が引き分けの対局の局面であった。
訓練損失
引き分け | 訓練平均方策損失 | 訓練平均価値損失 |
---|---|---|
あり | 0.92409930 | 0.50431182 |
なし | 0.92570610 | 0.50405253 |
テスト損失
引き分け | テスト方策損失 | テスト価値損失 |
---|---|---|
あり | 1.14031462 | 0.62040876 |
なし | 1.14162646 | 0.61995558 |
テスト正解率
引き分け | テスト方策正解率 | テスト価値正解率 |
---|---|---|
あり | 0.36368881 | 0.65681287 |
なし | 0.36326607 | 0.65728349 |
こちらも、ほぼ誤差の範囲である。
まとめ
最大手数に達した対局を除外してもしなくても大差ないということが確認できた。
全体に対する割合は、0.4%未満であるためほとんど影響がないのだろう。