O que é
Muitas coisas que você deseja de um modelo são mais fáceis de julgar do que de descrever. Qual de duas respostas é mais clara, mais específica, mais alinhada à marca, menos propensa a inventar um recurso? Um revisor pode responder a isso em segundos, mesmo quando nenhuma das respostas é perfeita. O ajuste de preferência transforma esses julgamentos em dados de treinamento: cada registro é um par, um prompt com uma resposta preferida e uma não preferida.
A Otimização Direta de Preferência (DPO), introduzida por Rafailov e colegas em 2023, é a maneira mais amplamente utilizada para treinar nesses pares. O subtítulo do artigo deles resume a ideia: “seu modelo de linguagem é secretamente um modelo de recompensa”.
De onde vem: RLHF
Para ver o que o DPO simplifica, comece com o aprendizado por reforço a partir de feedback humano (RLHF), a receita por trás do InstructGPT e da primeira onda de assistentes de chat. Após o pré-treinamento, ele possui três estágios:
- Ajuste fino supervisionado em demonstrações, para obter um modelo que responda no formato correto.
- Treinar um modelo de recompensa: uma rede separada que lê um prompt e uma resposta e gera uma pontuação, ajustada para que as respostas preferidas tenham uma pontuação mais alta do que as não preferidas.
- Aprendizado por reforço, geralmente PPO: o modelo escreve respostas, o modelo de recompensa as pontua, e o modelo é atualizado para obter pontuações mais altas, com uma penalidade por se desviar muito do modelo supervisionado.
Funciona: no artigo do InstructGPT, as pessoas preferiram as saídas de um modelo de 1,3 bilhão de parâmetros treinado dessa forma às do GPT-3 de 175 bilhões de parâmetros. Mas é pesado. O estágio de reforço gera texto dentro do loop de treinamento, mantém vários modelos na memória ao mesmo tempo e é sensível às suas configurações.
Vários modelos em jogo ao mesmo tempo (o modelo sendo treinado, sua referência, o modelo de recompensa e um modelo de valor), e o texto é gerado dentro do ciclo de treinamento. Poderoso, mas lento e sensível às configurações.
Sem modelo de recompensa e sem amostragem durante o treinamento. Ele é executado como um trabalho supervisionado em pares, o que o torna mais barato e muito mais estável.
Como o DPO funciona
Tanto o modelo de recompensa do RLHF quanto o DPO baseiam-se no mesmo modelo de escolha humana, o modelo de Bradley-Terry. Ele afirma que, se duas respostas tiverem pontuações de qualidade ocultas, a chance de uma pessoa preferir a primeira é a sigmoide da diferença entre as pontuações:
P(A preferred over B) = σ(r_A − r_B) = 1 / (1 + e^−(r_A − r_B))
r_A − r_B = 0 → 0.50
r_A − r_B = 1 → 0.73
r_A − r_B = 2 → 0.88Apenas as diferenças importam: adicione o mesmo valor a ambas as pontuações e a probabilidade não mudará. Uma diferença de 0 é como jogar uma moeda; uma diferença de 2 significa que a primeira resposta vence 88% das vezes.
O estágio de reforço do RLHF maximiza a recompensa enquanto paga uma penalidade, ponderada por β, por se afastar de um modelo de referência (a penalidade é a divergência KL entre os dois). Os autores do DPO mostraram que esse objetivo tem uma solução exata: o melhor modelo possível é a referência reponderada pela exponencial da recompensa ÷ β. Invertendo a lógica, cada modelo define uma recompensa implícita: β vezes o logaritmo de quão mais provável ele considera uma resposta do que a referência. Coloque isso no modelo de Bradley-Terry e as partes difíceis de calcular se anulam, deixando uma perda que precisa de apenas quatro números por par:
loss = −ln σ( β × [ (log π(chosen) − log π_ref(chosen))
− (log π(rejected) − log π_ref(rejected)) ] )
implicit reward of an answer = β × (log π(answer) − log π_ref(answer))- log π(chosen) e log π(rejected): a probabilidade de o modelo em treinamento encontrar cada resposta completa, como a soma das probabilidades logarítmicas de seus tokens.
- log π_ref(…): os mesmos números do modelo de referência, uma cópia congelada do modelo como estava quando o treinamento começou.
- β: quão fortemente o modelo é mantido nessa referência. Um valor menor permite que ele se mova mais.
- σ: a sigmoide. Sua saída é lida como “a probabilidade de que a recompensa implícita do modelo concorde com a preferência humana”. A perda é menos o seu logaritmo, portanto, é grande quando o modelo discorda e próxima de 0 quando ele claramente concorda.
O treinamento reduz a perda ao aumentar a probabilidade da resposta escolhida em relação à referência, diminuindo a da rejeitada, ou ambos. O gradiente também pondera cada par pelo quão errado o modelo está no momento: pares já classificados corretamente por uma ampla margem quase não contribuem, enquanto pares classificados de forma incorreta contribuem mais. O artigo relata que, sem essa ponderação, o modelo pode degenerar.
- As probabilidades logarítmicas do modelo: escolhido −42,0, rejeitado −51,0. As do modelo de referência: escolhido −45,0, rejeitado −50,0.
- Razões logarítmicas em relação à referência: escolhido −42,0 − (−45,0) = +3,0; rejeitado −51,0 − (−50,0) = −1,0.
- Margem: 3,0 − (−1,0) = 4,0. Multiplicado por β = 0,1 resulta em 0,4. Dividido da mesma forma, as recompensas implícitas são +0,30 para o escolhido e −0,10 para o rejeitado.
- σ(0,4) ≈ 0,60, portanto a perda é −ln 0,60 ≈ 0,51, uma redução em relação a 0,69 no início, quando ambas as razões logarítmicas eram 0.
O que isso significa na prática
- Mais barato e mais estável que o RLHF. Não há modelo de recompensa para treinar e nenhum texto é gerado durante o treinamento. Ele é executado como um trabalho supervisionado em pares, com uma cópia congelada do modelo inicial ao lado.
- Offline. Ele aprende a partir de um conjunto fixo de pares. As respostas não precisam vir do modelo que está sendo treinado, mas os pares próximos ao que ele realmente escreve são os que mais ensinam.
- Relativo, não absoluto. Ele amplia a lacuna entre as respostas. Pesquisas descobriram que a própria probabilidade da resposta escolhida frequentemente cai durante o treinamento (“deslocamento de probabilidade”), desde que a da rejeitada caia mais rápido.
- Não pode adicionar conhecimento. O DPO reclassifica o comportamento que o modelo já pode produzir. Se nenhuma das respostas for algo que o modelo poderia escrever, há pouco a aprender, e é por isso que ele normalmente segue o ajuste fino supervisionado.
Formatos de dados
Os provedores nomeiam os campos de forma diferente, mas todo formato armazena as mesmas três coisas: o prompt, a melhor resposta e a pior resposta. Um formato hospedado:
{
"input": {"messages": [
{"role": "system", "content": "You are Scalata's support assistant."},
{"role": "user", "content": "How do I reset my password?"}
]},
"preferred_output": [
{"role": "assistant", "content": "Open Settings → Security and choose Reset password. You'll get an email link valid for 30 minutes."}
],
"non_preferred_output": [
{"role": "assistant", "content": "Please contact support to reset your password."}
]
}Treinadores de código aberto, como o Hugging Face TRL, usam prompt, chosen e rejected, e aceitam toda a conversa anterior como o prompt:
{"prompt": [
{"role": "user", "content": "I uploaded a CSV yesterday."},
{"role": "assistant", "content": "Thanks — it's in Local Storage."},
{"role": "user", "content": "Can I use it in a dashboard?"}],
"chosen": [{"role": "assistant", "content": "Yes: open Dashboards → Add widget → pick the file."}],
"rejected": [{"role": "assistant", "content": "Maybe."}]}Algumas implementações hospedadas treinam em apenas um turno, de modo que os turnos anteriores devem ser incorporados à última mensagem do usuário como contexto. Outras mantêm a conversa como mensagens separadas.
Erros comuns
- Executar o DPO em um modelo base simples que não sabe nada sobre o seu produto. Ambas as respostas em cada par costumam ser igualmente desinformadas, portanto, há pouco sinal.
- “Confiante, mas errado”: com poucos pares, o modelo copia o estilo das respostas preferidas (nomes específicos, etapas numeradas, maior extensão) sem o conhecimento por trás delas, e inventa detalhes.
- Pares cujas respostas diferem apenas na formulação. O modelo aprende ruído ou aprende que a extensão é o que você prefere.
- Tratar uma queda na perda do DPO como prova de respostas melhores. Isso mostra que o modelo separa seus pares; apenas uma avaliação mostra se as respostas melhoraram.
- Muitas épocas ou uma taxa de aprendizado muito alta. O ajuste de preferência geralmente precisa de 1 a 2 épocas e uma taxa de aprendizado menor do que o treinamento supervisionado.
Referências e leitura complementar
Fontes externas abrem em uma nova aba.
- 01Direct Preference Optimization: Your Language Model is Secretly a Reward ModelRafailov et al., 2023 · arXiv · arxiv.orgO artigo original: a derivação do RLHF, a perda e os experimentos contra o PPO.
- 02Training language models to follow instructions with human feedbackOuyang et al., 2022 · arXiv · arxiv.orgInstructGPT: o pipeline RLHF de três estágios que o DPO simplifica.
- 03Deep reinforcement learning from human preferencesChristiano et al., 2017 · arXiv · arxiv.orgO artigo que introduziu o aprendizado de uma recompensa a partir de comparações humanas, primeiro para jogos e robótica.
- 04Bradley–Terry modelWikipedia · en.wikipedia.orgO modelo estatístico de comparações em pares por trás tanto dos modelos de recompensa quanto do DPO.
- 05DPO TrainerHugging Face TRL docs · huggingface.coUma implementação de código aberto amplamente utilizada: formato de dados, variantes de perda e métricas registradas.