o problema
Um modelo pré-treinado em texto da internet aprende conhecimento amplo e nenhuma obediência. Ele imita a distribuição que viu, inclusive as partes que ninguém quer: o equívoco que metade das pessoas acredita, o código ruim, a resposta que soa bem e está errada. Escolher qual fatia desse repertório o modelo deve usar é o problema de alinhamento, e a forma mais bem-sucedida de resolvê-lo era RLHF — coletar julgamentos humanos de preferência entre pares de respostas e usá-los para ajustar o modelo.
O pipeline clássico tem três estágios. Primeiro o fine-tuning supervisionado. Depois, treina-se um reward model separado que aprende a pontuar respostas via cross-entropy sob o modelo de Bradley-Terry. Por fim, otimiza-se a política com PPO para maximizar essa recompensa sob uma penalidade de KL contra o modelo inicial — a penalidade existe para impedir que o modelo saia da região onde o reward model é confiável e colapse numa única resposta de recompensa alta. O custo é feio: vários modelos vivos ao mesmo tempo, amostragem do próprio modelo dentro do loop de treino, e um gradiente de política de variância alta que exige truques de normalização e ajuste fino de hiperparâmetro para não divergir.
a ideia
A solução ótima do objetivo com restrição de KL tem forma fechada e é conhecida há tempos: a política ótima é a referência reponderada por exponencial da recompensa, normalizada por uma partition function que ninguém consegue calcular. Esse termo intratável é o que sempre impediu de usar a fórmula na prática.
O movimento do paper é inverter a expressão em vez de tentar resolvê-la. Escreva a recompensa em função da política ótima, e não o contrário. A recompensa vira beta vezes o log da razão entre política e referência, mais um termo que depende só do prompt. E aí vem a mágica barata: Bradley-Terry só olha a diferença de recompensa entre duas respostas, e nessa diferença o termo do prompt cancela. Sobra uma expressão que fala apenas de log-probabilidades de dois modelos que você já tem.
como funciona
O treino vira maximum likelihood sobre pares preferidos, com uma sigmoide por cima da diferença dos log-ratios. Em PyTorch cabe em cinco linhas:
pi_logratios = pi_yw_logps - pi_yl_logps
ref_logratios = ref_yw_logps - ref_yl_logps
losses = -F.logsigmoid(beta * (pi_logratios - ref_logratios))
rewards = beta * (pi_logps - ref_logps).detach()
O gradiente aumenta a log-probabilidade da resposta preferida e diminui a da rejeitada — até aí é unlikelihood. A diferença está no coeficiente: cada exemplo é pesado por quanto o reward model implícito está ordenando o par ao contrário. Exemplo que o modelo já acerta contribui pouco; exemplo que ele inverte domina o batch. Os autores mostram que tirar esse peso faz o modelo degenerar em repetição de palavra.
O pipeline fica: pegue um dataset offline de preferências, congele a referência, otimize. Se houver modelo SFT, ele é a referência. Se não houver, treina-se um fine-tuning só nas completações preferidas para que o dataset fique dentro da distribuição da referência. Nos experimentos, beta 0,1 (0,5 em resumo), batch de 64, RMSprop com learning rate 1e-6 e 150 passos de warmup — e os autores dizem que não ajustaram beta de verdade.
Nos testes: sentimento controlado com GPT-2-large e um classificador como recompensa verdadeira, resumo em TL;DR sobre um SFT GPT-J, e diálogo de turno único no Anthropic HH com Pythia-2.8B. Na fronteira recompensa contra KL, DPO domina PPO — inclusive o PPO com acesso à recompensa verdadeira. Em CNN/DailyMail, distribuição que nenhum dos dois viu, o win rate contra os resumos de referência foi 0,36 para DPO e 0,26 para PPO na temperatura 0.
o que isso custou
DPO não elimina o trabalho caro: alguém ainda precisa coletar as preferências humanas. E não elimina o segundo modelo — a referência congelada continua em memória, e cada passo exige as log-probabilidades dela.
Por ser offline, DPO só usa os prompts que já estão rotulados; o PPO consegue explorar prompts sem rótulo. Os autores admitem que a evidência de generalização fora da distribuição é inicial, e que não sabem como a over-otimização de recompensa se manifesta aqui — suspeitam que a leve queda de desempenho ao longo do treino já seja um sintoma. Os modelos avaliados vão até 6B de parâmetros; escalar era trabalho futuro.
A avaliação também tem folga. As win rates vêm do GPT-4 e mudam conforme o prompt do juiz: com um prompt que pede concisão, os números ficam mais parecidos com o julgamento humano. Nos exemplos de erro que o próprio paper publica, a saída do DPO é longa, fluente e factualmente falsa.
onde isso aparece hoje
DPO virou a receita padrão de alinhamento fora dos laboratórios com orçamento de RL: está disponível como treinador pronto em bibliotecas de fine-tuning de código aberto, e é o caminho que a maioria dos projetos de peso aberto segue quando quer alinhar um modelo sem montar infraestrutura de PPO. A pergunta que o paper deixou aberta — se aquilo escala para modelos ordens de magnitude maiores — foi respondida na prática pelos anos seguintes, com uma família de variantes que mexem na função de perda mantendo a mesma inversão de origem: o reward model não precisa existir separado da política.