الفصل 2: تحسين التفضيلات المباشرة
بديل أبسط لـ RLHF
يقوم DPO بتحسين التفضيلات البشرية مباشرة دون الحاجة إلى نموذج مكافأة منفصل.
DPO مقابل RLHF
| الجانب | RLHF | DPO |
|---|---|---|
| نموذج المكافأة | مطلوب | غير مطلوب |
| تدريب التعلم المعزز | PPO/مشابه | تحسين مباشر |
| التعقيد | عالي | أقل |
| الاستقرار | يمكن أن يكون غير مستقر | أكثر استقرارًا |
تنسيق بيانات التفضيل
{
"prompt": "اشرح الحوسبة الكمومية",
"chosen": "تستخدم الحوسبة الكمومية الكيوبتات...",
"rejected": "الحواسيب الكمومية أسرع فقط..."
}
تنفيذ DPO
from trl import DPOTrainer, DPOConfig
dpo_config = DPOConfig(
beta=0.1, # وزن عقوبة KL
learning_rate=5e-7,
num_train_epochs=1,
gradient_accumulation_steps=4,
bf16=True,
)
trainer = DPOTrainer(
model=model,
ref_model=ref_model, # نموذج مرجعي لـ KL
args=dpo_config,
train_dataset=preference_dataset,
tokenizer=tokenizer,
)
trainer.train()
المعلمة الرئيسية: بيتا
- بيتا منخفضة (0.01-0.05): تحسين أقوى
- بيتا عالية (0.5-1.0): البقاء قريبًا من المرجع
- الافتراضي (0.1): توازن جيد