چیتشیت
آموزش همراستاسازی: دستورالعملها، خانواده DPO و RLAIF
Alignment Training: Instructions, DPO Family, RLAIF
انتخاب و تنظیم RLHF، DPO، IPO، KTO، SimPO، ORPO، BPO و هوش مصنوعی قانونمحور. توابع زیان، پیشفرضها و شکستها.
فهرست مطالب
مقایسهی RLHF در برابر RLAIF در برابر DPO
مقایسه| عامل | RLHF (PPO) | RLAIF (CAI) | DPO |
|---|---|---|---|
| سیگنال ترجیح | برچسبگذاران انسانی جفتها را رتبهبندی میکنند | مدل بازخورد اصول را میخواند | ترجیحات انسانی یا هوش مصنوعی |
| مدل پاداش | الزامی (آموزش جداگانه) | آموزشدیده بر اساس ترجیحات هوش مصنوعی | ضمنی در احتمالات مدل |
| الگوریتم یادگیری تقویتی (RL) | PPO (پیچیده، ناپایدار) | PPO در برابر RM | یادگیری نظارتشده (پایدار) |
| مدلها برای آموزش | 3 (SFT + پاداش + خطمشی) | همانند RLHF | 1 (فقط خطمشی) |
| مدلها در حافظه | 3-4 | همانند RLHF | 2 (فعلی + مرجع) |
| ابرپارامترها | lr، ضریب KL، نسبت clip، مقدار RM lr، چرخهها 3x | همانند RLHF | lr، beta، چرخهها |
| حلقهی برخط (Online) | بله، آموزش مجدد RM با امتیازهای جدید | بله، از حلقهی تکرارشونده استفاده میکند | خیر، مجموعهدادهی ثابتی از جفتها |
| شکست اصلی | دور زدن پاداش | گودهارت باقی میماند، بلهقربانگویی کاهش مییابد | بهینهسازی بیشازحد نسبت مدل مرجع |
توابع زیان خانواده DPO
مقایسه| عامل | IPO | KTO | SimPO | ORPO |
|---|---|---|---|---|
| داده | جفتها | برچسبهای غیرجفت خوب یا بد | جفتها | جفتها |
| خطمشی مرجع | بله | بله | خیر | خیر |
| اصلاحات روی DPO | شکاف پاداش نامحدود | نیاز به دادههای جفتشده | سوگیری طول | مرحلهی SFT جداگانه |
| شکل تابع زیان | خطای مربعی، هدف 1/(2 beta) | نظریه چشمانداز، زیانگریزی | لگاریتم احتمال نرمالشده با طول، حاشیه gamma | NLL بهعلاوهی lambda برابر نسبت شانسها |
| تابع نمونه | train_dpo(pairs, variant="ipo") | train_kto(labels) | train_simpo(pairs) | train_orpo(pairs) |
| پیشفرضهای نمونه | beta: float = 0.1 | beta: float = 0.1 | beta: float = 1.5، gamma: float = 0.5 | lam: float = 0.1 |
چه زمانی استفاده کنیم
نکتهها- DPO: 5,000 تا 20,000 جفت یا توان پردازشی محدودی دارید. به حدود یکسوم توان محاسباتی RLHF نیاز دارد.
- SimPO: سوگیری طول در DPO مشهود است.
- KTO: بازخورد باینری غیرجفت دارید.
- ORPO: یک پایپلاین تکمرحلهای از مدل پایه میخواهید.
- BPO: گزارشهای DPO کاهش احتمال لگاریتمی نمونهی برگزیده را نشان میدهند.
- IPO: شدت ترجیحات بسیار متغیر است و DPO به اشباع میرسد.
- RLHF: «بهتر بودن» ابعاد متعددی دارد، یا نمونههای جدید را در یک حلقهی برخط ارزیابی میکنید.
- RLAIF: برچسبگذار انسانی را با مدلی که اصول صریح را میخواند جایگزین میکنید.
پایپلاین InstructGPT
معماریپایپلاین هوش مصنوعی قانونمحور
گامبهگام- مدل SFTمفید اما هنوز بیضرر نیست. به پرامپت ردتیم پاسخ میدهد.
- مدل نقدیک اصل نمونهبرداریشده را میخواند و پاسخ را نقد میکند.
- مرحلهی بازنگریپاسخ را بازنگری میکند. پاسخ بازنگریشده هدف SFT است.
- مدل بازخوردجفتهای تکمیل را در برابر اصول نمونهبرداریشده رتبهبندی میکند.
- مدل پاداشبر اساس ترجیحات تولیدشده توسط هوش مصنوعی آموزش میبیند.
- PPOخطمشی را در برابر RM بهینه میکند، مشابه InstructGPT.
- طبقهبند قانونمحورخروجیها را فیلتر میکند. نسخه v1 معادل 23.7٪ بار پردازشی داشت، نسخه v2 حدود ~1٪.
فرمولهای تابع زیان
مفهومها- مدل پاداش برادلی-تری
- $L_{\text{RM}} = -\log \sigma(r(x, y_w) - r(x, y_l))$
- هدف RLHF
- $\mathbb{E}[r(x, y)] - \beta \, \mathrm{KL}(\pi \,\|\, \pi_{\text{SFT}})$
- PPO-ptx
- $J(\pi) + \gamma \, \mathbb{E}_{x \sim D_{\text{pretrain}}}[\log \pi(x)]$
- پاداش ضمنی
- $\beta \log \frac{\pi(y \mid x)}{\pi_{\text{ref}}(y \mid x)}$
- DPO
- $-\log \sigma(\beta (\log \frac{\pi(y_w)}{\pi_{\text{ref}}(y_w)} - \log \frac{\pi(y_l)}{\pi_{\text{ref}}(y_l)}))$
- IPO
- مربعِ (شکاف لگاریتم نسبت $- \frac{1}{2\beta}$). حاشیه محدود میماند.
- SimPO
- $-\log \sigma(\frac{\beta}{|y_w|} \log \pi(y_w) - \frac{\beta}{|y_l|} \log \pi(y_l) - \gamma)$
- ORPO
- $L_{\text{NLL}}(y_w) + \lambda L_{\text{OR}}$، بدون خطمشی مرجع.
دو تابع زیان جفتی در کد
کدpython
def bradley_terry_loss(reward_preferred, reward_rejected):
diff = reward_preferred - reward_rejected # شکاف امتیاز RM
loss = -np.log(sigmoid(diff) + 1e-8) # زیان RM در مرحلهی 2
def dpo_loss(policy_logprob_preferred, policy_logprob_rejected,
ref_logprob_preferred, ref_logprob_rejected, beta=0.1):
preferred_ratio = policy_logprob_preferred - ref_logprob_preferred
rejected_ratio = policy_logprob_rejected - ref_logprob_rejected
logit = beta * (preferred_ratio - rejected_ratio) # ورود 4 احتمال لگاریتمی
loss = -np.log(sigmoid(logit) + 1e-8) # بدون مدل پاداش
preferred_reward = beta * preferred_ratio # پاداش ضمنی
rejected_reward = beta * rejected_ratio
"reward_margin": float(preferred_reward - rejected_reward) # باید افزایش یابد
پایپلاینهای نمونه در کد
کار و کد| وظیفه | کد |
|---|---|
| اجرای دموی درس | python3 code/main.py |
| RLHF نمونهی استاندارد | stage3_ppo(sft, rm, beta=0.1) |
| نمایش دور زدن پاداش | stage3_ppo(sft, rm, beta=0.0) |
| تزریق یک باگ در مدل پاداش | stage2_reward_model(bias=[0.5, 0.0, 0.0]) |
| آموزش DPO، IPO یا BPO | train_dpo(pairs, variant="bpo") |
| ساخت پیکره متنی SFT برای CAI | build_cai_sft_corpus(500) |
| برچسبگذار هوش مصنوعی یک جفت را رتبهبندی میکند | ai_feedback_rank(a, b) |
| بررسی بازه beta در DPO | betas=[0.01, 0.1, 0.3, 1.0] |
عیبیابی
عیبیابیپاداش بالا میرود، خروجیها تخریب میشوند
- علت
- beta بسیار پایین است، نقاط کور RM
- راهحل
- جریمهی KL را افزایش دهید
بدون پیشرفت نسبت به SFT
- علت
- beta بسیار بالا است
- راهحل
- beta را کاهش دهید
افت بنچمارکها پس از RLHF
- علت
- مالیات همراستاسازی
- راهحل
- PPO-ptx: گرادیانهای پیشآموزش را ترکیب کنید
طولانی و طولانیتر شدن پاسخها
- علت
- RM به طول امتیاز میدهد
- راهحل
- دادههای خصمانه برای RM، یا SimPO
مدل با همهچیز موافقت میکند
- علت
- بلهقربانگویی ناشی از حاشیهنویسان
- راهحل
- چندین مدل پاداش، دادههای خصمانه
کاهش احتمال لگاریتمی برگزیده در DPO
- علت
- تخریب پاسخ برگزیده
- راهحل
- تغییر به BPO
انفجار شکاف پاداش DPO
- علت
- شکاف ضمنی نامحدود است
- راهحل
- استفاده از IPO، سقف شکاف با 1/(2 beta)
پاداش طلایی به اوج میرسد، سپس فرو میپاشد
- علت
- DAAها نیز دچار بهینهسازی بیشازحد میشوند
- راهحل
- دادههای بهتر، مدلهای گروهی (ensembles)، توقف زودهنگام
پیشفرضها
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
PPO `kl_coeff` | 0.02 | در InstructGPT؛ مدل Llama 2 Chat از 0.01 استفاده کرد |
PPO `lr` | 1.5e-5 | در InstructGPT: تعداد 256K اپیزود، 4 چرخهی PPO در هر دسته |
PPO clip epsilon | 0.2 | مقدار معمول |
DPO `beta` | 0.1 | نقطهی بهینه 0.1 تا 0.3 |
DPO `lr` | 5e-6 | num_epochs=5 در dpo_train |
RM `lr` | 1e-4 | num_epochs=10 در train_reward_model |
Toy `stage3_ppo` | steps: int = 300 | batch: int = 32، lr: float = 0.1 |
KTO loss aversion | 2.0 | وزن نمونه روی برچسبهای بد. درس 08 میگوید 1.5x |
پرسشها
پرسش و پاسخ- چرا InstructGPT با 1.3B از GPT-3 با 175B برد؟
- برچسبگذاران در حدود 70٪ مواقع آن را ترجیح دادند. همراستاسازی محوری متفاوت از توانمندی است.
- آیا RLHF میتواند فکتها را اضافه کند؟
- خیر. مدل پایه کف توانمندی را تعیین میکند.
- چرا برچسبهای جفتی؟
- انسانها دو پاسخ را بهخوبی با هم مقایسه میکنند. اما امتیازدهی مطلق را بد انجام میدهند.
- چه دقتی برای RM مناسب است؟
- حدود 72٪ روی جفتهای نگهداشتهشده. توافق بین حاشیهنویسان حدود 73٪ بود.
- آیا RLAIF صرفاً یک RLHF ارزانتر است؟
- خیر. سیگنال شفاف و قابل خواندن است: شما اصل، نقد و بازنگری را میخوانید.
- آیا DAAها از گودهارت فرار میکنند؟
- خیر. بهینهسازی بیشازحد به نسبت خطمشی مرجع منتقل میشود.