Qué es
Muchas de las cosas que se esperan de un modelo son más fáciles de juzgar que de redactar. ¿Cuál de dos respuestas es más clara, más específica, más acorde a la marca o menos propensa a inventar una función? Un revisor puede responder a esto en segundos, incluso cuando ninguna de las respuestas es perfecta. El ajuste de preferencias convierte esos juicios en datos de entrenamiento: cada registro es un par, un prompt con una respuesta preferida y otra no preferida.
La Optimización Directa de Preferencias (DPO), introducida por Rafailov y sus colegas en 2023, es la forma más utilizada de entrenar con este tipo de pares. El subtítulo de su artículo resume la idea: «su modelo de lenguaje es, en secreto, un modelo de recompensa».
De dónde proviene: RLHF
Para entender lo que simplifica la DPO, comencemos con el aprendizaje por refuerzo a partir de retroalimentación humana (RLHF), la receta detrás de InstructGPT y la primera ola de asistentes de chat. Después del preentrenamiento, consta de tres etapas:
- Ajuste fino supervisado sobre demostraciones, para obtener un modelo que responda con la estructura adecuada.
- Entrenar un modelo de recompensa: una red independiente que lee un prompt y una respuesta y genera una puntuación, ajustada para que las respuestas preferidas obtengan una puntuación mayor que las no preferidas.
- Aprendizaje por refuerzo, generalmente PPO: el modelo redacta respuestas, el modelo de recompensa las puntúa y el modelo se actualiza para obtener una puntuación mayor, con una penalización si se desvía demasiado del modelo supervisado.
Funciona: en el artículo de InstructGPT, las personas prefirieron los resultados de un modelo de 1300 millones de parámetros entrenado de esta manera frente a los del GPT-3 de 175 000 millones de parámetros. Pero es un proceso pesado. La etapa de refuerzo genera texto dentro del bucle de entrenamiento, mantiene varios modelos en memoria a la vez y es sensible a su configuración.
Varios modelos en juego a la vez (el modelo en entrenamiento, su referencia, el modelo de recompensa y un modelo de valor), y el texto se genera dentro del bucle de entrenamiento. Potente, pero lento y sensible a la configuración.
Sin modelo de recompensa ni muestreo durante el entrenamiento. Se ejecuta como un trabajo supervisado sobre pares, lo que lo hace más económico y mucho más estable.
Cómo funciona DPO
Tanto el modelo de recompensa del RLHF como la DPO se basan en el mismo modelo de elección humana, el modelo de Bradley-Terry. Este establece que, si dos respuestas tienen puntuaciones de calidad ocultas, la probabilidad de que una persona prefiera la primera es la sigmoide de la diferencia entre las puntuaciones:
P(A preferred over B) = σ(r_A − r_B) = 1 / (1 + e^−(r_A − r_B))
r_A − r_B = 0 → 0.50
r_A − r_B = 1 → 0.73
r_A − r_B = 2 → 0.88Solo importan las diferencias: si se suma la misma cantidad a ambas puntuaciones, la probabilidad no cambia. Una diferencia de 0 equivale a lanzar una moneda al aire; una diferencia de 2 significa que la primera respuesta gana el 88 % de las veces.
La etapa de refuerzo del RLHF maximiza la recompensa al tiempo que paga una penalización, ponderada por β, por alejarse de un modelo de referencia (la penalización es la divergencia KL entre ambos). Los autores de la DPO demostraron que este objetivo tiene una solución exacta: el mejor modelo posible es la referencia reponderada por la exponencial de la recompensa ÷ β. Visto de otro modo, cada modelo define una recompensa implícita: β multiplicada por el logaritmo de cuánto más verosímil considera una respuesta en comparación con la referencia. Al introducir esto en el modelo de Bradley-Terry, las partes difíciles de calcular se anulan, dejando una pérdida que solo necesita cuatro números por par:
loss = −ln σ( β × [ (log π(chosen) − log π_ref(chosen))
− (log π(rejected) − log π_ref(rejected)) ] )
implicit reward of an answer = β × (log π(answer) − log π_ref(answer))- log π(chosen) y log π(rejected): la probabilidad que el modelo en entrenamiento asigna a cada respuesta completa, calculada como la suma de las probabilidades logarítmicas de sus tokens.
- log π_ref(…): los mismos valores del modelo de referencia, una copia congelada del modelo tal como estaba al inicio del entrenamiento.
- β: con qué firmeza se sujeta el modelo a esa referencia. Un valor menor le permite alejarse más.
- σ: la sigmoide. Su resultado se interpreta como «la probabilidad de que la recompensa implícita del modelo coincida con la preferencia humana». La pérdida es el negativo de su logaritmo, por lo que es alta cuando el modelo disiente y cercana a 0 cuando coincide claramente.
El entrenamiento reduce la pérdida al aumentar la verosimilitud de la respuesta elegida en relación con la referencia, al disminuir la de la rechazada, o ambas cosas. El gradiente también pondera cada par en función de lo equivocado que esté el modelo en ese momento: los pares que ya están clasificados correctamente por un amplio margen casi no contribuyen, mientras que los clasificados incorrectamente son los que más aportan. El artículo señala que, sin esta ponderación, el modelo puede degenerar.
- Las probabilidades logarítmicas del modelo: elegido −42.0, rechazado −51.0. Las del modelo de referencia: elegido −45.0, rechazado −50.0.
- Razones logarítmicas frente a la referencia: elegido −42.0 − (−45.0) = +3.0; rechazado −51.0 − (−50.0) = −1.0.
- Margen: 3.0 − (−1.0) = 4.0. Multiplicado por β = 0.1 da 0.4. Dividido de la misma manera, las recompensas implícitas son +0.30 para el elegido y −0.10 para el rechazado.
- σ(0.4) ≈ 0.60, por lo que la pérdida es −ln 0.60 ≈ 0.51, una reducción frente al 0.69 inicial, cuando ambas razones logarítmicas eran 0.
Qué significa esto en la práctica
- Más económico y estable que el RLHF. No hay un modelo de recompensa que entrenar ni se genera texto durante el entrenamiento. Se ejecuta como un trabajo supervisado sobre pares, junto con una copia congelada del modelo inicial.
- Fuera de línea. Aprende de un conjunto fijo de pares. No es necesario que las respuestas provengan del modelo que se está entrenando, pero los pares similares a lo que realmente escribe son los que más le enseñan.
- Relativo, no absoluto. Amplía la brecha entre las respuestas. Las investigaciones han revelado que la propia verosimilitud de la respuesta elegida suele disminuir durante el entrenamiento («desplazamiento de la verosimilitud»), siempre y cuando la de la rechazada disminuya más rápido.
- No puede añadir conocimiento. La DPO reclasifica el comportamiento que el modelo ya puede producir. Si ninguna de las respuestas es algo que el modelo podría escribir, hay poco que aprender, razón por la cual normalmente sigue al ajuste fino supervisado.
Formatos de datos
Los proveedores nombran los campos de forma diferente, pero todos los formatos almacenan las mismas tres cosas: el prompt, la mejor respuesta y la peor respuesta. Un formato alojado:
{
"input": {"messages": [
{"role": "system", "content": "You are Scalata's support assistant."},
{"role": "user", "content": "How do I reset my password?"}
]},
"preferred_output": [
{"role": "assistant", "content": "Open Settings → Security and choose Reset password. You'll get an email link valid for 30 minutes."}
],
"non_preferred_output": [
{"role": "assistant", "content": "Please contact support to reset your password."}
]
}Los entrenadores de código abierto como Hugging Face TRL utilizan prompt, chosen y rejected, y aceptan toda la conversación anterior como el prompt:
{"prompt": [
{"role": "user", "content": "I uploaded a CSV yesterday."},
{"role": "assistant", "content": "Thanks — it's in Local Storage."},
{"role": "user", "content": "Can I use it in a dashboard?"}],
"chosen": [{"role": "assistant", "content": "Yes: open Dashboards → Add widget → pick the file."}],
"rejected": [{"role": "assistant", "content": "Maybe."}]}Algunas implementaciones alojadas se entrenan en un solo turno, por lo que los turnos anteriores deben integrarse en el último mensaje del usuario como contexto. Otras mantienen la conversación como mensajes separados.
Errores comunes
- Ejecutar DPO en un modelo base simple que no sabe nada sobre su producto. A menudo, ambas respuestas de cada par están igual de desinformadas, por lo que hay poca señal.
- «Seguro pero equivocado»: con pocos pares, el modelo copia el estilo de las respuestas preferidas (nombres específicos, pasos numerados, mayor longitud) sin el conocimiento que las respalda, e inventa detalles.
- Pares cuyas respuestas solo difieren en la redacción. El modelo aprende ruido, o aprende que la longitud es lo que usted prefiere.
- Tratar la caída de la pérdida de DPO como prueba de mejores respuestas. Esto solo demuestra que el modelo separa sus pares; solo una evaluación demuestra si las respuestas han mejorado.
- Demasiadas épocas o una tasa de aprendizaje demasiado alta. El ajuste de preferencias suele requerir de 1 a 2 épocas y una tasa de aprendizaje menor que el entrenamiento supervisado.
Referencias y lecturas adicionales
Las fuentes externas se abren en una pestaña nueva.
- 01Direct Preference Optimization: Your Language Model is Secretly a Reward ModelRafailov et al., 2023 · arXiv · arxiv.orgEl artículo original: la derivación a partir del RLHF, la pérdida y los experimentos frente a PPO.
- 02Training language models to follow instructions with human feedbackOuyang et al., 2022 · arXiv · arxiv.orgInstructGPT: el proceso de RLHF de tres etapas que simplifica la DPO.
- 03Deep reinforcement learning from human preferencesChristiano et al., 2017 · arXiv · arxiv.orgEl artículo que introdujo el aprendizaje de una recompensa a partir de comparaciones humanas, inicialmente para juegos y robótica.
- 04Bradley–Terry modelWikipedia · en.wikipedia.orgEl modelo estadístico de comparaciones emparejadas detrás tanto de los modelos de recompensa como de DPO.
- 05DPO TrainerHugging Face TRL docs · huggingface.coUna implementación de código abierto muy utilizada: formato de datos, variantes de pérdida y métricas registradas.