常に先手側から盤面を見る場合の精度確認

要約

 常に先手側から盤面を見るようにするとややレートは落ちるがある程度やれる。

背景

 今のところ、手番ごとに(1)盤面を180度ひっくり返したり、(2)手駒の入力順番を入れ替えたりして、常に手番側から見るように入力特徴量を作成している。こうすることのメリットは、手番という指し手決定自体には不要な情報を削ぎ落とすことで局面を同一視しやすいので、学習が上手く進みやすいということだ(と思っている)。

 一方で、MuZeroのような遷移モデルを考えようとしたときに、一手ごとに180度回転すると入力特徴量が大きく変わるため、次の局面予測というものが不必要に難しくなる懸念がある。以前の実験では、一手ごとに特徴量自体を180度回転することこの問題も緩和できるとわかっているが、いかにもアドホックな対応なのでできればそのようなことはしたくない。(これだと持ち駒の順番が入れ替わる問題も明に対応できているわけではないことも気にかかる。実践的にはそれは内部的に上手く学習できそうではあるが)

 こういった事情から、今回は常に先手側から盤面を見るように入力特徴量を生成し、先手の場合でも後手の場合でもその入力特徴量からPolicy・Valueを予測するようにして、精度がどの程度落ちるのかを確認した。

 (追記:重要なことを書いていなかったが、手番の情報を入力の末尾に一個チャンネルを追加する。先手なら0、後手なら1を9×9マスに並べる)

結果

学習結果

左: Policy損失 右: Value損失

 やはりちょっとずつ精度は悪化するようだった。

対局結果

 水匠ver.5のNodesLimit=100000と対局させた。

エンコーディング 対局数 勝数 引分数 負数 勝率 相対Eloレート
手番ごとに180度回転 500 276 5 219 55.7% +39.8
常に先手から見た 500 221 0 279 44.2% -40.5

 ハッキリとレート低下は見られるが、損失での精度劣化具合から考えると思ったよりも勝率は低くないという印象でもある。

今後の想定

 意外とやれることがわかったのでこれで遷移モデル学習なども手を出してみようかと考えている。

 MuZero的なことをしようかとは思いつつ、完全にMuZeroに倣ってPolicy,Valueのみからの遷移学習にはこだわらないつもりではある。

  • まずPolicy,Value直前の最終層からもう一つHeadを増やして、盤面の再構成を行うようにする。現局面について再構成ができることを確認する(これは流石にできるはず)
  • 次にActionと表現から次の表現を推論するネットワークも作り、次の局面などの盤面の再構成が行えることを確認する
  • なんか上手いことをやって探索行為自体にネットワークを組み込む

 以前実装したMuZeroブランチはmasterとの乖離が進みすぎてもう手を付けられない形になってしまっているので、ここで再実装するという感じ。それプラス、最後のステップでなにか捻り出すことが大事ではあるのだけれど、特に案があるわけではない。