Direct Preference Optimization (DPO)¶
1. Por que eliminar o modelo de recompensa¶
O Capítulo 11 terminou com uma receita funcional de RLHF que, tomada ao pé da letra, exige que uma equipe de alinhamento mantenha quatro modelos de linguagem grandes ao mesmo tempo: a política supervisionada por fine-tuning que iniciou tudo, uma cópia de referência dessa política congelada para fins de KL, um modelo de recompensa escalar aprendido com seu próprio conjunto de treinamento e seus próprios modos de falha, e uma cabeça de valor que estima o retorno esperado para a vantagem do proximal-policy-optimization (PPO) [src_005, src_034]. A receita também exige amostragem da política no laço interno do treinamento, o que acopla a otimização à distribuição atual de geração do modelo e adiciona a variância dos gradientes de política estocásticos por cima de todo o drama habitual do otimizador de modelos de linguagem grandes [src_034]. Nada disso é fundamental para o problema que a equipe de fato quer resolver, que é empurrar a política em direção a respostas que humanos preferem e para longe de respostas que eles não preferem.
O artigo de Rafailov et al. que abriu a era pós-PPO é mais bem lido como uma única pergunta enunciada matematicamente [src_034]. O objetivo clássico de RLHF é uma otimização restrita com uma solução conhecida em forma fechada. O modelo de recompensa só existe nessa forma fechada como argumento de uma exponencial. Então, se já temos a forma fechada em mãos, realmente precisamos ajustar o modelo de recompensa e depois fazer aprendizado por reforço contra ele, ou podemos pular ambos os estágios reorganizando a álgebra? DPO (Direct Preference Optimization) é a resposta a essa pergunta: uma única perda de entropia cruzada binária sobre razões de log-probabilidade da política que, sob o mesmo modelo de preferência de Bradley-Terry e a mesma penalidade KL do PPO-RLHF, otimiza o mesmo objetivo populacional, mas sem nunca instanciar um modelo de recompensa explícito e sem um laço interno de aprendizado por reforço [src_034]. O subtítulo do artigo, "your language model is secretly a reward model", nomeia o truque: na parametrização correta, a log-razão da política contra a referência é a recompensa implícita [src_034].
Este capítulo percorre a derivação em cinco passos, depois apresenta um esboço executável em PyTorch, em seguida examina a família de variantes que a comunidade produziu após o artigo original, e fecha com conselhos práticos sobre quando DPO é a ferramenta certa e quando não é.
2. O ótimo da política restrita por KL¶
Começamos com o mesmo objetivo de RLHF com que o Capítulo 11 terminou. Seja \(x\) um prompt e \(y\) uma resposta completa (uma sequência de tokens). Seja \(\pi_\text{ref}\) a política de referência (tipicamente o modelo supervisionado por fine-tuning), seja \(\pi\) a política que estamos otimizando, e seja \(r(x,y)\) uma hipotética recompensa verdadeira.
🎯 Intuição
Imagine a política de referência \(\pi_\text{ref}\) como um ponto de partida conhecido e "bom o suficiente", e o otimizador como um controlador puxando a política em direção a regiões do espaço de respostas preferidas pelos rotuladores humanos, com o termo KL atuando como uma coleira que a prende a \(\pi_\text{ref}\). O coeficiente \(\beta\) controla o comprimento da coleira: \(\beta\) pequeno é coleira folgada (a política pode vagar longe em busca de recompensa), \(\beta\) grande é coleira rígida (ela permanece perto da origem). A equação a seguir é a descrição em forma fechada de onde esse controlador se assenta.
O objetivo de maximização de recompensa restrita por KL é
onde \(\beta > 0\) controla quão fortemente penalizamos o desvio em relação à referência [src_034]. O Capítulo 11 motivou o termo KL como uma proteção contra reward hacking: a recompensa aprendida \(r_\phi\) é não confiável em respostas distantes da distribuição SFT, e a penalidade mantém a política no regime onde o modelo de recompensa foi treinado para ser preciso [src_005, src_034].
🔗 Conexão
O argumento da KL como proteção contra reward hacking e o modo de falha canônico de reward hacking são derivados no Capítulo 11 (De SFT a RLHF). O DPO herda o termo KL e sua motivação; o que muda aqui é que o modelo de recompensa nunca precisa ser instanciado.
Esse objetivo tem um ótimo em forma fechada. Tratando \(\pi(\cdot \mid x)\) como a variável, com a restrição de que ela seja uma distribuição de probabilidade sobre \(y\), o Lagrangiano tem um único multiplicador para a restrição de normalização. Igualar a derivada funcional a zero e resolver fornece, para cada prompt \(x\),
onde \(Z(x)\) é a função de partição por prompt que renormaliza o lado direito [src_034]. A derivação completa consiste em um multiplicador de Lagrange e um rearranjo; Rafailov et al. registram-na no Apêndice A.1 e observam que o resultado também já apareceu em trabalhos anteriores de control-as-inference — um enquadramento bayesiano que reformula o controle ótimo como inferência posterior [src_034]. Não reproduziremos a prova completa aqui, porque o que importa para o que vem em seguida é o resultado.
Vale a pena tornar explícitas duas observações antes de prosseguirmos. Primeira, \(\pi_r\) depende de \(r\) apenas através da exponencial, escalada por \(1/\beta\), razão pela qual \(\beta\) se comporta como uma temperatura nessa história. Quando \(\beta \to 0\), a política ótima concentra-se na resposta de argmax e KL se torna irrelevante; quando \(\beta \to \infty\), a política ótima colapsa de volta sobre \(\pi_\text{ref}\). Segunda, \(Z(x)\) é uma soma sobre todas as respostas possíveis para o prompt \(x\). Para modelos de linguagem com um vocabulário de \(V\) tokens e respostas de comprimento até \(T\), essa soma tem \(V^T\) termos, e a função de partição é intratável para calcular diretamente [src_034]. Essa intratabilidade é a razão pela qual o RLHF clássico recorre à amostragem PPO em vez de calcular \(\pi_r\) em forma fechada: mesmo com \(r_\phi\) em mãos, não é possível avaliar \(\pi_r(y \mid x)\) para um \(y\) arbitrário.
A contribuição do DPO é mostrar que isso não é necessário.
3. A recompensa implícita¶
🎯 Intuição
Pense em políticas e recompensas como duas faces do mesmo objeto. A forma fechada da Seção 2 vai de "recompensa → política ótima": escolha uma recompensa, obtenha \(\pi_r\). A próxima equação vai no sentido inverso, "política ótima → recompensa": se você já conhece \(\pi_r\), pode ler \(r\) como uma log-razão escalada contra a referência mais uma constante dependente apenas do prompt. As duas direções são inversas do mesmo mapeamento. É isso que justifica o slogan "seu modelo de linguagem é secretamente um modelo de recompensa" — os parâmetros \(\theta\) da política são eles próprios os parâmetros de uma recompensa implícita.
Tome o logaritmo de ambos os lados da expressão em forma fechada para \(\pi_r\) e rearranje:
Esta é a equação da recompensa implícita [src_034]. Ela diz que, sempre que uma função de recompensa \(r\) admite o ótimo restrito por KL \(\pi_r\), a recompensa pode ser reconstruída a partir da política ótima como uma log-razão escalada contra a referência mais uma constante dependente do prompt. A função de partição intratável não desapareceu — está sentada dentro de \(\beta \log Z(x)\) — mas foi movida de um lugar onde ela controla a inferência para um lugar onde, como veremos na próxima seção, ela cancela.
🤔 Pause e pense
Antes de seguir, preveja: se você substituir essa expressão em uma probabilidade de preferência de Bradley-Terry \(\sigma(r^*(x, y_w) - r^*(x, y_l))\), o que o termo \(\beta \log Z(x)\) — que depende apenas do prompt — contribui para a diferença \(r^*(x, y_w) - r^*(x, y_l)\)? (Não olhe adiante — escreva a resposta ou diga em voz alta.)
Leia esta equação em duas direções. A direção direta é a forma fechada original: escolha uma recompensa, obtenha uma política ótima. A direção inversa é a que o artigo explora: escolha uma política da forma \(\pi_\theta\), e trate a log-razão contra a referência como uma função de recompensa candidata, a menos do termo aditivo dependente do prompt. A direção inversa é o que torna a política "secretamente um modelo de recompensa": a política não está apenas sendo treinada contra uma recompensa externa, os parâmetros \(\theta\) da política são eles próprios os parâmetros de uma recompensa implícita \(\hat{r}_\theta(x, y) = \beta \log( \pi_\theta(y \mid x) / \pi_\text{ref}(y \mid x))\) [src_034]. A Seção 5.1 do artigo prova que essa reparametrização não perde nenhuma classe de recompensa que o modelo de preferência de Bradley-Terry possa identificar; citamos o resultado e seguimos em frente [src_034].
4. O cancelamento de Bradley-Terry¶
O Capítulo 11 introduziu o modelo de preferência de Bradley-Terry: dado um prompt \(x\) e duas completações \(y_1\) e \(y_2\), a probabilidade de que um humano prefira \(y_1\) sobre \(y_2\) é
onde \(\sigma\) é a função logística e \(r^*\) é a recompensa verdadeira latente [src_034]. A propriedade estrutural crucial é que essa probabilidade depende de \(r^*\) apenas através da diferença \(r^*(x, y_1) - r^*(x, y_2)\). Qualquer termo em \(r^*\) que não dependa de \(y\) — incluindo um termo dependente apenas do prompt como \(\beta \log Z(x)\) — desaparece da diferença e não contribui em nada para a probabilidade de preferência.
🔗 Conexão
O modelo de Bradley-Terry — uma sigmoide sobre diferenças de utilidade latente, onde as utilidades latentes são as recompensas verdadeiras em cada resposta — foi derivado no Capítulo 11 (De SFT a RLHF) como o modelo padrão para preferências humanas pareadas. Agora usamos sua estrutura "depende-apenas-de-diferenças" como a alavanca algébrica que aniquila \(\beta \log Z(x)\).
Substitua a expressão de recompensa implícita da Seção 3 no modelo de Bradley-Terry com \(y_1 = y_w\) (escolhida) e \(y_2 = y_l\) (rejeitada):
Os dois termos \(\beta \log Z(x)\) se cancelam porque ambas as completações compartilham o mesmo prompt [src_034]. Esse é o momento que torna o DPO livre de RL. A função de partição intratável nunca sai da fórmula; apenas observamos que a estrutura contrastiva dos dados de preferência é exatamente a estrutura que a aniquila.
Inserindo a diferença cancelada de volta na expressão de Bradley-Terry, obtemos a probabilidade de preferência sob a política ótima:
Esta é a Eq. 6 do artigo original [src_034]. A probabilidade de que um humano prefira \(y_w\) sobre \(y_l\) é totalmente determinada pela política ótima e pela referência; nenhum modelo de recompensa escalar e nenhuma função de partição aparecem.
💡 Resultado-chave
A estrutura contrastiva dos dados de preferência — mesmo prompt, duas respostas, tome a diferença — aniquila a função de partição intratável \(\beta \log Z(x)\). É isso que torna o DPO livre de RL.
5. A perda do DPO¶
Dado um conjunto de dados de preferências \(\mathcal{D} = \{(x^{(i)}, y_w^{(i)}, y_l^{(i)})\}_{i=1}^N\) de triplas — prompt, resposta escolhida, resposta rejeitada — e uma política parametrizada arbitrária \(\pi_\theta\), o objetivo do DPO é o negativo da log-verossimilhança das preferências observadas sob a expressão acima com \(\pi_\theta\) no lugar de \(\pi^*\):
Esta é a Eq. 7 do artigo, e é o objetivo de treinamento inteiro [src_034]. É entropia cruzada binária sobre um único escalar — a diferença de recompensa implícita \(\beta \log(\pi_\theta(y_w)/\pi_\text{ref}(y_w)) - \beta \log(\pi_\theta(y_l)/\pi_\text{ref}(y_l))\) — sob o rótulo "o humano disse que \(y_w\) ganhou". Não há modelo de recompensa, não há cabeça de valor, não há amostragem on-policy, e não há clipping de PPO. Treinar uma política com DPO requer apenas a mesma passagem direta (forward pass) e o mesmo carregador de dados que se usaria para um passo padrão de SFT, mais uma cópia congelada da referência para o cálculo da log-razão.
O gradiente de \(\mathcal{L}_\text{DPO}\) em relação a \(\theta\) expõe o mecanismo que o artigo chama de "ponderação dinâmica por exemplo" [src_034]:
🎯 Intuição
Leia o gradiente como um detector de erro de classificação. O termo de sigmoide entre colchetes é grande quando a recompensa implícita atualmente classifica errado o par — quando a política atribui recompensa maior à resposta rejeitada do que à escolhida — e pequeno quando a política já obtém a classificação correta. O gradiente flui onde é necessário (exemplos que o modelo erra) e ignora exemplos que já aprendeu. A equação a seguir é a forma matemática desse detector.
onde \(\hat{r}_\theta(x, y) = \beta \log( \pi_\theta(y \mid x) / \pi_\text{ref}(y \mid x))\) é a recompensa implícita [src_034]. O termo de sigmoide entre colchetes é um peso por exemplo que é grande quando a recompensa implícita atualmente classifica errado o par (atribui recompensa alta à resposta rejeitada) e pequeno quando a política já obtém a classificação correta. Essa ponderação é o que impede a perda de degenerar em um objetivo ingênuo de máxima verossimilhança em \(y_w\); sem ela, o modelo colapsa, como o artigo original documenta na Tabela 3 do Apêndice [src_034].
💡 Resultado-chave
O objetivo de treinamento do DPO é entropia cruzada binária sobre um único escalar — a diferença de recompensa implícita — sem modelo de recompensa, sem cabeça de valor, sem amostragem on-policy, e sem clipping de PPO.
🔄 Recapitulação
- Complete: partindo de uma recompensa \(r\), o ótimo restrito por KL é \(\pi_r(y \mid x) \propto \pi_\text{ref}(y \mid x) \exp(\_\_\_)\).
- Explique: por que o termo \(\beta \log Z(x)\), que depende apenas do prompt, cancela sob uma diferença de preferência de Bradley-Terry?
- Preveja: para um par \((x, y_w, y_l)\) que a política já classifica corretamente com uma grande diferença de recompensa implícita, de que valor o peso dinâmico por exemplo \(\sigma(\hat r_\theta(x, y_l) - \hat r_\theta(x, y_w))\) se aproxima, e o que isso implica para o gradiente nesse exemplo?
6. \(\beta\) como temperatura¶
Dois botões práticos determinam se uma execução de DPO produz uma política útil: a escolha da referência \(\pi_\text{ref}\) e a escolha de \(\beta\). A escolha da referência geralmente é resolvida pelo pipeline — é a política SFT que produziu as demonstrações ou, quando nenhuma política SFT está disponível, um ajuste de máxima verossimilhança às completações escolhidas [src_034]. A escolha de \(\beta\) merece seu próprio parágrafo.
Releia a equação da recompensa implícita. A recompensa implícita escala linearmente com \(\beta\), mas o mesmo acontece com o coeficiente KL no objetivo original do RLHF; mecanicamente, \(\beta\) controla quão agressivamente a perda tem permissão de empurrar as razões de log-probabilidade para longe de um. Quando \(\beta\) é muito alto, a diferença de recompensa implícita é grande para qualquer log-razão pequena, a sigmoide satura quase imediatamente, o gradiente na maioria dos exemplos se anula, e a política permanece colada à referência [src_005]. Quando \(\beta\) é muito baixo, a sigmoide permanece em sua região linear para log-razões muito grandes, a perda fica satisfeita em levar \(\log( \pi_\theta(y_w)/\pi_\text{ref}(y_w))\) a valores positivos grandes e \(\log(\pi_\theta(y_l)/\pi_\text{ref}(y_l))\) a valores negativos grandes sem limite, e a política deriva para fora da distribuição de referência, indo para regiões onde nem o conjunto de dados de preferências nem a referência podem falar sobre seu comportamento. O RLHF Book, que é a síntese aberta mais recente da prática da comunidade, relata valores típicos de \(\beta\) na faixa de \(0{,}01\) a \(0{,}5\) para fine-tuning de modelos de linguagem grandes, com \(0{,}1\) como uma primeira tentativa defensável para novos domínios [src_005].
🤔 Pause e pense
Componha o mecanismo do gradiente da §5 com a equação da recompensa implícita \(\hat r_\theta = \beta \log(\pi_\theta / \pi_\text{ref})\). O que acontece com o peso por exemplo \(\sigma(\hat r_\theta(x, y_l) - \hat r_\theta(x, y_w))\) quando \(\beta \to \infty\) para uma política que começa em \(\pi_\theta = \pi_\text{ref}\)? Preveja a consequência para a trajetória de treinamento da política antes de ler a próxima seção. (Não olhe adiante.)
⚠️ Armadilha
Os dois modos de falha nomeados aqui como teoria reaparecem na §10 como diagnósticos observáveis: \(\beta\) muito alto se manifesta como a diferença de recompensa implícita presa próxima de zero ao longo do treinamento; \(\beta\) muito baixo se manifesta como ambas as log-razões derivando na mesma direção. Procure os sintomas na §10 antes de reajustar \(\beta\).
7. Um esboço em PyTorch¶
A perda do DPO em código é curta. A única sutileza é que \(\log \pi_\theta(y \mid x)\) para uma política de modelo de linguagem é uma soma de log-probabilidades de tokens apenas sobre os tokens de resposta — os tokens do prompt são contexto de condicionamento e devem ser mascarados na soma, caso contrário a perda penaliza a política por alterar a probabilidade do prompt do usuário. O Stanford CS336 cobre o mesmo padrão de masking em suas aulas sobre treinamento de alinhamento e fine-tuning supervisionado [src_004]. O snippet a seguir é apenas a perda; o carregamento de dados, o otimizador, e a passagem direta da referência congelada são padrão.
⚠️ Armadilha
Se não mascarássemos os tokens do prompt na perda, \(\log \pi_\theta(y \mid x)\) incluiria também a verossimilhança da política sob seu próprio prompt — uma quantidade que não estamos tentando aprender — e a perda penalizaria a política por mudanças na probabilidade da distribuição do prompt. A response_mask no snippet abaixo é o que impõe a soma somente sobre a resposta.
import torch
import torch.nn.functional as F
def response_logprob(logits, labels, response_mask):
"""Sum log-probabilities over response tokens only.
logits: (B, T, V) policy logits, shifted so logits[:, t] predicts labels[:, t].
labels: (B, T) token ids for the full sequence (prompt + response).
response_mask:(B, T) 1 where the token is part of the response, 0 on prompt + padding.
"""
logp = F.log_softmax(logits, dim=-1)
token_logp = logp.gather(-1, labels.unsqueeze(-1)).squeeze(-1)
return (token_logp * response_mask).sum(dim=-1)
def dpo_loss(pi_logits_w, pi_logits_l,
ref_logits_w, ref_logits_l,
labels_w, labels_l, mask_w, mask_l, beta=0.1):
pi_lp_w = response_logprob(pi_logits_w, labels_w, mask_w)
pi_lp_l = response_logprob(pi_logits_l, labels_l, mask_l)
ref_lp_w = response_logprob(ref_logits_w, labels_w, mask_w)
ref_lp_l = response_logprob(ref_logits_l, labels_l, mask_l)
chosen_logratio = pi_lp_w - ref_lp_w
rejected_logratio = pi_lp_l - ref_lp_l
logits = beta * (chosen_logratio - rejected_logratio)
return -F.logsigmoid(logits).mean()
As passagens diretas da referência ocorrem sob torch.no_grad() porque \(\pi_\text{ref}\) está congelada. A maioria das implementações de produção armazena em cache as log-probabilidades de referência antecipadamente, já que a referência não muda durante o treinamento; isso transforma o DPO em um laço de fine-tuning de modelo único com uma tabela pré-calculada de log-probabilidades de referência por exemplo, que é uma das razões pelas quais o DPO é tão mais barato de executar do que o PPO-RLHF [src_005].
8. A família DPO¶
Em dois anos após o artigo original, a comunidade produziu um pequeno zoológico de algoritmos que mantêm a promessa do DPO de "sem modelo de recompensa, sem amostragem on-policy", enquanto corrigem uma ou outra de suas deficiências. As quatro variantes mais citadas em abril de 2026 estão resumidas abaixo, com citações primárias ao lado do RLHF Book de Lambert como referência de enquadramento de consenso [src_005].
IPO (Identity Preference Optimization, Azar et al. 2023) deriva um objetivo geral \(\Psi\)PO para aprendizado de preferências — uma família de perdas de preferência parametrizadas por uma função monótona arbitrária \(\Psi\) aplicada à diferença de recompensa implícita — e instancia o caso especial Identity, que substitui a substituta log-sigmoide do DPO por um termo de erro quadrático sobre a diferença de recompensa implícita, regredindo \(\beta \big( \log( \pi_\theta(y_w)/\pi_\text{ref}(y_w)) - \log( \pi_\theta(y_l)/\pi_\text{ref}(y_l)) \big)\) em direção a uma margem fixa, em vez de em direção a \(+\infty\) [src_052, src_005]. A motivação é robustez quando as preferências são quase determinísticas no conjunto de dados: sob a perda logística do DPO, uma preferência determinística puxa a diferença de recompensa implícita para o infinito, o que pode ser interpretado como o otimizador tentando levar \(\pi_\theta\) infinitamente longe de \(\pi_\text{ref}\). O alvo limitado do IPO previne esse overfitting [src_052, src_005].
KTO (Kahneman-Tversky Optimization, Ethayarajh et al. 2024) abandona a estrutura pareada por completo e treina em exemplos não pareados rotulados como "bom" ou "ruim" [src_053, src_005]. A perda é uma função de utilidade inspirada na teoria do prospecto sobre a recompensa implícita — a utilidade assimétrica de aversão a perdas vinda da economia comportamental, que dá nome ao K-T do acrônimo — assimétrica entre ganhos e perdas, de modo que o modelo pode aprender a partir de conjuntos de dados de feedback que consistem em curtidas e descurtidas dispersas, em vez de pares escolhido-rejeitado [src_053, src_005]. Isso importa em produção porque a maior parte do feedback de usuários é não pareada.
ORPO (Odds Ratio Preference Optimization, Hong et al. 2024) integra o aprendizado de preferências ao fine-tuning supervisionado em um único estágio, aumentando a entropia cruzada do SFT em \(y_w\) com uma penalidade de razão de chances contra \(y_l\) — penalizando o logaritmo da razão de chances escolhida-vs-rejeitada, \(\log(\pi_\theta(y_w)/(1 - \pi_\theta(y_w))) - \log(\pi_\theta(y_l)/(1 - \pi_\theta(y_l)))\), o mesmo objeto de razão de chances (odds ratio) que aparece em regressão logística [src_054, src_005]. ORPO não precisa de uma política de referência separada; a execução de treinamento começa a partir de um modelo base ou de instrução e produz uma política alinhada diretamente [src_054]. As economias são substanciais quando as fases SFT e DPO de outra forma exigiriam, cada uma, uma passagem completa pelos dados de treinamento.
SimPO (Simple Preference Optimization, Meng et al. 2024) abandona a política de referência da perda e usa a log-probabilidade média normalizada por comprimento como recompensa implícita, \(\hat{r}_\theta(x, y) = (\beta / |y|) \sum_t \log \pi_\theta(y_t \mid x, y_{<t})\), combinada com uma margem de recompensa-alvo no objetivo Bradley-Terry [src_055, src_005]. Remover a referência elimina o custo de memória de uma segunda passagem direta; a normalização por comprimento aborda um dos modos de falha mais relatados do DPO original, a saber, uma tendência a inflar o comprimento da resposta porque respostas mais longas acumulam maior diferença de log-probabilidade contra a referência [src_055, src_005].
Onde as variantes concordam e discordam¶
As quatro variantes discordam quanto à forma da perda, quanto à necessidade de uma política de referência, quanto a o feedback ser pareado ou não pareado, e quanto à normalização por comprimento. Concordam na alegação subjacente: a log-verossimilhança contrastiva das preferências contra uma recompensa implícita é sinal suficiente para alinhar um modelo de linguagem, e a maquinaria do PPO não é necessária.
9. Quando usar DPO e quando não¶
DPO se tornou o algoritmo padrão de pós-treinamento em modelos de pesos abertos em 2025-2026 porque é mais rápido, mais estável, e mais fácil de ajustar do que o PPO-RLHF [src_005]. Uma execução de DPO requer apenas uma referência congelada, um conjunto de dados de preferências, e um laço de treinamento estilo SFT; uma execução de PPO-RLHF requer um modelo de recompensa que precisa ser treinado e validado separadamente, um pipeline de amostragem online, uma cabeça de valor, e um controlador KL adaptativo que precisa ser ajustado junto com tudo o mais. Para profissionais que possuem um conjunto de dados de preferências limpo e um modelo SFT razoável, DPO simplesmente custa menos para chegar a uma política alinhada que funciona [src_005].
Métodos do tipo PPO retêm duas vantagens claras. A primeira é que a amostragem on-policy permite que o algoritmo veja o que sua política atual de fato gera, em vez do que o conjunto de dados diz que alguma política anterior gerou; isso importa quando a distribuição de treinamento se distanciou da política em otimização, como acontece após várias rodadas de refinamento iterativo. A segunda é que um sinal de recompensa forte — particularmente uma recompensa verificável, em que a recompensa é calculada programaticamente a partir da resposta em vez de aprendida a partir de preferências — confere ao PPO e a seus descendentes uma precisão que o DPO não consegue igualar, porque o DPO é fundamentalmente um algoritmo de aprendizado por preferência e não pode explorar um sinal de recompensa que tenha mais estrutura do que "\(y_w\) vence \(y_l\)" [src_005]. O Capítulo 13 retoma exatamente esse fio: quando as recompensas são programáticas (problemas de matemática com respostas finais verificáveis, código com testes unitários), a Group Relative Policy Optimization com recompensas verificáveis (GRPO + RLVR) supera o aprendizado por preferência nas tarefas que pode expressar, e a estrutura contrastiva do DPO se torna a ferramenta errada [src_005, src_002].
A monografia de Xiao e Zhu enquadra o mesmo trade-off e observa que DPO e PPO são mais bem entendidos como pontos diferentes na curva entre eficiência de dados e força de sinal, não como concorrentes por um único trono [src_002]. A maioria dos lançamentos de modelos de pesos abertos em 2025-2026 entrega DPO ou uma de suas variantes como seu estágio final de pós-treinamento; lançamentos que em vez disso entregam PPO ou GRPO são tipicamente focados em reasoning e têm uma recompensa verificável para apontar [src_005].
10. Diagnósticos¶
Três quantidades valem a pena ser registradas durante uma execução de DPO [src_005]. A primeira é a diferença de recompensa implícita, \(\beta \big(\log(\pi_\theta(y_w)/\pi_\text{ref}(y_w)) - \log(\pi_\theta(y_l)/\pi_\text{ref}(y_l))\big)\), calculada como média sobre o lote. Uma execução bem-sucedida tem essa quantidade subindo ao longo do treinamento: a política está aprendendo a atribuir maior recompensa implícita à escolhida do que à rejeitada. Uma execução em que a diferença permanece próxima de zero é uma execução em que o DPO não está aprendendo nada, geralmente porque \(\beta\) é muito alto e a sigmoide está saturando [src_005].
A segunda são as log-razões da escolhida e da rejeitada, separadamente: \(\log(\pi_\theta(y_w)/\pi_\text{ref}(y_w))\) e \(\log(\pi_\theta(y_l)/\pi_\text{ref}(y_l))\). Ambos são zero na inicialização (porque \(\pi_\theta = \pi_\text{ref}\) no início do treinamento) e divergem à medida que o treinamento progride. Uma execução patológica tem ambos os termos divergindo na mesma direção — ambos se tornando mais negativos, por exemplo — embora a diferença entre eles esteja aumentando; a política está colapsando tanto nas respostas escolhidas quanto nas rejeitadas, apenas colapsando ligeiramente mais rápido nas rejeitadas. Esse é o sintoma inicial de \(\beta\) ser muito baixo; o desfecho eventual é uma política que se distanciou muito da referência e produz texto degenerado [src_005].
A terceira é o comprimento da resposta em um conjunto de prompts mantido em separado (held-out). O DPO tem um viés documentado de comprimento: como respostas mais longas acumulam mais diferença de log-probabilidade contra a referência, o gradiente prefere implicitamente respostas escolhidas mais longas quando o próprio conjunto de dados não controla o comprimento [src_005]. Se o comprimento de resposta nos prompts de validação cresce monotonicamente com o treinamento, o comprimento está fazendo parte do trabalho que o sinal de preferência deveria fazer, e a política resultante parecerá boa no benchmark de preferências e ruim na prática. SimPO aborda isso diretamente com normalização por comprimento; o DPO original aborda isso indiretamente via conjuntos de dados de preferências controlados por comprimento e parada antecipada [src_005].
11. Para onde isso aponta¶
DPO removeu o modelo de recompensa e o laço de RL do alinhamento baseado em preferências explorando um único fato algébrico: a função de partição do ótimo restrito por KL depende apenas do prompt, e termos dependentes apenas do prompt cancelam em probabilidades de preferência contrastivas. O algoritmo resultante é uma perda de uma linha que deslocou o PPO como o método padrão de pós-treinamento para modelos de linguagem de pesos abertos na era atual.
A abordagem tem um limite estrutural, no entanto, e esse limite é o tópico do Capítulo 13. DPO é um algoritmo de aprendizado por preferência: precisa de dados pareados (escolhida, rejeitada), e o único sinal que pode extrair é "\(y_w\) venceu". Quando a recompensa por uma resposta não é uma preferência, mas uma quantidade programaticamente verificável — a resposta em uma caixa em um problema de matemática, a taxa de aprovação em uma suíte de testes unitários, a validade de uma saída estruturada — o aprendizado por preferência descarta a maior parte do sinal. Os modelos de reasoning que surgiram em 2025 (DeepSeek-R1 e seus sucessores) substituem o DPO no estágio de pós-treinamento por um algoritmo diferente, GRPO, alimentado por recompensas verificáveis em vez de preferências. O Capítulo 13 deriva esse algoritmo e argumenta sobre quando ele é a escolha certa.
🔗 Conexão
O Capítulo 13 (Modelos de raciocínio) deriva GRPO + RLVR para configurações de recompensa verificável, onde a estrutura contrastiva do DPO é a ferramenta errada. Juntos com o Capítulo 11, a trilogia de alinhamento é: PPO-RLHF (a base histórica), DPO (este capítulo, o padrão para pesos abertos), GRPO (o sucessor para recompensas verificáveis).
🔄 Recapitulação
- Complete: a recompensa implícita sob DPO é \(\hat r_\theta(x, y) = \_\_\_\).
- Explique: com suas próprias palavras, o que é o cancelamento de Bradley-Terry e por que ele torna o DPO livre de RL?
- Compare: DPO original e SimPO — qual mecanismo a normalização por comprimento corrige, e qual mecanismo a remoção da política de referência corrige?
- Preveja: um conjunto de validação mantido em separado mostra o comprimento da resposta crescendo monotonicamente com o treinamento enquanto as pontuações no benchmark de preferências também sobem; qual modo de falha do DPO esse padrão sinaliza, e qual variante da §8 o aborda mais diretamente?
Referências¶
- src_002: Xiao, T. and Zhu, J. (2025). Foundations of Large Language Models (arXiv:2501.09223v2). https://arxiv.org/pdf/2501.09223
- src_004: Hashimoto, T. and Liang, P. (2025). Stanford CS336: Language Modeling from Scratch (Spring 2025). https://stanford-cs336.github.io/spring2025/
- src_005: Lambert, N. (2026). Reinforcement Learning from Human Feedback (RLHF Book, v8). https://rlhfbook.com/
- src_034: Rafailov, R., Sharma, A., Mitchell, E., Ermon, S., Manning, C. D., and Finn, C. (2023). Direct Preference Optimization: Your Language Model is Secretly a Reward Model (arXiv:2305.18290). NeurIPS 2023. https://arxiv.org/pdf/2305.18290
- src_052: Azar, M. G., Rowland, M., Piot, B., Guo, D., Calandriello, D., Valko, M., and Munos, R. (2023). A General Theoretical Paradigm to Understand Learning from Human Preferences (arXiv:2310.12036, AISTATS 2024). https://arxiv.org/pdf/2310.12036
- src_053: Ethayarajh, K., Xu, W., Muennighoff, N., Jurafsky, D., and Kiela, D. (2024). KTO: Model Alignment as Prospect Theoretic Optimization (arXiv:2402.01306, ICML 2024). https://arxiv.org/pdf/2402.01306
- src_054: Hong, J., Lee, N., and Thorne, J. (2024). ORPO: Monolithic Preference Optimization without Reference Model (arXiv:2403.07691, EMNLP 2024). https://arxiv.org/pdf/2403.07691
- src_055: Meng, Y., Xia, M., and Chen, D. (2024). SimPO: Simple Preference Optimization with a Reference-Free Reward (arXiv:2405.14734, NeurIPS 2024). https://arxiv.org/pdf/2405.14734