Cómo funciona

El DPO simplifica el RLHF. En lugar de entrenar un modelo de recompensa y luego optimizar con PPO, el DPO usa pares de respuesta preferida y respuesta rechazada y ajusta el modelo directamente para aumentar la probabilidad de la preferida.

La función de pérdida compara las probabilidades relativas de las dos respuestas, penalizando cuando el modelo favorece la rechazada. El parámetro beta controla la fuerza de la penalización: valores más altos mantienen al modelo más cerca del original.

El DPO elimina la necesidad de un modelo de recompensa separado y de RL complejo, haciendo la alineación más estable y barata.

Ejemplo práctico

Dado el prompt "Explique recursión", con la respuesta A clara, con ejemplo, preferida sobre la B confusa, el DPO ajusta el modelo para generar A con más frecuencia.

Python
loss = -log(sigmoid(beta * (logp_preferred - logp_rejected)))

Los datos de preferencia pueden provenir de anotadores humanos o generarse de forma sintética por un modelo más fuerte que evalúe respuestas de un modelo más pequeño.

Para qué sirve

Alinear modelos a preferencias humanas de forma más estable y barata que RLHF. Se usa en modelos abiertos como Zephyr y en ajustes finos de asistentes.

El DPO es especialmente útil cuando se tienen datos de preferencia pero no recursos para entrenar modelos de recompensa y ejecutar PPO.