事前学習を含めたMCTSNetの学習結果

 以下の続き。

 前回はエンコーダ部分(MCTSNetのEmbedネットワーク)だけ事前学習したものを用いた。結果的に0回探索でも事前学習より悪い損失に留まり、また探索回数を増やしたときに性能向上しなかった。対策案として今回は次の2点について修正を行った。

  • 勾配計算をMCTSNetの論文が主張する通りのものに修正した
  • 事前学習したネットワークのヘッド部分もMCTSNetのSimulationネットワークおよびReadoutネットワークの初期値として用いることにした

実験結果

学習損失

f:id:tokumini:20200902195811p:plain

 点線(損失2付近に収束しているもの)が10回探索後の推論結果(MCTSNetの勾配第一項)であり、その他各探索が損失低下に寄与した程度とその状態に至る確率の積(MCTSNetの勾配第二項)である。

 10回探索後の損失値が順調に減っていることは良いが、第二項の方は0最初に0になってからほとんど変わっていないのは良くないかもしれない。が、よく考えれば第二項は符号反転しているため負になることが望ましいが、値としてはそこまで大きくなり得るわけではないので0付近であることは仕方ないか。

 簡単に計算してみると、0回探索から10回探索をしたところで、大きく見積もってもPolicy損失の低下は0.5程度が関の山かと思われる。そしてそこへその状態へ至る確率がかけられるので、よっぽどPolicyが偏る局面でない限りこれの1/10としても約0.05程度となるので-0.05が理想的な値だろうか。

検証損失

f:id:tokumini:20200902200205p:plain

 残念ながら結果としては0回探索が常に一番下にあり、探索による性能向上は見られなかった。0回探索のものも徐々に損失値が悪化している点は気になる。事前学習の最終ステップでは1.877444だった損失値が、最終的には1.901313になってしまった。

3Mステップ時点での検証損失

f:id:tokumini:20200902194858p:plain

 わかりやすいように最終ステップでの検証損失を抜き出してプロットすると上のようになる。綺麗に右肩上がりとなっており、理想とは程遠い。

対局による検証

 損失の値が悪くともひょっとすると強くなっている可能性があるかもしれないため、実際に対局させることで性能の比較を行った。学習済みの同じパラメータを用いて、探索回数0回でReadout Policyに従って指すモデルと、探索回数10回でReadout Policyに従って指すモデルで1000局の対局を行った。序盤30手以内ではPolicyのSoftmaxに従う確率で指し、それ以降は最も確率が高い行動を選択するようにした。

 結果は10回探索側から見て

勝数 引分数 負数 勝率 Eloレート差
364 8 628 36.8% -93.9

であった。損失値の悪化通り、対局でも性能が落ちていることがわかった。

今後

 要するに現状はMCTSNetの再現がさっぱりできていない。実装ミスや理解の勘違いを含めもう一度見直して、とりあえずまず再現できることを確認しなくては始まらない。

 MCTSNetの元論文は一人ゲームで実験しており、二人ゲームに適用する上で視点が反転する(評価値で言えば符号が反転する)という事象が起こることで何か不具合が起きていないか気になる。Backupネットワークは全結合なので影響は考慮できると思っているし、Backupネットワークには常に(手番が自分の局面の表現, 次の相手が手番の局面の表現)という順番になっているのでそこでも悪影響はでないと考えているが……。なにか見落としているかもしれない。