¿Qué Tiene de Malo Copiar los Datos de Entrenamiento?

El fine-tuning supervisado (SFT) funciona mostrándole al modelo un prompt y una respuesta objetivo, y luego minimizando la pérdida de cross-entropy a lo largo de cada token en esa respuesta objetivo. Para una secuencia objetivo $y = (y_1, y_2, \ldots, y_T)$ condicionada en el prompt $x$, la pérdida es:

$$\mathcal{L}_{\text{SFT}}(\theta) = -\sum_{t=1}^{T} \log \pi_\theta(y_t \mid x, y_{<t})$$

Cada token en la respuesta objetivo contribuye por igual a esta suma. Si la respuesta objetivo a "¿Cuál es la capital de Francia?" es "La capital de Francia es París," entonces el modelo es penalizado tanto por asignar baja probabilidad a "La" como por asignar baja probabilidad a "París." Pero esos tokens no son igualmente importantes — "París" es la respuesta real, mientras que "La capital de Francia es" es relleno que podría formularse de docenas de maneras diferentes.

Este problema de ponderación igualitaria se agrava con un problema más profundo: SFT solo recompensa la secuencia exacta en los datos de entrenamiento. Supongamos que hay tres respuestas perfectamente válidas a la misma pregunta ("París," "Es París," y "La capital de Francia es París"). Si el ejemplo de entrenamiento contiene solo la tercera, el modelo es penalizado por producir cualquiera de las dos primeras, aunque sean correctas. SFT es esencialmente aprendizaje por imitación : el modelo aprende a imitar las demostraciones que se le proporcionaron, no a producir buenas respuestas en general.

Para tareas donde existe exactamente una secuencia de tokens correcta (por ejemplo, copiar una cadena de texto), esto funciona bien. Pero la mayoría de las tareas interesantes (escribir código, responder preguntas, resumir documentos) tienen un amplio espacio de respuestas aceptables, y el objetivo rígido de camino único de SFT infravalora sistemáticamente esa diversidad. Podemos ver esto empíricamente: los modelos entrenados con SFT a menudo producen respuestas rígidas o formulaicas, porque han aprendido a minimizar la divergencia respecto a la distribución de entrenamiento en lugar de maximizar la calidad de la respuesta (Ouyang et al., 2022) .

💡 La pérdida de SFT trata la respuesta objetivo como el único camino correcto. Si el conjunto de entrenamiento dice "La capital de Francia es París" entonces generar solo "París" (una respuesta perfectamente correcta) es penalizado porque no coincide con el token esperado en cada posición.

¿Podemos al Menos Ponderar los Tokens de Manera Diferente?

Una primera corrección natural es ponderar los tokens según su importancia. En lugar de sumar log-probabilidades uniformemente, multiplicamos cada término por un peso $w_t$ que refleja cuánto importa ese token:

$$\mathcal{L}_{\text{weighted}}(\theta) = -\sum_{t=1}^{T} w_t \log \pi_\theta(y_t \mid x, y_{<t})$$

Si establecemos $w_t = 1$ para todo $t$ recuperamos el SFT estándar. Si establecemos $w_t$ alto para los tokens que contienen la respuesta ("París") y bajo para el texto repetitivo ("La," "es"), el modelo concentra su capacidad en acertar las partes importantes. Algunos trabajos recientes hacen exactamente esto: Token-Weighted SFT utiliza un reward model separado o una heurística para asignar puntuaciones de importancia por token, y luego las usa como pesos durante el fine-tuning.

Esto ayuda con el problema de importancia desigual, pero introduce una nueva dependencia: necesitamos algo que produzca esos pesos. Una heurística basada en reglas (como aumentar el peso de entidades nombradas) es frágil y específica del dominio, por lo que en la práctica solemos recurrir a un modelo de puntuación aprendido que pueda evaluar qué tokens contienen el significado. Ese modelo de puntuación es en sí mismo una forma de señal de recompensa, y una vez que lo tenemos, surge una pregunta natural: ¿por qué limitarnos a la ponderación a nivel de token? ¿Por qué no dejar que el modelo genere libremente, puntuar la respuesta completa y optimizar directamente para esa puntuación?

El SFT con ponderación de tokens tampoco resuelve el problema de diversidad. Seguimos necesitando una respuesta de referencia para ponderar; simplemente estamos ponderando sus tokens de manera diferente. El modelo sigue imitando una única demostración; solo imita algunas partes con más énfasis que otras.

📌 La ponderación de tokens a veces se denomina "entrenamiento selectivo" o "SFT filtrado" en la literatura. La idea aparece en varias formas: enmascarar tokens de baja calidad, aumentar el peso de los pasos de razonamiento, o usar puntuaciones del reward model como pesos de importancia. Todas comparten la misma limitación: siguen requiriendo una secuencia de referencia contra la cual ponderar.

¿Y Si Simplemente Puntuáramos la Respuesta Completa?

Aquí está el salto conceptual. En lugar de dictar la secuencia exacta de tokens que el modelo debe producir, dejamos que el modelo genere libremente , y luego asignamos una recompensa escalar $r$ a la respuesta completa. Una recompensa alta significa que la respuesta fue buena; una recompensa baja significa que fue mala. El trabajo del modelo es ajustar sus parámetros para que las generaciones futuras tiendan a obtener recompensas más altas.

Este enfoque convierte la generación de lenguaje en un problema de aprendizaje por refuerzo (RL) , y cada concepto de RL se mapea directamente a un equivalente en generación de lenguaje.

  • Policy $\pi_\theta$: el modelo de lenguaje en sí. Dado un prompt (el estado), muestrea tokens (acciones) uno a la vez para producir una respuesta.
  • Acción: generar un solo token en cada paso temporal. El espacio de acciones es el vocabulario completo.
  • Trayectoria: una respuesta generada completa $(y_1, y_2, \ldots, y_T)$, análoga a un episodio en RL de juegos.
  • Reward $r$: una puntuación escalar asignada a la trayectoria completa. En RLHF, esta proviene de un reward model aprendido; en otros contextos, podría provenir de un verificador basado en reglas, un compilador o un conjunto de pruebas unitarias.
  • Retorno: la recompensa acumulada a lo largo de la trayectoria. Como típicamente asignamos una sola recompensa al final (no por token), el retorno de una respuesta es simplemente $r$.

Esto nos brinda una flexibilidad enorme. El modelo puede producir "París," "Es París," o "La capital de Francia es París," y todas obtienen una puntuación alta si al reward model le importa la corrección, no la formulación. Hemos reemplazado la supervisión rígida por token del SFT con una señal suave a nivel de respuesta que permite al modelo encontrar su propio camino.

Pero la flexibilidad tiene un costo. En SFT, cada token tiene un objetivo claro, por lo que el gradiente le indica al modelo exactamente en qué dirección moverse. En RL, el modelo genera una respuesta de 200 tokens y recibe un solo escalar al final. ¿Cuál de esos 200 tokens fue responsable de la recompensa alta (o baja)? Este es el problema de asignación de crédito , y es uno de los desafíos centrales en RL. El modelo debe descubrir, a través de muchas rondas de generación y puntuación, qué decisiones a nivel de token condujeron a buenos resultados, una señal de aprendizaje mucho más difícil que la supervisión por token del SFT. Como resultado, el entrenamiento basado en RL tiende a requerir más cómputo y más muestras para converger, y puede ser inestable si la señal de recompensa es ruidosa o los pasos de optimización son demasiado agresivos.

💡 En la práctica, casi siempre hacemos SFT primero y luego aplicamos RL encima. SFT le da al modelo un punto de partida razonable (ya sabe cómo producir texto coherente que sigue instrucciones) y RL refina su comportamiento hacia lo que los humanos realmente prefieren. Comenzar RL desde un modelo inicializado aleatoriamente sería prohibitivamente costoso porque el modelo necesitaría descubrir la fluidez básica del lenguaje mediante prueba y error.

Dónde Se Ubica Cada Enfoque en el Espectro de Flexibilidad

Podemos organizar los tres paradigmas de entrenamiento a lo largo de un espectro de rígido a flexible:

  • SFT: rígido. Cada token tiene un objetivo explícito. El entrenamiento es rápido y estable porque la señal de gradiente es densa (un término de pérdida por token), pero el modelo solo puede aprender comportamientos que aparecen textualmente en los datos de entrenamiento.
  • SFT con ponderación de tokens: ligeramente menos rígido. Sigue requiriendo una secuencia de referencia, pero nos permite enfatizar los tokens que importan. Necesita una señal de puntuación a nivel de token (un reward model o heurística).
  • RL con recompensa a nivel de respuesta: flexible. El modelo genera libremente y recibe una sola puntuación. No se necesita secuencia de referencia, pero el entrenamiento es más lento (señal de recompensa dispersa), más ruidoso (gradientes de alta varianza) y requiere una estabilización cuidadosa (que es donde entra PPO, como veremos en el siguiente artículo).

El pipeline práctico refleja este espectro: comenzamos con SFT para obtener un modelo competente, y luego cambiamos a RL para llevarlo más allá de la imitación. La fase de SFT maneja la mayor parte de la adquisición de capacidades (aprender a seguir instrucciones, producir texto bien formado, mantenerse en el tema), y la fase de RL maneja el alineamiento — empujar las respuestas del modelo hacia lo que los humanos juzgan como útil, honesto e inofensivo. Esta receta de dos etapas es exactamente cómo se entrenó InstructGPT (Ouyang et al., 2022) y sigue siendo la base de la mayoría de los sistemas de RLHF hoy en día.

Pero para hacer el paso de RL, necesitamos dos cosas: una forma de optimizar una policy basada en una señal de recompensa (el tema del siguiente artículo sobre policy gradients y PPO), y una forma de producir esa señal de recompensa en primer lugar (el tema del tercer artículo sobre reward modeling). Por ahora, la conclusión clave es que pasar de SFT a RL significa pasar de "copia esta respuesta exacta" a "produce cualquier respuesta que obtenga buena puntuación" (un cambio que desbloquea toda la flexibilidad generativa del modelo al costo de un problema de optimización más difícil).

Quiz

Pon a prueba tu comprensión de las limitaciones de SFT y el enfoque de RL.

¿Por qué el SFT estándar penaliza respuestas alternativas válidas?

¿Qué problema sigue sin resolver el SFT con ponderación de tokens?

En el enfoque de RL para generación de lenguaje, ¿qué es la 'policy'?

¿Por qué la asignación de crédito es más difícil en el entrenamiento basado en RL que en SFT?