Pular para o conteúdo principal

Capítulo 2: Otimização Direta por Preferência

Alternativa mais simples ao RLHF​

DPO otimiza diretamente para as preferências humanas sem precisar de um modelo de recompensa separado.


DPO vs RLHF​

AspectoRLHFDPO
Modelo de RecompensaNecessárioNão precisa
Treinamento RLPPO/similarOtimização direta
ComplexidadeAltaMenor
EstabilidadePode ser instávelMais estável

Formato dos Dados de Preferência​

{
"prompt": "Explain quantum computing",
"chosen": "Quantum computing uses qubits...",
"rejected": "Quantum computers are just faster..."
}

Implementação de DPO​

from trl import DPOTrainer, DPOConfig

dpo_config = DPOConfig(
beta=0.1, # KL penalty weight
learning_rate=5e-7,
num_train_epochs=1,
gradient_accumulation_steps=4,
bf16=True,
)

trainer = DPOTrainer(
model=model,
ref_model=ref_model, # Reference model for KL
args=dpo_config,
train_dataset=preference_dataset,
tokenizer=tokenizer,
)

trainer.train()

Parâmetro-chave: Beta​

  • Beta baixo (0,01-0,05): Otimização mais forte
  • Beta alto (0,5-1,0): Mantém-se próximo do modelo de referência
  • Padrão (0,1): Bom equilíbrio

Continue para o Capítulo 3 →