چیتشیت
یادگیری تقویتی
Reinforcement Learning
MDPها، روشهای مبتنی بر مقدار، گرادیانهای سیاست، PPO، RLHF و GRPO. فرمولها، خطوط بهروزرسانی و شاخصهای تشخیصی از فاز 9.
فهرست مطالب
حلقهی آموزش PPO
معماریRLHF در سه مرحله
گامبهگام- SFTفاینتیون مدل پایه روی نمونههای نمایشی انسانی.
- دادههای ترجیحاتجمعآوری سطرهای پرامپت، برگزیده و ردشده.
- مدل پاداشآموزش یک هد اسکالر روی مدل SFT با تابع زیان Bradley-Terry.
- سیاست و مرجعآغاز سیاست از SFT. فریز کردن یک نسخه به عنوان مرجع.
- پاداشامتیاز RM منهای $\beta$ برابر KL نسبت به مرجع.
- PPOبهروزرسانی سیاست در سطح توکن در برابر آن پاداش.
- نظارترصد میانگین KL. بالاتر از حدود 5 تا 10، دریفت یا دور زدن پاداش آغاز میشود.
فرمولهای مقدار
مفهومها- MDP
- چندتایی $(S, A, P, R, \gamma)$ با خاصیت مارکوف.
- بازده
- $G_t = r_t + \gamma r_{t+1} + \gamma^2 r_{t+2} + \ldots$
- بلمن V
- $V^\pi(s) = \sum_a \pi(a \mid s) \sum_{s', r} P(s', r \mid s, a) [r + \gamma V^\pi(s')]$
- تکرار مقدار
- $V(s) \leftarrow \max_a \sum_{s',r} P(s',r \mid s,a) [r + \gamma V(s')]$
- TD(0)
- $V(s) \leftarrow V(s) + \alpha [r + \gamma V(s') - V(s)]$
- Q-learning
- $Q(s, a) \leftarrow Q(s, a) + \alpha [r + \gamma \max_{a'} Q(s', a') - Q(s, a)]$
- SARSA
- $Q(s, a) \leftarrow Q(s, a) + \alpha [r + \gamma Q(s', a') - Q(s, a)]$
- زیان DQN
- $(r + \gamma \max_{a'} Q(s', a'; \theta^-) - Q(s, a; \theta))^2$ روی نمونههای بازپخش.
فرمولهای سیاست
مفهومها- گرادیان سیاست
- $\nabla J(\theta) = \mathbb{E}[ \sum_t G_t \cdot \nabla_\theta \log \pi_\theta(a_t \mid s_t) ]$
- مزیت TD
- $\delta_t = r_{t+1} + \gamma V(s_{t+1}) - V(s_t)$
- GAE
- $A_t^{\text{GAE}} = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l}$
- نسبت PPO
- $r_t(\theta) = \pi_\theta(a_t \mid s_t) / \pi_{\theta_{\text{old}}}(a_t \mid s_t)$
- برش PPO
- $\mathbb{E}_t [ \min( r_t A_t, \mathop{\mathrm{clip}}(r_t, 1-\epsilon, 1+\epsilon) A_t ) ]$
- Bradley-Terry
- $L(\phi) = -\mathbb{E}[ \log \sigma(R_\phi(x, y_+) - R_\phi(x, y_-)) ]$
- پاداش RLHF
- $R_\phi(x, y) - \beta \cdot \mathrm{KL}(\pi_\theta \Vert \pi_{\text{ref}})$
- مزیت GRPO
- $A_i = (r_i - \text{mean}_r) / \text{std}_r$ روی $G$ نمونه از یک پرامپت.
انتخاب یک روش
دستورها| Situation | روش |
|---|---|
Small tabular MDP, known model | تکرار مقدار یا تکرار سیاست |
Small tabular MDP, samples only | Q-learning |
On-policy, safety critical | SARSA یا Expected SARSA |
High dimensional state, discrete actions | DQN، همراه با الگوریتم Double DQN در محیط عملیاتی |
Continuous control | PPO با سیاست گاوسی، یا SAC و TD3 |
LLM alignment from preferences | ابتدا DPO، سپس RLHF-PPO با جریمهی KL |
LLM math and code reasoning | GRPO با پاداش مبتنی بر مدل اعتبارسنج |
Two player board games | AlphaZero یا MuZero |
خطوط بهروزرسانی
کار و کد| وظیفه | کد |
|---|---|
| بازده، پیمایش معکوس | G = r + gamma * G |
| کاوش با اپسیلون حریصانه | if random() < epsilon: return choice(ACTIONS) |
| هدف Q-learning | target = r + (gamma * max(Q[s_next].values()) if not done else 0.0) |
| هدف SARSA | target = r + (gamma * Q[s_next][a_next] if not done else 0.0) |
| گام TD | Q[s][a] += alpha * (target - Q[s][a]) |
| همگامسازی شبکهی هدف DQN | if steps % sync_every == 0: target = copy(online) |
| پاداش RLHF با KL | reward = dot(w, bag([token])) - beta * kl(probs, probs_ref) |
| مزیت گروهی GRPO | advs = [(r - mean_r) / std_r for r in rewards] |
بهروزرسانی برشخوردهی PPO
کدpython
for rec, adv in zip(mb, adv_norm): # مزیتهای نرمالشده در هر مینیدسته
x = rec["x"]
probs = softmax(logits(theta, x)) # سیاست فعلی
logp = math.log(max(probs[rec["a"]], 1e-12))
ratio = math.exp(logp - rec["log_pi_old"]) # احتمال جدید بر روی قبلی
clipped = (adv > 0 and ratio > 1 + eps) or (adv < 0 and ratio < 1 - eps)
pg_scale = 0.0 if clipped else ratio * adv # برشخورده یعنی گرادیان صفر
for action in range(N_ACTIONS):
grad_logpi = (1.0 if action == rec["a"] else 0.0) - probs[action]
for j in range(N_FEAT):
theta[action][j] += lr_a * pg_scale * grad_logpi * x[j]
err = rec["ret"] - value(w, x) # خطای ناقد
for j in range(N_FEAT):
w[j] += lr_v * err * x[j] # گام ناقد
پیشفرضها و اعداد
پیشفرضها| تنظیم | پیشفرض | نکته |
|---|---|---|
Discount $\gamma$ | 0.99 | افق حدود $1 / (1 - \gamma)$، یعنی 100 گام |
Tabular $\alpha$ and $\epsilon$ | 0.1 | Q-learning و SARSA روی محیط 4x4 GridWorld |
PPO clip $\epsilon$ | 0.2 | 0.1 بسیار محتاطانه است، 0.3 و بیشتر ناپایدار است |
Value coefficient $c_v$ | 0.5 | PPO و A2C |
Entropy coefficient $c_e$ | 0.01 | PPO و A2C |
GAE $\lambda$ | 0.95 | مقدار 0 همان TD است، 1 همان MC است |
RLHF KL $\beta$ | 0.01-0.05 | سیاست را نزدیک SFT نگه میدارد |
GRPO group size $G$ | 8 | 8 تا 64 استاندارد است، کمتر از 4 همراه با نویز است |
عیبیابی
عیبیابیمیانگین KL فراتر از 0.1
- علت
- سیاست فاصلهی زیادی از سیاست قبلی میگیرد (دریفت)
- راهحل
- کاهش
K_EPOCHSیاLR
کسر برش نزدیک 0
- علت
- برش هرگز فعال نمیشود
- راهحل
- افزایش
LRیاK_EPOCHS
کسر برش 0.5 یا بیشتر
- علت
- بیشبرازش روی مسیر پیشروی شبیهسازیشده
- راهحل
- کاهش
LRیاK_EPOCHS
پاداش بالا میرود، ارزیابی انسانی افت میکند
- علت
- دور زدن پاداش در RM
- راهحل
- توقف زودهنگام، افزایش $\beta$، گسترش دادههای RM
پاسخها طولانیتر میشوند
- علت
- RM به طول پاسخ پاداش میدهد
- راهحل
- پاداش نرمالشده بر اساس طول
مقادیر Q بیش از حد بالاست
- علت
- بایاس مقدار بیشینه روی Q دارای نویز
- راهحل
- الگوریتم Double DQN
DQN واگرا میشود
- علت
- سهگانهی مرگبار
- راهحل
- نگهداشتن شبکهی هدف و بافر بازپخش
سیاست از کاوش دست میکشد
- علت
- فروپاشی آنتروپی
- راهحل
- پاداش تشویقی آنتروپی با $c_e > 0$
اختصارات
اصطلاحها- MDP
- فرآیند تصمیمگیری مارکوف. حالتها، عملها، انتقالها، پاداشها، ضریب تنزیل.
- TD
- تفاضل زمانی. بهروزرسانی از یک هدف یکگامه بوتاسترپشده.
- DQN
- شبکهی عمیق Q. یادگیری Q-learning همراه با بازپخش، شبکهی هدف و برش پاداش.
- A2C
- بازیگر-نقاد بر مبنای مزیت. محیطهای موازی همگام و دستهای.
- GAE
- تخمین مزیت تعمیمیافته. مجموع وزندار خطاهای تفاضل زمانی.
- PPO
- بهینهسازی سیاست پروکسیمال. نسبت اهمیت برشخورده، دورههای آموزشی متعدد.
- RLHF
- یادگیری تقویتی از بازخورد انسانی. ابتدا SFT، سپس RM، در نهایت PPO.
- GRPO
- بهینهسازی سیاست نسبی گروهی. نسخهای از PPO بدون نیاز به ناقد.
پرسشها
پرسش و پاسخ- همسیاست یا برونسیاست؟
- همسیاست از دادههای تولیدی خودش یاد میگیرد. برونسیاست از دادههای یک سیاست دیگر میآموزد.
- Q-learning یا SARSA؟
- الگوریتم Q-learning روی مقدار ماکزیمم بوتاسترپ میکند. SARSA از عمل بعدیِ انتخابی خود بهره میگیرد و محتاطتر است.
- چرا تفریق خط مبنا؟
- گرادیان را نااریب نگه میدارد و واریانس را کاهش میدهد.
- چرا جریمهی KL در RLHF؟
- سیاست را در محدودهی دادههایی که RM روی آنها آموزش دیده حفظ میکند.
- چرا GRPO برای استدلال؟
- بدون شبکهی مقدار، بنابراین حافظه به نصف میرسد. نرمالسازی بر اساس هر پرامپت با پاداشهای تُنُک سازگار است.
نکات کاربردی
نکتهها- پیش از نوشتن حلقهی آموزش، 5 چندتایی MDP را مشخص کنید.
- یک ایجنت جدولی را در برابر مقدار برنامهریزی پویا $V^{\ast}$ بررسی و اعتبارسنجی کنید.
- نرخ $\epsilon$ را در 10% اول آموزش از 1.0 به 0.01 کاهش دهید.
- مزیتها را در هر دسته به میانگین صفر و انحراف معیار واحد نرمالسازی کنید.
- برای پایداری عددی، نسبت را بهصورت exp(log_new منهای log_old) محاسبه کنید.
- آموزش PPO را با $K = 10$ دوره (epoch) و مینیدستههای 64تایی شروع کنید.