Phase 18 - Lesson 03

La Familia de Optimización Directa de Preferencias (DPO)

Rafailov et al. (2023) demostraron que el óptimo de RLHF tiene una forma cerrada en términos de los datos de preferencia, por lo que se puede omitir el modelo de recompensa explícito y optimizar la política directamente. Ese hallazgo dio origen a una familia — IPO, KTO, SimPO, ORPO, BPO — cada una corrigiendo un modo de fallo de DPO. En 2026, los algoritmos de alineación directa realizan más ejecuciones de post-entrenamiento de modelos de frontera que PPO. Sin embargo, la curva de sobreoptimización de la Lección 2 sigue aplicando: los DAAs no escapan a Goodhart, solo cambian el lugar donde ataca.

Tipo: Learn Lenguajes: Python (stdlib, comparador de pérdida de preferencia con seis variantes) Prerrequisitos: Fase 18 · 01 (InstructGPT), Fase 18 · 02 (Hackeo de recompensa), Fase 10 · 08 (Fundamentos de DPO) Tiempo: ~75 minutos

Objetivos de Aprendizaje

  • Derivar la forma cerrada de DPO a partir del óptimo de RLHF con KL.
  • Presentar el modo de fallo de DPO que corrige cada uno de los algoritmos IPO, KTO, SimPO, ORPO y BPO.
  • Distinguir la "brecha de recompensa implícita" de la "fuerza de preferencia" y explicar por qué importa el mapeo de identidad de IPO.
  • Explicar por qué Rafailov et al. (NeurIPS 2024) demuestran que los DAAs se sobreoptimizan a pesar de no tener un RM explícito.

El Problema

El objetivo de RLHF (Lección 1):

max_pi E_{x,y~pi} [ r(x, y) ] - beta * KL(pi || pi_ref)

tiene un óptimo conocido:

pi*(y|x) = (1/Z(x)) * pi_ref(y|x) * exp(r(x, y) / beta)

Por lo tanto, la recompensa se define implícitamente por la proporción entre la política óptima y la de referencia:

r(x, y) = beta * log(pi*(y|x) / pi_ref(y|x)) + beta * log Z(x)

Sustituye esto en la verosimilitud de preferencia de Bradley-Terry y la función de partición Z(x) se cancela porque depende únicamente de x. Lo que queda es una pérdida en los parámetros de la política por sí sola — sin necesidad de modelo de recompensa. Eso es DPO.

El problema: la derivación asume que el óptimo es alcanzable, los datos de preferencia están dentro de la distribución y la política de referencia es el anclaje real del modo. Ninguna de estas suposiciones se cumple exactamente. Cada miembro de la familia corrige una suposición violada diferente.

El Concepto

DPO (Rafailov et al., 2023)

L_DPO = -log sigmoid(
  beta * log(pi(y_w | x) / pi_ref(y_w | x))
  - beta * log(pi(y_l | x) / pi_ref(y_l | x))
)

Qué puede salir mal:

  • La brecha de recompensa implícita beta * (log(pi/pi_ref)_w - log(pi/pi_ref)_l) es ilimitada. Una preferencia minúscula puede producir una brecha arbitrariamente grande.
  • La pérdida empuja las log-probabilities elegidas y rechazadas en direcciones opuestas. Puede reducir la log-prob absoluta elegida siempre que la rechazada caiga más rápido. Este es el fenómeno de la Respuesta Elegida Degradada (Degraded Chosen Response).
  • Las preferencias fuera de distribución (pares muy raros vs pares muy raros) producen recompensas implícitas arbitrarias.

IPO (Azar et al., 2024)

La Optimización de Preferencia por Identidad (Identity Preference Optimization) reemplaza el log-sigmoid con un mapeo de identidad en la probabilidad de preferencia. La pérdida se convierte en un error cuadrático en un objetivo acotado:

L_IPO = (log(pi(y_w | x) / pi_ref(y_w | x)) - log(pi(y_l | x) / pi_ref(y_l | x)) - 1/(2 beta))^2

La brecha está acotada por 1/(2 beta). La fuerza de preferencia y la brecha de recompensa implícita son proporcionales. Sin explosiones.

KTO (Ethayarajh et al., 2024)

La Optimización Kahneman-Tversky descarta por completo la estructura de pares. Dado un único resultado etiquetado y una señal binaria de "deseable" o "indeseable", mapea a una utilidad de la teoría de prospectos:

v(x, y) = sigma(beta * log(pi(y|x) / pi_ref(y|x)) - z_ref)

con diferentes pesos para ganancias y pérdidas (aversión a la pérdida). Beneficio: se pueden usar datos no emparejados, que son mucho más abundantes.

SimPO (Meng et al., 2024)

La Optimización Simple de Preferencia (Simple Preference Optimization) alinea la señal de entrenamiento con la generación. Elimina la política de referencia por completo y normaliza la log-verosimilitud por la longitud:

L_SimPO = -log sigmoid(
  (beta / |y_w|) * log pi(y_w | x)
  - (beta / |y_l|) * log pi(y_l | x)
  - gamma
)

con un margen gamma para estabilizar. La normalización por longitud elimina el incentivo para explotar el modo de fallo de sesgo por longitud de DPO (una y_w más larga da una mayor brecha de log-prob por construcción).

ORPO (Hong et al., 2024)

La Optimización de Preferencia por Odds-Ratio agrega un término de preferencia a la pérdida de log-verosimilitud negativa estándar de SFT:

L_ORPO = L_NLL(y_w) + lambda * L_OR
L_OR = -log sigmoid(log(odds(y_w) / odds(y_l)))

Sin política de referencia — el término de SFT es el regularizador. Entrena en una sola etapa desde el modelo base hasta el modelo alinhado. Sin checkpoint de SFT separado.

BPO (envío a ICLR 2026, OpenReview id=b97EwMUWu7)

Identifica el problema de las Respuestas Elegidas Degradadas: DPO preserva la clasificación y_w > y_l, pero la log-prob absoluta de y_w puede caer. BPO agrega una corrección de una línea que penaliza las caídas en la respuesta elegida. Reportó un +10.1% de precisión en Llama-3.1-8B-Instruct en razonamiento matemático en comparación con DPO.

El resultado universal: los DAAs todavía se sobreoptimizan

Rafailov et al. "Scaling Laws for Reward Model Overoptimization in Direct Alignment Algorithms" (NeurIPS 2024) entrenaron políticas con DPO, IPO y SLiC en múltiples conjuntos de datos bajo varios presupuestos de KL. Las curvas de recompensa real (gold) frente a KL presentan el mismo formato de pico y colapso de Gao et al. La recompensa implícita consulta muestras fuera de distribución durante el entrenamiento; la regularización KL no estabiliza esto.

Los DAAs no escapan a Goodhart. Cambian la superficie donde ataca de "modelo de recompensa sobreoptimizado" a "proporción de la política de referencia sobreoptimizada". La solución universal — mejores datos, ensembles, parada temprana — aplica a ambos.

Eligiendo entre ellos (2026)

  • Si tienes datos de preferencia emparejados grandes: DPO con beta conservadora, SimPO si el sesgo por longitud es evidente.
  • Si tienes feedback binario no emparejado: KTO.
  • Si deseas un flujo de trabajo de una sola etapa a partir de un modelo base: ORPO.
  • Si observas log-probs elegidas degradadas en los registros de DPO: BPO.
  • Si las fuerzas de preferencia varían ampliamente y DPO se está saturando: IPO.

Cada laboratorio ejecuta los cinco en una batería de pruebas y elige al ganador por tarea. No hay razón para que el óptimo sea el mismo para razonamiento matemático y seguridad.

Use It

El archivo code/main.py compara seis pérdidas (DPO, IPO, KTO, SimPO, ORPO, BPO) en un conjunto de datos de preferencia ficticio donde la fuerza de preferencia real varía por par. Cada pérdida se optimiza contra la misma muestra de 500 pares con una pequeña política softmax. Grafica la tasa de victoria final, el desvío de la log-prob elegida y la dispersión de recompensa implícita por método.

Ship It

Esta lección produce outputs/skill-preference-loss-selector.md. Dadas las estadísticas del conjunto de datos (emparejado vs no emparejado, fuerza de preferencia variable vs uniforme, distribución de longitud) y un objetivo (etapa única o SFT seguido de preferencia), recomienda una pérdida de preferencia y reporta el modo de fallo contra el que protege.

Ejercicios

  1. Ejecuta code/main.py. Reporta la caída final de la log-prob elegida para DPO y BPO. BPO debería retener una probabilidad absoluta elegida más alta — verifica esto.

  2. Modifica los datos de preferencia para que todos los pares tengan la misma fuerza. ¿Cuál de los seis métodos es el más robusto? ¿Cuál se degrada? Explica la ventaja de IPO aquí.

  3. Haz que las respuestas rechazadas sean en promedio 2 veces más largas que las elegidas. Sin cambiar nada más, muestra la explotación de longitud de DPO numéricamente y la solución de SimPO.

  4. Rafailov et al. (NeurIPS 2024) afirman que los DAAs se sobreoptimizan. Reproduce una versión de un solo punto: grafica la divergencia KL de elegida-menos-rechazada y observa la sobreoptimización en DPO con un beta grande.

  5. Lee el resumen del artículo de BPO (OpenReview b97EwMUWu7). Escribe la corrección de una línea que BPO agrega a DPO. Confirma con la implementación en code/main.py.

Términos Clave

Término Lo que dice la gente Lo que realmente significa
DPO "RLHF sin un modelo de recompensa" Pérdida derivada del óptimo de RLHF en forma cerrada; solo parámetros de política
Recompensa implícita "la proporción logarítmica" `beta * log(pi(y
IPO "DPO acotado" Reemplaza log-sigmoid con la identidad; brecha de recompensa implícita limitada por 1/(2 beta)
KTO "DPO no emparejado" Utilidad de la teoría de prospectos sobre etiquetas únicas con aversión a la pérdida
SimPO "DPO libre de referencia" Log-verosimilitud normalizada por longitud + margen; sin política de referencia
ORPO "DPO de una etapa" NLL + término de preferencia de odds-ratio; entrena desde el modelo base en una sola pasada
BPO "DPO preservador de elegida" DPO más una penalidad por disminuir la log-prob absoluta de la respuesta elegida
Elegida degradada "la elegida disminuye" DPO disminuye la log-prob elegida siempre que la rechazada caiga más rápido
DAA "algoritmo de alineación directa" Cualquier método de pérdida de preferencia que omite un RM explícito

Lecturas Recomendadas

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).