エンジン研究 · バックゲーム & コンテインメント

Open Sage にバックゲームを教える

Backgammon Sage Pro を支える Stage 11 エンジンが、どのボットも最も苦手とするポジション — バックゲーム、コンテインメントゲーム、スネーク — に対処できるようどう作られたか、そしてベンチマークは何を示しているか。

概要

バックギャモンのエンジンは昔から、ゆっくりと進む構造的な戦いを最も苦手にしてきました。相手のインナーボードの奥に 2 つ以上のアンカーを持ってショットを待つバックゲーム、レースで負けている側がヒットした 1〜2 個のチェッカーを閉じ込め続けようとするコンテインメントゲーム、そして相手陣の残りが崩れていく間に遠い側のプライムで取り残された 1 個のチェッカーを捕らえ続けるスネークです。こうしたポジションは通常の対局では稀で、起きたときには異常に長引くため、エンジンが学習する自己対局データにはほとんど含まれず、ほとんど見たことのないエンジンは、似て見えるだけのポジションから外挿して評価してしまいます。Open Sage の Stage 9 エンジンはバックゲームのポジションで学習しており、同等の評価レベルでは eXtreme Gammon を上回りますが、これらの戦いでのエラー率は依然として他の局面の数倍です。Stage 11 はこの問題に正面から取り組みました。まず、バックゲーム、コンテインメントゲーム、スネークそのもので構成されたベンチマークを作り、それぞれをロールアウト品質の参照に対する Performance Rating で採点します。次に、少数の構造的ルールで選択される 6 つのニューラルネットワークをエンジンに追加し、それぞれのロールアウト目標値を生成し、最後にその成果を手元のすべてのベンチマークで採点しました。コンテインメントのベンチマークでは、Stage 11 は 3 プライの PR を 6.89 から 3.58 に、ブランダー数を 156 から 53 に減らしました。10 種の古典的バックゲームのベンチマークでは 1 プライの PR が 4.75 から 2.98 に下がり、無制限ゲームと Paskogammon(バックゲームに入りやすいよう独自に定めた開始配置から始めるバリアント)の成績は変わらないか改善しています。

01
はじめに

エンジンが間違える戦い

ニューラルネットワークによるバックギャモンエンジンは、自己対局した何百万ものゲームから学びます。学ぶのは、そのゲームに含まれていたものです。バックゲーム、コンテインメントゲーム、取り残された 1 個を捕らえるプライムは、通常の対局では稀で、起きたときには異常に長引きます。そのため汎用エンジンはそれらをほとんど見ず、似て見えるが実は違うポジションから外挿して評価してしまいます。その結果がよく知られた弱点です。通常のゲームで 20 手に 1 回ミスをするエンジンが、深いバックゲームでは 3 手に 1 回ミスをすることがあり、しかも人間の中級者と同じところで判断を誤ります — アンカーを保つべきか走るべきか、ポジションにどれだけタイミングがあるか、プライムをいつ解くべきか。

Backgammon Sage Pro を動かす Open Sage Stage 9 エンジンには、バックゲームのポジションに特化して学習した 2 つのネットワークがすでに含まれており、ボット性能の研究では、同等のどのレベルでも eXtreme Gammon と同等以上の評価精度を示しています。しかし、他のボットに対する強さと絶対的な強さは別物です。ロールアウトに対して測ると、Stage 9 のバックゲームでのエラー率は通常のゲームの 2〜3 倍で、コンテインメントゲームとスネークではさらに悪くなります。下のスネークのベンチマークでは 1 プライの Performance Rating が 60 を超え、無制限ゲームの 2.6 と対照的です。

Stage 11 は、他には何も手を触れずにこれらの弱点を取り除くために設計されました。作業は 4 段階で進めました。第一に、さまざまな種類のポジションでバックゲームとコンテインメントのプレイを採点するベンチマーク群を作りました — 10 種の古典的バックゲーム、コンテインメント群、大規模バックゲーム群、スネーク群 — それぞれがロールアウト品質の参照に対して採点される実際の判断の集合で、Stage 9、Stage 11、XG を同じ土俵で測れます。第二に、Stage 11 モデルを設計しました。Stage 9 の 17 のネットワークはそのまま引き継ぎ、バックゲーム群のための 6 つの新しいネットワークと、ポジションの構造からどのネットワークが評価するかを決める振り分けアルゴリズムを加えました。第三に、新しい各ネットワークの学習データを生成しました — 自己対局から収集したポジション、合成ポジション、既存のロールアウトコーパスの混合で、すべてをロールアウトして目標値を作りました。第四に、ネットワークを学習させ、完成したエンジンをすべてのバックゲームベンチマークと、無制限ゲーム・5 ポイントマッチ・Paskogammon(多くのバックゲームが生じるよう独自に定めた開始配置から始めるバリアント)のロールアウト PR ベンチマークで採点し、バックゲームでの向上が他の局面を犠牲にしていないことを確かめました。

結果を短くまとめると、Stage 11 は新しいネットワークが働くところではどこでも明確に強く、働かないところでは Stage 9 と完全に同一です。コンテインメントベンチマークでの 3 プライの PR は Stage 9 のほぼ半分、そこでのブランダーは 3 分の 2 減り、10 種の古典的バックゲームを合算した 1 プライの PR は 37% 下がり、スネークで実質的な進歩を遂げた初の Open Sage エンジンとなりました。無制限ゲームのプレイは変わらず、Paskogammon のプレイは改善しています。以下で詳細を説明します。

02
ベンチマーク

バックゲームのプレイを測る

ここにあるベンチマークはすべて、無制限ゲームのロールアウト PR ベンチマークと同じ手法に従います。実際の判断の集合があり、それぞれにロールアウト品質の参照評価が付き、エンジンはそれに対して Performance Rating で採点されます — 1 判断あたりの平均エクイティ誤差に 500 を掛けた、XG の慣例です。PR 2 は 1 判断あたり平均 0.004 ポイントを失うことを意味し、PR 60 は 1 判断あたり 0.12 で、初心者の領域です。

違うのは判断の出どころです。各バックゲームベンチマークは、その群を定義する少数のシードポジション — 下のカルーセルに示す参照ポジション — から始まります。エンジンはそのシードから自己対局で無制限ゲームをプレイします。キューブあり、ジャコビーとビーバーあり、3 プライで、ポジションがまだその群に属している間に生じたすべての判断を記録します。チェッカープレイは合法手が 2 つ以上あり、それらの間に意味のあるエクイティ差があるときに数え、キューブのポジションはダブルする側の判断が自明でないとき、または実際にダブルが提示されたときに数えます。シードはシャッフルした順で巡回して使い、先手はコイン投げで決め、すべてが 1 つの乱数シードの純粋な関数なので、どのベンチマークも同一に再生成できます。

記録された各判断はロールアウトして参照を作ります。1 ポジションあたり5,184 パスを最後までプレイし、最初の 3 ハーフムーブはチェッカーとキューブの判断を 3 プライ、以降は 2 プライで行い、分散低減を有効にして、クラウドのワーカー群に分散します。チェッカー判断の参照には、参照プレイヤーのフィルターが残した各候補手のロールアウト済みエクイティが入り、キューブ判断の参照にはノーダブル、ダブル/テイク、ダブル/パスのエクイティが入ります。エンジンを比較するうえで重要な点が 1 つあります。参照プレイヤーのフィルター集合の外にある候補手はフィルター精度でしか評価されないため、参照プレイヤーと選択が異なるエンジンには過大な誤差が課されます。そこで候補手の補完パスを実行しました — Stage 9 または Stage 11 が 1、2、3 プライで実際に選んだすべての手を、同じ条件でロールアウトしたのです — これにより、以下のすべてのスコアはロールアウト品質の候補手に対して計算されています。

10 種の古典的バックゲーム

バックゲームは、相手のインナーボードで保持する 2 つのポイントで名付けられます。2‑1 バックゲームは相手の 2 ポイントと 1 ポイントを、5‑4 は 5 ポイントと 4 ポイントを保持する、といった具合です。10 種で有用な組み合わせを網羅します。各フォルダーのシードは XG の参照ファイルから手作業で選んだポジションで、ベンチマークには約 1,000 の判断 — 指定の 2 つのアンカーがまだ保持され、その側がレースで遅れている間だけ記録 — が含まれ、合計 10,021 判断になります。各フォルダーのシードポジションも、キューブ判断としてベンチマークのポジションに含まれます。種類を選ぶとシードポジションを順に見られます。各カードには、ボードの横にそのポジションのロールアウト済みキューブ分析が表示されます。

コンテインメントゲーム

コンテインメントゲームを定義するのは、封じ込める側ではなく逃げる側です。片方はすでに何個かのチェッカーをベアオフしており、ヒットされてボード全体を走って帰らなければならないチェッカーを 1〜3 個抱えています。レースで負けているもう片方は、残っているもの — アンカー、ブロット、崩れたプライム — を並べ替えてそれらをヒットし続け、ギャモンを防ぐか、時には勝つためにプレイします。封じ込める側の構造には何も要求されません。ベンチマークの 201 のシードは、エンジンがすでに出会ったポジション(無制限ゲームと Paskogammon のベンチマークの判断とそのキューブ、およびバックゲーム学習データの行)からこのルールで抽出したもので、3,197 のポジション — シード自身のキューブ判断を含む — が、逃げる側にまだ捕らえられたチェッカーがある間、記録されます。300 ポジションのサンプルについては、試行を Stage 9 ではなく Stage 11 にプレイさせた第二の参照もロールアウトし、試行プレイヤーの選択が比較を左右しないことを確認しました。

大規模バックゲーム

大規模バックゲームは、相手のインナーボードに 3 つ以上のアンカーを持つか、2 つのアンカーに加えて 7 個以上のチェッカーを後方に残しているものです。バックゲーム側が兵力の大半を投入した、深くタイミングに支配されるポジションです。200 のシードはコンテインメントのシードと同じ出典からこのルールで抽出し、コンテインメント群およびスネーク群と重ならないようにしており、ベンチマークには 2,199 のポジションが含まれます。

スネーク

スネークは、取り残された 1 個のチェッカーを捕らえる遠い側のプライムです。それぞれ 2 個以上のチェッカーで作られた 4 つ以上の連続したポイントが、ボードの相手側半分に丸ごと並び、バー上またはプライムを持つ側のインナーボードにあるチェッカーを捕らえ、相手の残り 10 個以上のチェッカーはすでにホームに押し込められています。バックゲームというよりプライムの戦いであり、バックギャモンで最もプレイの難しい形の一つです。プライムを持つ側は取り残されたチェッカーを解放せずにプライムをホームへ転がしていかなければならず、解放のタイミングがゲームを決めます。実戦では稀なポジションなので、74 のシードには既存データで見つかった少数のものに加え、古典的な形の合成バリエーション(プライムの長さと位置、取り残されたチェッカーの位置、押し込まれた配置)が含まれ、ベンチマークには 1,073 のポジションがあります。

ゲーム全体のベンチマーク

3 つのベンチマークは、ポジション群ではなくゲーム全体を測るもので、何も失われていないことを示すために存在します。無制限ゲームのロールアウト PR(500 ゲーム、17,535 判断)、5 ポイントマッチのロールアウト PR(130 マッチ、18,292 判断、マッチスコアがすべてのキューブ判断に反映)、そして Paskogammon のロールアウト PR(2,556 判断。Paskogammon の散らばった開始配置からプレイされ、標準のバックギャモンよりはるかに多くのバックゲームとコンテインメントゲームが生じます)。3 つとも参照を適応的に構築します — 明確な判断は 3 プライ、接戦は打ち切りロールアウト、最も接戦のものは 1,296 パスの完全ロールアウト — 詳細はボット性能の研究に記載しています。

XG もこれらのベンチマークで採点しています。XG はプログラム用のインターフェースを持たないため、ベンチマークの各判断を 1 判断だけのゲームとして書き出し、Batch Analysis 機能で評価レベルごとに 1 パスずつ再現します。無制限ゲームおよびマッチのベンチマークとまったく同じ方法です。その結果はエンジンと XG を比較するボット性能のページにあります。ここの表は Stage 11 と、それが置き換える Stage 9 を比較します。

03
アーキテクチャ

Stage 11 モデル

Stage 9 は 19 のニューラルネットワークの委員会です。純粋なレース用が 1 つ、両者が追求するゲームプランの組(レース、アタック、プライミング、アンカリング)で選ばれるものが 16、そしてバックゲーム用が 2 つ — バックゲームを持つ側用と相手側用 — で、プランの組がアンカリング対レースで、アンカリング側がレースで遅れ、相手のインナーボードに 2 つ以上のアンカーを持つときに使われます。各ネットワークは 244 入力に対する 400 ユニットの隠れ層 1 層(レース用ネットワークは 196 入力に対して 100 ユニット)で、5 つの出力 — 勝ち、ギャモン勝ち、バックギャモン勝ち、ギャモン負け、バックギャモン負けの確率 — を返します。

Stage 11 は 17 の標準ネットワークをバイト単位でそのまま保ち、2 つのバックゲームネットワークを 6 つに置き換えて、23 のネットワークからなる委員会にしました。

#ネットワーク評価する領域
0–16Stage 9 のレース用およびプラン組ネットワークそれ以外すべて。Stage 9 と完全に同じ
17ディープバックゲーム2‑1、3‑1、3‑2 バックゲーム:両方のアンカーが相手の 1、2、3 ポイントにある
18ミドルバックゲーム4‑1、4‑2、5‑1、5‑2 バックゲーム:一方のアンカーが 1 または 2 ポイント、もう一方がそれより上
19ダブルアンカー4‑3、5‑3、5‑4 バックゲーム:2 つのアンカーで、どちらも 3 ポイントより深くない
20早期コンテインメントレース側のベアオフがまだ 2 個以下のうちにショットをヒットしたバックゲーム側。プラン組のゲートが本来なら標準ネットワークに渡してしまうポジション
21コンテインメント封じ込める側が何を持っていようと、あらゆるコンテインメントゲーム
22スネーク押し込められたボードに対して取り残されたチェッカーを捕らえる遠い側のプライム

数よりも重要な設計上の選択が 2 つあります。バックゲームのネットワークは、どちらの側が持っているかではなく、バックゲームのカテゴリーで選ばれます — どちらが持っていても同じネットワーク — ので、各ネットワークは 1 つの構造を両方の視点から学びます。そして、チェッカープレイのネットワークは着手のポジションから選ばれるため、1 つのネットワークが、その領域を離れる手(アンカーを手放す手、プライムを解く手)を含むすべての候補手を評価します。これが「保つか走るか」の判断を一貫させるものであり、各ネットワークの学習データにそうした解放手が導くポジションを含めなければならない理由でもあります。

振り分けアルゴリズムは、ポジションに対する構造的テストの短い順序付きリストで、最初に一致したものが採用されます。

  1. レース。コンタクトが切れていれば、純粋レース用ネットワーク。
  2. スネーク。いずれかの側が、ボードの相手側半分に 4 つ以上連続して作ったポイントを持ち、その背後のバー上またはプライム保持側のインナーボードに相手のチェッカーがあり、相手のチェッカーが 10 個以上すでにホームにあれば、スネーク用ネットワーク。
  3. コンテインメント。いずれかの側が 3 個以上をベアオフ済みで、バー上または自分のインナーボード外に、相手のチェッカーがまだヒットできるチェッカーを 1〜3 個持っていれば、コンテインメント用ネットワーク。封じ込める側には何も要求しません。
  4. バックゲーム。プランの組がアンカリング対レースで、アンカリング側がレースで遅れ、相手のインナーボードに 2 つ以上のアンカーを持てば(Stage 9 自身のテスト)、アンカーの位置に応じてディープ、ミドル、ダブルアンカーのネットワーク — アンカーが 3 つ以上なら、2 つ以上が 1、2、3 ポイントにあればディープ、そうでなければミドル。
  5. 早期コンテインメント。2 つ以上のアンカーを持つ側がヒットしており — 相手のチェッカーがバー上または自分のインナーボードにある — レース側のベアオフが 2 個以下だが、プランの組がずれてルール 4 が発動しない場合(レース側の残りのチェッカーがプライムと読まれる、など)、早期コンテインメント用ネットワーク。
  6. それ以外は、Stage 9 が使ったであろうプラン組ネットワーク。

テストは構造的なので、その適用範囲はどんなポジション集合でも測定でき、その範囲がリスクの上限になります。無制限ゲームのベンチマークでは、コンテインメントルールがポジションの 1.3%、早期コンテインメントルールが 0.6%、バックゲームルールが 2.4% に発動し、スネークルールは一度も発動しません。Paskogammon のベンチマークではそれぞれ 2.6%、20%、25% です。Stage 11 が Stage 9 と同一に評価する 95% の通常ポジションは、構造上、変わりません。

04
学習

各ネットワークのデータと学習

新しいネットワークはすべて Stage 9 のバックゲームネットワークと同じ方法で学習しました。GPU 上でロールアウト済み目標値 — 完全ロールアウトがポジションに割り当てる 5 つの確率 — に対する教師あり学習で、既存のネットワークからウォームスタートし、データの 1 割を保留してそこで最良のスコアを出したチェックポイントを採用します。ネットワークごとに違うのはポジションの出どころで、その答えの一つ一つが教訓になりました。

バックゲームの 3 ネットワーク(ネットワーク 17〜19)

Stage 9 と Stage 10 は、ロールアウト済みのバックゲームポジション — 標準ゲームと Paskogammon のゲーム、合計約 640,000 行 — をすでに蓄積していました。これをカテゴリーで分けると、ディープ 245,000 行、ミドル 167,000 行、ダブルアンカー 94,000 行の学習行になり、ベンチマーク行は保留してそれらと重複排除しました。それだけで学習した 3 ネットワークは、領域の内側では Stage 9 より良く、縁では悪くなりました。両方のアンカーが保たれたポジションしか見たことのないネットワークは、アンカーを一つ手放したあとのポジションの価値がわからず、しかもバックゲーム判断のすべての候補手を評価するため、推測で答えていたのです — 約 0.3 ポイント楽観的すぎ、ディープのベンチマークでの誤差の半分以上がこれでした。解決策は離脱後の子ポジションの収集でした。各学習ポジションについて、カテゴリーを離れる合法手を、振り分けが評価する向きでロールアウトします。カテゴリーごとに 4 万行を学習データに加えたことで、この種の誤りは消えました。Stage 9 自身のバックゲームネットワークからのウォームスタートは、ランダム初期化も TD ブートストラップも上回りました。

早期コンテインメント(ネットワーク 20)

3 ネットワークに残る誤差の所在を分析すると、それはどのアンカーを保持しているかではなく、ゲームのフェーズに左右されていました。レース側がベアインするにつれて上昇し、バックゲーム側がショットをヒットした直後に最悪になります。同じデータの対応する部分で学習したフェーズ特化ネットワークは、領域の内側では 3 ネットワークに勝てませんでした — しかし、プラン組のゲートが除外するコンテインメントのポジション(レース側の残りのブロックがプライムと読まれ、Stage 9 が標準ネットワークに渡してしまうもの)では、早期コンテインメント特化ネットワークが 1 プライの PR を 4.90 から 3.69 に下げ、ブランダーを半減させました。ディープネットワークを起点に、3 ネットワークのデータのうち早期コンテインメントの行で学習し、そこでのみ使います。

コンテインメント(ネットワーク 21)

コンテインメントルールは新しいため、その領域にはロールアウト済みデータがほとんどありませんでした。既存データの約 1% です。コンテインメントのシードから Stage 11 自身で 3,000 ゲームをプレイし、ベンチマークのポジションと候補手を両方の向きで除外したうえで、ルールを満たすポジション — 35,266 の新しいボードと、ロールアウト済みの 9,734 行 — を残し、1,296 パス・3 プライのプレイでロールアウトしました。この 45,000 行で学習したネットワークは、コンテインメントベンチマークでは優秀でしたが、ルールがそこへ振り分ける無制限ゲームの 237 ポジションでは Stage 9 より劣りました。これらは通常ゲームでのコンテインメントポジション(ベアオフ中の遅いヒット、クローズアウト)で、この群のデータには一度も現れなかったものです。同じルールを満たす一般学習コーパスの 291,000 行を、群の行に 4 倍の重みをつけて加えたところ、無制限ゲームの部分は Stage 9 の水準に戻り、群のベンチマークでもネットワークは改善しました。これがこの取り組みの一般的な教訓です。専門ネットワークはその領域全体で学習しなければならず、ベンチマークが占める片隅だけで学習してはなりません。

スネーク(ネットワーク 22)

スネークにはどこにもデータがなく — 180 万行のコーパスに 100 行程度 — 自己対局から収集することもできませんでした。モデルのプレイがあまりに悪く、1〜2 手でプライムを崩すか走ってしまい、900 ゲームで得られたスネークの判断は 1 ゲームあたり 2 つ程度でした。そこで領域を直接サンプリングしました。5,000 の合成スネーク(プライムの長さと位置、遠い側からホームまで散らした余剰チェッカー、最大 5 個をベアオフし 1〜3 個の取り残しを持つ押し込められた相手)をシードに、プライム保持側が構造を保つ手を優先する短い 2 プライのゲームをプレイし、各判断からポジションと上位 5 つの候補手、そして最大 3 つの解放候補手 — いつ手放すべきかを知るためにネットワークが正しく評価しなければならない手 — を収集しました。これで 98,000 の異なるボードが得られ、そのうち 22,000 を 648 パス・3 プライのプレイでロールアウトしました。スネークのゲームは長く、1 回のロールアウトにコンテインメントの 6 倍のコストがかかります。ネットワークはこのデータで数分で学習でき、この領域で何らかの能力を持つ初の Open Sage ネットワークとなりました。学習目標値に対する 1 プライの誤差は 0.30 から 0.054 ポイントに下がりました。

ネットワーク学習行数出典ウォームスタート
ディープバックゲーム245,000 + 離脱 40,000Stage 9/10 のロールアウト済みデータをカテゴリー分割。1 手後の離脱ポジションStage 9 のバックゲームネットワーク
ミドルバックゲーム167,000 + 離脱 40,000同上Stage 9 のバックゲームネットワーク
ダブルアンカー94,000 + 離脱 40,000同上Stage 9 のバックゲームネットワーク
早期コンテインメント上記のフェーズ別部分集合3 ネットワークのデータのうち早期コンテインメントの行ディープバックゲームネットワーク
コンテインメント群 45,000 + 一般 291,000コンテインメントのシードからの自己対局をロールアウト。一般コーパス中のルール該当行Stage 9 のプライミング対レースネットワーク
スネーク22,000合成シード + 構造を保つ自己対局をロールアウトStage 9 のプライミング対レースネットワーク
05
結果

Stage 9 対 Stage 11

いずれの数値も Performance Rating です(低いほど良い)。各エンジン自身の 1-ply、2-ply、3-ply の評価と、3 つの打ち切りロールアウトのレベル 1T・2T・3T(XG の Roller、Roller+、Roller++ に対応)での値です。両エンジンは同じ基準に対して採点され、どちらのエンジンの選択もロールアウトで評価されています。XG とエンジンの比較はボット性能のページにあります。両エンジンをすべてのレベルで実行した Paskogammon の比較は下にあります。

ゲーム全体のベンチマーク

ベンチマーク 判断数 1-ply 2-ply 3-ply 1T · Roller 2T · Roller+ 3T · Roller++
S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG
無制限ゲーム17,5352.592.551.661.680.600.600.570.500.490.530.260.270.410.230.230.34
5 ポイントマッチ18,2922.262.221.301.270.570.560.540.490.470.510.260.260.440.220.230.36
Paskogammon2,5567.746.145.424.574.383.462.282.972.671.652.632.211.462.441.470.881.92
S9 Stage 9 · S11 Stage 11 · XG eXtreme Gammon 同一基準に対する Performance Rating。低いほど良く、3 つのうち最良を強調しています そのレベルでは未実行
各エンジンは何に対して採点されるか。どの判断にも完全なロールアウトが付いています — その局面から最後まで指し切った数千局 — そしてエンジンに課される誤差は、ロールアウトの最善手と実際に選んだ手との差です。ロールアウト自体もあるエンジンが指しており、2 つのエンジンが異なる手を選ぶ判断では、その選択がロールアウトの「最善手」を決めてしまうことがあります。そこでそうした判断は、その局面タイプで利用できる最も強いエンジンが指します。各エンジンの選択はロールアウトが評価する手の集合に必ず含められるため、どのエンジンの答えも他より粗く評価されることはなく、すべてが同じ基準で測られます。

10 種の古典的バックゲーム

バックゲーム 判断数 1-ply 2-ply 3-ply 1T · Roller 2T · Roller+ 3T · Roller++
S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG
2‑11,0006.593.574.512.262.842.701.011.642.030.611.671.720.410.981.080.380.93
3‑11,0014.443.282.772.222.220.930.880.950.920.660.910.660.340.590.530.320.48
3‑21,0084.223.312.472.072.391.090.911.311.400.650.950.750.440.610.740.250.51
4‑11,0013.702.741.761.771.830.850.780.821.180.550.690.520.240.470.560.190.45
4‑21,0004.163.252.202.161.961.040.731.051.270.630.790.550.360.610.510.270.43
5‑11,0033.362.561.691.321.770.950.660.761.200.490.600.620.260.410.570.230.32
5‑21,0023.882.611.741.531.600.570.490.821.370.530.630.520.330.410.520.240.30
4‑31,0024.563.242.041.692.130.810.740.801.230.520.760.720.240.550.540.190.44
5‑31,0033.792.801.791.862.130.961.020.891.270.680.810.690.350.460.500.210.44
5‑41,0015.973.102.842.452.741.420.931.151.530.760.970.700.470.550.630.300.49
合計10,0214.473.052.381.932.161.130.821.021.340.610.880.750.340.560.620.260.48
S9 Stage 9 · S11 Stage 11 · XG eXtreme Gammon 同一基準に対する Performance Rating。低いほど良く、3 つのうち最良を強調しています そのレベルでは未実行
10 のベンチマークを 1-ply で合計すると、Stage 11 のブランダー(0.08 以上の誤差)は 98 で、Stage 9 は 246 です。3T では Stage 11 は 1 つもありません

コンテインメント、大規模バックゲーム、スネーク

ベンチマーク 判断数 1-ply 2-ply 3-ply 1T · Roller 2T · Roller+ 3T · Roller++
S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG
コンテインメント3,2709.656.829.634.7314.625.092.5411.253.782.297.763.201.307.852.531.056.16
大規模バックゲーム2,1039.785.717.884.335.764.892.564.443.851.913.143.211.392.752.801.092.64
スネーク97864.8721.0839.1721.0039.9226.5121.4236.6428.2511.1932.9920.968.4232.3814.795.8532.24
S9 Stage 9 · S11 Stage 11 · XG eXtreme Gammon 同一基準に対する Performance Rating。低いほど良く、3 つのうち最良を強調しています そのレベルでは未実行
すべてのエンジンが同じ基準で課金されます。ロールアウトは候補手の絞り込みリストを評価するため、そのリストの外にある選択は近似的にしか評価できず、過大に減点されます — そこで、どのエンジンが選んだ手であっても、各エンジンの選択を個別にロールアウトしました。13 のベンチマーク全体で、これにより 3 つのエンジンいずれについても、課された誤差のうち近似評価の手に依存する割合は 1% 未満になり、上の比較はどれもそこに依存していません。唯一の例外はコンテインメントとスネークにおける XG の Roller+ 列で、その数値は今もわずかに上振れした上限値です。
これらは新しいネットワークが対象として作られたファミリーであり、差が最も大きいのもここです。コンテインメントでは Stage 11 が Stage 9 の PR をどのレベルでもおよそ半分にします(2-ply で 9.634.73、3-ply で 5.092.54、3T で 2.531.05)。ブランダーもいずれのレベルで 3 分の 2 以上減ります。大規模バックゲームも同じ形を示します。単独で最大の改善はスネークで、1-ply で 64.87 から 21.08 へ。それでもなお、ここで測定したすべてのエンジン(Sage も XG も)にとって、この集合で最も難しいファミリーであり続けます。他と違いプライを深めてもほとんど改善せず、動かすのは打ち切りロールアウトのレベルだけです。長いコンテインメントの帰趨に左右される「保持か解放か」の選択を解くのはシミュレーションだからです。

Paskogammon 対 XG

Paskogammon は、バックゲームの取り組みの成果がゲーム全体に表れる場所です。散らばった開始配置からプレイされるため、標準のバックギャモンよりはるかに多くのバックゲームとコンテインメントゲームが生じ、これらのネットワークが全体の数値を動かすほど頻繁に働く唯一のゲーム全体のベンチマークです。また、XG が提供するすべてのレベル — 2 プライから Roller++ まで — で XG を実行した唯一のベンチマークでもあります。ゲームはネイティブの .xg アーカイブとして書き出されます。これは非標準の初期配置を明示的に保持しており、レベルごとに 1 回バッチ解析されます。表はベンチマークの 2,556 の判断について、Stage 9・Stage 11・XG を同一のロールアウト基準に対して採点し、対応するレベルごとにまとめています。各グループの最良を強調しています。

エンジンPRチェッカーキューブ ピュアレースレースアタック プライミングアンカリング
Stage 9 3T1.471.362.210.081.461.110.802.45
Stage 11 3T0.880.851.070.080.590.960.441.71
XG Roller++1.921.991.370.011.362.351.103.39
Stage 9 2T2.212.271.800.032.212.250.903.54
Stage 11 2T1.461.511.080.031.361.790.512.35
XG Roller+2.442.591.450.021.972.481.544.19
Stage 9 1T2.672.603.160.082.551.742.174.24
Stage 11 1T1.651.641.760.081.141.371.023.31
XG Roller2.632.692.230.052.362.861.544.15
Stage 9 4P2.682.752.200.142.512.461.524.37
Stage 11 4P1.901.921.720.141.642.431.042.88
XG 4 プライ2.622.662.320.052.222.761.584.32
Stage 9 3P3.463.532.980.033.503.622.204.84
Stage 11 3P2.282.351.780.031.643.691.213.53
XG 3 プライ2.972.963.040.052.553.211.774.81
Stage 9 2P5.425.395.570.165.025.194.118.02
Stage 11 2P4.574.375.930.163.975.163.956.30
XG 2 プライ4.384.503.580.233.525.832.986.50
Stage 9 1P7.747.678.210.266.948.516.5610.61
Stage 11 1P6.145.937.580.265.188.554.708.18
Stage 11 は 3-ply 以上のすべての対応レベルで XG を上回ります — 3T は 0.88 対 Roller++ の 1.92、2T は 1.462.44、1T は 1.652.63、4-ply は 1.902.62、3-ply は 2.282.97 — さらに Stage 9 も打ち切りレベルでは XG を上回ります。XG が両者を上回るのは 2-ply のみです(4.38)。アンカリングはここでのどのエンジンにとっても最も難しいゲームプランであり、差が最も大きいのもそこです。3T で Stage 11 の 1.71 に対し XG は 3.39 です。
A
付録

結果を再現する

エンジン、ベンチマーク、シードポジション、参照、そしてすべての学習スクリプトは、オープンソースの bgsage リポジトリ(MPL-2.0)にあります。バックゲームのベンチマークは backgame_ref_positions/benchmark/ 以下にあり — フォルダーごとにシードの starting.txt 、判断の benchmark.txt 、参照の rollout.jsonl が 1 つずつ — 生成は scripts/backgame_benchmark.py、3 つの群のシード作成は scripts/build_family_seeds.py、採点は scripts/score_backgame_pr.pyが行い、この採点スクリプトはロールアウト品質の選択の割合とともに PR を報告します。振り分けルールは cpp/src/neural_net.cpp にあり、Python の参照実装は scripts/containment_rule.pyscripts/snake_rule.pyにあります。モデル自体は重みレジストリの stage11s エントリーです。学習データのスクリプトは上の表に出典として記載しています。それらが必要とするロールアウトは公開リポジトリに含まれないオーケストレーターで分散実行しますが、すべてのポジションファイルとロールアウト済み目標値は含まれています。