Paper · Ricerca fondamentale
DPO — Direct Preference Optimization: Fine-Tuning da Preferenze senza Reinforcement Learning
Fonte originale: Rafailov et al. · Stanford 2023 · arxiv.org/abs/2305.18290 — sintesi e rielaborazione in parole proprie.
Cos'è: DPO (Direct Preference Optimization) è un paper di Rafael Rafailov, Archit Sharma e colleghi di Stanford pubblicato nel maggio 2023. Propone un metodo per addestrare i modelli linguistici a seguire preferenze umane che elimina completamente la fase di reinforcement learning e il reward model separato di RLHF, sostituendoli con una semplice funzione di loss applicata direttamente al language model. La semplicità matematica e la stabilità pratica ne hanno fatto il metodo di fine-tuning preferenziale di riferimento nell'anno successivo alla pubblicazione.
Il problema di RLHF: instabilità, costo, reward hacking
Quando OpenAI ha presentato InstructGPT nel 2022, il metodo usato per allineare GPT-3 era RLHF (Reinforcement Learning from Human Feedback). Il processo si articolava in tre fasi distinte. Prima, il modello pre-addestrato veniva fine-tunato con Supervised Fine-Tuning (SFT) su dati dimostrativi di alta qualità scritti da annotatori umani. Poi si addestrava un reward model separato: annotatori umani valutavano coppie di risposte del modello (risposta A vs risposta B), e questo classificatore imparava a predire quale risposta un umano avrebbe preferito. Infine, il language model originale veniva ottimizzato con PPO (Proximal Policy Optimization) — un algoritmo di reinforcement learning — per massimizzare il reward assegnato dal reward model.
Questa pipeline funzionava, come dimostrava InstructGPT. Ma presentava tre problemi strutturali che chiunque l'avesse implementata conosceva bene. Il primo era l'instabilità: il ciclo RL con PPO è notoriamente fragile. I giusti iperparametri per il KL-penalty (che impedisce al modello di allontanarsi troppo dal policy iniziale) variavano da modello a modello. Un ciclo di RL mal calibrato poteva far collassare il modello in comportamenti degeneri — risposte brevissime, risposte ripetitive, jailbreak involontari — in modo apparentemente imprevedibile.
Il secondo problema era il costo computazionale e organizzativo: la pipeline richiedeva di mantenere in memoria simultaneamente il policy model (il LLM che si stava addestrando), il reference model (copia frozen del LLM pre-RLHF), il reward model, e il value model di PPO. Su GPU con memoria limitata, questo era spesso proibitivo. E richiedeva team con competenze RL specialistiche che non tutti i laboratori possedevano.
Il terzo problema era il reward hacking: il modello imparava a ingannare il reward model anziché a migliorare genuinamente le risposte. Il reward model era un proxy imperfetto delle preferenze umane. Un ottimizzatore sufficientemente potente trovava invariabilmente le sue debolezze — risposte che sembravano buone al classificatore ma risultavano inutili o fuorvianti a utenti reali. Questo è un esempio concreto del problema fondamentale dell'allineamento: ottimizzare un proxy può allontanarsi dall'obiettivo reale.
L'insight matematico di DPO
Rafailov et al. partono da un'osservazione matematica: esiste una connessione formale tra il problema di ottimizzazione che RLHF cerca di risolvere e la distribuzione del language model. Se si scrive esplicitamente la soluzione ottima del problema RL con KL-constraint, si può esprimere il reward implicito di ogni risposta direttamente in termini delle probabilità assegnate dal language model e dal reference model, senza bisogno di un reward model separato.
In forma semplificata: il reward implicito di una risposta y dato un prompt x è proporzionale a log(π_θ(y|x) / π_ref(y|x)), ovvero il log-ratio tra la probabilità assegnata dal modello in training e la probabilità del modello di riferimento. Inserendo questa espressione nella funzione di perdita Bradley-Terry (il modello probabilistico usato per le preferenze umane), si ottiene una loss chiusa che dipende solo dalle log-probabilità del modello policy e del reference model sulle risposte preferite e rifiutate.
La loss DPO è questa:
L_DPO = −E[log σ(β · log(π_θ(y_w|x)/π_ref(y_w|x)) − β · log(π_θ(y_l|x)/π_ref(y_l|x)))]
dove y_w è la risposta preferita ("winner"), y_l la risposta rifiutata ("loser"), β è un iperparametro di temperatura, e σ è la funzione sigmoide. Non c'è reward model. Non c'è RL. Non c'è PPO. C'è una sola funzione di loss che si applica con standard backpropagation, esattamente come un qualsiasi fine-tuning supervisionato.
Adozione rapida: Llama 2 Chat, Zephyr, Mistral Instruct
La semplicità di implementazione di DPO ha guidato un'adozione straordinariamente rapida nella community open-source. Entro pochi mesi dalla pubblicazione del paper, DPO era il metodo preferito per il fine-tuning di praticamente tutti i modelli open-source della generazione 2023–2024.
Llama 2 Chat di Meta (luglio 2023) usa una combinazione di RLHF e DPO nelle fasi finali di allineamento. Zephyr 7B del team HuggingFace (ottobre 2023) è costruito su Mistral 7B fine-tunato con DPO puro su un dataset di preferenze sintetiche (UltraFeedback) — e supera Llama 2 13B Chat su molti benchmark con un terzo dei parametri. Mistral Instruct e le sue varianti usano DPO nelle fasi di allineamento. OpenHermes, Nous-Hermes, OpenChat — i modelli open-source più scaricati su HuggingFace nel 2023 — usano tutti DPO o varianti.
Questo non significa che DPO abbia soppiantato completamente RLHF nei laboratori commerciali: OpenAI, Anthropic e DeepMind continuano a usare pipeline più complesse per i loro modelli flagship. Ma per la ricerca e per chi vuole allineare modelli open-source con risorse limitate, DPO è diventato il punto di partenza ovvio.
Confronto pratico con RLHF: quando usare cosa
DPO è più facile da implementare, più stabile, richiede meno memoria e meno competenze specialistiche. Basta un dataset di coppie (prompt, risposta_preferita, risposta_rifiutata) e una funzione di loss standard. Il training è deterministico e prevedibile come qualsiasi fine-tuning supervisionato.
RLHF con PPO ha però vantaggi specifici che DPO non replica perfettamente. PPO permette un'ottimizzazione online: il modello genera risposte, un umano (o un reward model) le valuta in tempo reale, il feedback viene immediatamente integrato. DPO è invece un metodo offline: impara da un dataset di preferenze raccolto in anticipo. Se la distribuzione dei prompt futuri è molto diversa da quella del dataset di preferenze, DPO generalizza peggio.
Un'ulteriore differenza: con RLHF è possibile usare un reward model per generare feedback su dati non etichettati (scalando il segnale di supervisione). Con DPO puro il segnale è limitato ai dati di preferenza disponibili. Per i modelli più grandi e ambiziosi, la pipeline ibrida — SFT + reward model + DPO al posto di PPO — sta diventando una pratica comune.
Varianti: ORPO, SimPO e le evoluzioni del 2024
Il successo di DPO ha stimolato una serie di varianti che cercano di risolvere i suoi limiti o semplificarlo ulteriormente. ORPO (Odds Ratio Preference Optimization, Hong et al. 2024) elimina anche la dipendenza dal reference model: incorpora direttamente il segnale di preferenza nel loss di SFT usando il rapporto tra le odds delle risposte preferite e rifiutate. Questo rende il training ancora più efficiente in memoria — non serve tenere il reference model in memoria — e sembra produrre risultati comparabili o superiori a DPO su molti task.
SimPO (Simple Preference Optimization, Meng et al. 2024) usa la media dei log-probability invece del log-ratio con il reference model, e aggiunge un margine di reward target. Rimuove anche la necessità del reference model e ottiene performance state-of-the-art su benchmark di istruzione su sequenze come AlpacaEval 2 e Arena-Hard. La competizione tra varianti DPO è diventata uno dei sottocampi più attivi della ricerca sull'allineamento nel 2024.
Limitazioni: la qualità dei dati di preferenza è tutto
DPO non è immune da problemi fondamentali. Il suo punto debole principale è la dipendenza totale dalla qualità e copertura dei dati di preferenza. RLHF con PPO può esplorare lo spazio delle risposte in modo attivo, generando e valutando risposte su distribuzioni di prompt nuove. DPO impara esclusivamente dal dataset fornito.
Se il dataset di preferenze è biased — per esempio, contiene solo risposte di media lunghezza, o solo certi tipi di istruzioni — il modello fine-tunato rifletterà questi bias in modo rigido. Se le annotazioni di preferenza sono inconsistenti o di bassa qualità (un problema reale con il crowd-sourcing su larga scala), la loss DPO può spingere il modello in direzioni indesiderate senza alcun meccanismo di correzione intermedia.
Per questa ragione, la qualità dei dataset di preferenza — UltraFeedback, Nectar, Capybara, OpenOrca — è diventata una delle variabili più critiche nel fine-tuning open-source. DPO ha democratizzato la tecnica di allineamento ma ha anche spostato il collo di bottiglia: da "avere un team con competenze RL" a "avere un buon dataset di preferenze".
Link alla fonte originale
Paper originale EN, Rafailov et al. Stanford, maggio 2023. Implementazioni di riferimento disponibili su GitHub (eric-mitchell/direct-preference-optimization).