TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

将棋AIの実験ノート(入力特徴に手番は必要か)

dlshogiでは入力特徴に手番を加えていない。
将棋では先手と後手で同一局面の価値は変わらないためだ。
ある局面が与えられば、先手か後手かによらず最善手は同じはずである。

一方、AlphaZeroでは、手番が入力特徴に加えられている。
局面を180度回転せずにそのまま入力していると思われるため、その場合は手番には意味がある。
また、AlphaZeroは履歴局面8手分が入力になっており、ある局面の最善手を検討するというより、初手からの手順を覚えこむような学習を行っていると思われる。
そうであれば手番も何らかの手掛かりになっているかもしれない。

なお、3駒関係の線形和の評価関数では、手番を持っていることの価値を学習するということが行われている。
この場合の手番は、ニューラネットワークの入力特徴の手番と意味が異なる。
これは、静止探索を行った後の末端局面の手番を意味しており、静止探索後の手番がルート局面の手番と異なっている場合に、手番を持っていることの価値を正しく評価できるようにするために導入されている。
ニューラネットワークに局面を入力する場合は常に手番を持っている側を評価することになるため、3駒関係の学習で使われている手番には意味がない。


とは言っても、今まで一度も実験したことがなかったので、履歴なしで盤面を180度回転してニューラネットワークに入力する場合に、手番が必要か実験して比較してみた。

測定条件

先日のSENetのモデルの測定結果と、入力特徴に手番を加えて学習した結果を比較した。

測定結果

初期値と教師データのシャッフルにより結果が毎回異なるので2回測定した。

損失
手番 訓練損失 (合計) テスト損失 (Policy) テスト損失 (Value) テスト損失 (評価値)
なし 1.5167899 1.0261396 0.5962995 0.6469054
あり(1回目) 1.5188129 1.0253756 0.59772134 0.64651984
あり(2回目) 1.5159311 1.0318269 0.599651 0.6472148
テストaccuracy
手番 テスト accuracy (Policy) テスト accuracy (Value)
なし 0.37059274 0.66360927
あり(1回目) 0.37102127 0.6606456
あり(2回目) 0.36990958 0.6550437
テストデータの局面を推論した際の平均エントロピー
手番 エントロピー (Policy) エントロピー (Value)
なし 2.159858 0.62993383
あり(1回目) 2.1252923 0.62989426
あり(2回目) 2.1420255 0.6294763

考察

テスト損失(Policyと評価関数)は、手番なしと比較して手番ありの1回目は少し低く、2回目では高くなっている。
分散がどれくらいなのかはちゃんと測ったことがないが、傾向が見えないため誤差の範囲と思われる。
この結果からは、手番のありなしは、初期値とシャッフルよりも影響が小さいと言える。

180度回転して入力する場合は手番はなくてもよいことが確かめられた。