- Aunque la mayoría de los LLM juegan mal al ajedrez, el fenómeno de que solo
gpt-3.5-turbo-instructfuera inusualmente fuerte se explica en parte con experimentos que muestran que, al cambiar la interfaz del prompt,gpt-4oygpt-4o-minitambién mejoran bastante - La hipótesis de que OpenAI llama en secreto a un motor de ajedrez es débil: incluso con el mismo tablero juegan distinto según la secuencia por la que se llegó a esa posición, son sensibles a cambios en el prompt y su rendimiento se queda alrededor de 1750 Elo, no al nivel de un motor
- Con solo tres breves ejemplos en contexto, el rendimiento subió mucho, y también se confirmó una mejora al hacer fine-tuning con ejemplos extraídos de 100 partidas de autojuego de Stockfish
- En cambio, darles la lista de jugadas legales disponibles empeoró mucho el rendimiento, mientras que el método de repetición de notación (regurgitation) —repetir toda la partida y luego añadir la siguiente jugada— hizo que los modelos chat se comportaran más como modelos de completion y así mejoraran
- La combinación final
gpt-4o + regurgitation + examplesregistró 10 victorias, 5 tablas y 35 derrotas en 50 partidas contragpt-3.5-turbo-instruct; considerando la ventaja de las blancas, se estima en unos 1540 Elo, por debajo de los ~1750 Elo degpt-3.5-turbo-instruct
Planteamiento del problema: por qué solo gpt-3.5-turbo-instruct juega bien al ajedrez
- El punto de partida de la observación previa era que, aunque la mayoría de los LLM juegan muy mal al ajedrez,
gpt-3.5-turbo-instructlo hace a un nivel de aficionado avanzado - A pesar de ser un modelo relativamente pequeño y de más de un año de antigüedad, resultó jugar mejor que modelos más recientes
- Había cuatro grandes explicaciones posibles
- Los modelos base grandes juegan bien al ajedrez, pero esa capacidad no se conserva en los modelos chat tras el instruction tuning
gpt-3.5-turbo-instructfue entrenado con más datos de ajedrez- Hay algún elemento especial en cierta arquitectura de LLM
- Los datos de ajedrez deben ocupar una proporción suficientemente grande dentro del total de datos de entrenamiento
- Después, la discusión se fue acotando a la posible llamada a un motor de ajedrez por parte de OpenAI, a si el LLM realmente juega ajedrez, y a la diferencia entre modelos base y modelos chat
La hipótesis de que usa en secreto un motor de ajedrez no resulta convincente
- La sospecha de que
gpt-3.5-turbo-instructreconoce la notación de ajedrez y llama a un motor externo parece muy poco probable - La evidencia va por varios lados
- Personas de OpenAI dijeron que no hicieron ese tipo de procesamiento
- Un motor de ajedrez evalúa igual una misma posición sin importar la secuencia de jugadas anterior, pero
gpt-3.5-turbo-instructjuega distinto aun con el mismo tablero si cambia la secuencia por la que se llegó ahí - Según el estándar de un aficionado juega bien, pero según el estándar de un experto es débil, y comparado con un motor de ajedrez su rendimiento es muy bajo
- Si se cambia el prompt, su juego cambia de forma sutil
- Los modelos posteriores de OpenAI juegan mucho peor en su estado base, pero pueden jugar mejor con prompts adecuados
- Si hubiera trampa, implicaría un método muy complejo para que no pareciera una llamada a un motor externo y para dar la impresión de que el LLM elige directamente la jugada
El LLM no juega solo por memorización simple
gpt-3.5-turbo-instructrara vez propone jugadas ilegales incluso en el medio juego o finales- Para determinar si la última jugada es legal en una cadena como
1. e4 d5 2. exd5 Qxd5 3. Nc3, hace falta seguir las reglas del ajedrez y el estado de la partida - En partidas reales,
gpt-3.5-turbo-instructtambién juega bastante bien desde posiciones nuevas que nunca han existido en la historia - Por lo tanto, no encaja la explicación de que memoriza aperturas y luego juega al azar
Experimento base: diferencia entre modelos de completion y modelos chat
gpt-3.5-turbo-instructes un modelo de completion, así que la siguiente jugada se obtiene haciéndolo continuar un texto en formato PGN- El ejemplo consiste en dar algo como
[Event "Shamkir Chess"], nombres de jugadores, Elo, resultado y una notación como1. e4 e5 2. Nf3 Nc6 3.
- El ejemplo consiste en dar algo como
gpt-4o-miniygpt-4oson modelos chat, así que mediante system prompt y user prompt se les pide que devuelvan solo la siguiente jugada en notación algebraica estándar- Se promediaron 50 partidas contra Stockfish nivel 1, con un máximo de 0.01 segundos por jugada, y después de cada partida se calculó el puntaje de cada turno en centipawns
- Un peón equivale a 100 puntos
- ±1500 corresponde a victoria o derrota
- Con el prompt base,
gpt-3.5-turbo-instructfue fuerte, mientras que los modelos chat comogpt-4oygpt-4o-minise vieron débiles
Experimentos de composición del prompt
- Se probó combinando si repetir o no el system prompt al inicio del user prompt, y si incluir metadatos como nombre de jugadores y Elo
- En
gpt-4o-minicasi no se vio una diferencia importante - En
gpt-4o, repetir el system prompt parecía ayudar un poco y los metadatos parecían perjudicar un poco, aunque también podría haber sido ruido - En experimentos posteriores, por simplicidad, se desactivaron tanto la repetición del system prompt como los metadatos
Solo tres ejemplos bastaron para mejorar mucho el rendimiento
- Como suele hacerse al pedir tareas a un LLM, se dieron por API tres breves ejemplos de entrada/salida
- Entrada
1.→ salidae4 - Entrada
1. e4→ salidad5 - Entrada
1. e4 e5 2. Nf3 Nc6 3.→ salidaBb5
- Entrada
- Solo con esos tres ejemplos, los resultados mejoraron muchísimo
- Puede que más ejemplos, o ejemplos distintos, funcionen mejor, pero cada figura requería muchísimas consultas y no se comprobó más allá
El fine-tuning ayuda, pero su combinación con ejemplos es inestable
- Se hizo fine-tuning tanto en
gpt-4o-minicomo engpt-4o - El método para generar los datos fue el siguiente
- Stockfish jugó 100 partidas contra sí mismo en máxima dificultad
- De cada partida se eligió una jugada al azar para usarla como ejemplo de entrenamiento
- Por separado, se usaron 100 partidas más de autojuego de Stockfish como datos de validación
- El fine-tuning por sí solo mejora el rendimiento
- Sin embargo, como el primer resultado de fine-tuning en
gpt-4oparecía peor, se volvió a ejecutar con un step size más pequeño, lo que deja una fuente de incertidumbre - Al combinar ejemplos y fine-tuning, la mejora no fue consistente como se esperaba
- Solo fine-tuning: ayuda
- Solo ejemplos: ayuda
- Añadir ejemplos después del fine-tuning: casi no tiene efecto
- Con ejemplos ya presentes, el fine-tuning incluso produce un resultado peor
Dar la lista de jugadas legales arruina el rendimiento
- Como el modelo a veces produce jugadas ilegales, se probó darle al inicio de la notación la lista de jugadas legales disponibles en la posición actual
- También se cambió el system prompt para que recibiera la lista de jugadas legales y la notación parcial
- El resultado fue muy malo
- No solo bajó la tasa de victorias, sino que empezó a equivocarse desde turnos más tempranos
- Después de eso ya no se volvió a usar la lista de jugadas legales
Idea clave: hacer que repita toda la partida
- Los modelos chat funcionan con tokens especiales e instruction tuning en un formato conversacional como
<|SYSTEM|>,<|USER|>,<|ASSISTANT|> - Los modelos base se parecen más a modelos de completion que continúan una cadena, y la notación PGN encaja mejor con ese modo
- No se puede acceder directamente a
gpt-4-base, ni tampoco llamar agpt-4oen completion mode, así que no es posible compararlos de forma directa - En cambio, para lograr que
gpt-4ose comporte como un modelo de completion, se le pidió que no devolviera solo la siguiente jugada, sino que repitiera toda la partida y luego agregara una jugada nueva - Por ejemplo, si la entrada es
1. e4 e5 2., se le pide una salida como1. e4 e5 2. Nf7 - Este método mejoró el rendimiento en ajedrez de
gpt-4o-miniygpt-4o - Al hacer que repita toda la secuencia, el modelo construye por sí mismo un contexto en el que es más probable que elija una buena jugada
- Este resultado sirve como indicio de que, si se pudiera llamar al inaccesible
gpt-4-baseen completion mode, probablemente jugaría bastante bien al ajedrez
Combinación de repetición de notación, ejemplos y fine-tuning
- También se repitió un experimento separado de fine-tuning usando el método de repetición de notación
- La entrada seguía siendo una notación parcial, como antes
- La salida deseada era repetir toda la notación de entrada y luego añadir la siguiente jugada
- El fine-tuning en este formato pareció ayudar un poco
- También se rehicieron tres ejemplos adaptados a este método
- Entrada
1.→ salida1. e4 - Entrada
1. d4→ salida1. d4 d5 - Entrada
1. e4 e5 2. Nf3 Nc6 3.→ salida1. e4 e5 2. Nf3 Nc6 3. Nf3
- Entrada
- Aun con tan poca información, los ejemplos volvieron a tener mucho impacto
- Al usar juntos ejemplos y fine-tuning, se repitió un patrón extraño
- Añadir ejemplos al fine-tuning sí ayuda
- Pero sigue siendo peor que usar solo ejemplos
Resultados experimentales y estimación Elo
- Los resultados se resumieron en tres grupos
- Bueno: repetición de notación, ejemplos, fine-tuning sin ejemplos
- Poco claro: metadatos, repetición del system prompt, fine-tuning usado junto con ejemplos
- Malo: dar la lista de jugadas legales
- La combinación final fue usar repetición de notación y ejemplos, y desactivar el resto
gpt-4o + regurgitation + examplesfue bastante decente, pero no tan fuerte comogpt-3.5-turbo-instruct- Los dos modelos jugaron 50 partidas, y en todas
gpt-4ollevó las blancas
Resultado de gpt-4o |
Cantidad |
|---|---|
| Victoria | 10 |
| Tablas | 5 |
| Derrota | 35 |
- Este resultado coincide con una diferencia Elo de aproximadamente -191
- Si se refleja que la ventaja de mover primero con blancas suele estimarse en unos 35 Elo, entonces
gpt-4o + regurgitation + examplesse estima en1750 - 191 - 35/2 ≈ 1540 Elo - Eso se evalúa como nivel de aficionado intermedio
Hipótesis actual: los datos y la interfaz actúan juntos
- La hipótesis actual se divide en dos partes
- Los modelos base de OpenAI fueron entrenados con datos de partidas de ajedrez más abundantes o de mejor calidad que los modelos abiertos
- Es posible que los modelos base recientes de OpenAI jueguen bien al ajedrez en completion mode, pero los modelos chat realmente accesibles no
- Los modelos abiertos, ya sean base o chat, resultaron jugar mal al ajedrez, lo que sugiere que el problema probablemente se deba más a una diferencia de datos que a una limitación arquitectónica
- En la sección A.2 de un paper se menciona que GPT-4 fue entrenado con partidas de ajedrez en notación PGN, filtrando para incluir solo partidas de jugadores con Elo superior a 1800
- No hay confirmación pública de que
gpt-3.5-turbo-instructusara exactamente los mismos datos, pero el hecho de que juegue en notación PGN y mida alrededor de 1750 Elo no parece una coincidencia - No se pudo confirmar cuánto dato de ajedrez se incluyó en el entrenamiento de modelos abiertos como Llama
- Puede que del internet abierto hayan entrado muchas partidas, pero también es posible que una base de datos curada a gran escala con partidas de alta calidad haya producido mejores resultados
- También podría ocurrir que demasiado dato de ajedrez de bajo nivel haga que el modelo prediga jugadas de menor calidad, pero como en secuencias fuertes debería predecir la siguiente jugada de un jugador fuerte, no parece ser la explicación principal
Incertidumbres pendientes e impresión práctica
- Si
gpt-4oen chat mode es peor quegpt-4-baseen completion mode, no se sabe si la causa es la interfaz chat, el instruction tuning, o ambas cosas - Tampoco se puede probar si
gpt-4-basejugaría bien al simular un chat mode, ni sigpt-4ojugaría bien si se pudiera llamar en completion mode - Es muy posible que todavía existan más formas de sacar un mejor comportamiento de
gpt-4o - Encontrar la combinación óptima de prompt, ejemplos y fine-tuning es muy difícil
- El espacio de búsqueda es grande
- No hay una abstracción sencilla
- Los LLM son difíciles de predecir y frágiles
- Los experimentos son lentos y costosos
- Al aplicar la misma receta final a
gpt-4, no logró jugar bien al ajedrez - La combinación encontrada podría estar especializada para
gpt-4o; puede quegpt-4necesite prompts distintos, más ejemplos o fine-tuning - La sensibilidad por modelo es tan alta que el proceso se siente menos como ingeniería y más como buscar un hechizo
1 comentarios
Opiniones de Hacker News
Para ver si gpt-3.5-turbo-instruct realmente entiende el ajedrez, basta con hacer que juegue el siguiente movimiento en 1000 posiciones legales aleatorias que no sean jaque mate.
Estas posiciones se pueden crear con https://github.com/tromp/ChessPositionRanking, son completamente distintas de partidas normales que podría haber visto en los datos de entrenamiento, y en muchos casos tienen una cantidad muy limitada de movimientos legales.
Sirven para probar la legalidad del siguiente movimiento, pero como normalmente un bando está en una ventaja abrumadora, son menos útiles para distinguir la calidad de las jugadas.
Fue sorprendente ver a Hikaru mirar una posición y mostrar, como si estuviera “comentando en vivo” desde el principio, cómo se había llegado a esa posición; pero en el mismo video explicó que ese método casi no funciona con acertijos de ajedrez raros y aleatorios.
Los acertijos provenientes de partidas reales son mucho mejores que los generados al azar, y tienen más sentido incluso para los humanos de máximo nivel.
Para alguien que entiende bien el ajedrez, por ejemplo a nivel Elo 1800, prácticamente no existe la posibilidad de no producir un movimiento legal en el primer intento.
Se podría decir que el razonamiento real requiere lógica simbólica y abstracción, mientras que los LLM son predictores del siguiente token.
Por ejemplo, como vio que los alfiles siempre se mueven en diagonal, podría considerar solo ese tipo de movimientos, pero eso no necesariamente implica que haya inferido el concepto de movimientos legales/ilegales.
Internamente podría crear alguna representación de la posición, pero si se le da una posición de ajedrez codificada, esa representación no se activará automáticamente.
Si se afirma que gpt-3.5-turbo-instruct “entiende” el ajedrez, “razona” y realiza “lógica real”, me gustaría que encontraran a algún ajedrecista de nivel aficionado avanzado, como lo describe el artículo, que haga movimientos ilegales.
Cualquiera que sepa de ajedrez puede confirmar que eso casi nunca ocurre.
También me da curiosidad si hay enlaces a partidas donde aparezcan movimientos ilegales.
También he visto a streamers de un nivel muy superior al mío intentar varias veces movimientos ilegales hasta darse cuenta de que la interfaz los rechazaba por ilegales.
Basta con buscar “GM illegal moves” en YouTube para encontrar recopilaciones con suficientes casos de grandes maestros haciendo movimientos ilegales.
Ejemplo: https://www.youtube.com/watch?v=m5WVJu154F0 — el caso Vidit vs Hikaru es especialmente llamativo: Vidit ataca al rey de Hikaru con su propio rey.
Mientras los LLM sean una caja negra, no podemos saber si entendieron los movimientos legales razonando según las reglas, o si solo aprendieron a producir movimientos legales tras entrenarse con muchos datos de movimientos legales.
Se puede afirmar que una u otra cosa es verdad, pero no hay absolutamente ninguna forma de entender qué “pensó” realmente el LLM.
Para no hacer nunca un movimiento ilegal en ajedrez a la ciega hay que ser bastante bueno.
Las personas, incluso expertos reconocidos en su propio campo, cometen muchos errores, y a veces errores muy costosos y retrospectivamente obvios dentro de su área de especialidad.
Pero cuando un LLM entrenado con un corpus lleno de estupideces humanas hace un movimiento ilegal en ajedrez, el cerebro reacciona de inmediato con: “yo no hago movimientos ilegales en ajedrez; ¿cómo puede la computadora jugar ajedrez si hace eso?”.
Como mínimo, parece un ejemplo perfecto de sesgo metacognitivo y del error fundamental de atribución.
Este texto tiene el mismo problema que el anterior. El autor no aporta ningún dato sobre la frecuencia de jugadas ilegales
Por eso no se puede llegar a una conclusión significativa
Es parecido a afirmar que un LLM es un médico especialista, pero filtrar de los datos todos los casos en los que dio consejos médicos incorrectos
Sería interesante si la cantidad de intentos de jugadas ilegales difiriera de forma significativa según el enfoque, y en especial si esa diferencia no se correlacionara con el rendimiento después de eliminar las jugadas ilegales, pero no creo que sacuda demasiado la conclusión del texto
Si eliges al azar entre el conjunto de jugadas legales, terminas siendo un jugador de ajedrez realmente pésimo, así que si al muestrear de la salida del LLM juega mucho mejor, es claro que el LLM está aportando algo
Discutir la definición de la capacidad del LLM por sí solo, diciendo que todos los intentos de jugadas ilegales deberían contarse como derrotas, se siente como desviarse del punto principal
En ese caso, en la práctica “LLM+script” se convertiría en un médico especialista, pero aunque eso es posible con jugadas ilegales de ajedrez, obviamente no lo es para evaluar consejos médicos
No aparece aquí, pero turbo instruct ya había sido evaluado antes
https://github.com/adamkarvonen/chess_gpt_eval
La proporción de entrenamiento supera el 99% y la de prueba es inferior al 1%, así que ni siquiera pasa los fundamentos de validación de IA
Habría sido un artículo difícil de sostener en la mayoría de las conferencias de IA, pero se publicó en Nature Medicine, que tiene un factor de impacto muy alto, y se cita mucho en el campo de la IA médica
https://www.nature.com/articles/s41591-018-0268-3
La frase “en muchos sentidos se siente más como buscar un hechizo que como ingeniería” sigue coincidiendo con mi impresión general sobre los LLM
Que funcionen es sorprendente, pero espero que la próxima innovación tecnológica no nos haga sentir cada vez como si estuviéramos en una mala película de ciencia ficción
No creo que sea cierto que “todos estaban equivocados”
Tampoco fui el único en señalar esto, así que me sorprendió que esta teoría no estuviera en la lista; hace 7 días escribí esto: https://news.ycombinator.com/item?id=42145710
“Cualquier cosa que se convierta en un benchmark público debe asumirse como un objetivo específico durante el entrenamiento.”
Esto es distinto de la teoría de “trampa/sustitución de la salida del LLM” que el artículo menciona y refuta
El artículo de seguimiento refuerza esta conjetura. OpenAI entrenó el modelo base con más y mejores datos de partidas de ajedrez que los modelos abiertos, y en el apartado A.2 de cierto artículo, autores de OpenAI afirman que GPT-4 fue entrenado con partidas de ajedrez en notación PGN de jugadores con Elo superior a 1800
Tiene todo el sentido que OpenAI refuerce sus datos de entrenamiento con datos de tareas que la gente realmente podría intentar
Esto tampoco es poco ético. Ningún conjunto de datos es verdaderamente “neutral”, así que si de todos modos hay que elegir, no hay razón para no entrenar el modelo para que sea bueno en dar respuestas potencialmente útiles
En cualquier caso, OpenAI tiene mucha experiencia en IA para juegos
https://news.ycombinator.com/item?id=42145215
Nadie entrena un LLM enorme y carísimo con un conjunto de datos gigantesco esperando que algún bloguero descubra por casualidad un rendimiento mediocre de nivel Elo 1800 y lo tuitee
El ajedrez ni siquiera es un benchmark estándar de LLM como para ser objetivo de Goodhart, y OpenAI en general ha intentado resolver los problemas de la forma correcta más que con atajos o trampas
La familia GPT podría haberse sobreajustado fácilmente a benchmarks estándar o contraejemplos, y eso habría tenido mucho más valor promocional, pero no se sobreajustó de forma extrema. Por ejemplo, habría sido muy fácil entrenarla con cosas como el “problema de la fresa”
En cambio, algunos otros proveedores de LLM muestran caídas de puntaje mucho mayores en artículos sobre prevención de memorización
Además, el propio artículo que menciona ese conjunto de datos tiene usos de investigación claros, y el ajedrez interesa como organismo modelo para analizar la dirección y el modelado del mundo en los LLM porque se pueden usar oráculos
El artículo de DeepMind sobre LLM de ajedrez bullet tampoco forma parte de un plan astuto para que Gemini finja habilidad en ajedrez y usarlo en marketing de GCP
Al principio quizá pensaron que el ajedrez era genial, y mañana podrían pensar que el go o la capacidad de escribir poesía son geniales
Sin importar el campo, sería cuestión de incluir en los datos de entrenamiento más contenido experto que contenido “amateur”
En el prompt no se dice “intenta ganar la partida”, pero el resultado se mide por cuánto gana el LLM.
¿Eso estará implícito en el prompt “eres un gran maestro de ajedrez”?
¿Habrá en alguna parte del entrenamiento del LLM un patrón de “si es un juego, siempre intenta ganar”?
¿Podría subir la tasa de victorias si simplemente se le dice que gane?
En ejemplos y explicaciones de partidas de ajedrez, casi siempre cada jugador intenta ganar, así que hacer la jugada ganadora es simplemente la salida más lógica.
Por eso no creo que pedirle explícitamente que gane mejore mucho el rendimiento.
En cambio, sería interesante ver qué pasa si se le pide hacer jugadas perdedoras o malas. Ver si puede hacerlo de forma efectiva, y si las jugadas siguen siendo en su mayoría legales, podría revelar mejor cuánto depende de conceptos ya vistos.
Esa frase aumentará la probabilidad de generar los tokens de la mejor jugada posible.
La capacidad del modelo para generar secuencias de ajedrez está limitada por la pericia contenida en el conjunto de partidas de los datos de entrenamiento.
Aunque hubiera algunas partidas mezcladas en las que ciertos jugadores intentaban perder a propósito, probablemente serían mínimas, y como en las partidas de ajedrez no se anota la intención de los jugadores, el LLM no puede distinguir eso aunque le pidas ganar o perder.
Se puede comprobar pidiéndole a un LLM que pierda a propósito. En mi experiencia, ChatGPT intenta colocarse para recibir el mate del pastor, pero si el rival no se lo permite, implícitamente parece empezar a intentar ganar capturando piezas indefensas del oponente.
Si le preguntas “¿por qué?”, como siempre, da una racionalización a posteriori.
Por eso me sorprendió que no hubiera expresiones como “y gana” o “las negras ganan”.
Sería bastante gracioso si, por el aprendizaje por refuerzo, el LLM estuviera evitando a propósito hacer que un humano se sienta mal por perder en un juego.
Es bueno que hayan mejorado el prompt, pero todavía se están omitiendo dos posibilidades de mejora muy grandes.
Primero, hacer que explique la posición actual del tablero y el plan a futuro antes de sugerir una jugada. Eso hace que el modelo realmente piense más y, aunque es parecido a o1, aquí puede garantizar un procesamiento más enfocado.
Segundo, hacer que dibuje de verdad un tablero ASCII en cada paso. Una forma tablero+jugada puede ser más fácil de manejar de forma estable que una lista de 20 jugadas, lo que podría aumentar las jugadas legales.
Los “gráficos” bidimensionales como el arte ASCII son poco familiares para los modelos de lenguaje, y el modelo percibe el texto como un flujo de tokens, incluidos los saltos de línea, por lo que las relaciones “verticales” entre líneas no son tan claras como las ve un humano.
Aunque haya un diagrama del tablero en la ventana de contexto, es muy probable que no ayude mucho al modelo a razonar sobre la partida.
En cambio, listar la ubicación de cada pieza en texto normal, como “caballo negro en c5”, podría ser más adecuado para reforzar el reconocimiento de la posición.
El punto 1 sí vale claramente la pena intentarlo, y hay más variantes que funcionan según el modelo.
En los modelos de Anthropic, la documentación recomienda etiquetar y clasificar las partes importantes de la entrada con notación XML. Esta estructura suave parece mejorar los resultados de los modelos Claude, y probablemente hayan sido entrenados especialmente para reconocerla.
Referencia: https://docs.anthropic.com/en/docs/build-with-claude/prompt-...
Para un modelo de Anthropic, el prompt final podría ser algo como: “Eres un gran maestro de ajedrez. Mira la partida incompleta dentro de las etiquetas, repite toda la partida y luego da una nueva jugada en notación algebraica estándar; antes de dar la nueva notación, explica tu razonamiento dentro del bloque de etiquetas”.
Ese tipo de prompt está pensado para producir mejoras visibles en los modelos de Anthropic.
Irónicamente, después de usar mucho Claude 3.5 Sonnet durante meses, recién descubrí esto hace unas semanas. RTFM sigue siendo una habilidad útil.
Puede que en los modelos de OpenAI también haya affordances parecidos, simples pero poco conocidos.
En mis experimentos de ajedrez de hace 1.5 años, el truco de repetir toda la secuencia de jugadas fue la mejor técnica sin ajuste fino.
Me gustaría ver los resultados, pero me sorprendería bastante que mejoraran.
La hipótesis es que, si se le da más tiempo y espacio de otras formas, el rendimiento podría mejorar aún más.
Por ejemplo: mostrar la posición actual del tablero, pedir análisis de la posición, una lista de debilidades y fortalezas clave, una lista de estrategias posibles, elegir una de esas estrategias y, por último, elegir la jugada.
Es decir, no hacer que escupa la jugada de inmediato, sino obligarlo a pensar de verdad. Aquí los ejemplos serían clave.
Estas ideas mostraron funcionar bien en los artículos de ReAct y de cadena de pensamiento, y también se les podría agregar un esquema de repetirlo N veces y detenerse cuando haya una respuesta mayoritaria. Esa idea viene del artículo de autoconsistencia de cadena de pensamiento.
Me parece muy interesante la parte que dice: “el ajuste fino ayuda y los ejemplos también ayudan, pero son los ejemplos los que vuelven innecesario el ajuste fino, no al revés”.
En este caso específico, simplemente proporcionar ejemplos equivale al ajuste fino.
Para mí es un gran descubrimiento, así que pienso usar ejemplos con más frecuencia en adelante.
Es difícil explicar por qué, pero siempre tuve la intuición de que el ajuste fino estaba sobrevalorado.
Una razón podría ser que los ejemplos están “justo ahí” y, por lo tanto, reciben implícitamente un peso mucho mayor que las neuronas ajustadas finamente.
En este caso de juguete no importa tanto, pero conviene recordar que cada ejemplo que se proporciona en la entrada aumenta el tiempo y costo de predicción en comparación con el ajuste fino.
Hay que dejar de hacer experimentos a ciegas con LLM comerciales
Para llegar al fondo de este problema, sería interesante entrenar un LLM solo con partidas de ajedrez. Se podría generar material sintético de forma ilimitada haciendo que Stockfish juegue contra sí mismo, y mezclar algunos ejemplos de comentarios de ajedrez y conversaciones ajedrecísticas como “¿cuántos peones hay en el tablero?”, “¿dónde está mi torre?” o “dibuja el tablero”, para mostrar si cuenta con una representación del tablero.
No creo que los “fenómenos emergentes”, la capacidad lingüística general ni la capacidad de fingir tener habilidades sean necesarios para jugar ajedrez. Ser bueno en ajedrez no implica ser inteligente en otras cosas, y viceversa.
Un experimento así podría demostrar que estoy equivocado.
Un paper publicado hace aproximadamente una semana https://arxiv.org/pdf/2411.06655 parece obtener buenos resultados con un Llama ajustado finamente.
También me gusta este paper sobre la capacidad de comentar partidas de ajedrez: https://arxiv.org/abs/2410.20811
También se puede agregar la recompensa restante para que la red aprenda qué movimientos aparecen en partidas buenas y malas, lo que se convierte en un esquema de aprendizaje por refuerzo offline como Decision Transformer.
En mi opinión, la habilidad ajedrecística es completamente inútil para los LLM generales, no es un fenómeno emergente y solo consume ancho de banda de gradientes y espacio de parámetros para este truco llamativo.
Eso queda claro por el hecho de que los LLM que no fueron entrenados específicamente para ajedrez no juegan bien.
Podría ser interesante crear un tokenizador optimizado para la notación de movimientos de ajedrez y entrenar un LLM desde cero con partidas de Stockfish.
Con un tokenizador personalizado, la calidad debería mejorar para el mismo tamaño de modelo.
No haría falta desperdiciar tantas capas en codificación y decodificación, y las representaciones latentes “naturales” también podrían ser más intuitivas.