antonio leandro

ia generativa

Direct Preference Optimization: Your Language Model is Secretly a Reward Model

paper · núcleo · Rafael Rafailov, Archit Sharma, Eric Mitchell, et al. ·

a tese

a política já é o reward model: dá para resolver o mesmo objetivo do rlhf com uma perda de classificação binária, sem treinar recompensa separada, sem amostrar do modelo e sem rl

o que fica

  1. A recompensa pode ser lida direto da política: beta vezes o log da razão entre a política e o modelo de referência é uma função de recompensa válida, e o paper prova que essa reparametrização não perde generalidade.
  2. A constante intratável do problema (a partition function) desaparece porque o modelo de Bradley-Terry só depende da diferença de recompensa entre duas respostas, e a diferença cancela o termo.
  3. DPO é offline: não amostra do modelo durante o treino, o que elimina o loop de rollout, o crítico e os prompts extras não rotulados que o PPO consome.
  4. O peso dinâmico do gradiente não é detalhe: sem ele a receita vira unlikelihood pura, que nos testes dos autores gerava texto degenerado repetindo a mesma palavra.
  5. DPO ainda precisa de um modelo de referência congelado e de um dataset de preferências próximo da distribuição dele — quando não existe SFT, os autores treinam um modelo só nas respostas preferidas para reduzir o descasamento.
  6. Em TL;DR, DPO teve 61% de win rate contra as referências humanas na avaliação por GPT-4, ante 57% do PPO, e com muito menos sensibilidade à temperatura de amostragem.

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.

lido na íntegra por pipeline de llm, revisado por antonio leandro antes de publicar ·