Motor Çalışması · Bot Performansı

Open Sage'in eXtreme Gammon ile Kıyaslanması

Backgammon Sage Pro'ya güç veren Open Sage değerlendirme motorunun, eXtreme Gammon'ın bot motoru (XG) ile nicel bir karşılaştırması.

Özet

Open Sage bot motorunu eXtreme Gammon (XG) ile eşleştirilmiş değerlendirme seviyelerinde — doğrudan sinir ağı değerlendirmesi, çok-ply ileri bakış ve kısaltılmış rollout'lar — karşılaştırıyoruz. XG programatik bir arayüz sunmadığından onu Toplu Analiz (Batch Analysis) özelliği üzerinden puanlıyoruz. Birbirini tamamlayan üç yöntem kullanıyoruz. İlki, katmanlı bir referans değerlendirme kümesi kurar — seçimin açık olduğu yerlerde hızlı değerlendirmelere güvenir, yakın kararları tam rollout'a yükseltir — ve her motoru bu referansa göre bir performans derecesi (PR) olarak puanlar; bunu hem 500 sınırsız oyun (17.535 karar) hem de 130 beş puanlık maç (18.292 karar) üzerinde yapar. Sınırsız oyunlar için aynı karşılaştırmanın tamamını bu kez XG'nin kendi kademeli analizini referans alarak yeniden kuruyoruz — tam bir ayna görüntüsü — ve Sage'in kısaltılmış rollout'u, XG'nin kendi sayılarıyla yargılandığında bile önde kalıyor. İkinci yöntem, Sage 3T ile XG Roller++'ın gerçekten farklı düşündüğü sınırsız oyun pozisyonlarını ayırır ve her birini iki motorun da tam rollout'larına göre karara bağlar. Her iki yöntemde de iki motor birbirine yakındır; çoğu kullanıcının güvendiği eşleştirilmiş kısaltılmış rollout seviyelerinde Sage biraz öndedir. Üçüncü yöntem soruyu tersine çevirir: XG'de zaten analiz edilmiş 290 gerçek turnuva maçının her birini Sage'de yeniden analiz ediyor ve iki motorun her oyuncuya verdiği performans derecesini karşılaştırıyoruz — ortalama fark istatistiksel olarak sıfırdan ayırt edilemez çıkıyor.

01
Giriş

Neden XG ile ölçüyoruz?

eXtreme Gammon (XG), bilgisayarla tavla analizinde standart bir referanstır ve değerlendirme motoru mevcut en güçlü motorlardan biri olarak kabul edilir. Ciddiye alınmak isteyen her yeni motorun basit bir soruyu yanıtlaması gerekir: XG ile karşılaştırıldığında nerede duruyor? Bu çalışma, Backgammon Sage Pro'nun arkasındaki sinir ağı motoru Open Sage için bu soruyu nicel olarak yanıtlamayı amaçlıyor.

Amacımız, Open Sage'in değerlendirmelerini XG'ninkilerle benzer çaba seviyelerinde karşılaştırmaktı. En doğal deney — iki motoru binlerce oyunda karşı karşıya getirip sonucu saymak — pratik değil: XG masaüstü uygulaması programatik bir arayüz sunmuyor, bu yüzden pozisyonları ve hamleleri iki motor arasında taşımak elle, tıklaya tıklaya yürütülen bir süreç. İki güçlü motor arasındaki küçük farkları ayırt edecek büyüklükte bir örnekleme ulaşmak çok uzun sürerdi.

Bunun yerine, yüzlerce kayda geçirilmiş oyunu tek bir gözetimsiz geçişte puanlayabilen XG'nin Toplu Analiz (Batch Analysis) özelliğini kullanıyoruz. Open Sage çok sayıda oyunda iki tarafı da oynuyor; her oyun XG'nin içe aktarabildiği standart bir metin biçiminde dışa aktarılıyor; XG hepsini analiz ediyor; biz de kararlarını geri ayrıştırıyoruz. Bu ortak temelin üzerine, Bölüm 3 ve Bölüm 4'te anlatılan iki ayrı yöntem uyguluyoruz. Üçüncü bir çalışma (Bölüm 5) simülasyonları tamamen bir kenara bırakıp XG'de analiz edilmiş gerçek turnuva maçlarından yola çıkıyor.

02
Arka Plan

Değerlendirme seviyeleri

Her iki motor da bir pozisyonu, doğruluktan hız adına ödün vererek çeşitli derinliklerde değerlendirebilir. Sonuçları okumak için bu seviyeleri anlamak şarttır, çünkü karşılaştırma her zaman iki motorun eşleştirilmiş seviyeleri arasında yapılır.

Doğrudan değerlendirme (1-ply). Sinir ağının bir pozisyon için ürettiği ham çıktı; ileri bakış yok. En hızlı ayar budur ve daha derin her seviye bunun üzerine kurulur. (1-ply'ın ham ağ değerlendirmesini ifade ettiği XG geleneğini izliyoruz.)

Çok-ply ileri bakış (2-, 3-, 4-ply). Motor birkaç tur ilerisine bakar; rakibin yanıtlarını hesaba katar, her adımda olası zar atışları üzerinden ortalama alır ve her varyantın sonunda ham bir ağ değerlendirmesi yapar. Her ek ply daha doğru ve belirgin biçimde daha maliyetlidir.

Kısaltılmış rollout'lar (1T, 2T, 3T). Motor sabit bir derinliğe kadar aramak yerine çok sayıda kısa simüle oyun oynar, bunları birkaç tur sonra keser ve ortaya çıkan pozisyonu çok-ply ileri bakışla değerlendirir. Varyans azaltma, örneklenen zarlardaki şansın büyük kısmını dengeler. Bunlar XG'nin “Roller” ayarlarıdır; sabit derinlikli aramadan daha güçlüdür ve tam rollout'tan çok daha ucuz kalır.

Tam rollout. Çok sayıda simüle oyunun sonuna kadar oynanması. Yeterli hacimde ve varyans azaltmayla çalıştırıldığında tam rollout, bir tavla motorunun üretebileceği gerçeğe en yakın şeydir; bu çalışma boyunca referans ölçüt olarak onu kullanıyoruz.

Eşleştirilmiş seviyeler: Sage ve XG

Tür Sage XG karşılığı Ne yapar
Doğrudan 1-ply 1-ply (ham değerlendirme) Pozisyonun tek bir sinir ağı değerlendirmesi — ileri bakış yok.
Çok-ply 2P · 3P · 4P 2-ply · 3-ply · 4-ply Rakibin yanıtlarını birkaç tur derinliğinde arar, zarlar üzerinden ortalama alır.
Kısaltılmış rollout 1T · 2T · 3T Roller · Roller+ · Roller++ Çok sayıda kısa simüle oyun; 5–7 tur sonra kesilip çok-ply ile değerlendirilir, varyans azaltma uygulanır. 3T/Roller++ 3-ply kararlar kullanır; 2T/Roller+ 2-ply; 1T/Roller 1-ply.
Tam rollout Rollout Rollout Sonuna kadar oynanan simüle oyunlar — bu çalışmadaki referans “gerçek”.
Performans Derecesi (PR). Çalışma boyunca bir motorun doğruluğu PR olarak özetlenir — rollout ile oluşturulmuş referansa göre ölçülen, karar başına ortalama equity hatasının 500 ile çarpımı. 0 PR gerçekle tam uyum demektir; düşük olan daha iyidir.
03
Birinci Yöntem

Rollout PR

İlk yöntem, her motoru “gerçek” en iyi oyununu olabildiğince doğru biçimde belirlediğimiz sabit bir karar kümesine göre puanlar. XG'yi bir dizi başka botla karşılaştıran, iyi bilinen 2012 XG çalışmasında kullanılan yaklaşımın aynısını izler.

Sage 3P'nin kendi kendine oynadığı 500 sınırsız oyun simüle ederek başladık. 3P gibi orta-güçlü bir seviye her oyun planında — yarış, saldırı, blok, çıpa — gerçekçi bir pozisyon dağılımı üretir; test etmek istediğimiz çeşitlilik tam da budur. Ardından tüm çalışmayı, tahtadaki skorun her kararın değerini değiştirdiği 130 beş puanlık maç için ikinci kez yürüttük; her iki kümenin sonuçları aşağıdadır.

Referansın oluşturulması

Her karar için gerçek en iyi oyunu tam rollout ile belirlemek çok pahalı olurdu — ve gereksiz, çünkü kararların çoğu yakın değildir. Bu yüzden referansı, rollout çabasını yalnızca seçimin gerçekten şüpheli olduğu yerlere harcayarak kademeli üç geçişte kuruyoruz. Aynı reçete iki veri kümesine de uygulanır; her geçiş güvenle çözebildiği kararları karara bağlar, kalanını bir sonrakine devreder:

1. Geçiş · Sage 3P

Seçim açıkken 3-ply'a güven

Her karar 3-ply'da değerlendirilir. En iyi hamlenin bir sonrakini 0,05 equity'den fazla geçtiği yerlerde 3P kararı gerçek kabul edilir ve karar kapanır.

0.05
karar için equity farkı
Daha yakın kararlar (0,05 içinde) 2. Geçiş'e devredilir
2. Geçiş · Sage 3T

Yakın kararları kısaltılmış rollout ile yeniden kontrol et

Kalan kararlar 3T'de yeniden değerlendirilir. Farkın artık 0,02 equity'den geniş olduğu yerlerde 3T kararı gerçek kabul edilir.

0.02
karar için equity farkı
Hâlâ 0,02 içinde kalanlar 3. Geçiş'e devredilir
3. Geçiş · Tam rollout

En zor kararlar için rollout yap

Hâlâ 0,02 içinde kalan her şey tam bir Sage rollout'uyla karara bağlanır: hem pul oyunu hem küp aksiyonları için 3P kararlar; equity üzerindeki %95 güven aralığı 0,005'in altına düşene — ya da 20.736 yol (16 × 1.296) tavanına ulaşılana — kadar 1.296'lık yol partileri hâlinde çalıştırılır. En yavaş geri oyun pozisyonları tek tek bir saatten çok daha uzun sürdü.

0.005
hedef %95 aralık

Sonuç, her kararın tam olarak zorluğunun gerektirdiği derinlikte çözüldüğü katmanlı bir referanstır. Aynı üç geçişli reçeteyi iki veri kümesi üzerinde de yürüttük — 500 sınırsız oyun ve 130 beş puanlık maç — ve ortaya çıkan kademe bileşimleri aşağıda her kümenin sonuçlarının yanında gösteriliyor.

Bir motorun puanlanması

Elde katmanlı bir güvenilir değerlendirme kümesi olunca herhangi bir motoru puanlamak basittir: her kıyaslama kararını motora sunar, seçtiği hamlenin ya da küp aksiyonunun gerçeğe göre equity hatasını kaydeder ve ortalama hata × 500 değerini PR olarak raporlarız. Aynı toplam, pul oyunu ve küp PR'larına, ayrıca oyun planına göre ayrıştırılır.

XG'yi puanlamak, girişte anlatılan ek adımı gerektirdi. XG'nin API'si olmadığından, Toplu Analizini 500 sınırsız oyun ve 130 maç transkripti üzerinde özel bir seviyeyle — 3-ply kararlar, anlaşmazlık olan her yerde test edilen seviyeye yükseltme — çalıştırdık ve XG'nin her pozisyon için tercih ettiği kararı, ürettiği .xg dosyalarından ayrıştırıp aynı referans equity'lere göre puanladık.

Sınırsız oyunlar — referans bileşimi

500 sınırsız oyun boyunca üç geçiş 16.889 pozisyonu (17.535 karar) şöyle çözdü:

3P'de çözüldü  7.652 3T'de çözüldü  3.260 Rollout yapıldı  5.977 Sınırsız oyunlar  16.889 pozisyon · 17.535 karar

Sınırsız oyunlar — karşı karşıya

Beş eşleştirilmiş seviye, bu 17.535 karar üzerinden puanlandı. Düşük PR daha iyidir; her çiftte daha güçlü motor vurgulanmıştır.

Sage 3T
Kısaltılmış rollout · 3-ply kararlar · 7 turda kesme
0.21
vs
0.32
XG Roller++
Kısaltılmış rollout · 3-ply kararlar · 7 turda kesme
Sage 3T 0,11 PR önde
Sage 2T
Kısaltılmış rollout · 2-ply kararlar
0.26
vs
0.41
XG Roller+
Kısaltılmış rollout · 2-ply kararlar
Sage 2T 0,15 PR önde
Sage 1T
Kısaltılmış rollout · 1-ply kararlar · 5 turda kesme · 72 yol
0.50
vs
0.53
XG Roller
Kısaltılmış rollout · 1-ply kararlar · 5 turda kesme · 42 yol
Sage 1T 0,03 PR önde
Sage 4P
4-ply ileri bakış araması
0.41
vs
0.46
XG 4-ply
4-ply ileri bakış araması
Sage 4P 0,05 PR önde
Sage 3P
3-ply ileri bakış araması
0.58
vs
0.57
XG 3-ply
3-ply ileri bakış araması
Fiilen berabere — XG 3-ply 0,01 PR önde

Sınırsız oyunlar — tam döküm

Test edilen her motor ve seviye için PR; karar türüne ve oyun planına göre ayrıştırılmış. Düşük olan daha iyidir.

Motor PR Pul Küp Saf yarış Yarış Saldırı Blok Çıpa
Sage 3T 0.210.180.360.020.240.170.310.28
XG Roller++ 0.320.310.380.040.400.240.410.44
Sage 2T 0.260.230.440.020.320.210.390.30
XG Roller+ 0.410.410.390.050.590.310.470.54
Sage 1T 0.500.520.400.040.570.430.590.73
XG Roller 0.530.540.480.050.630.440.710.66
Sage 4P 0.410.390.500.070.510.370.450.53
XG 4-ply 0.460.450.520.060.580.400.570.58
Sage 3P 0.580.580.570.140.720.520.630.74
XG 3-ply 0.570.570.580.050.710.480.730.71
Sage 2P 1.641.392.880.401.771.831.861.71
Sage 1P 2.592.483.200.782.602.793.102.89
Open Sage eXtreme Gammon Sage 2P ve 1P'nin bu çalışmada XG karşılığı yoktur; referans için gösterilmiştir.
Sage'in değerlendirmeleri, XG'nin 0,01 PR ile kıl payı öne geçtiği 3-ply dışında her eşleştirilmiş seviyede XG'nin eşdeğer değerlendirmesinden daha güçlüdür — bu fark gürültünün tam içindedir. İki motor birbirine çok yakındır ve çoğu kullanıcının güvendiği kısaltılmış rollout seviyelerinde Sage tutarlı bir üstünlük korur.

Sınırsız oyunlar — XG'nin kendi referansına göre puanlama

Yukarıdaki her sayı motorları Sage'in kademeli referansına göre notlar. Akla gelen ilk itiraz ev sahibi avantajıdır — Sage kendi rollout'larına göre ölçülüyor. Bu yüzden tam ayna görüntüsünü kurduk: aynı 500 oyun ve aynı kararlar, ama her kademede gerçek olarak XG'nin kendi analizi. 3P kademesindeki kararları XG 3-ply, 3T kademesindekileri XG Roller++, rollout yapılan kararları ise XG'nin kendi tam rollout'u karara bağlar — Sage referansının kademe kademe XG karşılığı. Ardından her motor buna göre yeniden puanlanır.

Motor PR Pul Küp Saf yarış Yarış Saldırı Blok Çıpa
Sage 3T 0.260.250.330.020.370.200.300.36
XG Roller++ 0.330.350.230.040.500.200.390.47
Sage 2T 0.310.300.350.020.410.270.360.37
XG Roller+ 0.380.400.230.040.580.260.390.54
Sage 1T 0.460.480.370.030.580.400.500.64
XG Roller 0.470.490.350.120.610.350.540.62
Sage 4P 0.370.360.420.060.530.340.400.39
XG 4-ply 0.450.460.400.130.600.360.480.59
Sage 3P 0.490.480.520.080.660.460.540.55
XG 3-ply 0.470.490.400.120.630.370.540.61
Sage 2P 1.351.142.400.311.501.481.521.41
Sage 1P 2.242.142.760.742.212.442.692.39
Open Sage eXtreme Gammon Referans: XG 3-ply (3P kademesi) · XG Roller++ (3T kademesi) · XG tam rollout (rollout kademesi).
Hüküm, gerçeğin değiştirilmesine dayanıyor. XG'nin kendi analizine göre ölçüldüğünde Sage, kısaltılmış rollout seviyelerinde — 3T 0,26'ya karşı Roller++ 0,33 ve 2T 0,31'e karşı Roller+ 0,38 — ve 4-ply'da hâlâ daha yakın motordur. Aslında en temiz test 4-ply'dır: iki motorun referansının da üzerine kurulmadığı tek seviye odur, yani hiçbir satır kendisine göre puanlanmaz ve Sage 0,37'ye karşı 0,45 ile öndedir. Başka yerlerde karşılaştırma Sage'i değil XG'yi kayırır — XG Roller++ 3T kademesinin, XG 3-ply de 3P kademesinin referansının ta kendisidir; o satırlar gerçeği tanımladıkları yerde doğal olarak sıfıra yakın puan alır. Sage'in üstünlüğü burada olsa olsa olduğundan az gösterilmiştir. XG'nin kendi referansının XG'yi kayırdığı tek sütun küptür.
İki referans, tek sonuç. Hangi motorun analizi gerçek kabul edilirse edilsin Sage 3T, XG Roller++'ın önünde yer alıyor — Sage referansına göre 0,21'e karşı 0,32, XG'ninkine göre 0,26'ya karşı 0,33 — ve kısaltılmış rollout seviyeleri üstünlüğünü koruyor. İlk tabloya dair tek gerçek şüphe — ölçütün Sage'in kendi rollout'ları olması — bu ayna görüntüsünün ortadan kaldırdığı şeyin ta kendisi.

Maç oyunu — referans bileşimi

Maç kümesi aynı üç geçişi tek bir eklemeyle yürütür: her oyuncunun kala skoru ve Crawford bayrağı her değerlendirmeye işlenir, böylece gerçek, doğru skora göre maç equity'si (MWC) uzayında hesaplanır. 130 beş puanlık maç boyunca geçişler 17.892 pozisyonu (18.292 karar) şöyle çözdü:

3P'de çözüldü  7.522 3T'de çözüldü  3.460 Rollout yapıldı  6.910 Maç oyunu  17.892 pozisyon · 18.292 karar

Maç oyunu — karşı karşıya

Beş eşleştirilmiş seviye, bu 18.292 karar üzerinden puanlandı. Düşük PR daha iyidir; her çiftte daha güçlü motor vurgulanmıştır.

Sage 3T
Kısaltılmış rollout · 3-ply kararlar · 7 turda kesme
0.19
vs
0.35
XG Roller++
Kısaltılmış rollout · 3-ply kararlar · 7 turda kesme
Sage 3T 0,16 PR önde
Sage 2T
Kısaltılmış rollout · 2-ply kararlar
0.26
vs
0.44
XG Roller+
Kısaltılmış rollout · 2-ply kararlar
Sage 2T 0,18 PR önde
Sage 1T
Kısaltılmış rollout · 1-ply kararlar · 5 turda kesme · 72 yol
0.49
vs
0.51
XG Roller
Kısaltılmış rollout · 1-ply kararlar · 5 turda kesme · 42 yol
Sage 1T 0,02 PR önde
Sage 4P
4-ply ileri bakış araması
0.42
vs
0.46
XG 4-ply
4-ply ileri bakış araması
Sage 4P 0,04 PR önde
Sage 3P
3-ply ileri bakış araması
0.57
vs
0.54
XG 3-ply
3-ply ileri bakış araması
Fiilen berabere — XG 3-ply 0,03 PR önde

Maç oyunu — tam döküm

5 puanlık maç kümesinde test edilen her motor ve seviye için PR; karar türüne ve oyun planına göre ayrıştırılmış. Düşük olan daha iyidir.

Motor PR Pul Küp Saf yarış Yarış Saldırı Blok Çıpa
Sage 3T 0.190.160.400.010.170.180.250.26
XG Roller++ 0.350.350.410.080.440.320.330.45
Sage 2T 0.260.240.440.020.360.180.340.33
XG Roller+ 0.440.440.410.090.550.440.400.52
Sage 1T 0.490.490.520.050.570.440.570.63
XG Roller 0.510.510.540.090.640.500.510.62
Sage 4P 0.420.420.480.050.520.380.450.55
XG 4-ply 0.460.450.560.090.600.440.420.56
Sage 3P 0.570.560.670.050.740.560.580.68
XG 3-ply 0.540.530.610.090.690.530.520.65
Sage 2P 1.301.261.600.391.591.231.501.41
Sage 1P 2.302.292.310.692.482.432.472.56
Open Sage eXtreme Gammon Sage 2P ve 1P'nin bu çalışmada XG karşılığı yoktur; referans için gösterilmiştir.
Maç sonuçları sınırsız oyun çalışmasını yankılıyor: Sage, XG'nin 0,03 PR ile kıl payı öne geçtiği 3-ply dışında her eşleştirilmiş seviyede XG'nin eşdeğer değerlendirmesinden daha güçlü — bu da gürültünün tam içinde. Sage'in en belirgin üstünlüğü yine çoğu kullanıcının güvendiği kısaltılmış rollout seviyelerinde (3T ve 2T).
04
İkinci Yöntem

Tartışmalı pozisyonlar

Rollout PR yöntemi iki motoru ortak bir referansa göre puanlar. Daha keskin, daha doğrudan soru şu: gerçekçi oyunda iki motor en iyi hamle konusunda nerede gerçekten ayrışıyor — ve ayrıştıklarında hangisi haklı?

Bunu Birinci Yöntem'deki en zor sınırsız oyun kararları üzerinde yanıtlıyoruz — rollout yapılan pozisyonlar; bunların her biri artık hem tam bir Sage rollout'u hem de tam bir XG rollout'u taşıyor. Aralarında Sage 3T ile XG Roller++'ın farklı seçim yaptığı her kararı bulup her rollout'un hangi seçimi tercih ettiğini soruyoruz. İki rollout'a birden sahip olmak işin özü: her anlaşmazlık Sage'in rollout'una ve XG'nin kendi rollout'una göre yargılanır, böylece yanıt hiçbir zaman tek bir motorun gerçeğine güvenmeye dayanmaz.

  • Rollout yapılmış sınırsız oyun kıyaslama kümesinden başlayın — her biri tam bir Sage rollout'uyla karara bağlanmış en zor kararlar.
  • Aynı pozisyonların kendi tam rollout'unu XG'ye yaptırın (Toplu Rollout özelliğiyle) — bağımsız ikinci bir referans.
  • Sage 3T ile XG Roller++'ın ayrıştığı kararları tutun ve her motorun seçimini her rollout'un en iyi hamlesine ya da küp aksiyonuna göre puanlayın.
  • Ortak küme üzerinden raporlayın — iki motorun seçiminin de iki rollout tarafından da değerlendirildiği anlaşmazlıklar — böylece iki karşılaştırma birebir aynı pozisyonları kapsar.

Sonuçlar

Rollout yapılan sınırsız oyun pozisyonlarında — çalışmanın en zor kararları — iki motor 1.488 pul oyununda ve 69 küp kararında ayrışıyor. Her panel, her motorun rollout'un en iyi kararıyla ne sıklıkla örtüştüğünü gösteriyor — sırasıyla XG'nin kendi rollout'una ve Sage'in rollout'una göre puanlanmış.

Pul oyunu

Sage 3T ile XG Roller++'ın farklı hamle seçtiği yerler
5,687
rollout yapılan pul kararı
1,488
anlaşmazlık
1,357
puanlanan (ortak küme)
En iyi hamleyle örtüşme — XG'nin kendi rollout'una göre
Ort. equity hatası — Sage 3T 0,0027 · XG Roller++ 0,0048  (PR 1,34 vs 2,39)
En iyi hamleyle örtüşme — Sage'in rollout'una göre
Ort. equity hatası — Sage 3T 0,0019 · XG Roller++ 0,0059  (PR 0,97 vs 2,95)
Sage 3T XG Roller++ Hiçbiri

Küp kararları

Sage 3T ile XG Roller++'ın farklı küp aksiyonu seçtiği yerler
282
rollout yapılan küp kararı
69
anlaşmazlık
En iyi aksiyonla örtüşme — XG'nin kendi rollout'una göre
Ort. equity hatası — Sage 3T 0,0079 · XG Roller++ 0,0086  (PR 3,96 vs 4,30)
En iyi aksiyonla örtüşme — Sage'in rollout'una göre
Ort. equity hatası — Sage 3T 0,0041 · XG Roller++ 0,0118  (PR 2,06 vs 5,88)
Sage 3T XG Roller++
Toplamda yalnızca 69 küp anlaşmazlığı var — küçük bir örneklem; bu paneli kesin değil, yol gösterici olarak okuyun.
Pul oyununda — anlaşmazlıkların büyük çoğunluğu — Sage 3T, XG'ninki dahil her iki rollout'a da daha yakın motor: rollout'un en iyi hamlesini daha sık buldu (XG'nin rollout'una göre %44,4 ile %39,3, Sage'inkine göre %56,2 ile %27,7) ve ortalama hatanın kabaca yarısını taşıdı. Küp anlaşmazlıkları çok daha seyrek ve dengeye daha yakın — Sage 3T, Sage'in rollout'una açıkça daha yakın; XG'nin kendi rollout'una karşı da biraz daha yakın.
İki rollout neden önemli. Tek referanslı bir sonuç her zaman “kimin gerçeği?” sorusunu davet eder. Burada iki rollout bağımsız motorlardan geliyor ve pul anlaşmazlıklarında aynı yönü gösteriyorlar — Sage 3T, XG'nin kendi rollout'una bile daha yakın. İki rollout da kusursuz bir referans değil, ama uyuşmaları tek bir referansın tek başına gösteremeyeceği şeyin ta kendisi.
05
Üçüncü Yöntem

Gerçek maçlarda uyum

İlk iki yöntem hangi motorun daha güçlü olduğunu sorar. Kendi oyununu incelemek için motor kullanan herkes için üçüncü bir soru da bir o kadar önemlidir: gerçek bir maçı XG'de analiz edip performans derecenizi not ettikten sonra aynı maçı Sage'de analiz ederseniz — iki derece birbirine ne kadar yakın çıkar? XG'de belirli bir PR'ın ne anlama geldiğine dair yıllarca sezgi geliştirmiş bir oyuncu, Sage'den de esasen aynı sayıyı almalıdır.

Bunu doğrudan sınamak için XG'de zaten analiz edilmiş geniş bir gerçek turnuva maçı koleksiyonu aldık, her birini Sage'de sıfırdan yeniden analiz ettik ve iki motorun her oyuncuya verdiği performans derecesini karşılaştırdık.

Maçlar

Maç dosyaları 2026'daki üç turnuvadan geliyor; hepsi 7 puanlık maçlar ve Máté Fehér tarafından cömertçe sağlandı — rekabetçi bir oyuncunun kendi oyunlarını inceleyeceği gibi, eXtreme Gammon'da zaten analiz edilmiş hâlde.

UBC Texas 2026
100
maç analiz edildi
UBC İstanbul 2026
146
maç analiz edildi
UBC Japonya 2026
44
maç analiz edildi

Toplamda 290 maç ve 580 bireysel oyuncu derecesi. Bir maç daha bozuk transkripsiyon nedeniyle dışarıda bırakıldı.

Eşleştirilmiş değerlendirme ayarları

Her maç Sage'de 3-ply temel seviyede yeniden analiz edildi; oyuncunun gerçek hamlesinin 3-ply en iyisinden ayrıştığı kararlara ise uzman 3T geçişi — 360 yollu bir kısaltılmış rollout — uygulandı. Bu, güçlü bir XG analizini (açık kararlar için temel bir ply, yakın olanlar için kısaltılmış rollout'a yükseltme) eşleştirilmiş güçte yansıtır: Sage 3P ≈ XG 3-ply ve Sage 3T ≈ XG Roller++ (bkz. Bölüm 2). Ardından her motor kendi değerlendirmelerinden oyuncu başına bir PR hesaplar — kullanıcının her uygulamada gördüğü sayı.

Sonuçlar

580 oyuncu derecesinin tamamı bir araya getirildiğinde iki motor neredeyse birebir uyuşuyor. Ortalama fark istatistiksel olarak sıfırdan ayırt edilemez ve bu farkın yayılımı, PR'ın kendi yayılımının yanında küçük kalıyor.

+0.002
Ortalama fark (PR)
İstatistiksel olarak sıfırdan ayırt edilemez — %95 güven aralığı ±0,03, p = 0,90.
0.37
Farkın std. sapması
PR'ın kendi 2,08'lik yayılımının yanında küçük — tek bir derecedeki uyuşmazlık, PR'ın ne kadar değiştiğine kıyasla önemsiz.
0.98
Derece korelasyonu (r)
Sage ve XG aynı oyuncuları neredeyse birebir aynı derecelendiriyor.
Oyuncu başına performans derecesi XG Sage FarkSage − XG
Ortalama 4.36 4.36 +0.002
Standart sapma 2.08 2.10 0.37
%95 aralık 1.52 – 9.36 1.44 – 9.67 −0.76 – +0.74
Pratikte, bir maçı Sage'de analiz eden oyuncu — vakaların büyük çoğunluğunda — XG'nin vereceğiyle esasen aynı performans derecesini görecektir. Bir maçın ne kadar iyi oynandığının ölçüsü olarak iki motor birbirinin yerine geçebilir.
06
Sonuç

İki güçlü motor, birbirine çok yakın

İki güç çalışması boyunca Open Sage 3T ile XG Roller++ kabaca denk — mevcut en güçlü tavla değerlendirmelerinden ikisi ve birbirine yakın. Hem sınırsız oyun hem 5 puanlık maçlar için yürütülen Rollout PR çalışması, iki motorun gürültü sınırları içinde kaldığı 3-ply dışında her eşleştirilmiş seviyede Sage'i daha güçlü buluyor; sınırsız oyunlarda bu sonuç, referans XG'nin kendi kademeli analizine çevrildiğinde bile ayakta kalıyor. İki motorun en güçlü değerlendirme seviyesinde (Sage 3T ve XG Roller++) ayrıştığı pozisyonlara bakıp bunları iki motorun da rollout'larına göre puanlayan tartışmalı pozisyon çalışması ise pul anlaşmazlıklarında her iki rollout'a karşı da Sage 3T'yi daha yakın motor buluyor; küp anlaşmazlıkları ise hüküm vermek için fazla seyrek ve fazla bölünmüş.

Öyleyse Sage 3T'nin XG Roller++'tan biraz daha güçlü olduğuna dair bir miktar kanıt var. En doğal itiraz — üstünlüğün, Sage'i kendi rollout'larına göre notlamanın bir yapaylığı olduğu — sınayabildiğimiz yerde yanıtlanıyor: XG'nin kendi referansına göre puanlandığında Sage'in kısaltılmış seviyeleri önde kalıyor. Yine de farklar küçük ve dürüst özet şu: iki motor çok benzer, çok yüksek bir seviyede oynuyor — ki ulaşmayı hedeflediğimiz çıta tam olarak buydu.

Üçüncü çalışma ise bir Sage kullanıcısının gerçekten karşılaştığı soruyu yanıtlıyor: XG'nin zaten derecelendirdiği 290 gerçek turnuva maçında Sage esasen aynı performans derecesini üretiyor — bir oyuncunun Sage ve XG dereceleri arasındaki ortalama fark istatistiksel olarak sıfırdan ayırt edilemez ve bu farkın yayılımı PR'ın kendi yayılımının yanında küçük. İster rollout ile oluşturulmuş bir gerçeğe karşı güç, ister gerçek bir oyunun nasıl oynandığı konusunda basit bir uyum sınansın, Open Sage ile XG aynı yere varıyor.

Backgammon Sage Pro'yu Deneyin Ana sayfaya dön
A
Ek

Bu sonuçları yeniden üretme

Open Sage açık kaynak olarak yayımlanır ve iki yöntemin arkasındaki eksiksiz işlem hattı motorun deposuyla birlikte gelir. Aşağıdaki her şey yalnızca bgsage paketine ve motorunun yerel bir derlemesine dayanır — harici hizmet, veri kümesi ya da altyapı gerekmez. Elle yürütülen tek bağımlılık, XG sütunlarını yeniden üretmek için kullanılan eXtreme Gammon'ın kendisidir, çünkü XG'nin programatik arayüzü yoktur.

github.com/markbgsage/bgsage Open Sage motoru · MPL-2.0 · tüm betikleri depo kökünden çalıştırın
Ön koşullar. bgsage motorunu (yani bgbot_cpp uzantısını) platformunuza uygun depo yönergelerini izleyerek derleyin. Herhangi bir XG sütununu yeniden üretmek, Toplu Analiz adımı için ayrıca eXtreme Gammon (Windows) gerektirir. Her betik yollarını deponun içinde çözer; bu yüzden betikleri bgsage/ kökünden çalıştırın.

Claude Code ile yeniden üretme

İşlem hattını elle sürmek zorunda değilsiniz. Anthropic'in komut satırında çalışan ajan tabanlı kodlama aracı Claude Code, motoru derleyip kıyaslamaları sizin için çalıştırabilir. Onu deponun bir kopyasına yöneltin ve ne istediğinizi anlatın; aşağıda ayrıntıları verilen adımların aynısını yürütür:

“Bu motoru derle, sonra Sage 3T ve Sage 3P'yi birlikte gelen kıyaslama kümesine göre puanla ve her biri için PR, pul PR'ı ve küp PR'ını göster.”
“Rollout PR tablosunu yeniden üret: her Sage seviyesini — 1-ply'dan 4-ply'a, artı 1T, 2T ve 3T — data/money_benchmark/benchmark.json.gz dosyasına göre puanla ve çalışmayla karşılaştırabileceğim bir tablo olarak yazdır.”
“Referans kıyaslama kümesini üç oluşturma geçişiyle sıfırdan yeniden kur, sonra Sage 3T'yi ona göre puanla.”
“Kendi botum ./mybot dizininde — birlikte gelen kıyaslama kümesindeki her kararı botumla değerlendir ve referans equity'lere göre PR'ını hesapla.”

Birinci Yöntem — Rollout PR

Kıyaslama kümesi — katmanlı güvenilir değerlendirme kümesi — tek bir betik tarafından kurulur ve puanlanır: scripts/benchmark_money.py. İki giriş yolu vardır.

A

Birlikte gelen veri kümesine göre puanlayın

Yeniden kurmadan · tabloyu doğrulayın ya da yeni bir motoru puanlayın

Depo, derlenmiş kıyaslama kümesini data/money_benchmark/benchmark.json.gz olarak sunar (sıkıştırılmamış JSON GitHub'ın dosya boyutu sınırını aşar; betikler gzip'i şeffaf biçimde okur). Herhangi bir Sage seviyesini puanlamak, Bölüm 3 tablosundaki satırını yeniden üretir:

# lower PR is better
python scripts/benchmark_money.py score --level 3ply        # Sage 3P
python scripts/benchmark_money.py score --level truncated3  # Sage 3T
# --level: 1ply 2ply 3ply 4ply | truncated1/2/3 | rollout

Tamamen farklı bir motoru puanlamak için betiğin içeride kullandığı kuralın aynısını uygulayın: veri kümesindeki her karar için motorunuzun seçimini alın ve equity'sini kayıtlı referans (“rollout”) equity'siyle karşılaştırın — ortalama hata × 500 o motorun PR'ıdır.

B

Referansı sıfırdan yeniden kurun

Her kararı yeniden türetin · tohumlanmış, dolayısıyla yeniden üretilebilir

Üç uyarlamalı geçiş veri kümesini yeniden oluşturur. Oyunlar tohumlanmıştır (tohum 1'den 500 oyun), dolayısıyla kararlar ve referans equity'ler aynı çıkar:

# 1. simulate 500 Sage-3P self-play games (+ XG transcripts)
python scripts/benchmark_money.py build --stages pass1 --n-games 500 --workers 6
# 2. re-evaluate every decision within 0.05 at 3T
python scripts/benchmark_money.py build --stages pass2 --n-threads 16
# 3. roll out every decision still within 0.02
python scripts/benchmark_money.py build --stages pass3 --n-threads 16

3. Geçiş şunu yazar: data/money_benchmark/benchmark.json (ve onun .gzdosyasını); tam olarak A Seçeneği'ndeki gibi puanlayın. --stages verilmezse üç geçişin tümü sırayla çalışır.

XG sütunlarını yeniden üretme

XG'nin API'si yoktur, dolayısıyla sonuçları XG'nin Toplu Analizinden gelir. 1. Geçiş, XG'ye aktarılacak transkriptleri şuraya yazar: data/money_benchmark/xg/ — bunlar depoyla birlikte gelmez, bu yüzden yalnızca veri kümesinden başladıysanız 1. geçişle yeniden üretin.

  1. XG'de, xg/ klasörünü özel bir seviyeyle — 3-ply kararlar, anlaşmazlıklarda test edilen seviyeye yükseltme — ve Save Games after analyze işaretli olarak Toplu Analiz edin. XG oyun başına bir .xg yazar.
  2. Çalıştırın: python scripts/benchmark_pr_xg.py; bu betik XG'nin pozisyon başına en üst kararını .xg dosyalarından okur, aynı referans equity'lere göre puanlar ve aynı PR dökümünü yazdırır.

Bölüm 3'teki XG referanslı sınırsız oyun tablosu — ve tartışmalı pozisyon çalışması — bunun yerine XG'nin en zor pozisyonlar için yaptığı rollout'lara ihtiyaç duyar. O pozisyonlarda XG'nin Toplu Rollout'unu çalıştırın (Save Games işaretli), ardından python scripts/xg_benchmark_report.py bunları ayrıştırır ve hem XG referanslı seviye tablosunu hem de tartışmalı pozisyon raporunu yazdırır. Aşağıda İkinci Yöntem'e bakın.

Maç oyunu

5 puanlık maç çalışması aynı şekilde scripts/benchmark_match.pyile yeniden üretilir — benchmark_money.py betiğinin maç oyunu ikizi; maç uzunluğu ve maç sayısı argüman olarak verilir ve maç skoru her değerlendirmeye işlenir. Referansı şu dosyayla birlikte gelir: data/match_benchmark/5pt/benchmark.json.gz.

# score against the shipped match dataset (no rebuild)
python scripts/benchmark_match.py score --match-length 5 --level truncated3
# or rebuild: 130 seeded 5-pt matches, three adaptive passes
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass1 --workers 6
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass2 --n-threads 16
python scripts/benchmark_match.py build --match-length 5 --n-matches 130 --stages pass3 --n-threads 16
# XG columns: batch-analyze data/match_benchmark/5pt/xg/, then
python scripts/benchmark_pr_xg_match.py --match-length 5

İkinci Yöntem — Tartışmalı Pozisyonlar

Anlaşmazlık çalışması, Birinci Yöntem için kurulan aynı sınırsız oyun kıyaslama kümesinden beslenir; en zor pozisyonlar XG'nin kendi tam rollout'uyla çapraz referanslanır. Elle yürütülen tek bağımlılık XG'nin Toplu Rollout'udur; gerisini tek bir betik yapar.

Sınırsız oyunlar

  1. Sınırsız oyun kıyaslama kümesini kurun (Birinci Yöntem, B Seçeneği). 1. Geçiş, XG'ye aktarılacak transkriptleri de şuraya yazar: data/money_benchmark/xg/.
  2. XG'de o pozisyonlara Save Games after analyze işaretli olarak Toplu Rollout uygulayın; böylece rollout yapılan her karar için XG'nin kendi rollout equity'lerini taşıyan bir çıktı oluşur: ortaya çıkan .xg dosyaları.
  3. Toplayın ve raporlayın:
python scripts/xg_benchmark_report.py

XG'nin rollout'larını data/money_benchmark/xg_results/rollout.jsonldosyasına ayrıştırır, ardından hem XG rollout'una göre değerlendirme seviyesi PR'ını (Bölüm 3'ün ikinci referansı) hem de tartışmalı pozisyon raporunu — her anlaşmazlık sırasıyla Sage ve XG rollout'larına göre puanlanmış — yazdırır.

Maç oyunu henüz bu yöntemle kapsanmıyor: maç pozisyonlarının XG tam rollout'u gerekiyor ve bunu çalıştırmadık. Maç gücü bunun yerine Rollout PR çalışması (Bölüm 3) ve gerçek maç uyum çalışması (Bölüm 5) ile kapsanıyor.

Open Sage MPL-2.0 lisansıyla sunulur. Birlikte gelen kıyaslama kümesi, Bölüm 3 tablolarının arkasındaki referansın ta kendisidir; hem XG referanslı karşılaştırma hem de tartışmalı pozisyon sonuçları ondan yeniden üretilir — tek gereken, XG'nin Toplu Rollout'unun ürettiği eşleşen .xg dosyaları.