چیت‌شیت

آموزش هم‌راستاسازی: دستورالعمل‌ها، خانواده DPO و RLAIF

Alignment Training: Instructions, DPO Family, RLAIF

انتخاب و تنظیم RLHF، DPO، IPO، KTO، SimPO، ORPO، BPO و هوش مصنوعی قانون‌محور. توابع زیان، پیش‌فرض‌ها و شکست‌ها.

  • ۱۱ بخش
  • ۵ درس مرتبط
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. مقایسه‌ی RLHF در برابر RLAIF در برابر DPO
  2. توابع زیان خانواده DPO
  3. چه زمانی استفاده کنیم
  4. پایپ‌لاین InstructGPT
  5. پایپ‌لاین هوش مصنوعی قانون‌محور
  6. فرمول‌های تابع زیان
  7. دو تابع زیان جفتی در کد
  8. پایپ‌لاین‌های نمونه در کد
  9. عیب‌یابی
  10. پیش‌فرض‌ها
  11. پرسش‌ها

مقایسه‌ی RLHF در برابر RLAIF در برابر DPO

مقایسه
عاملRLHF (PPO)RLAIF (CAI)DPO
سیگنال ترجیحبرچسب‌گذاران انسانی جفت‌ها را رتبه‌بندی می‌کنندمدل بازخورد اصول را می‌خواندترجیحات انسانی یا هوش مصنوعی
مدل پاداشالزامی (آموزش جداگانه)آموزش‌دیده بر اساس ترجیحات هوش مصنوعیضمنی در احتمالات مدل
الگوریتم یادگیری تقویتی (RL)PPO (پیچیده، ناپایدار)PPO در برابر RMیادگیری نظارت‌شده (پایدار)
مدل‌ها برای آموزش3 (SFT + پاداش + خط‌مشی)همانند RLHF1 (فقط خط‌مشی)
مدل‌ها در حافظه3-4همانند RLHF2 (فعلی + مرجع)
ابرپارامترهاlr، ضریب KL، نسبت clip، مقدار RM lr، چرخه‌ها 3xهمانند RLHFlr، beta، چرخه‌ها
حلقه‌ی برخط (Online)بله، آموزش مجدد RM با امتیازهای جدیدبله، از حلقه‌ی تکرارشونده استفاده می‌کندخیر، مجموعه‌داده‌ی ثابتی از جفت‌ها
شکست اصلیدور زدن پاداشگودهارت باقی می‌ماند، بله‌قربان‌گویی کاهش می‌یابدبهینه‌سازی بیش‌ازحد نسبت مدل مرجع

توابع زیان خانواده DPO

مقایسه
عاملIPOKTOSimPOORPO
دادهجفت‌هابرچسب‌های غیرجفت خوب یا بدجفت‌هاجفت‌ها
خط‌مشی مرجعبلهبلهخیرخیر
اصلاحات روی DPOشکاف پاداش نامحدودنیاز به داده‌های جفت‌شدهسوگیری طولمرحله‌ی SFT جداگانه
شکل تابع زیانخطای مربعی، هدف 1/(2 beta)نظریه چشم‌انداز، زیان‌گریزیلگاریتم احتمال نرمال‌شده با طول، حاشیه gammaNLL به‌علاوه‌ی lambda برابر نسبت شانس‌ها
تابع نمونهtrain_dpo(pairs, variant="ipo")train_kto(labels)train_simpo(pairs)train_orpo(pairs)
پیش‌فرض‌های نمونهbeta: float = 0.1beta: float = 0.1beta: float = 1.5، gamma: float = 0.5lam: float = 0.1

چه زمانی استفاده کنیم

نکته‌ها
  • DPO: 5,000 تا 20,000 جفت یا توان پردازشی محدودی دارید. به حدود یک‌سوم توان محاسباتی RLHF نیاز دارد.
  • SimPO: سوگیری طول در DPO مشهود است.
  • KTO: بازخورد باینری غیرجفت دارید.
  • ORPO: یک پایپ‌لاین تک‌مرحله‌ای از مدل پایه می‌خواهید.
  • BPO: گزارش‌های DPO کاهش احتمال لگاریتمی نمونه‌ی برگزیده را نشان می‌دهند.
  • IPO: شدت ترجیحات بسیار متغیر است و DPO به اشباع می‌رسد.
  • RLHF: «بهتر بودن» ابعاد متعددی دارد، یا نمونه‌های جدید را در یک حلقه‌ی برخط ارزیابی می‌کنید.
  • RLAIF: برچسب‌گذار انسانی را با مدلی که اصول صریح را می‌خواند جایگزین می‌کنید.

پایپ‌لاین InstructGPT

معماری
SFTتولیدرتبهآموزشفریزمقداردهی اولیهپاسخپاداشجریمه‌ی KLبه‌روزرسانیمدل پایهمتن را تکمیل می‌کندمدل SFTآنتروپی متقاطع روی جفت‌هاجفت ترجیحاتپرامپت، برنده، بازندهمدل پاداشهد اسکالر، برادلی-تریمدل مرجعSFT فریز‌شدهمدل خط‌مشیدر حال بهینه‌سازیبه‌روزرسانی PPOreward - beta * KLحاشیه‌نویسان انسانیرتبه‌بندی K تکمیل

پایپ‌لاین هوش مصنوعی قانون‌محور

گام‌به‌گام
  1. مدل SFTمفید اما هنوز بی‌ضرر نیست. به پرامپت ردتیم پاسخ می‌دهد.
  2. مدل نقدیک اصل نمونه‌برداری‌شده را می‌خواند و پاسخ را نقد می‌کند.
  3. مرحله‌ی بازنگریپاسخ را بازنگری می‌کند. پاسخ بازنگری‌شده هدف SFT است.
  4. مدل بازخوردجفت‌های تکمیل را در برابر اصول نمونه‌برداری‌شده رتبه‌بندی می‌کند.
  5. مدل پاداشبر اساس ترجیحات تولیدشده توسط هوش مصنوعی آموزش می‌بیند.
  6. PPOخط‌مشی را در برابر RM بهینه می‌کند، مشابه InstructGPT.
  7. طبقه‌بند قانون‌محورخروجی‌ها را فیلتر می‌کند. نسخه 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 یا BPOtrain_dpo(pairs, variant="bpo")
ساخت پیکره متنی SFT برای CAIbuild_cai_sft_corpus(500)
برچسب‌گذار هوش مصنوعی یک جفت را رتبه‌بندی می‌کندai_feedback_rank(a, b)
بررسی بازه beta در DPObetas=[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 epsilon0.2مقدار معمول
DPO `beta`0.1نقطه‌ی بهینه 0.1 تا 0.3
DPO `lr`5e-6num_epochs=5 در dpo_train
RM `lr`1e-4num_epochs=10 در train_reward_model
Toy `stage3_ppo`steps: int = 300batch: int = 32، lr: float = 0.1
KTO loss aversion2.0وزن نمونه روی برچسب‌های بد. درس 08 می‌گوید 1.5x

پرسش‌ها

پرسش و پاسخ
چرا InstructGPT با 1.3B از GPT-3 با 175B برد؟
برچسب‌گذاران در حدود 70٪ مواقع آن را ترجیح دادند. هم‌راستاسازی محوری متفاوت از توانمندی است.
آیا RLHF می‌تواند فکت‌ها را اضافه کند؟
خیر. مدل پایه کف توانمندی را تعیین می‌کند.
چرا برچسب‌های جفتی؟
انسان‌ها دو پاسخ را به‌خوبی با هم مقایسه می‌کنند. اما امتیازدهی مطلق را بد انجام می‌دهند.
چه دقتی برای RM مناسب است؟
حدود 72٪ روی جفت‌های نگه‌داشته‌شده. توافق بین حاشیه‌نویسان حدود 73٪ بود.
آیا RLAIF صرفاً یک RLHF ارزان‌تر است؟
خیر. سیگنال شفاف و قابل خواندن است: شما اصل، نقد و بازنگری را می‌خوانید.
آیا DAAها از گودهارت فرار می‌کنند؟
خیر. بهینه‌سازی بیش‌ازحد به نسبت خط‌مشی مرجع منتقل می‌شود.