Entrenar la capacidad de autocorrección de los modelos de lenguaje con aprendizaje por refuerzo
(arxiv.org)- SCoRe de Google DeepMind es un enfoque de aprendizaje por refuerzo online de múltiples turnos que aprende a partir de trayectorias de corrección generadas por el propio modelo, para desarrollar la capacidad de un LLM de corregir sus propias respuestas sin feedback externo
- Los métodos SFT existentes son vulnerables al desajuste de distribución, donde los errores de los datos de entrenamiento no coinciden con los errores reales del modelo, o al colapso de comportamiento, donde casi no corrigen en la segunda respuesta
- SCoRe primero ata la distribución del primer intento para que se mantenga cerca del modelo base, luego inicializa el segundo intento para que mejore, y después refuerza el comportamiento real de corrección mediante reward shaping
- En experimentos con Gemini 1.0 Pro y Gemini 1.5 Flash, el desempeño de autocorrección mejoró frente al modelo base en 15.6 pp en MATH y 9.1 pp en HumanEval
- Solo con prompting o SFT offline es difícil que surja de forma estable una autocorrección intrínseca; se necesita un diseño de aprendizaje por refuerzo sobre datos autogenerados que evite el colapso
El problema de autocorrección al que apunta SCoRe
- Los LLM son útiles en tareas de razonamiento como matemáticas y programación, pero no logran ejecutar de forma estable una metaestrategia de revisar y corregir sus propias respuestas en el momento de prueba
- La autocorrección es la capacidad del modelo de volver a examinar una respuesta inicial y convertirla en una mejor respuesta final
- Este trabajo se centra en un escenario de autocorrección intrínseca, donde el modelo corrige su propia respuesta sin entradas externas
- En el momento de prueba no se usa un verificador de respuestas ni feedback externo
- Durante el entrenamiento, se asume acceso a una función de recompensa que evalúa si la salida del modelo es correcta
- SCoRe entrena un único modelo para realizar tanto la primera respuesta como la corrección de errores, sin un modelo de corrección separado
Dónde se traban los enfoques existentes
- Cuando se intenta inducir la autocorrección solo con prompting, varios trabajos previos muestran que el desempeño puede incluso empeorar
- Algunos métodos dependen de condiciones adicionales como la respuesta correcta, casos de prueba, un modelo más potente, anotaciones humanas o un modelo de refinement separado
- Los enfoques basados en SFT pueden aprovechar trayectorias de corrección autogeneradas, pero en los experimentos no llevan a un gran efecto positivo de autocorrección
- En el experimento comparativo de MATH se usaron variantes de STaR y Pair-SFT
- STaR realiza SFT conservando solo las trayectorias que corrigieron con éxito respuestas incorrectas
- Pair-SFT entrena un único modelo con traces sintéticas de reparación que emparejan una respuesta incorrecta con una respuesta correcta
Resultados del experimento de autocorrección basado en SFT
- En el experimento de MATH basado en Gemini 1.5 Flash, el modelo base tuvo 52.6% de precisión en el primer intento y 41.4% en el segundo, un empeoramiento de -11.2 pp
- Pair-SFT elevó la precisión del segundo intento a 54.2%, pero la mejora frente al primer intento fue de apenas 1.8 pp
- La configuración básica de STaR obtuvo 55.4% en el primer intento y 41.2% en el segundo, una caída de -14.2 pp
- STaR con datos correct-to-correct añadidos mejoró Δ(t1,t2) a 0.4 pp, pero el efecto de autocorrección fue pequeño
- Pair-SFT con datos correct-to-correct añadidos llevó tanto el primer como el segundo intento a 55.0%, sesgándose hacia no cambiar la respuesta
Dos modos de falla
- Los métodos basados en SFT son débiles frente al desajuste de distribución
- Los datos de entrenamiento están ajustados a los errores del primer intento producidos por el modelo base
- En la distribución de errores del primer intento producidos por el propio modelo entrenado, el desempeño de corrección puede caer
- Pair-SFT aumenta la correction accuracy sobre un conjunto fijo de primeras respuestas, pero empeora la precisión de autocorrección cuando el aprendiz genera sus propias primeras respuestas
- Cuando aparece colapso de comportamiento, el segundo intento no realiza correcciones sustanciales o solo corrige de forma muy conservadora
- En el análisis de edit distance ratio, los modelos STaR y SFT suelen mostrar patrones de casi no corregir
- El RL estándar de múltiples turnos puede mejorar el desempeño de ambos intentos, pero no logra aumentar la diferencia Δ(t1,t2) entre el primer y el segundo intento, por lo que es difícil que se traduzca en capacidad de autocorrección
Estructura de entrenamiento de SCoRe
- SCoRe es un enfoque de RL on-policy de múltiples turnos que aprende con datos online autogenerados para reducir el desajuste de distribución
- Para el entrenamiento RL básico se usa un método de gradiente de política REINFORCE con una penalización de divergencia KL respecto de un modelo fijo
- Stage I es una etapa de inicialización para separar los comportamientos de los dos intentos
- Se impone una restricción KL para mantener la distribución del primer intento cerca del modelo base
- El segundo intento se entrena para recibir una recompensa alta
- El objetivo es crear una política inicial que pueda explorar mejores respuestas en el segundo intento
- Stage II optimiza ambos intentos en conjunto
- Se agrega un progress bonus a la recompensa del segundo intento
- El bonus se refuerza cuando el segundo intento mejora la corrección respecto del primero
- Una transición que convierte una primera respuesta correcta en una respuesta incorrecta recibe un fuerte efecto negativo
Por qué se necesita reward shaping
- Si se usa solo el objetivo RL estándar, dos estrategias distintas son posibles
- Una estrategia que mejora la primera respuesta en la segunda
- Una estrategia que hace que la primera respuesta sea lo mejor posible y casi no corrige en la segunda
- En los datos de entrenamiento, ambas estrategias pueden verse buenas, pero la segunda no generaliza como autocorrección a problemas nuevos
- El reward shaping de SCoRe incorpora en la recompensa no solo la corrección final, sino también el cambio en la corrección
- Este diseño refuerza el comportamiento de convertir una primera respuesta incorrecta en una segunda respuesta correcta, en vez de simplemente acertar respuestas con alta recompensa
Desempeño y ejemplos
- SCoRe muestra ejemplos en MATH donde corrige errores aritméticos y de razonamiento en el segundo intento
- En el ejemplo aritmético, corrige una primera respuesta 1 a 3 en el segundo intento en un cálculo de multiplicación modular
- En el ejemplo de razonamiento, corrige una primera respuesta ∞ a 3 en el segundo intento en un problema sobre la cantidad de valores del rango de una función
- En Gemini 1.0 Pro y Gemini 1.5 Flash, SCoRe alcanza desempeño de autocorrección de primer nivel
- Frente a los modelos Gemini base, la mejora de autocorrección es de 15.6 pp en MATH y 9.1 pp en HumanEval
- En el experimento de scaling en tiempo de inferencia de MATH, aparecen rangos donde usar muestras para autocorrección secuencial es más efectivo que usarlas solo para generación directa en paralelo
Implicancias prácticas
- El entrenamiento de autocorrección es difícil de resolver solo reuniendo datos de respuestas correctas y aplicando SFT
- Si el modelo debe corregir en el momento de prueba los errores que él mismo genera, también durante el entrenamiento debe aprender el comportamiento de corrección desde su propia distribución de respuestas
- La restricción clave de SCoRe es que durante el entrenamiento necesita una función de recompensa que evalúe si una respuesta es correcta, pero en el momento de prueba no usa esa recompensa
- Para desarrollar capacidad de autocorrección manteniendo el despliegue de un único modelo, se necesita RL de múltiples turnos y un diseño de recompensas que evite el colapso, incluso sin un modelo de corrección separado ni teacher supervision
1 comentarios
Comentarios de Hacker News
Parece un enfoque similar al del modelo o1 de OpenAI, pero como el paper de o1 no es público, no hay cita.
Por desgracia, no parece haber mención de publicar los pesos.
Puede que o1 también haya hecho eso, pero creo que el cambio más grande es el proceso de pensamiento en tiempo de ejecución, donde “piensa” con palabras y se reajusta en runtime después de recibir el prompt y antes de dar una respuesta final.
Si esta interpretación es correcta, los dos enfoques no son similares. Según entiendo, OpenAI ha usado aprendizaje por refuerzo en todos los modelos posteriores desde la primera versión de ChatGPT, y esa es justamente la razón por la que desde el inicio se podía dejar retroalimentación en la UI.
El paper daba muchas vueltas alrededor de la tesis central en lugar de explicarla directamente, así que fue un poco difícil de entender. Según lo entendí, el objetivo es lograr que un LLM dé respuestas más precisas a problemas difíciles.
Una hipótesis es que se puede entrenar al modelo para que adopte el comportamiento de autocorrección, de modo que tome una respuesta incorrecta como entrada y la mejore hasta llegar a una respuesta mejor o correcta.
Antes ya se había intentado entrenar este comportamiento con varias técnicas de aprendizaje por refuerzo usando como recompensa la calidad de la respuesta corregida, pero no funcionaba bien y el comportamiento aprendido tampoco generalizaba bien.
La idea central de este paper es que, cuando el modelo recibe ejemplos de entrenamiento tipo
Answer 1, Reasoning, Corrected Answery la señal de “haz mejor el Corrected Answer”, en realidad hay dos soluciones totalmente viables. Una es mejorarReasoning, Corrected Answer, que es lo que queremos, y la otra es simplemente mejorarAnswer 1para queCorrected Answer=Answer 1.En trabajos anteriores, al parecer lo que ocurría en la práctica era lo segundo, y por eso fallaba el aprendizaje del comportamiento deseado. En vez de mejorar el comportamiento de corrección, el modelo solo intenta mejorar la primera respuesta.
La solución de este paper es modificar un poco el procedimiento de entrenamiento para empujar al modelo hacia el primer enfoque. O sea, intenta lograr que realmente aprenda el comportamiento deseado de corregir una respuesta previa.
El entrenamiento ocurre en dos etapas. En la etapa 1, se fuerza a mantener intacta la primera respuesta con una pérdida por divergencia KL, mientras se recompensa mejorar la segunda respuesta. Así se preserva la distribución inicial de respuestas, evitando el problema de que más adelante las respuestas incorrectas desaparezcan del modelo por efecto del entrenamiento y entonces vea menos “respuestas incorrectas”, al mismo tiempo que se inicializa en el modelo el comportamiento de autocorrección.
En la etapa 2, el modelo ya puede cambiar también la primera respuesta, pero se ajusta la función de recompensa para dar más premio a los giros donde la primera respuesta era mala y la segunda era buena. En esta etapa puede usar tanto la estrategia de mejorar la primera respuesta como la de mejorar la autocorrección, pero la segunda recibe una recompensa mayor. Parece una fase de refinamiento para pulir el desempeño general sin perder el comportamiento de autocorrección.
Según las métricas, esta técnica funciona mejor y generaliza mejor.
Aun así, me preocupa un poco que en la etapa 2 el modelo aprenda a escribir
Answer 1deliberadamente peor para maximizar la recompensa por giro. Haría falta algún mecanismo de equilibrio para queAnswer 1no empeore, pero no sé si eso ya está en la función de recompensa o si de verdad es una preocupación válida.Answer 1para queCorrected Answer=Answer 1”.¿No era justamente ese el objetivo desde el principio, mejorar
Answer 1? Por la explicación,Answer 1no suena como una entrada sino como una salida del LLM.Los LLM no pueden recordar directamente la experiencia sensorial de su propio proceso de aprendizaje. Una de las formas principales en que yo mismo me corrijo es examinar, cuando intento hablar de algo, cómo/por qué sé eso, y estimar si de verdad lo sé, si me lo estoy inventando o si lo escuché de una fuente poco confiable
Si un LLM no puede recordar de ningún modo su propio aprendizaje, me parece difícil que haya autocorrección
¿Y luego posentrenar el modelo final para que recuerde dónde leyó determinado texto, o para que si aparece un texto que no leyó, no recuerde ninguna experiencia asociada?
Si alguien intenta esto y le funciona, dejo el doctorado y vuelvo a ser consejero de campamento
Según el resumen, exploran el entrenamiento con conciencia de la fuente para darles esa capacidad a los LLM. En concreto, (i) entrenan al LLM para asociar el conocimiento de cada documento con un identificador único del documento fuente, y luego (ii) hacen instruction tuning para que, dado un prompt, cite las fuentes de preentrenamiento que lo respaldan
También vale la pena ver esto: https://www.sciencedirect.com/science/article/pii/S1571064523001094
La forma de entrenamiento de o1 se describe en esta formalización como un modelo de strange particle
Incluso en conocimientos más sistemáticos, como en ciencias de la computación, con el tiempo la experiencia sensorial se va desdibujando al fondo. Por ejemplo, igual que la gente que trabaja en computación, yo también puedo decir al vuelo las características de rendimiento O() de bastantes algoritmos, pero hace mucho que se me borró dónde aprendí uno en particular
Cuando una persona se corrige a sí misma, el proceso usual no es una gran operación como “estimar si sé esto” o “recordar si lo escuché de una fuente poco confiable”. Normalmente hay una sensación difusa de “no terminé de entender esto”, y la autocorrección consiste en volver a verificar la información con una fuente confiable
Por eso no creo que la experiencia sensorial sea tan importante para la evocación de recuerdos como se está sugiriendo
Spoiler: en el paradigma de predicción autorregresiva del siguiente token no se pueden eliminar las alucinaciones; la llamada ley de LeCun
El problema aquí es que la gente intenta usar los modelos de lenguaje como resolvedores deterministas de problemas, en vez de para lo que realmente hacen bien: generación de texto sem creativo
En ese caso tal vez se podría entrenar para responder con menos seguridad y reducir su tendencia a alucinar
A veces se lo explico a la gente así: imagina una empresa que solo tiene departamento de relaciones públicas. Es excelente para redactar comunicados y responder preguntas de periodistas, pero como no existe el resto de la empresa, no hay nada que restrinja significativamente el texto de salida
En un universo alterno donde la gente entendiera esto, los LLM no se usarían para nada serio y se habrían usado mucho para pequeños proyectos artísticos divertidos
La fusión nuclear solo hace falta resolverla bien una vez
¿Esto es, en esencia, alguna forma de destilación de conocimiento?
Me molesta que los comentaristas de IA hayan popularizado la expresión alucinación. Antropomorfiza un montón de estadísticas, haciéndolo parecer como si estuviera llevando a cabo un proceso de pensamiento profundo similar al de una mente humana
No, no está “alucinando”. Tampoco está mintiendo ni inventando cosas. Solo escupe datos según lo detonen los underlying weights
Si esto hubiera sido un endpoint común de API JSON, nadie diría que la API alucina; dirían que está rota, que “esta API es pésima”
Como ningún sistema nervioso puede almacenar perfectamente todos los datos de entrenamiento, todos confabulamos hasta cierto punto
En cambio, la “alucinación” humana se parece más a una ruptura específica del bucle de retroalimentación sensorial. Los LLM ni siquiera tienen ese proceso para empezar
La alucinación ocurre cuando un bucle interno de retroalimentación sensorial domina la entrada sensorial real, y se generan y procesan experiencias sensoriales o flujos de señal falsos. Esa falsa experiencia en curso puede incluir parte de la información sensorial real o no
Cuando soñamos, estamos alucinando. Un bucle de experiencia sensorial desligado de los sentidos reales gira libremente, pero también tiene un propósito productivo
La razón por la que hay retroalimentación en la percepción es que usar la interpretación de la entrada sensorial como pista hace más fácil interpretar la entrada del siguiente instante. Pero si una nueva entrada se desvía mucho de lo esperado, es importante que la interpretación en curso se reinicie y se reoriente rápido
Para corregir interpretaciones erróneas según cambios reales del contexto, no solo es importante volver a interpretar la entrada bruta, sino que ese reinicio también es una señal de que ocurrió algo nuevo o inesperado, así que probablemente también dispara aprendizaje
Por eso, la elección del término “alucinación” fue desafortunada y llevó a malentendidos
Ejemplos de artículos que lo usaban así antes de los LLM:
2021: The Curious Case of Hallucinations in Neural Machine Translation (https://arxiv.org/abs/2104.06683)
2019: Identifying Fluently Inadequate Output in Neural and Statistical Machine Translation (https://aclanthology.org/W19-6623/)
Aunque un algoritmo inteligente guíe a un predictor no inteligente de la siguiente palabra, al final sigue siendo solo un algoritmo no inteligente
Sí, clasifica la basura de una forma más elegante, pero al final sigue siendo basura
Esperaba que un enfoque parecido al aprendizaje por refuerzo reemplazara a un enfoque tipo Transformer, pero eso se parece más a un sueño imposible