Phase 18 - Lesson 03
A Família de Otimização Direta de Preferências (DPO)
Rafailov et al. (2023) mostraram que o ótimo do RLHF possui uma forma fechada em termos dos dados de preferência, permitindo pular o modelo de recompensa explícito e otimizar a política diretamente. Esse insight deu origem a uma família — IPO, KTO, SimPO, ORPO, BPO — cada uma corrigindo um modo de falha do DPO. Em 2026, os algoritmos de alinhamento direto realizam mais execuções de pós-treinamento de modelos de fronteira do que o PPO. No entanto, a curva de superotimização da Lição 2 ainda se aplica: os DAAs não escapam de Goodhart, eles apenas mudam o local onde ela ataca.
Tipo: Learn Linguagens: Python (stdlib, comparador de perda de preferência com seis variantes) Pré-requisitos: Fase 18 · 01 (InstructGPT), Fase 18 · 02 (Roubo de recompensa), Fase 10 · 08 (Fundamentos de DPO) Tempo: ~75 minutos
Objetivos de Aprendizado
- Derivar a forma fechada do DPO a partir do ótimo do RLHF com KL.
- Apresentar o modo de falha de DPO que cada um dos algoritmos IPO, KTO, SimPO, ORPO e BPO corrige.
- Distinguir a "lacuna de recompensa implícita" da "força da preferência" e explicar por que o mapeamento de identidade do IPO é importante.
- Explicar por que Rafailov et al. (NeurIPS 2024) provam que os DAAs sofrem superotimização apesar de não possuírem um RM explícito.
O Problema
O objetivo do RLHF (Lição 1):
max_pi E_{x,y~pi} [ r(x, y) ] - beta * KL(pi || pi_ref)
possui um ótimo conhecido:
pi*(y|x) = (1/Z(x)) * pi_ref(y|x) * exp(r(x, y) / beta)
Portanto, a recompensa é definida implicitamente pela razão entre a política ótima e a de referência:
r(x, y) = beta * log(pi*(y|x) / pi_ref(y|x)) + beta * log Z(x)
Substitua isso na verossimilhança de preferência de Bradley-Terry e a função de partição Z(x) se cancela porque depende apenas de x. O que resta é uma perda apenas nos parâmetros da política — sem necessidade de modelo de recompensa. Esse é o DPO.
O problema: a derivação pressupõe que o ótimo seja alcançável, os dados de preferência estejam em distribuição e a política de referência seja o âncora real do modo. Nenhuma dessas suposições é perfeitamente válida. Cada membro da família corrige uma suposição violada diferente.
O Conceito
DPO (Rafailov et al., 2023)
L_DPO = -log sigmoid(
beta * log(pi(y_w | x) / pi_ref(y_w | x))
- beta * log(pi(y_l | x) / pi_ref(y_l | x))
)
O que pode dar errado:
- A lacuna de recompensa implícita
beta * (log(pi/pi_ref)_w - log(pi/pi_ref)_l)é ilimitada. Uma preferência minúscula pode produzir uma lacuna arbitrariamente grande. - A perda direciona as log-probabilities das respostas escolhidas e rejeitadas em direções opostas. Ela pode reduzir a log-prob absoluta da resposta escolhida desde que a rejeitada caia mais rápido. Este é o fenômeno da Resposta Escolhida Degradada (Degraded Chosen Response).
- Preferências fora de distribuição (pares raros versus pares raros) produzem recompensas implícitas arbitrárias.
IPO (Azar et al., 2024)
A Otimização de Preferência por Identidade (Identity Preference Optimization) substitui o log-sigmoid por um mapeamento de identidade na probabilidade de preferência. A perda torna-se um erro quadrático em relação a um alvo limitado:
L_IPO = (log(pi(y_w | x) / pi_ref(y_w | x)) - log(pi(y_l | x) / pi_ref(y_l | x)) - 1/(2 beta))^2
A margem é limitada por 1/(2 beta). A força da preferência e a lacuna de recompensa implícita são proporcionais. Sem explosões.
KTO (Ethayarajh et al., 2024)
A Otimização Kahneman-Tversky (KTO) descarta totalmente a estrutura de pares. Dado um único resultado rotulado e um sinal binário de "desejável" ou "indesejável", ela mapeia para uma utilidade da teoria dos prospectos:
v(x, y) = sigma(beta * log(pi(y|x) / pi_ref(y|x)) - z_ref)
com pesos diferentes para ganhos e perdas (aversão à perda). Benefício: você pode usar dados não pareados, que são muito mais abundantes.
SimPO (Meng et al., 2024)
A Otimização Simples de Preferência (Simple Preference Optimization) alinha o sinal de treinamento com a geração. Remove completamente a política de referência e normaliza a log-verossimilhança pelo comprimento:
L_SimPO = -log sigmoid(
(beta / |y_w|) * log pi(y_w | x)
- (beta / |y_l|) * log pi(y_l | x)
- gamma
)
com uma margem gamma para estabilização. A normalização de comprimento elimina o incentivo para explorar o modo de falha de viés de comprimento do DPO (comprimento de y_w maior gera uma lacuna de log-prob maior por construção).
ORPO (Hong et al., 2024)
A Otimização de Preferência por Odds-Ratio adiciona um termo de preferência à perda de log-verossimilhança negativa padrão do SFT:
L_ORPO = L_NLL(y_w) + lambda * L_OR
L_OR = -log sigmoid(log(odds(y_w) / odds(y_l)))
Sem política de referência — o termo de SFT funciona como o regularizador. Treine em uma única etapa a partir do modelo base até o modelo alinhado. Sem checkpoint de SFT separado.
BPO (submissão do ICLR 2026, OpenReview id=b97EwMUWu7)
Identifica o problema das Respostas Escolhidas Degradadas: o DPO preserva a classificação y_w > y_l, mas a log-prob absoluta de y_w pode despencar. O BPO adiciona uma correção de uma linha que penaliza reduções na resposta escolhida. Relatou +10.1% de acurácia no Llama-3.1-8B-Instruct em raciocínio matemático em relação ao DPO.
O resultado universal: DAAs ainda sofrem superotimização
Rafailov et al. "Scaling Laws for Reward Model Overoptimization in Direct Alignment Algorithms" (NeurIPS 2024) treinaram políticas com DPO, IPO e SLiC em múltiplos conjuntos de dados sob vários orçamentos de KL. As curvas de recompensa real (gold) versus KL apresentam o mesmo formato de pico e colapso de Gao et al. A recompensa implícita consulta amostras fora de distribuição durante o treinamento; a regularização KL não estabiliza isso.
Os DAAs não escapam de Goodhart. Eles apenas mudam a superfície onde ela ataca de "modelo de recompensa superotimizado" para "razão da política de referência superotimizada". A correção universal — melhores dados, ensembles, parada antecipada — se aplica a ambos.
Escolhendo entre eles (2026)
- Se você tem dados de preferência pareados grandes: DPO com beta conservador, SimPO se o viés de comprimento for evidente.
- Se você tem feedback binário não pareado: KTO.
- Se você quer um fluxo de trabalho de etapa única a partir de um modelo base: ORPO.
- Se você observar log-probs escolhidas degradadas nos logs do DPO: BPO.
- Se as forças das preferências variarem amplamente e o DPO estiver saturando: IPO.
Cada laboratório executa todos os cinco em uma bateria de testes e escolhe o vencedor por tarefa. Não há razão para que o ótimo seja o mesmo para raciocínio matemático e segurança.
Use It
O arquivo code/main.py compara seis perdas (DPO, IPO, KTO, SimPO, ORPO, BPO) em um conjunto de dados de preferência fictício onde a força real da preferência varia por par. Cada perda é otimizada contra a mesma amostra de 500 pares com uma pequena política softmax. Plota a taxa de vitória final, o desvio da log-prob escolhida e a dispersão da recompensa implícita por método.
Ship It
Esta lição produz outputs/skill-preference-loss-selector.md. Dadas as estatísticas do conjunto de dados (pareado vs não pareado, força de preferência variável vs uniforme, distribuição de comprimento) e um alvo (etapa única ou SFT seguido de preferência), recomenda uma perda de preferência e relata o modo de falha contra o qual ela protege.
Exercícios
Execute
code/main.py. Relate a queda final da log-prob escolhida para o DPO e BPO. O BPO deve reter uma probabilidade absoluta escolhida mais alta — verifique isso.Modifique os dados de preferência para que todos os pares tenham a mesma força. Qual dos seis métodos é o mais robusto? Qual deles degrada? Explique a vantagem do IPO nesse caso.
Faça com que as respostas rejeitadas sejam, em média, 2 vezes mais longas do que as escolhidas. Sem alterar mais nada, mostre numericamente a exploração de comprimento do DPO e a correção do SimPO.
Rafailov et al. (NeurIPS 2024) afirmam que os DAAs sofrem superotimização. Reproduza uma versão de ponto único: plote a divergência KL de escolhida-menos-rejeitada e observe a superotimização no DPO com um beta alto.
Leia o resumo do artigo do BPO (OpenReview b97EwMUWu7). Escreva a correção de uma linha que o BPO adiciona ao DPO. Confirme com a implementação em
code/main.py.
Termos-Chave
| Termo | O que dizem | O que realmente significa |
|---|---|---|
| DPO | "RLHF sem um modelo de recompensa" | Perda derivada do ótimo de RLHF em formato fechado; apenas parâmetros de política |
| Recompensa implícita | "a log-razão" | `beta * log(pi(y |
| IPO | "DPO limitado" | Substitui o log-sigmoid pela identidade; lacuna de recompensa implícita limitada por 1/(2 beta) |
| KTO | "DPO não pareado" | Utilidade da teoria dos prospectos sobre rótulos únicos com aversão à perda |
| SimPO | "DPO livre de referência" | Log-verossimilhança normalizada pelo comprimento + margem; sem política de referência |
| ORPO | "DPO de etapa única" | NLL + termo de preferência de odds-ratio; treina a partir do modelo base em uma única passagem |
| BPO | "DPO que preserva a escolhida" | DPO mais uma penalidade por diminuir a log-prob absoluta da resposta escolhida |
| Escolhida degradada | "a escolhida cai" | DPO diminui a log-prob escolhida desde que a rejeitada caia mais rápido |
| DAA | "algoritmo de alinhamento direto" | Qualquer método de perda de preferência que pula um RM explícito |
Leituras Recomendadas
- Rafailov et al. — Direct Preference Optimization (NeurIPS 2023, arXiv:2305.18290)
- Azar et al. — A General Theoretical Paradigm to Understand Learning from Human Preferences (AISTATS 2024, arXiv:2310.12036) — IPO
- Ethayarajh et al. — KTO: Model Alignment as Prospect Theoretic Optimization (arXiv:2402.01306)
- Meng, Xia, Chen — SimPO (NeurIPS 2024, arXiv:2405.14734)
- Hong, Lee, Thorne — ORPO (EMNLP 2024, arXiv:2403.07691)
- BPO — Behavior Preservation Optimization (ICLR 2026 OpenReview b97EwMUWu7)
- Rafailov et al. — Scaling Laws for RM Overoptimization in DAAs (NeurIPS 2024, arXiv:2406.02900)