要約

  • hzyhhzyとKouzaが公開した闘獣棋のAlphaZero型ネット、KataGo-AnimalChessが、200局でMistyJungleに82勝0敗118引き分け。スコア0.70、およそ+150 Elo。
  • 同じ一台の機械で1手あたりの実時間を揃えた。1,000ビジット対500万ノード。どちらの色でも勝ち、一度も負けなかった。
  • Mistboardの虎が中国のルールどおり獅子と同じく川を横に飛べるようになるまで、この対戦は公平になりえなかった。そのルールが先に入った。
  • これでチャレンジのページの闘獣棋の行は勝ち取られた。KataGo-AnimalChessがMistboardの闘獣棋ボットになり、彼らの名前がつく。

MistyJungleはMistboardの闘獣棋ボットだ。三項からなる手書きの評価関数の上でアルファベータ探索を行い、1手500万ノード、ネットはない。6月には私が動かせた最強のオープンソースエンジンに約16 Elo差で勝ち、それ以来チャレンジのページは、同じ予算でこれに勝つエンジンにその席を提供してきた。

先週、揭棋の作業でGitHubを調べていたとき、見落としていたより強い相手を見つけた。KataGo-AnimalChess、hzyhhzyがKataGoの自己対局による学習を闘獣棋に移植したもので、学習済みのネットはKouzaのDandelion GUIに同梱されている。6月の調査で見落としたのは、このエンジンがKataGomoという名のリポジトリのブランチにあり、名前のどこにも闘獣棋とは書かれていないからだ。

まず一つのルールを変える必要があった

彼らの虎は縦だけでなく横にも川を飛ぶ。獅子と同じ跳躍だ。Mistboardの虎はそうではなく、縦にしか飛べなかった。これは英語版Wikipediaの記事に由来する読み方で、私が探した限り他のどこにもない。テンセントのQQ游戏のルール、ライデン大学の闘獣棋のページ、KataGoのソースコードはいずれも、虎に獅子と同じ跳躍を与えている。あるルールで学習したネットと別のルールで指すエンジンの対戦が測るのは、ルールであってエンジンではない。

そこでルールが変わった。9月21日以降、Mistboardの虎は両方向に飛ぶ。カーネル、ボット、解析エンジン、ルールのページ、詰め物の問題がそれに従った(新しい跳躍で成り立たなくなった駒得の問題は一つ取り下げた)。この変更は手を増やすだけなので、それ以前のすべての対局は指されたとおりに合法のままだ。Wikipediaの記事にも、いまはこの変種が記されている。

対戦

200局、色は交互、審判はMistboardのカーネル。巣への到達、全駒の捕獲、手詰まりを勝ち、三回の同一局面と200手無捕獲を引き分けとする。各エンジンは手を提案するだけで、非合法な提案はその対局の負けになるが、一度も起きなかった。

予算は一台の機械での実時間で揃え、1手あたりおよそ2秒とした。MistyJungleは公開時の500万ノードを1スレッドで、KataGoはDandelion 4に同梱のb10c384ネットで1,000ビジットを4スレッドで。どちらのエンジンも時計ではなく予算で探索するので、Modal上で指された対局は、ここで指しても同じ対局になる。KataGoのループルールは切り、審判の千日手ルールが双方に適用されるようにした。

  スコア
KataGo赤番(100局) 44 56 0 0.72
KataGo黒番(100局) 38 62 0 0.69
合計 82 118 0 0.705

決着のついた対局はすべて巣への到達で終わり、引き分けはすべて同一局面の反復だった。対局の長さの中央値は127手。スコアの95%区間は0.67から0.74で、おおよそ+125から+180 Eloにあたる。チャレンジが求めたのは0.55だった。

200局すべてがMistboard上のスタディにあり、名前のついた8局が先頭にある。まず短い一局、KataGoが黒の第67局。虎が54手目に西の湖を横に渡る、旧ルールでは禁じられていた手で、その36手後に巣へ入る。

赤番の最短の勝ち、第138局、81手:

それは何か

KataGo-AnimalChessは、囲碁プログラムのKataGoそのものの盤とルールを闘獣棋に差し替え、自己対局のループをそのまま回したものだ。自己対局では1手400ビジット、10ブロック384チャンネルのネットをSGDで2枚のGPUで学習し、GUIが対応する各変種のルールをランダムに混ぜて、一つのネットがすべてに使えるようにしている。学習スクリプトと設定はブランチにあり、リポジトリ自身の見積もりでは、小さなゲームで最強水準に達するのに必要な計算は50ドル未満だという。重みはGUIのダウンロードに含まれ、単独の公開もライセンスの明記もない。

対するMistyJungleの評価は、駒得、巣までの距離、罠のペナルティだけだ。古典的な相手には引けを取らず、その上に学習した残差を載せても役に立たなかった。これはよくある結果だ。自己対局で学習したネットは手作業で調整した探索に勝ち、引き分けの多いゲームでは勝てる対局を勝ち、一つも落とさない。

彼らが席を勝ち取った

チャレンジのページの闘獣棋の行は、彼らの名前とともに「勝ち取られた」と記され、KataGo-AnimalChessがMistboardの闘獣棋ボットになる。エンジンはオープンソースで、ネットは彼らのGUIに同梱されているので、これを動かすのは依頼ではなく構築の仕事だ。サーバー側のGTPブリッジ、AnimalChessブランチのLinuxバイナリ、そしてサイトが1手あたりに負担できるビジット予算。それが入るまではMistyJungleが席を守り、解析盤も当面はMistyJungleのままだ。チャレンジは席の保持者に対して開いたままだ。同じ予算で200局、KataGo-AnimalChessに勝てば席はあなたのものになる。

対戦のハーネス(KataGoのGTPとカーネルをつなぐブリッジ。KataGoの盤は我々の盤の左右鏡像だ)はMistboardのリポジトリのjungle-katago-match.tsにあり、200局の記録はここにある。