Estudio del motor · Backgames & contención

Enseñar a Open Sage a jugar backgames

Cómo se construyó el motor Stage 11 que impulsa Backgammon Sage Pro para manejar las posiciones que todos los bots juegan peor — backgames, juegos de contención y el snake — y qué dicen los benchmarks al respecto.

Resumen

Los motores de backgammon siempre han sido más débiles en los juegos lentos y estructurales: los backgames, en los que un jugador mantiene dos o más anclas en lo profundo del tablero rival y espera un tiro; los juegos de contención, en los que un jugador con la carrera perdida intenta mantener atrapadas una o dos fichas golpeadas; y el snake, un prime en la mitad lejana del tablero que retiene una sola ficha rezagada mientras el resto del ejército rival se desmorona. Estas posiciones son raras en el juego corriente e inusualmente largas cuando surgen, así que apenas están representadas en los datos de juego contra sí mismo de los que aprende un motor, y un motor que apenas las ha visto las valora extrapolando desde posiciones que solo parecen similares. El motor Open Sage Stage 9 se entrenó con posiciones de backgame y obtiene mejores puntuaciones que eXtreme Gammon a niveles de evaluación equivalentes, pero su tasa de error en estos juegos sigue siendo varias veces mayor que en el resto. Stage 11 ataca el problema de frente. Primero construimos benchmarks hechos de backgames, juegos de contención y snakes, cada uno puntuado como Performance Rating frente a referencias de calidad rollout; después añadimos al motor seis redes neuronales, seleccionadas por un pequeño conjunto de reglas estructurales; luego generamos objetivos de rollout para cada una de ellas; y por último puntuamos el resultado frente a todos los benchmarks de que disponemos. En el benchmark de contención, Stage 11 reduce el PR a 3 plies de 6,89 a 3,58 y el número de blunders de 156 a 53; en los diez benchmarks clásicos de backgame su PR a 1 ply baja de 4,75 a 2,98; y su juego en partidas ilimitadas y en Paskogammon — una variante que se juega desde una posición inicial personalizada que conduce a muchos más backgames — no cambia o mejora.

01
Introducción

Los juegos en los que fallan los motores

Los motores de backgammon basados en redes neuronales aprenden de millones de partidas jugadas contra sí mismos, y aprenden lo que esas partidas contienen. Los backgames, los juegos de contención y los primes que retienen una sola ficha rezagada son raros en el juego corriente e inusualmente largos cuando se producen, de modo que un motor generalista ve pocos y los valora extrapolando desde posiciones que parecen similares pero no lo son. El resultado es una debilidad bien conocida: un motor que en una partida normal comete un error cada veinte decisiones puede cometer uno cada tres en un backgame profundo, y tiende a juzgar mal las mismas cosas que un jugador humano intermedio — cuándo mantener un ancla y cuándo correr, cuánto timing tiene una posición y cuándo debe soltarse un prime.

El motor Open Sage Stage 9, que impulsa Backgammon Sage Pro, ya incluye dos redes entrenadas específicamente con posiciones de backgame, y nuestro estudio de rendimiento del bot muestra que evalúa al menos tan bien como eXtreme Gammon en cada nivel equivalente. Pero ser fuerte respecto a otros bots no es lo mismo que ser fuerte en términos absolutos. Medida frente a rollouts, la tasa de error de Stage 9 en backgames es de dos a tres veces la de las partidas corrientes, y en los juegos de contención y los snakes es aún peor: en el benchmark de snake de más abajo su Performance Rating a 1 ply supera 60, frente a una cifra de 2,6 en partidas ilimitadas.

Stage 11 está diseñado para eliminar esas debilidades sin tocar nada más. El trabajo se hizo en cuatro pasos. Primero construimos una familia de benchmarks que puntúan el juego de backgame y de contención en distintos tipos de posición — diez tipos clásicos de backgame, una familia de contención, una familia de backgames masivos y una familia de snake — cada uno un conjunto de decisiones reales puntuadas frente a referencias de calidad rollout, de modo que Stage 9, Stage 11 y XG puedan medirse en igualdad de condiciones. Segundo, diseñamos el modelo Stage 11: las diecisiete redes de Stage 9 sin cambios, más seis redes nuevas para las familias de backgame, y un algoritmo de enrutamiento que decide a partir de la estructura de una posición qué red la evalúa. Tercero, generamos datos de entrenamiento para cada red nueva — una mezcla de posiciones cosechadas del juego contra sí mismo, posiciones sintéticas y corpus de rollout existentes, todas sometidas a rollout para producir los objetivos. Cuarto, entrenamos las redes y puntuamos el motor terminado frente a todos los benchmarks de backgame y frente a nuestros benchmarks de rollout PR de partidas ilimitadas, matches a 5 puntos y Paskogammon (una variante que se juega desde una posición inicial personalizada elegida para producir muchos backgames), para asegurarnos de que las ganancias en backgames no costaran nada en el resto.

La versión corta de los resultados: Stage 11 es notablemente más fuerte allí donde las redes nuevas intervienen e idéntico a Stage 9 allí donde no. Su PR a 3 plies en el benchmark de contención es apenas la mitad del de Stage 9, sus blunders allí caen dos tercios, su PR a 1 ply agregado en los diez backgames clásicos baja un 37 %, y es el primer motor Open Sage que progresa de verdad en el snake. El juego en partidas ilimitadas no cambia y el de Paskogammon mejora. El resto de esta página da los detalles.

02
Benchmarks

Medir el juego de backgame

Todos los benchmarks de aquí siguen la misma receta que nuestro benchmark de rollout PR de partidas ilimitadas: un conjunto de decisiones reales, cada una con una evaluación de referencia de calidad rollout, frente a la cual un motor se puntúa como Performance Rating — su error medio de equity por decisión, multiplicado por 500, la convención que usa XG. Un PR de 2 significa que el motor regala de media 0,004 puntos por decisión; un PR de 60 significa 0,12 por decisión, que es territorio de principiante.

Lo que difiere es de dónde vienen las decisiones. Cada benchmark de backgame parte de un pequeño conjunto de posiciones semilla que definen su familia — las posiciones de referencia que se muestran en los carruseles de abajo. El motor juega después partidas ilimitadas desde esas semillas contra sí mismo, con cubo, con Jacoby y beaver activos, a 3 plies, y se registra cada decisión que surge mientras la posición sigue perteneciendo a la familia: una jugada de fichas cuenta cuando hay al menos dos movimientos legales y una diferencia de equity significativa entre ellos, y una posición de cubo cuenta cuando la decisión del que dobla no es trivialmente obvia o cuando se ofrece efectivamente un doble. Las semillas se usan en un ciclo barajado, quién mueve primero se decide a cara o cruz, y todo es función pura de una única semilla aleatoria, de modo que cualquier benchmark se regenera de forma idéntica.

Cada decisión registrada se somete después a rollout para producir su referencia: 5.184 trayectorias por posición jugadas hasta el final, con decisiones de fichas y de cubo a 3 plies en los tres primeros medios movimientos y a 2 plies a partir de ahí, reducción de varianza activada, distribuidas en una flota de workers en la nube. La referencia de una decisión de fichas lleva la equity de rollout de cada candidata que conservó el filtro del jugador de referencia; la de una decisión de cubo lleva las equities de no doblar, doblar/aceptar y doblar/pasar. Hay una sutileza que importa al comparar motores: una candidata fuera del conjunto de filtro del jugador de referencia solo se valora con la precisión del filtro, lo que penaliza en exceso a un motor cuyas elecciones difieren de las del jugador de referencia. Por eso ejecutamos pasadas de completado de candidatas — sometiendo a rollout, con la misma convención, cada movimiento que Stage 9 o Stage 11 eligieron efectivamente a 1, 2 o 3 plies — de modo que todas las puntuaciones de abajo se calculan frente a candidatas de calidad rollout.

Los diez backgames clásicos

Un backgame se nombra por los dos puntos que su dueño mantiene en el tablero interior rival: el backgame 2‑1 mantiene los puntos 2 y 1 del rival, el 5‑4 mantiene los puntos 5 y 4, y así sucesivamente. Diez tipos cubren las combinaciones útiles. Las semillas de cada carpeta son posiciones seleccionadas a mano de archivos de referencia de XG, y su benchmark contiene unas 1.000 decisiones — registradas solo mientras las dos anclas indicadas siguen en pie y quien las mantiene va por detrás en la carrera — para un total agregado de 10.021 decisiones. Las posiciones semilla de cada carpeta son también posiciones del benchmark, como decisiones de cubo. Selecciona un tipo para recorrer sus posiciones semilla; cada tarjeta muestra el análisis de cubo por rollout de la posición junto al tablero.

Juegos de contención

Un juego de contención lo define el que escapa, no el que contiene: un bando ha sacado cierto número de fichas y tiene de una a tres fichas que fueron golpeadas y deben recorrer todo el tablero de vuelta a casa, mientras el otro bando, con la carrera perdida, dispone lo que le queda — anclas, blots, un prime roto — para seguir golpeándolas, jugando a salvar el gammon o, en ocasiones, a ganar. No se exige nada de la estructura del que contiene. Las 201 semillas del benchmark proceden de posiciones que el motor ya había encontrado (decisiones de los benchmarks de partidas ilimitadas y Paskogammon con su cubo, y filas de las pilas de entrenamiento de backgame), filtradas con esa regla, y sus 3.197 posiciones — entre ellas las decisiones de cubo de las propias semillas — se registran mientras el que escapa aún tiene fichas atrapadas. Una segunda referencia para una muestra de 300 posiciones se sometió a rollout con Stage 11 en lugar de Stage 9 jugando las pruebas, para comprobar que la elección del jugador de prueba no decide la comparación.

Backgames masivos

Un backgame masivo mantiene tres o más anclas en el tablero interior rival, o dos anclas con siete o más fichas atrás: las posiciones profundas, gobernadas por el timing, en las que el jugador de backgame ha comprometido la mayor parte del ejército. Las 200 semillas se extraen de las mismas fuentes que las semillas de contención, filtradas con esa regla y mantenidas disjuntas de las familias de contención y snake, y el benchmark contiene 2.199 posiciones.

El snake

El snake es un prime en la mitad lejana del tablero que retiene una sola ficha rezagada: una serie de cuatro o más puntos consecutivos, cada uno hecho con dos o más fichas, enteramente en la mitad rival del tablero, que atrapa una ficha en la barra o en el tablero interior de quien tiene el prime mientras las otras diez o más fichas rivales ya están amontonadas en casa. Es un juego de prime más que un backgame, y una de las formas más difíciles de jugar en el backgammon: quien tiene el prime debe hacerlo rodar hacia casa sin soltar la ficha rezagada, y el momento de soltarla decide la partida. Como la posición es rara en el juego, las 74 semillas incluyen variantes sintéticas de la forma clásica (longitud y colocación del prime, ubicación de la ficha rezagada, reparto del amontonamiento) junto a las pocas encontradas en los datos existentes; el benchmark contiene 1.073 posiciones.

Benchmarks de partidas completas

Tres benchmarks miden partidas enteras en lugar de una familia de posiciones, y existen para demostrar que no se perdió nada: el rollout PR de partidas ilimitadas (500 partidas, 17.535 decisiones), el rollout PR de matches a 5 puntos (130 matches, 18.292 decisiones, con el marcador del match presente en cada decisión de cubo) y el rollout PR de Paskogammon (2.556 decisiones, jugadas desde la posición inicial dispersa del Paskogammon, que produce muchos más backgames y juegos de contención que el backgammon estándar). Los tres construyen sus referencias de forma adaptativa — 3 plies para las decisiones claras, rollouts truncados para las más ajustadas, rollouts completos de 1.296 trayectorias para las más ajustadas de todas — como se describe en el estudio de rendimiento del bot.

XG también ha sido puntuado en estos benchmarks. No expone ninguna interfaz programática, así que cada decisión del benchmark se escribe como una partida de una sola decisión y se reproduce mediante su función Batch Analysis, una pasada por nivel de evaluación, exactamente igual que los benchmarks de partida ilimitada y de partido. Esos resultados están en la página de rendimiento del bot, que compara el motor con XG; las tablas de aquí comparan Stage 11 con el Stage 9 al que sustituye.

03
Arquitectura

El modelo Stage 11

Stage 9 es un comité de diecinueve redes neuronales: una para carreras puras, dieciséis seleccionadas por el par de planes de juego que siguen los dos bandos (carrera, ataque, prime, anclaje), y dos redes de backgame — una para el jugador que mantiene un backgame y otra para el rival — que se usan cuando el par de planes es anclaje contra carrera, el bando que ancla va por detrás en la carrera y mantiene dos o más anclas en el tablero interior rival. Cada red es una única capa oculta de 400 unidades sobre 244 entradas (100 unidades sobre 196 entradas en la red de carrera), que produce cinco salidas: las probabilidades de ganar, ganar un gammon, ganar un backgammon, perder un gammon y perder un backgammon.

Stage 11 conserva las diecisiete redes estándar byte a byte y sustituye las dos redes de backgame por seis, dando un comité de veintitrés:

#RedRegión que evalúa
0–16Las redes de carrera y de pares de planes de Stage 9Todo lo demás, exactamente como en Stage 9
17Backgame profundoLos backgames 2‑1, 3‑1 y 3‑2: ambas anclas en los puntos 1, 2 o 3 del rival
18Backgame intermedioLos backgames 4‑1, 4‑2, 5‑1 y 5‑2: un ancla en el punto 1 o 2, otra más alta
19Doble anclaLos backgames 4‑3, 5‑3 y 5‑4: dos anclas, ninguna más profunda que el punto 3
20Contención tempranaUn jugador de backgame que ha acertado un tiro mientras el que corre aún tiene como mucho dos fichas fuera, en posiciones que el filtro de pares de planes entregaría de otro modo a una red estándar
21ContenciónCualquier juego de contención, sea cual sea lo que tenga el que contiene
22SnakeUn prime en la mitad lejana que retiene una ficha rezagada contra un tablero amontonado

Dos decisiones de diseño importan más que el número. Las redes de backgame se eligen por la categoría del backgame — la misma red sea quien sea el que lo mantiene — en lugar de por quién lo mantiene, de modo que cada una aprende una sola estructura desde ambas perspectivas. Y la red para una jugada de fichas se elige a partir de la posición anterior al movimiento, de modo que una sola red valora todas las candidatas, incluidas las que abandonan su región (el movimiento que cede un ancla, o que suelta el prime); eso es lo que hace coherentes las decisiones de mantener o correr, y también la razón por la que los datos de entrenamiento de cada red tienen que incluir las posiciones a las que conducen esos movimientos de liberación.

El algoritmo de enrutamiento es una breve lista ordenada de pruebas estructurales sobre la posición, en la que gana la primera que se cumple:

  1. Carrera. Si el contacto se ha roto, la red de carrera pura.
  2. Snake. Si alguno de los bandos mantiene una serie de al menos cuatro puntos hechos consecutivos en la mitad rival del tablero, con una ficha rival en la barra o en el tablero interior de quien tiene el prime detrás de ella y al menos diez fichas rivales ya en casa: la red de snake.
  3. Contención. Si alguno de los bandos ha sacado al menos tres fichas y tiene de una a tres fichas en la barra o fuera de su tablero interior que una ficha rival aún puede golpear: la red de contención. No se exige nada del que contiene.
  4. Backgame. Si el par de planes es anclaje contra carrera, el bando que ancla va por detrás en la carrera y mantiene dos o más anclas en el tablero interior rival (la propia prueba de Stage 9): la red profunda, intermedia o de doble ancla según la posición de las anclas — con tres o más anclas, profunda cuando al menos dos están en los puntos 1, 2 o 3, intermedia en caso contrario.
  5. Contención temprana. Si el bando que mantiene dos o más anclas ha golpeado — una ficha rival está en la barra o en su tablero interior — y el que corre tiene como mucho dos fichas fuera, pero el par de planes ha derivado de modo que la regla 4 no se activa (las fichas restantes del que corre se leen como un prime, por ejemplo): la red de contención temprana.
  6. En cualquier otro caso, la red de pares de planes que habría usado Stage 9.

Como las pruebas son estructurales, su huella puede medirse en cualquier conjunto de posiciones, y esa huella es lo que acota el riesgo: en el benchmark de partidas ilimitadas la regla de contención se activa en el 1,3 % de las posiciones, la regla de contención temprana en el 0,6 % y las reglas de backgame en el 2,4 %, mientras que la regla de snake no se activa en ninguna; en el benchmark de Paskogammon las cifras son 2,6 %, 20 % y 25 %. El 95 % de posiciones corrientes que Stage 11 evalúa de forma idéntica a Stage 9 queda, por construcción, sin cambios.

04
Entrenamiento

Datos y entrenamiento de cada red

Cada red nueva se entrenó como las redes de backgame de Stage 9: aprendizaje supervisado en la GPU frente a objetivos de rollout — las cinco probabilidades que un rollout completo asigna a una posición — partiendo en caliente de una red existente y conservando el checkpoint con mejor puntuación en una décima parte de los datos reservada. Lo que cambia en cada red es de dónde vienen sus posiciones, y cada respuesta nos enseñó algo.

El trío de backgame (redes 17–19)

Stage 9 y Stage 10 ya habían acumulado posiciones de backgame sometidas a rollout — partidas estándar y partidas de Paskogammon, unas 640.000 filas en total. Dividirlas por categoría dio 245.000 filas de entrenamiento profundas, 167.000 intermedias y 94.000 de doble ancla, con filas de benchmark reservadas y deduplicadas frente a ellas. Entrenado solo con esas, el trío era mejor que Stage 9 dentro de su región y peor en su borde: una red que solo ha visto posiciones con ambas anclas en pie no tiene idea de cuánto vale la posición una vez cedida un ancla, y como valora todas las candidatas de una decisión de backgame, adivinaba — unos 0,3 puntos demasiado optimista, lo que explicaba más de la mitad de su error en los benchmarks profundos. La solución fue cosechar descendientes de salida: para cada posición de entrenamiento, los movimientos legales que abandonan la categoría, sometidos a rollout en la orientación en la que el enrutador los evalúa. Cuarenta mil por categoría, añadidos al conjunto de entrenamiento, eliminaron ese modo de error. Partir en caliente de la propia red de backgame de Stage 9 superó tanto a un inicio aleatorio como a un arranque por diferencias temporales.

Contención temprana (red 20)

Analizar dónde quedaba el error restante del trío mostró que lo gobernaba la fase de la partida más que las anclas mantenidas: subía a medida que el que corre entraba en casa, y era peor justo después de que el que mantiene el backgame acertara un tiro. Especialistas de fase entrenados con los cortes correspondientes de los mismos datos no superaron al trío dentro de su región — pero en las posiciones de contención que el filtro de pares de planes rechaza (el bloque restante del que corre se lee como un prime, así que Stage 9 entrega la posición a una red estándar), un especialista en contención temprana redujo el PR a 1 ply de 4,90 a 3,69 y dejó los blunders a la mitad. Se entrena a partir de la red profunda con las filas de contención temprana de los datos del trío y se usa solo ahí.

Contención (red 21)

La regla de contención es nueva, así que su región apenas tenía datos de rollout: alrededor del 1 % de las pilas existentes. Jugamos 3.000 partidas desde las semillas de contención con el propio Stage 11, excluyendo toda posición y candidata del benchmark en ambas orientaciones, y conservamos las posiciones que cumplían la regla — 35.266 tableros nuevos, más 9.734 filas ya sometidas a rollout — y las sometimos a rollout a 1.296 trayectorias con juego a 3 plies. Una red entrenada con esas 45.000 filas era excelente en el benchmark de contención y peor que Stage 9 en las 237 posiciones de partidas ilimitadas que la regla le enruta: son posiciones de contención de partidas corrientes (un golpe tardío durante la salida de fichas, un cierre) que nunca aparecían en los datos de la familia. Añadir las 291.000 filas del corpus general de entrenamiento que cumplen la misma regla, con las filas de la familia ponderadas por cuatro, devolvió el segmento de partidas ilimitadas al nivel de Stage 9 y también hizo la red mejor en el benchmark de la familia. Esa es la lección general de este trabajo: una red especialista debe entrenarse con su región completa, nunca con el rincón de ella que ocupa el benchmark.

Snake (red 22)

El snake no tenía datos en ninguna parte — un centenar de filas en un corpus de 1,8 millones — y no podía cosecharse del juego contra sí mismo: el modelo jugaba tan mal estas posiciones que rompía el prime o corría en uno o dos movimientos, y 900 partidas rindieron apenas dos decisiones de snake cada una. Así que la región se muestreó directamente. Cinco mil snakes sintéticos (longitud y colocación del prime, fichas sobrantes repartidas desde la mitad lejana hasta casa, un rival amontonado con hasta cinco fichas fuera y de una a tres fichas rezagadas) sirvieron de semilla a partidas cortas a 2 plies en las que quien tiene el prime prefería los movimientos que conservan la estructura, y cada decisión aportó su posición, sus cinco mejores candidatas y hasta tres candidatas de liberación — los movimientos que la red debe valorar correctamente para saber cuándo soltar. Eso produjo 98.000 tableros distintos, de los que 22.000 se sometieron a rollout a 648 trayectorias con juego a 3 plies; las partidas de snake son tan largas que un rollout cuesta seis veces lo que uno de contención. La red se entrena en minutos con ese conjunto, y es la primera red Open Sage con alguna competencia en la región: su error a 1 ply frente a los objetivos de entrenamiento bajó de 0,30 a 0,054 puntos.

RedFilas de entrenamientoFuenteInicio en caliente
Backgame profundo245.000 + 40.000 salidasPilas de rollout de Stage 9/10, divididas por categoría; descendientes de salida a un pasoRed de backgame de Stage 9
Backgame intermedio167.000 + 40.000 salidascomo arribaRed de backgame de Stage 9
Doble ancla94.000 + 40.000 salidascomo arribaRed de backgame de Stage 9
Contención tempranacorte de fase de lo anteriorfilas de contención temprana de los datos del tríoRed de backgame profundo
Contención45.000 de la familia + 291.000 generalesJuego contra sí mismo desde las semillas de contención, sometido a rollout; las filas de la regla en el corpus generalRed prime-contra-carrera de Stage 9
Snake22,000Semillas sintéticas + juego contra sí mismo que conserva la estructura, sometidos a rolloutRed prime-contra-carrera de Stage 9
05
Resultados

Stage 9 frente a Stage 11

Cada cifra es un Performance Rating — cuanto más bajo, mejor — en la evaluación 1-ply, 2-ply y 3-ply del propio motor y en sus tres niveles de rollout truncado, 1T, 2T y 3T (las contrapartes de Roller, Roller+ y Roller++ de XG). Ambos motores se puntúan frente a las mismas referencias, con cada elección de cualquiera de ellos evaluada sobre rollouts. XG se compara con el motor en la página de rendimiento del bot; en Paskogammon, donde ambos motores se han ejecutado en todos los niveles, la comparación está más abajo.

Benchmarks de partidas completas

Benchmark Decisiones 1-ply 2-ply 3-ply 1T · Roller 2T · Roller+ 3T · Roller++
S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG
Partida ilimitada17,5352.592.551.661.680.600.600.570.500.490.530.260.270.410.230.230.34
Match a 5 puntos18,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 frente a la misma referencia; cuanto más bajo, mejor, se resalta el mejor de los tres no ejecutado en ese nivel
Contra qué se puntúa cada motor. Cada decisión lleva un rollout completo — miles de partidas jugadas hasta el final desde la posición — y el error imputado a un motor es la diferencia entre la mejor jugada del rollout y la que eligió. Un rollout lo juega a su vez un motor y, en una decisión donde dos motores prefieren jugadas distintas, esa elección puede determinar qué jugada considera mejor el rollout; por eso esas decisiones las juega el motor más fuerte disponible para ese tipo de posición. La elección de cada motor se fuerza dentro del conjunto de jugadas que el rollout evalúa, de modo que ninguna respuesta se valora de forma más burda que otra y todas se miden frente a la misma referencia.

Los diez backgames clásicos

Backgame Decisiones 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
Agregado10,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 frente a la misma referencia; cuanto más bajo, mejor, se resalta el mejor de los tres no ejecutado en ese nivel
Agregando los diez benchmarks a 1-ply, Stage 11 comete 98 errores graves (errores de 0.08 o más) donde Stage 9 comete 246; a 3T Stage 11 no comete ninguno.

Contención, backgames masivos y el snake

Benchmark Decisiones 1-ply 2-ply 3-ply 1T · Roller 2T · Roller+ 3T · Roller++
S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG S9S11XG
Contención3,2709.656.829.634.7314.625.092.5411.253.782.297.763.201.307.852.531.056.16
Backgame masivo2,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 Performance Rating frente a la misma referencia; cuanto más bajo, mejor, se resalta el mejor de los tres no ejecutado en ese nivel
Todos los motores se cargan sobre la misma base. Un rollout evalúa una lista corta de jugadas candidatas, y una elección fuera de esa lista solo puede valorarse de forma aproximada, lo que la penaliza en exceso — por eso las elecciones de cada motor se sometieron específicamente a rollout, las hubiera hecho el motor que fuera. En los trece benchmarks eso deja menos del 1 % del error imputado apoyado en jugadas aproximadas para los tres motores, y ninguna de las comparaciones anteriores depende de ello. La única excepción es la columna Roller+ de XG en contención y snake, donde la cifra sigue siendo un límite superior ligeramente sobrestimado.
Estas son las familias para las que se construyeron las nuevas redes, y aquí es donde la diferencia es mayor. En las partidas de contención Stage 11 reduce aproximadamente a la mitad el PR de Stage 9 en todos los niveles (9.63 frente a 4.73 a 2-ply, 5.09 frente a 2.54 a 3-ply, 2.53 frente a 1.05 a 3T) y recorta los errores graves en dos tercios o más en cada uno. Los backgames masivos siguen la misma pauta. El snake es la mayor ganancia individual — de 64.87 a 21.08 a 1-ply — y sigue siendo la familia más difícil del conjunto para todos los motores medidos aquí, Sage y XG por igual. A diferencia de las demás, apenas se beneficia de añadir ply, y solo los niveles de rollout truncado la mueven: es la simulación la que resuelve una elección de mantener o soltar que depende de cómo se desarrolla una contención larga.

Paskogammon frente a XG

Paskogammon es donde el trabajo de backgame se manifiesta en partidas completas: jugado desde su posición inicial dispersa, produce muchos más backgames y juegos de contención que el backgammon estándar, así que es el único benchmark de partidas completas en el que estas redes intervienen con la frecuencia suficiente para mover la cifra principal. Es también aquel en el que XG se ha ejecutado a todos los niveles que ofrece, de 2 plies a Roller++ — las partidas se exportan a XG como archivos nativos .xg archivos, que llevan explícitamente la posición inicial no estándar, y analizados por lotes una vez por nivel. La tabla puntúa Stage 9, Stage 11 y XG frente a la misma referencia de rollout sobre las 2.556 decisiones del benchmark, agrupadas por nivel equivalente; se resalta el mejor de cada grupo.

MotorPRFichasCubo Carrera puraCarreraAtaque BloqueoAnclaje
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 va por delante de XG en todos los niveles equivalentes desde 3-ply en adelante — 3T 0.88 frente al 1.92 de Roller++, 2T 1.46 frente a 2.44, 1T 1.65 frente a 2.63, 4-ply 1.90 frente a 2.62 y 3-ply 2.28 frente a 2.97 — y Stage 9 también va por delante de XG en los niveles truncados. Solo a 2-ply XG queda por delante de ambos (4.38). El anchoring es el plan de juego más difícil para todos los motores aquí, y es donde el margen es mayor: 1.71 para Stage 11 a 3T frente al 3.39 de XG.
A
Apéndice

Reproducir estos resultados

El motor, los benchmarks, las posiciones semilla, las referencias y todos los scripts de entrenamiento están en el repositorio de código abierto bgsage (MPL-2.0). Los benchmarks de backgame viven bajo backgame_ref_positions/benchmark/ — un archivo starting.txt de semillas, un archivo benchmark.txt de decisiones y una referencia rollout.jsonl por carpeta — y los genera scripts/backgame_benchmark.py, con las semillas de las tres familias producidas por scripts/build_family_seeds.py, y los puntúa scripts/score_backgame_pr.py, que informa del PR junto con la proporción de elecciones de calidad rollout. Las reglas de enrutamiento están en cpp/src/neural_net.cpp con implementaciones de referencia en Python en scripts/containment_rule.py y scripts/snake_rule.py, y el propio modelo es la entrada stage11s del registro de pesos. Los scripts de datos de entrenamiento se nombran en la tabla de arriba por su fuente; los rollouts que necesitan los distribuyen orquestadores que no forman parte del repositorio público, pero sí lo hacen todos los archivos de posiciones y todos los objetivos de rollout.