Motor çalışması · Backgame & hapsetme

Open Sage'e backgame oynamayı öğretmek

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.

Özet

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.

01
Giriş

Motorların yanlış oynadığı oyunlar

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.

02
Benchmark'lar

Backgame oyununu ölçmek

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.

On klasik backgame

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.

Hapsetme oyunları

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 backgame'ler

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

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.

Tam oyun benchmark'ları

Üç 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.

03
Mimari

Stage 11 modeli

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:

#Değerlendirdiği bölge
0–16Stage 9'un yarış ve plan çifti ağlarıGeri kalan her şey, tam olarak Stage 9'daki gibi
17Derin backgame2‑1, 3‑1 ve 3‑2 backgame'ler: her iki çapa da rakibin 1, 2 ya da 3 noktasında
18Orta backgame4‑1, 4‑2, 5‑1 ve 5‑2 backgame'ler: bir çapa 1 ya da 2 noktasında, biri daha yukarıda
19Çift çapa4‑3, 5‑3 ve 5‑4 backgame'ler: iki çapa, hiçbiri 3 noktasından derinde değil
20Erken hapsetmeKoş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
21HapsetmeHapsedenin elinde ne olursa olsun, her hapsetme oyunu
22SnakeYığı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:

  1. Yarış. Temas kopmuşsa, saf yarış ağı.
  2. Snake. Taraflardan biri tahtanın rakip yarısında en az dört ardışık yapılmış nokta tutuyorsa, arkasında bar'da ya da sahibin ev tahtasında bir rakip pul ve evde en az on rakip pul varsa: snake ağı.
  3. Hapsetme. Taraflardan biri en az üç pul toplamışsa ve bar'da ya da ev tahtası dışında, bir rakip pulun hâlâ vurabileceği bir ila üç pulu varsa: hapsetme ağı. Hapsedenden hiçbir şey beklenmez.
  4. Backgame. Plan çifti yarışa karşı çapalama ise, çapalayan taraf yarışta gerideyse ve rakip ev tahtasında iki ya da daha fazla çapa tutuyorsa (Stage 9'un kendi testi): çapaların konumuna göre derin, orta ya da çift çapa ağı — üç ya da daha fazla çapada, en az ikisi 1, 2 ya da 3 noktasındaysa derin, aksi hâlde orta.
  5. Erken hapsetme. İki ya da daha fazla çapa tutan taraf vurmuşsa — bar'da ya da kendi ev tahtasında bir rakip pul varsa — ve koşan taraf en fazla iki pul toplamışsa, ama plan çifti 4. kuralın devreye girmeyeceği kadar kaymışsa (koşanın kalan pulları prime gibi okunuyorsa, diyelim): erken hapsetme ağı.
  6. Aksi hâlde Stage 9'un kullanacağı plan çifti ağı.

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.

04
Eğitim

Her ağ için veri ve eğitim

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.

Backgame üçlüsü (17–19 numaralı ağlar)

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ı.

Erken hapsetme (20 numaralı ağ)

Üç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 (21 numaralı ağ)

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 (22 numaralı ağ)

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ü.

Eğitim satırlarıKaynakSıcak başlangıç
Derin backgame245.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 backgame167.000 + 40.000 çıkışyukarıdaki gibiStage 9 backgame ağı
Çift çapa94.000 + 40.000 çıkışyukarıdaki gibiStage 9 backgame ağı
Erken hapsetmeyukarıdakinin evre dilimiüçlünün verisindeki erken hapsetme satırlarıDerin backgame ağı
Hapsetme45.000 aile + 291.000 genelHapsetme tohumlarından kendine karşı oyun, rollout'lu; genel derlemde kuralın satırlarıStage 9 prime'a karşı yarış ağı
Snake22,000Sentetik tohumlar + yapıyı koruyan kendine karşı oyun, rollout'luStage 9 prime'a karşı yarış ağı
05
Sonuçlar

Stage 9'a karşı Stage 11

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.

Tam oyun benchmark'ları

Benchmark Karar 1-ply 2-ply 3-ply 1T · Roller 2T · Roller+ 3T · Roller++
S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG
Sınırsız oyun17,5352.592.551.661.680.600.600.570.500.490.530.260.270.410.230.230.34
5 puanlık maç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 Aynı referansa karşı Performance Rating; düşük olan daha iyidir, üçünün en iyisi vurgulanmıştır bu seviyede çalıştırılmadı
Her motor neye karşı puanlanıyor. Her karar tam bir rollout taşır — pozisyondan sonuna kadar oynanan binlerce oyun — ve bir motora yazılan hata, rollout'un en iyi hamlesi ile motorun seçtiği hamle arasındaki farktır. Rollout'un kendisi de bir motor tarafından oynanır ve iki motorun farklı hamleleri tercih ettiği bir kararda bu seçim, rollout'un hangi hamleyi en iyi sayacağını belirleyebilir; bu nedenle söz konusu kararlar, o pozisyon türü için mevcut en güçlü motor tarafından oynanır. Her motorun seçimi, rollout'un değerlendirdiği hamle kümesine zorla dahil edilir; böylece hiçbir motorun yanıtı diğerinden daha kaba değerlendirilmez ve hepsi aynı referansa göre ölçülür.

On klasik backgame

Backgame Karar 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
Birleşik10,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 Aynı referansa karşı Performance Rating; düşük olan daha iyidir, üçünün en iyisi vurgulanmıştır bu seviyede çalıştırılmadı
On benchmark 1-ply'de toplandığında Stage 11 98 ağır hata (0,08 veya daha büyük hatalar) yapar; Stage 9 ise 246 yapar. 3T'de Stage 11 hiç yapmaz.

Hapsetme, masif backgame'ler ve snake

Benchmark Karar 1-ply 2-ply 3-ply 1T · Roller 2T · Roller+ 3T · Roller++
S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG
Hapsetme3,2709.656.829.634.7314.625.092.5411.253.782.297.763.201.307.852.531.056.16
Masif backgame2,1039.785.717.884.335.764.892.564.443.851.913.143.211.392.752.801.092.64
Snake97864.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 Aynı referansa karşı Performance Rating; düşük olan daha iyidir, üçünün en iyisi vurgulanmıştır bu seviyede çalıştırılmadı
Her motor aynı temelde ücretlendirilir. Bir rollout, aday hamlelerden oluşan kısa bir listeyi değerlendirir; bu listenin dışındaki bir seçim yalnızca yaklaşık olarak değerlenebilir ve bu da ona fazla hata yazar — bu yüzden her motorun seçimleri, hangi motor yapmış olursa olsun, özel olarak rollout edildi. On üç benchmark genelinde bu, üç motorun tamamı için yazılan hatanın %1'inden azının yaklaşık değerlenmiş hamlelere dayanmasını sağlar ve yukarıdaki karşılaştırmaların hiçbiri buna bağlı değildir. Tek istisna, XG'nin containment ve snake üzerindeki Roller+ sütunudur; orada değer hâlâ bir miktar yukarı sapmalı bir üst sınırdır.
Yeni ağların kendileri için kurulduğu aileler bunlardır ve fark en çok burada açılır. Containment oyunlarında Stage 11, Stage 9'un PR'ını her seviyede kabaca yarıya indirir (2-ply'de 9.63'e karşı 4.73, 3-ply'de 5.09'a karşı 2.54, 3T'de 2.53'e karşı 1.05) ve ağır hataları her birinde üçte iki veya daha fazla azaltır. Devasa backgame'ler aynı biçimi izler. En büyük tekil kazanım snake'tir — 1-ply'de 64.87'den 21.08'e — ve burada ölçülen her motor için, Sage ve XG dahil, kümedeki en zor aile olmayı sürdürür. Diğerlerinden farklı olarak ply eklemekten pek fayda görmez; onu yalnızca kesilmiş rollout seviyeleri kımıldatır: uzun bir containment'in nasıl sonuçlanacağına bağlı olan tut-ya-da-bırak seçimini çözen şey simülasyondur.

XG'ye karşı Paskogammon

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.

MotorPRPulKüp Saf yarışYarışSaldırı PrimeÇapalama
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-ply2.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-ply2.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-ply4.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 ve üzerindeki her eşleşen seviyede XG'nin önündedir — 3T'de 0.88'e karşı Roller++'ın 1.92'si, 2T'de 1.46'ya karşı 2.44, 1T'de 1.65'e karşı 2.63, 4-ply'de 1.90'a karşı 2.62 ve 3-ply'de 2.28'e karşı 2.97 — ayrıca Stage 9 da kesilmiş seviyelerde XG'nin önündedir. Yalnızca 2-ply'de XG her ikisinin de önüne geçer (4.38). Anchoring burada her motor için en zor oyun planıdır ve farkın en geniş olduğu yerdir: 3T'de Stage 11 için 1.71'e karşı XG'nin 3.39'u.
A
Ek

Bu sonuçları yeniden üretme

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.