Backgammon Sage Pro'nun arkasındaki Stage 11 motoru, her botun en kötü oynadığı pozisyonları — backgame'ler, hapsetme oyunları ve snake — ele almak için nasıl kuruldu ve benchmark'lar bu konuda ne söylüyor.
Tavla motorları en çok yavaş, yapısal oyunlarda zayıf olmuştur: bir oyuncunun rakip ev tahtasının derinlerinde iki ya da daha fazla çapa tutup vuruş beklediği backgame'ler; yarışı kaybetmiş bir oyuncunun vurulmuş bir iki pulu hapsedilmiş tutmaya çalıştığı hapsetme oyunları; ve rakip ordunun geri kalanı çökerken tek bir geride kalmış pulu tutan uzak taraf prime'ı, yani snake. Bu pozisyonlar sıradan oyunda nadirdir ve ortaya çıktıklarında alışılmadık ölçüde uzundur; bu yüzden bir motorun öğrendiği kendine karşı oyun verilerinde neredeyse hiç temsil edilmezler ve onları pek görmemiş bir motor, yalnızca benzer görünen pozisyonlardan çıkarım yaparak değerlendirir. Open Sage Stage 9 motoru backgame pozisyonlarıyla eğitildi ve eşdeğer değerlendirme seviyelerinde eXtreme Gammon'dan daha iyi puan alıyor; ama bu oyunlardaki hata oranı hâlâ başka yerlerdeki hata oranının birkaç katı. Stage 11 soruna doğrudan saldırıyor. Önce backgame'lerden, hapsetme oyunlarından ve snake'lerden oluşan benchmark'lar kurduk; her biri rollout kalitesinde referanslara karşı Performance Rating olarak puanlanıyor. Sonra motora küçük bir yapısal kural kümesiyle seçilen altı sinir ağı ekledik; sonra her biri için rollout hedefleri ürettik; ve son olarak sonucu elimizdeki her benchmark'a karşı puanladık. Hapsetme benchmark'ında Stage 11, 3 ply PR'ı 6,89'dan 3,58'e ve blunder sayısını 156'dan 53'e düşürüyor; on klasik backgame benchmark'ında 1 ply PR'ı 4,75'ten 2,98'e iniyor; sınırsız oyun ve Paskogammon — çok daha fazla backgame'e götüren özel bir başlangıç pozisyonundan oynanan bir varyant — performansı ise değişmiyor ya da iyileşiyor.
Sinir ağı tabanlı tavla motorları kendilerine karşı oynadıkları milyonlarca oyundan öğrenir ve o oyunların içerdiği şeyi öğrenirler. Backgame'ler, hapsetme oyunları ve tek bir geride kalmış pulu tutan prime'lar sıradan oyunda nadirdir ve ortaya çıktıklarında alışılmadık ölçüde uzundur; bu yüzden genel bir motor bunlardan azını görür ve benzer görünen ama benzer olmayan pozisyonlardan çıkarım yaparak değerlendirir. Sonuç bilinen bir zayıflıktır: normal bir oyunda her yirmi kararda bir hata yapan motor, derin bir backgame'de her üç kararda bir yapabilir ve orta seviye bir insanın yanlış değerlendirdiği şeyleri yanlış değerlendirme eğilimindedir — çapayı ne zaman tutup ne zaman koşmalı, bir pozisyonun ne kadar timing'i var, prime ne zaman bırakılmalı.
Backgammon Sage Pro'yu çalıştıran Open Sage Stage 9 motoru, özellikle backgame pozisyonlarıyla eğitilmiş iki ağ içeriyor ve bot performansı çalışmamız, her eşdeğer seviyede en az eXtreme Gammon kadar iyi değerlendirdiğini gösteriyor. Ama diğer botlara göre güçlü olmak, mutlak anlamda güçlü olmakla aynı şey değil. Rollout'lara karşı ölçüldüğünde Stage 9'un backgame'lerdeki hata oranı sıradan oyunlardakinin iki ila üç katı; hapsetme oyunlarında ve snake'lerde ise daha da kötü: aşağıdaki snake benchmark'ında 1 ply Performance Rating'i 60'ın üzerinde, sınırsız oyundaki 2,6'ya karşı.
Stage 11, başka hiçbir şeye dokunmadan bu zayıflıkları ortadan kaldırmak için tasarlandı. Çalışma dört adımda ilerledi. Önce backgame ve hapsetme oyununu farklı pozisyon türlerinde puanlayan bir benchmark ailesi kurduk — on klasik backgame türü, bir hapsetme ailesi, bir masif backgame ailesi ve bir snake ailesi — her biri rollout kalitesinde referanslara karşı puanlanan gerçek kararlar kümesi; böylece Stage 9, Stage 11 ve XG aynı zeminde ölçülebiliyor. İkinci olarak Stage 11 modelini tasarladık: Stage 9'un on yedi ağı olduğu gibi korundu, backgame aileleri için altı yeni ağ eklendi ve bir pozisyonun yapısından hangi ağın onu değerlendireceğine karar veren bir yönlendirme algoritması kuruldu. Üçüncü olarak her yeni ağ için eğitim verisi ürettik — kendine karşı oyundan toplanan pozisyonlar, sentetik pozisyonlar ve mevcut rollout derlemlerinin karışımı, hepsi hedef üretmek için rollout'a sokuldu. Dördüncü olarak ağları eğittik ve bitmiş motoru her backgame benchmark'ına ve sınırsız oyun, 5 puanlık maç ve Paskogammon (çok sayıda backgame üretmek için seçilmiş özel bir başlangıç pozisyonundan oynanan bir varyant) rollout PR benchmark'larımıza karşı puanladık; backgame'lerdeki kazanımların başka yerde bir bedeli olmadığından emin olmak için.
Sonuçların kısa hâli: Stage 11, yeni ağların devreye girdiği her yerde belirgin biçimde daha güçlü, girmediği her yerde Stage 9 ile birebir aynı. Hapsetme benchmark'ındaki 3 ply PR'ı Stage 9'unkinin yaklaşık yarısı, oradaki blunder'ları üçte iki azalıyor, on klasik backgame'deki birleşik 1 ply PR'ı %37 düşüyor ve snake'te gerçek ilerleme kaydeden ilk Open Sage motoru. Sınırsız oyun performansı değişmiyor, Paskogammon performansı iyileşiyor. Bu sayfanın geri kalanı ayrıntıları veriyor.
Buradaki her benchmark, sınırsız oyun rollout PR benchmark'ımızla aynı tarifi izliyor: her biri rollout kalitesinde bir referans değerlendirmesi taşıyan gerçek kararlar kümesi; motor buna karşı Performance Rating olarak puanlanıyor — karar başına ortalama equity hatasının 500 ile çarpımı, XG'nin kullandığı gelenek. PR 2, motorun karar başına ortalama 0,004 puan verdiği anlamına gelir; PR 60 ise karar başına 0,12, yani yeni başlayan seviyesi.
Farklı olan, kararların nereden geldiği. Her backgame benchmark'ı, ailesini tanımlayan küçük bir tohum pozisyon kümesinden başlar — aşağıdaki kaydırıcılarda gösterilen referans pozisyonları. Motor daha sonra bu tohumlardan kendine karşı sınırsız oyunlar oynar; küplü, Jacoby ve Beaver açık, 3 ply'de; ve pozisyon hâlâ aileye aitken ortaya çıkan her karar kaydedilir: bir pul oyunu, en az iki yasal hamle ve aralarında anlamlı bir equity farkı olduğunda sayılır; bir küp pozisyonu ise katlayanın kararı bariz olmadığında ya da gerçekten bir katlama teklif edildiğinde sayılır. Tohumlar karıştırılmış bir döngüde kullanılır, ilk kimin oynayacağı yazı tura ile belirlenir ve her şey tek bir rastgele tohumun saf fonksiyonudur; böylece her benchmark birebir yeniden üretilir.
Kaydedilen her karar daha sonra referansını üretmek için rollout'a sokulur: pozisyon başına sona kadar oynanan 5.184 yol, ilk üç yarım hamlede 3 ply pul ve küp kararlarıyla, sonrasında 2 ply ile, varyans azaltma açık, bir bulut işçi filosuna dağıtılmış olarak. Bir pul kararının referansı, referans oyuncunun filtresinin tuttuğu her adayın rollout equity'sini taşır; bir küp kararınınki katlamama, katla/al ve katla/pas equity'lerini taşır. Motorları karşılaştırırken bir incelik önemlidir: referans oyuncunun filtre kümesi dışındaki bir aday yalnızca filtre hassasiyetinde değerlenir; bu da seçimleri referans oyuncununkinden farklı olan bir motoru fazla cezalandırır. Bu yüzden aday tamamlama geçişleri yaptık — Stage 9'un ya da Stage 11'in 1, 2 ya da 3 ply'de fiilen seçtiği her hamleyi aynı gelenekle rollout'a sokarak — böylece aşağıdaki her puan rollout kalitesinde bir adaya karşı hesaplanıyor.
Bir backgame, sahibinin rakip ev tahtasında tuttuğu iki noktayla adlandırılır: 2‑1 backgame rakibin 2 ve 1 noktalarını tutar, 5‑4 ise 5 ve 4 noktalarını, ve böyle devam eder. On tür, işe yarar kombinasyonları kapsar. Her klasörün tohumları XG referans dosyalarından elle seçilmiş pozisyonlardır ve benchmark'ı yaklaşık 1.000 karar içerir — yalnızca adı geçen iki çapa hâlâ tutulurken ve tutan taraf yarışta gerideyken kaydedilir — toplamda 10.021 karar. Her klasörün tohum pozisyonları da küp kararı olarak benchmark pozisyonlarıdır. Tohum pozisyonlarında gezinmek için bir tür seçin; her kart tahtanın yanında pozisyonun rollout'lu küp analizini gösterir.
Bir hapsetme oyununu hapseden değil, kaçan tanımlar: bir taraf birkaç pul toplamıştır ve vurulmuş, tüm tahtayı geçip eve dönmesi gereken bir ila üç pulu vardır; yarışı kaybetmiş diğer taraf ise elinde ne kaldıysa — çapalar, açık pullar, kırık bir prime — onları vurmaya devam etmek için düzenler, gammon'u kurtarmak ya da ara sıra kazanmak için oynar. Hapsedenin yapısından hiçbir şey beklenmez. Benchmark'ın 201 tohumu, motorun daha önce karşılaştığı pozisyonlardan gelir (sınırsız oyun ve Paskogammon benchmark'larının küpleriyle birlikte kararları ve backgame eğitim yığınlarının satırları), bu kuralla süzülmüştür; 3.197 pozisyonu — tohumların kendi küp kararları dâhil — kaçan tarafın hâlâ hapsedilmiş pulu varken kaydedilir. 300 pozisyonluk bir örneklem için ikinci bir referans, denemeleri Stage 9 yerine Stage 11 oynayarak rollout'a sokuldu; deneme oyuncusu seçiminin karşılaştırmayı belirlemediğini doğrulamak için.
Masif bir backgame, rakip ev tahtasında üç ya da daha fazla çapa, ya da geride yedi ya da daha fazla pulla iki çapa tutar: backgame oyuncusunun ordusunun çoğunu bağladığı derin, timing'e dayalı pozisyonlar. 200 tohum, hapsetme tohumlarıyla aynı kaynaklardan alınmış, bu kuralla süzülmüş ve hapsetme ile snake ailelerinden ayrık tutulmuştur; benchmark 2.199 pozisyon içerir.
Snake, tek bir geride kalmış pulu tutan bir uzak taraf prime'ıdır: her biri iki ya da daha fazla pulla yapılmış, tamamen tahtanın rakip yarısında yer alan dört ya da daha fazla ardışık nokta; rakibin diğer on ya da daha fazla pulu çoktan evde yığılmışken bar'daki ya da prime sahibinin ev tahtasındaki bir pulu hapseder. Bir backgame'den çok bir prime oyunudur ve tavlada oynanması en zor şekillerden biridir: sahip, geride kalanı bırakmadan prime'ı eve doğru yuvarlamak zorundadır ve bırakma zamanlaması oyunu belirler. Pozisyon oyunda nadir olduğundan, 74 tohum, mevcut verilerde bulunan birkaç örneğin yanında klasik şeklin sentetik varyantlarını (prime uzunluğu ve yeri, geride kalanın konumu, yığılma dağılımı) içerir; benchmark 1.073 pozisyon içerir.
Üç benchmark, bir pozisyon ailesi yerine tam oyunları ölçer ve hiçbir şeyin kaybedilmediğini kanıtlamak için vardır: sınırsız oyun rollout PR'ı (500 oyun, 17.535 karar), 5 puanlık maç rollout PR'ı (130 maç, 18.292 karar, maç skoru her küp kararına işlenmiş olarak) ve Paskogammon rollout PR'ı (2.556 karar, Paskogammon'un dağınık açılış pozisyonundan oynanmış; bu pozisyon standart tavladan çok daha fazla backgame ve hapsetme oyunu üretir). Üçü de referanslarını uyarlamalı olarak kurar — net kararlar için 3 ply, daha yakın olanlar için kesilmiş rollout'lar, en yakınlar için 1.296 yollu tam rollout'lar — bot performansı çalışmasında anlatıldığı gibi.
XG de bu benchmark'larda puanlandı. Programatik bir arayüz sunmadığı için her benchmark kararı tek kararlık bir oyun olarak yazılır ve Batch Analysis özelliği üzerinden, her değerlendirme seviyesi için bir geçiş olacak şekilde yeniden oynatılır — tıpkı sınırsız oyun ve maç benchmark'larında olduğu gibi. Bu sonuçlar, motoru XG ile karşılaştıran bot performansı sayfasındadır; buradaki tablolar ise Stage 11'i, yerini aldığı Stage 9 ile karşılaştırır.
Stage 9, on dokuz sinir ağından oluşan bir kuruldur: biri saf yarışlar için, on altısı iki tarafın izlediği oyun planı çiftine göre seçilmiş (yarış, saldırı, prime, çapalama) ve iki backgame ağı — biri backgame tutan oyuncu için, biri rakip için — plan çifti yarışa karşı çapalama olduğunda, çapalayan taraf yarışta gerideyken ve rakip ev tahtasında iki ya da daha fazla çapa tutarken kullanılır. Her ağ 244 girdi üzerinde 400 birimlik tek bir gizli katmandır (yarış ağında 196 girdi üzerinde 100 birim) ve beş çıktı üretir: kazanma, gammon kazanma, backgammon kazanma, gammon kaybetme ve backgammon kaybetme olasılıkları.
Stage 11 on yedi standart ağı bayt bayt korur ve iki backgame ağını altıyla değiştirerek yirmi üç ağlık bir kurul oluşturur:
| # | Ağ | Değerlendirdiği bölge |
|---|---|---|
| 0–16 | Stage 9'un yarış ve plan çifti ağları | Geri kalan her şey, tam olarak Stage 9'daki gibi |
| 17 | Derin backgame | 2‑1, 3‑1 ve 3‑2 backgame'ler: her iki çapa da rakibin 1, 2 ya da 3 noktasında |
| 18 | Orta backgame | 4‑1, 4‑2, 5‑1 ve 5‑2 backgame'ler: bir çapa 1 ya da 2 noktasında, biri daha yukarıda |
| 19 | Çift çapa | 4‑3, 5‑3 ve 5‑4 backgame'ler: iki çapa, hiçbiri 3 noktasından derinde değil |
| 20 | Erken hapsetme | Koşan taraf en fazla iki pul toplamışken bir vuruş yapmış backgame sahibi; plan çifti kapısının aksi hâlde standart bir ağa vereceği pozisyonlarda |
| 21 | Hapsetme | Hapsedenin elinde ne olursa olsun, her hapsetme oyunu |
| 22 | Snake | Yığılmış bir tahtaya karşı geride kalmış bir pulu tutan uzak taraf prime'ı |
İki tasarım tercihi sayıdan daha önemli. Backgame ağları, backgame'in kategorisine göre seçilir — hangi taraf tutarsa tutsun aynı ağ — hangi tarafın tuttuğuna göre değil; böylece her ağ tek bir yapıyı her iki bakış açısından öğrenir. Ve bir pul oyununun ağı hamleden önceki pozisyondan seçilir; böylece tek bir ağ, bölgesini terk edenler (bir çapayı bırakan ya da prime'ı çözen hamle) dâhil her adayı değerlendirir; tut-ya-da-koş kararlarını tutarlı kılan budur ve her ağın eğitim verisinin, bu bırakma hamlelerinin götürdüğü pozisyonları içermek zorunda olmasının nedeni de budur.
Yönlendirme algoritması, pozisyon üzerinde kısa ve sıralı bir yapısal test listesidir; ilk eşleşen kazanır:
Testler yapısal olduğundan, ayak izleri herhangi bir pozisyon kümesinde ölçülebilir ve riski sınırlayan da bu ayak izidir: sınırsız oyun benchmark'ında hapsetme kuralı pozisyonların %1,3'ünde, erken hapsetme kuralı %0,6'sında ve backgame kuralları %2,4'ünde devreye girer; snake kuralı ise hiçbirinde devreye girmez; Paskogammon benchmark'ında bu rakamlar %2,6, %20 ve %25'tir. Stage 11'in Stage 9 ile birebir aynı değerlendirdiği sıradan pozisyonların %95'i, yapısı gereği değişmemiştir.
Her yeni ağ, Stage 9'un backgame ağları gibi eğitildi: GPU üzerinde rollout hedeflerine — tam bir rollout'un bir pozisyona atadığı beş olasılık — karşı gözetimli öğrenme, mevcut bir ağdan sıcak başlangıçla, verinin ayrılmış onda birinde en iyi puanı alan kontrol noktası saklanarak. Ağdan ağa değişen, pozisyonlarının nereden geldiğidir ve her cevap bize bir şey öğretti.
Stage 9 ve Stage 10 zaten rollout'lu backgame pozisyonları biriktirmişti — standart oyunlar ve Paskogammon oyunları, toplam yaklaşık 640.000 satır. Bunları kategoriye göre bölmek 245.000 derin, 167.000 orta ve 94.000 çift çapa eğitim satırı verdi; benchmark satırları ayrılarak bunlara karşı tekilleştirildi. Yalnızca bunlarla eğitilen üçlü, bölgesinin içinde Stage 9'dan iyi, kenarında ise kötüydü: yalnızca iki çapanın da tutulduğu pozisyonları görmüş bir ağ, bir çapa bırakıldığında pozisyonun ne ettiğine dair hiçbir fikre sahip değildir ve bir backgame kararının her adayını değerlendirdiğinden tahmin yürütüyordu — yaklaşık 0,3 puan fazla iyimser; bu da derin benchmark'lardaki hatasının yarısından fazlasını açıklıyordu. Çözüm, çıkış torunlarını toplamak oldu: her eğitim pozisyonu için kategoriyi terk eden yasal hamleler, yönlendiricinin onları değerlendirdiği yönelimde rollout'a sokuldu. Kategori başına kırk bin, eğitim kümesine eklenince bu hata kipini ortadan kaldırdı. Stage 9'un kendi backgame ağından sıcak başlangıç, hem rastgele başlangıcı hem de temporal-difference önyüklemesini geride bıraktı.
Üçlünün kalan hatasının nerede olduğunu analiz etmek, bunun hangi çapaların tutulduğundan çok oyunun evresi tarafından belirlendiğini gösterdi: koşan taraf eve girdikçe artıyor ve sahibin bir vuruş yapmasından hemen sonra en kötüsüne ulaşıyordu. Aynı verinin ilgili dilimleriyle eğitilen evre uzmanları bölgenin içinde üçlüyü geçemedi — ama plan çifti kapısının reddettiği hapsetme pozisyonlarında (koşanın kalan bloğu prime gibi okunduğundan Stage 9 pozisyonu standart bir ağa verir), bir erken hapsetme uzmanı 1 ply PR'ı 4,90'dan 3,69'a düşürdü ve blunder'ları yarıladı. Derin ağdan başlayarak üçlünün verisindeki erken hapsetme satırlarıyla eğitilir ve yalnızca orada kullanılır.
Hapsetme kuralı yeni olduğundan bölgesinde neredeyse hiç rollout verisi yoktu: mevcut yığınların yaklaşık %1'i. Hapsetme tohumlarından Stage 11'in kendisiyle 3.000 oyun oynadık; her benchmark pozisyonunu ve adayını iki yönelimde de dışlayarak kurala uyan pozisyonları tuttuk — 35.266 yeni tahta artı zaten rollout'lu 9.734 satır — ve bunları 1.296 yolla, 3 ply oyunla rollout'a soktuk. Bu 45.000 satırla eğitilen bir ağ hapsetme benchmark'ında mükemmeldi ve kuralın ona yönlendirdiği 237 sınırsız oyun pozisyonunda Stage 9'dan kötüydü: bunlar aile verisinde hiç görünmeyen sıradan oyun hapsetme pozisyonlarıdır (toplama sırasında geç bir vuruş, bir kapatma). Aynı kurala uyan genel eğitim derleminin 291.000 satırını, aile satırlarını dört kat ağırlıklandırarak eklemek, sınırsız oyun dilimini Stage 9 seviyesine geri getirdi ve ağı aile benchmark'ında da daha iyi hâle getirdi. Bu çalışmanın genel dersi şudur: uzman bir ağ, bölgesinin benchmark'ın kapladığı köşesiyle değil, bölgesinin tamamıyla eğitilmelidir.
Snake'in hiçbir yerde verisi yoktu — 1,8 milyonluk bir derlemde yüz satır — ve kendine karşı oyundan toplanamıyordu: model bu pozisyonları o kadar kötü oynuyordu ki bir iki hamle içinde prime'ı kırıyor ya da koşuyordu ve 900 oyun, oyun başına ancak iki snake kararı verdi. Bu yüzden bölge doğrudan örneklendi. Beş bin sentetik snake (prime uzunluğu ve yeri, uzak taraftan eve yayılmış yedek pullar, en fazla beş pul toplamış ve bir ila üç geride kalmış pulu olan yığılmış bir rakip), sahibin yapıyı koruyan hamleleri tercih ettiği kısa 2 ply oyunlara tohumluk etti; her karar, pozisyonunu, en iyi beş adayını ve en fazla üç bırakma adayını — ağın ne zaman bırakacağını bilmek için doğru değerlendirmesi gereken hamleler — kattı. Bu, 98.000 farklı tahta üretti; bunların 22.000'i 648 yolla, 3 ply oyunla rollout'a sokuldu; snake oyunları öyle uzundur ki bir rollout, hapsetme rollout'unun altı katına mal olur. Ağ bu kümede dakikalar içinde eğitilir ve bölgede herhangi bir yetkinliği olan ilk Open Sage ağıdır: eğitim hedeflerine karşı 1 ply hatası 0,30'dan 0,054 puana düştü.
| Ağ | Eğitim satırları | Kaynak | Sıcak başlangıç |
|---|---|---|---|
| Derin backgame | 245.000 + 40.000 çıkış | Stage 9/10 rollout yığınları, kategoriye göre bölünmüş; tek adımlık çıkış torunları | Stage 9 backgame ağı |
| Orta backgame | 167.000 + 40.000 çıkış | yukarıdaki gibi | Stage 9 backgame ağı |
| Çift çapa | 94.000 + 40.000 çıkış | yukarıdaki gibi | Stage 9 backgame ağı |
| Erken hapsetme | yukarıdakinin evre dilimi | üçlünün verisindeki erken hapsetme satırları | Derin backgame ağı |
| Hapsetme | 45.000 aile + 291.000 genel | Hapsetme tohumlarından kendine karşı oyun, rollout'lu; genel derlemde kuralın satırları | Stage 9 prime'a karşı yarış ağı |
| Snake | 22,000 | Sentetik tohumlar + yapıyı koruyan kendine karşı oyun, rollout'lu | Stage 9 prime'a karşı yarış ağı |
Her değer bir Performance Rating'dir — düşük olan daha iyidir — motorun kendi 1-ply, 2-ply ve 3-ply değerlendirmesinde ve üç kesilmiş rollout seviyesinde: 1T, 2T ve 3T (XG'nin Roller, Roller+ ve Roller++ karşılıkları). Her iki motor da aynı referanslara karşı puanlanır ve her iki motorun her seçimi rollout ile derecelendirilir. XG, motorla bot performansı sayfasında karşılaştırılır; her iki motorun da her seviyede çalıştırıldığı Paskogammon karşılaştırması ise aşağıdadır.
| Benchmark | Karar | 1-ply | 2-ply | 3-ply | 1T · Roller | 2T · Roller+ | 3T · Roller++ | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | ||
| Sınırsız oyun | 17,535 | 2.59 | 2.55 | — | 1.66 | 1.68 | — | 0.60 | 0.60 | 0.57 | 0.50 | 0.49 | 0.53 | 0.26 | 0.27 | 0.41 | 0.23 | 0.23 | 0.34 |
| 5 puanlık maç | 18,292 | 2.26 | 2.22 | — | 1.30 | 1.27 | — | 0.57 | 0.56 | 0.54 | 0.49 | 0.47 | 0.51 | 0.26 | 0.26 | 0.44 | 0.22 | 0.23 | 0.36 |
| Paskogammon | 2,556 | 7.74 | 6.14 | — | 5.42 | 4.57 | 4.38 | 3.46 | 2.28 | 2.97 | 2.67 | 1.65 | 2.63 | 2.21 | 1.46 | 2.44 | 1.47 | 0.88 | 1.92 |
| Backgame | Karar | 1-ply | 2-ply | 3-ply | 1T · Roller | 2T · Roller+ | 3T · Roller++ | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | ||
| 2‑1 | 1,000 | 6.59 | 3.57 | — | 4.51 | 2.26 | 2.84 | 2.70 | 1.01 | 1.64 | 2.03 | 0.61 | 1.67 | 1.72 | 0.41 | 0.98 | 1.08 | 0.38 | 0.93 |
| 3‑1 | 1,001 | 4.44 | 3.28 | — | 2.77 | 2.22 | 2.22 | 0.93 | 0.88 | 0.95 | 0.92 | 0.66 | 0.91 | 0.66 | 0.34 | 0.59 | 0.53 | 0.32 | 0.48 |
| 3‑2 | 1,008 | 4.22 | 3.31 | — | 2.47 | 2.07 | 2.39 | 1.09 | 0.91 | 1.31 | 1.40 | 0.65 | 0.95 | 0.75 | 0.44 | 0.61 | 0.74 | 0.25 | 0.51 |
| 4‑1 | 1,001 | 3.70 | 2.74 | — | 1.76 | 1.77 | 1.83 | 0.85 | 0.78 | 0.82 | 1.18 | 0.55 | 0.69 | 0.52 | 0.24 | 0.47 | 0.56 | 0.19 | 0.45 |
| 4‑2 | 1,000 | 4.16 | 3.25 | — | 2.20 | 2.16 | 1.96 | 1.04 | 0.73 | 1.05 | 1.27 | 0.63 | 0.79 | 0.55 | 0.36 | 0.61 | 0.51 | 0.27 | 0.43 |
| 5‑1 | 1,003 | 3.36 | 2.56 | — | 1.69 | 1.32 | 1.77 | 0.95 | 0.66 | 0.76 | 1.20 | 0.49 | 0.60 | 0.62 | 0.26 | 0.41 | 0.57 | 0.23 | 0.32 |
| 5‑2 | 1,002 | 3.88 | 2.61 | — | 1.74 | 1.53 | 1.60 | 0.57 | 0.49 | 0.82 | 1.37 | 0.53 | 0.63 | 0.52 | 0.33 | 0.41 | 0.52 | 0.24 | 0.30 |
| 4‑3 | 1,002 | 4.56 | 3.24 | — | 2.04 | 1.69 | 2.13 | 0.81 | 0.74 | 0.80 | 1.23 | 0.52 | 0.76 | 0.72 | 0.24 | 0.55 | 0.54 | 0.19 | 0.44 |
| 5‑3 | 1,003 | 3.79 | 2.80 | — | 1.79 | 1.86 | 2.13 | 0.96 | 1.02 | 0.89 | 1.27 | 0.68 | 0.81 | 0.69 | 0.35 | 0.46 | 0.50 | 0.21 | 0.44 |
| 5‑4 | 1,001 | 5.97 | 3.10 | — | 2.84 | 2.45 | 2.74 | 1.42 | 0.93 | 1.15 | 1.53 | 0.76 | 0.97 | 0.70 | 0.47 | 0.55 | 0.63 | 0.30 | 0.49 |
| Birleşik | 10,021 | 4.47 | 3.05 | — | 2.38 | 1.93 | 2.16 | 1.13 | 0.82 | 1.02 | 1.34 | 0.61 | 0.88 | 0.75 | 0.34 | 0.56 | 0.62 | 0.26 | 0.48 |
| Benchmark | Karar | 1-ply | 2-ply | 3-ply | 1T · Roller | 2T · Roller+ | 3T · Roller++ | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | S9 | S11 | XG | ||
| Hapsetme | 3,270 | 9.65 | 6.82 | — | 9.63 | 4.73 | 14.62 | 5.09 | 2.54 | 11.25 | 3.78 | 2.29 | 7.76 | 3.20 | 1.30 | 7.85 | 2.53 | 1.05 | 6.16 |
| Masif backgame | 2,103 | 9.78 | 5.71 | — | 7.88 | 4.33 | 5.76 | 4.89 | 2.56 | 4.44 | 3.85 | 1.91 | 3.14 | 3.21 | 1.39 | 2.75 | 2.80 | 1.09 | 2.64 |
| Snake | 978 | 64.87 | 21.08 | — | 39.17 | 21.00 | 39.92 | 26.51 | 21.42 | 36.64 | 28.25 | 11.19 | 32.99 | 20.96 | 8.42 | 32.38 | 14.79 | 5.85 | 32.24 |
Paskogammon, backgame çalışmasının tam oyunlarda kendini gösterdiği yerdir: dağınık açılış pozisyonundan oynandığında standart tavladan çok daha fazla backgame ve hapsetme oyunu üretir; bu yüzden bu ağların manşet rakamını kıpırdatacak kadar sık devreye girdiği tek tam oyun benchmark'ıdır. Aynı zamanda XG'nin sunduğu her seviyede, 2 ply'den Roller++'a kadar çalıştırıldığı tek benchmark'tır — oyunlar XG'ye yerel
.xg arşivleri olarak dışa aktarılır — bunlar standart olmayan başlangıç pozisyonunu açıkça taşır — ve her seviye için bir kez toplu analiz edilir. Tablo, Stage 9, Stage 11 ve XG'yi benchmark'ın 2.556 kararı üzerinde aynı rollout referansına karşı, eşleşen seviyeye göre gruplanmış olarak puanlar; her grubun en iyisi vurgulanır.
| Motor | PR | Pul | Küp | Saf yarış | Yarış | Saldırı | Prime | Çapalama |
|---|---|---|---|---|---|---|---|---|
| Stage 9 3T | 1.47 | 1.36 | 2.21 | 0.08 | 1.46 | 1.11 | 0.80 | 2.45 |
| Stage 11 3T | 0.88 | 0.85 | 1.07 | 0.08 | 0.59 | 0.96 | 0.44 | 1.71 |
| XG Roller++ | 1.92 | 1.99 | 1.37 | 0.01 | 1.36 | 2.35 | 1.10 | 3.39 |
| Stage 9 2T | 2.21 | 2.27 | 1.80 | 0.03 | 2.21 | 2.25 | 0.90 | 3.54 |
| Stage 11 2T | 1.46 | 1.51 | 1.08 | 0.03 | 1.36 | 1.79 | 0.51 | 2.35 |
| XG Roller+ | 2.44 | 2.59 | 1.45 | 0.02 | 1.97 | 2.48 | 1.54 | 4.19 |
| Stage 9 1T | 2.67 | 2.60 | 3.16 | 0.08 | 2.55 | 1.74 | 2.17 | 4.24 |
| Stage 11 1T | 1.65 | 1.64 | 1.76 | 0.08 | 1.14 | 1.37 | 1.02 | 3.31 |
| XG Roller | 2.63 | 2.69 | 2.23 | 0.05 | 2.36 | 2.86 | 1.54 | 4.15 |
| Stage 9 4P | 2.68 | 2.75 | 2.20 | 0.14 | 2.51 | 2.46 | 1.52 | 4.37 |
| Stage 11 4P | 1.90 | 1.92 | 1.72 | 0.14 | 1.64 | 2.43 | 1.04 | 2.88 |
| XG 4-ply | 2.62 | 2.66 | 2.32 | 0.05 | 2.22 | 2.76 | 1.58 | 4.32 |
| Stage 9 3P | 3.46 | 3.53 | 2.98 | 0.03 | 3.50 | 3.62 | 2.20 | 4.84 |
| Stage 11 3P | 2.28 | 2.35 | 1.78 | 0.03 | 1.64 | 3.69 | 1.21 | 3.53 |
| XG 3-ply | 2.97 | 2.96 | 3.04 | 0.05 | 2.55 | 3.21 | 1.77 | 4.81 |
| Stage 9 2P | 5.42 | 5.39 | 5.57 | 0.16 | 5.02 | 5.19 | 4.11 | 8.02 |
| Stage 11 2P | 4.57 | 4.37 | 5.93 | 0.16 | 3.97 | 5.16 | 3.95 | 6.30 |
| XG 2-ply | 4.38 | 4.50 | 3.58 | 0.23 | 3.52 | 5.83 | 2.98 | 6.50 |
| Stage 9 1P | 7.74 | 7.67 | 8.21 | 0.26 | 6.94 | 8.51 | 6.56 | 10.61 |
| Stage 11 1P | 6.14 | 5.93 | 7.58 | 0.26 | 5.18 | 8.55 | 4.70 | 8.18 |
Motor, benchmark'lar, tohum pozisyonları, referanslar ve her eğitim betiği açık kaynaklı bgsage deposundadır (MPL-2.0). Backgame benchmark'ları şurada yaşar:
backgame_ref_positions/benchmark/ — klasör başına bir starting.txt tohum dosyası, bir
benchmark.txt karar dosyası ve bir rollout.jsonl referans — ve şununla üretilir: scripts/backgame_benchmark.py; üç ailenin tohumlarını şu üretir: scripts/build_family_seeds.py; puanlamayı ise şu yapar:
scripts/score_backgame_pr.py; bu betik PR'ı, rollout kalitesindeki seçimlerin payıyla birlikte raporlar. Yönlendirme kuralları şuradadır: cpp/src/neural_net.cpp
Python referans uygulamaları şuradadır: scripts/containment_rule.py ve
scripts/snake_rule.py; modelin kendisi ise ağırlık kayıt defterindeki stage11s girdisidir. Eğitim verisi betikleri yukarıdaki tabloda kaynaklarıyla adlandırılmıştır; ihtiyaç duydukları rollout'lar, herkese açık deponun parçası olmayan orkestratörlerce dağıtılır, ama her pozisyon dosyası ve her rollout hedefi depodadır.
| Küpsüz | Kazanma | Gammon | Backgammon |
|---|---|---|---|
| Oyuncu | |||
| Rakip |
| Küp kararı | Equity |
|---|---|
| Katlama yok | |
| Katla / Al | |
| Katla / Pas |