Перейти к содержимому
ПереводыStanford

CS336, лекции 15–16: SFT, RLHF и RL с проверяемыми наградами

Перевод лекций Тацунори Хашимото (весна 2025): что внутри датасетов для SFT и почему «правильные» факты могут вредить, данные предпочтений и их подводные камни, PPO и вывод DPO, переоптимизация; затем RLVR — от PPO к GRPO, его смещения и Dr. GRPO, разбор DeepSeek-R1, Kimi k1.5 и Qwen3.

  • Лекция 15, часть 1 (SFT) — к модулю 6.1. Особенно ценны слайды о том, почему SFT на «незнакомых» модели фактах учит галлюцинировать, и о mid-training.
  • Лекция 15, часть 2 (RLHF) — к урокам 6.3.2 «RLHF — reward model и PPO» и 6.3.3 «DPO». Вывод DPO здесь короче, чем в уроке, — читайте их вместе.
  • Лекция 16 (RLVR) — почти полностью совпадает с «китайским» модулем 6.4: GRPO, DeepSeek-R1 и R1-Zero, Dr. GRPO, дистилляция рассуждений, режимы мышления Qwen3. Для теории policy gradient и PPO нужен модуль 6.0.
  • Это теория для задания 5 CS336 (SFT, expert iteration и GRPO на математике), см. путеводитель по заданию 5. Механику policy gradient в коде — в лекции 17.

Мы разобрали претрейн — он доводит вас до GPT-3… Но как дойти до InstructGPT? [Слева — интерфейс GPT-3 Playground с промптом и продолжением; справа — заголовок о викторинах BuzzFeed на ChatGPT и логотип «ChatGPT: Optimizing Language Models for Dialogue».]

Следование инструкциям — замечательная форма управления (3)

Заголовок раздела «Следование инструкциям — замечательная форма управления (3)»

[Пример из Bubeck et al. (2023): длинная просьба построить анимированные графики по данным с кучей уточнений — и GPT-4 выдаёт код, который делает ровно это.]

Развёртывание для множества пользователей требует более строгого контроля над ответами. [Примеры: просьба написать твит, оскорбляющий группу людей, — и вежливый отказ; мошенническое письмо от имени «FEMA», которое модель сгенерировала, а входной и выходной фильтры отметили.]

Цель сегодня: лучше и точнее управлять выходом LM (5)

Заголовок раздела «Цель сегодня: лучше и точнее управлять выходом LM (5)»

Данные претрейна — не совсем то, что нам нужно (зато они масштабируются)… Можно ли собрать данные о поведении, которое нам нужно, и обучить на них LM?

  1. Как выглядят такие данные?
  2. Как лучше всего их использовать?
  3. Нужен ли для этого масштаб?

Стандартный подход — имитация (SFT), затем подкрепление («RL»HF). [Знаменитая схема InstructGPT из трёх шагов: 1) собрать демонстрации и обучить политику с учителем; 2) собрать сравнения и обучить модель награды; 3) оптимизировать политику против модели награды с помощью PPO.] Часть 1: «обучение с учителем» (supervised finetuning) [Ouyang et al., 2022].

  • Обучающие данные. [Схема задач FLAN (T0-SF, Muffin, CoT, Natural Instructions) и логотип OpenAssistant.]
  • Метод. [Круговые диаграммы составов данных.]

Основные типы данных для инструкций мы уже видели… Поговорим ещё о двух деталях датасетов для instruction tuning:

  1. Что на самом деле внутри этих датасетов?
  2. Что важно при создании «высококачественных» данных для instruction tuning?

Посмотрим на три датасета: OASST (OpenAssistant), FLAN, Alpaca.

ВходОтвет
«Стефани, можете доделать приложенное и подписать? Мне нужно поставить инициалы, но подписать должен Брэд Рихтер. Спасибо». Придумайте тему для этого письма.Ronald Chisholm LOI
«Ahold продаёт испанский бизнес Permira (AP). Нидерландская сеть супермаркетов Ahold, стремясь упорядочить глобальные операции и снизить долг, сообщила в воскресенье, что продаст свои активы в Испании фондам Permira примерно за 849 млн…» О чём этот текст? ВАРИАНТЫ: Мир, Спорт, Бизнес, Наука/ТехникаБизнес
Напишите главное из статьи: [длинный путевой очерк о Гааге с адресами отелей, телефонами и e-mail]«Наименее известный из нидерландских городов, Гаага была деревней до 1806 года. Своим ростом она обязана Луи Бонапарту, брату Наполеона… В городе масса искусства, включая „Девушку с жемчужной серёжкой“ Вермеера»
Вот данные о ресторане: name = Aromi, eatType = coffee shop, food = English, customer rating = 5 out of 5, area = city centre. Напишите предложение, включающее эти данные.«В центре города есть кофейня Aromi с рейтингом 5 из 5, где подают английскую кухню».
ИнструкцияОтвет
Дайте три совета, как оставаться здоровым.1. Питайтесь сбалансированно, ешьте много фруктов и овощей. 2. Регулярно занимайтесь спортом… 3. Высыпайтесь и соблюдайте режим сна.
Что значит «алгоритм»?Алгоритм — это пошаговый набор инструкций для решения задачи или достижения цели…
Найдите среднее чисел в списке.def avg_list(nums): total = 0 for n in nums: total += n return total / len(nums) print(avg_list([4, 3, 6, 10, 8])) # Output 6.4
ВопросОтвет
Можете написать краткое введение о значимости термина «монопсония» в экономике? Используйте примеры возможных монопсоний на рынке труда и сошлитесь на исследования.«„Монопсония“ — рыночная структура, где у товара или услуги один покупатель… [длинный ответ]… Ссылки: Bivens, J., & Mishel, L. (2013). The Pay of Corporate Executives and Financial Professionals as Evidence of Rents in Top 1 Percent Incomes. Journal of Economic Perspectives, 27(3), 57–78».
Моему ребёнку нужно сделать научный проект для начальной школы, какие есть дешёвые, но интересные проекты?«…1. Сделайте самодельную лава-лампу… 7. Соберите солнечную печь из коробки от пиццы… 8. Исследуйте магниты…»

[Ссылка на форму.] Давайте разметим один пример вместе! Откройте эту форму.

Для справки, это ответ GPT-4o: [на вопрос «стоит ли мне брать CS336?» модель отвечает, что CS336 — «обычно код курса старших лет по информатике… часто охватывает программную инженерию, базы данных, компьютерную графику или продвинутые алгоритмы», и даёт общие советы: изучить программу, проверить пререквизиты, почитать отзывы о преподавателе, оценить нагрузку.]

Датасеты различаются во многом:

  • длина и маркированные списки (стилистические различия);
  • ссылки и другие сложные знания.

Менее заметно, но важно:

  • масштаб;
  • безопасность.

Как эти факторы влияют на модель?

Модели сильно различаются по длине ответов… [Таблица из Wang et al. (2023): средняя длина ответа в датасетах инструкций — от 24–40 токенов (Unnatural Instructions, Self-instruct, Flan V2, SuperNI) до 162 у GPT4-Alpaca и 358 у ShareGPT.]

При оценке по предпочтениям стиль важен (17)

Заголовок раздела «При оценке по предпочтениям стиль важен (17)»

Мы видим очень сильный эффект длины (и у людей, и у оценщиков на GPT). [Графики Dubois et al. (2023): и люди, и оценщики на основе GPT-4 в большинстве случаев предпочитают ответы со списками и более длинные ответы.]

Для других бенчмарков эти факторы (в основном) не так важны. [Таблица из Wang et al.: на MMLU, GSM, BBH, TydiQA, Codex-Eval датасеты инструкций дают разные плюсы и минусы, а смесь данных лучше в среднем.]

Рассмотрим пример из OpenAssistant [тот же ответ о монопсонии со ссылкой на Bivens & Mishel]. Чему этот пример учит модель?

  1. Учит модель о существовании Bivens J. и Mishel L.
  2. Учит модель выдавать ссылки, когда её об этом просят.

(Но каким механизмом? Знает ли модель про эти ссылки?)

Фольклор: дообучение модели на «фактах, которых она не знает», заставляет её галлюцинировать. [Слайд Джона Шульмана (2023) «Галлюцинации и клонирование поведения»: если учить модель отвечать то, чего нет в её «графе знаний», она учится уверенно выдумывать. График Gekhman et al.: на обучающей выборке «незнакомые» примеры заучиваются медленнее «знакомых», а точность на отложенной выборке после их заучивания падает.]

  1. Возможно, не стоит дообучать на знаниях из «хвоста», даже если именно для них нужна LM.
  2. В принципе, обратная связь о правильности в стиле «RL» могла бы помочь.
  3. Хранение и извлечение знаний в LM — запутанная и тонкая тема.

LM широко развёрнуты для конечных пользователей, нужны некоторые меры безопасности. [Схема Goldstein et al. (2023) о дезинформации: как LM меняют участников, поведение, контент и воздействие операций влияния. Kang et al. (2023): мошеннические письма и спам, сгенерированные LM.]

Немного instruction tuning может резко изменить профиль безопасности. [Схема: если дообучить на инструкциях вроде «перечисли, чем заняться» — модель более вредна; если добавить примеры вроде «как убить человека?» → «извините, не могу помочь» — модель безопаснее.]

Настоящая трудность — найти баланс с избыточными отказами. [Пример: «Как убить процесс Python?» → «Не могу дать инструкции, как убить процесс Python, это неэтично». График: при слишком большом количестве данных о безопасности модель преувеличивает опасность.]

Заметные улучшения безопасности уже с ~500 примерами. [График Bianchi et al.: средняя «вредность» на наборах I-Malicious, I-CoNa (язык вражды), I-Controversial, Q-Harm (Anthropic HH) падает по мере добавления 100, 300, 500… 2000 примеров безопасности.] Добавление 500 примеров в стиле Alpaca заставляет модели следовать правилам безопасности.

  1. Дообучение на инструкциях (SFT) работает лучше всего, когда мы лишь извлекаем поведение из претрейна, а не добавляем новое.
  2. Добавление (фактически верных!) данных иногда вредит.
  3. Небольшое количество правильного поведения (безопасность, следование инструкциям, стиль) даёт большой эффект, но есть «длинный хвост», которому нужны данные побольше.

Просто градиентный спуск… [Фрагмент обычного цикла обучения на PyTorch с tqdm, loss.backward(), optimizer.step().]

Во многих академических условиях — это, по сути, всё. Но что, если… у вас тонны вычислений и данных и вы хотите масштабировать instruction tuning?

Можно ли как-то превратить данные instruction tuning в данные претрейна? Следующая (всё более популярная) идея говорит «да»:

  1. Предобучить на веб-данных/данных претрейна.
  2. Подмешать данные instruction tuning в претрейн.
  3. Провести настоящий (но короткий) раунд instruction tuning.

Это позволяет масштабировать instruction tuning без катастрофического забывания.

Этот рецепт — общее знание во многих компаниях-разработчиках LLM (но не задокументирован). Сегодня широко используется большинством моделей… Его обнародовали недавние китайские LM (MiniCPM, JetMoE). [Круговые диаграммы MiniCPM: смесь данных на стадии плато (Common Crawl, код, C4, Dolma, Pile, Wikipedia) и на стадии спада — туда добавлены UltraChat, StackExchange QA, SFT-данные по математике и коду и т. д.]

[Та же схема InstructGPT.] Часть 2: «RL»-часть.

Имитация (SFT). Подогнать p^(y∣x)≈p∗(y∣x)\hat p(y \mid x) \approx p^*(y \mid x) к некоторому эталонному распределению p∗(y∣x)p^*(y \mid x).

  • Чисто генеративный взгляд.
  • Нужны сэмплы из эталонной политики.

Оптимизация (RLHF). Найти p^(y∣x)\hat p(y \mid x) такое, что max⁡pEp[R(y,x)]\max_p \mathbb{E}_p[R(y, x)] для награды R(y,x)R(y, x).

  • Максимизируем функцию награды, которую умеем измерять.
  • LM — это политики, а не модель какого-то распределения.

Получить скалярную обратную связь может быть проще, чем оптимальную политику. Даже для крошечной простой модели на 7B:

Базовая модельОбучение с учителемПопарная обратная связьRLОценка
Вычисления300 тыс. долл.100 долл.100 долл.100 долл.0
Разметка025 тыс. долл.4 тыс. долл.050 долл.

Данные для SFT могут быть очень дорогими, а для некоторых задач экспертам гораздо проще проверить ответ, чем решить её. Большинство фронтирных лабораторий тратят миллионы на данные для пост-трейнинга…

Зачем оптимизировать? Разрыв «генерация — проверка» (33)

Заголовок раздела «Зачем оптимизировать? Разрыв «генерация — проверка» (33)»

Люди не всегда пишут то, что сами предпочитают в ответах LM… [Zhang et al. (2023) о суммаризации новостей: шесть аннотаторов, в среднем примерно поровну (50,4% против 49,6%) предпочитают пересказы фрилансеров и пересказы Instruct Davinci, а согласие между аннотаторами — всего α = 0,07.]

Разберём три стороны RLHF:

  • Данные: как собирают данные для RLHF? О чём стоит беспокоиться?
  • Как делать RLHF? PPO; DPO.
  • Какие побочные эффекты у RLHF?

Какие виды попарной обратной связи? Как получить (хорошую) попарную обратную связь? [Схема InstructGPT, выделен шаг 2.]

Стандартная постановка «попарной обратной связи». [Интерфейс разметки: инструкция, два ответа ИИ, шкала «ответ 1 лучше / немного лучше / примерно одинаково / ответ 2 немного лучше / лучше».]

[Отрывок из инструкций для разметчиков InstructGPT: ответ должен быть полезным (helpful), правдивым (truthful) и безвредным (harmless); при конфликте правдивость и безвредность обычно важнее полезности.]

Якобы — инструкции краудсорсинга для Google Bard (38)

Заголовок раздела «Якобы — инструкции краудсорсинга для Google Bard (38)»

[Документ с правилами оценки ответов: полезность, представление, шкалы «не полезно — очень полезно».]

Scale + Upwork — 40 работников. [Отрывок из статьи: отбор по согласию с исследователями в оценке чувствительных промптов, ранжировании ответов, написании демонстраций.]

У вас 5 минут, чтобы разметить 5 примеров. [Ссылка на форму.]

Сложности краудсорсинга:

  • трудно найти по-настоящему качественных, проверяемых разметчиков;
  • трудно заставить их по-настоящему проверять правильность;
  • надо быть осторожными с использованием GPT-4 (самими разметчиками)…

Сбор данных в масштабе может порождать серьёзные проблемы. [Заголовки: «OpenAI использовала кенийских работников за менее чем 2 долл. в час, чтобы сделать ChatGPT менее токсичным» (TIME); «В Америке уже есть подкласс ИИ» — о недоплачиваемых подрядчиках.]

Распределение разметчиков для RLHF может заметно сдвигать поведение моделей. [Santurkar et al. (2023): таблицы демографии разметчиков и того, с мнениями каких групп сильнее согласуются модели до и после RLHF.]

Это верно даже для многих разметчиков — но не для всех. [Hosking, Blunsom, Bartolo (2024): разметчики-краудворкеры в среднем недооценивают долю фактических ошибок и противоречий по сравнению с экспертами и реже замечают их в ответах, написанных уверенным тоном (assertive).]

GPT-4 — удивительно хорошая система попарной обратной связи. [Графики: на уровне систем ранговая корреляция с людьми почти идеальна (Spearman 0,98); согласие на уровне отдельных примеров близко к согласию между людьми, а стоит на порядки дешевле.]

На нижнем краю спектра «стоимость + качество» для RLHF часто используют обратную связь ИИ. [UltraFeedback; цитата из интервью о Zephyr 7B: «одним из главных вкладов было использование обратной связи ИИ»; схема Tülu 3: промпты → ответы многих моделей → разметка предпочтений GPT-4o.] Используется, например, в OLMo, Zephyr и др.

[Схема из Constitutional AI (Bai et al.): полезная RLHF-модель генерирует ответы на «провокационные» промпты → критика и исправление по конституции → SL-CAI модель; затем ИИ сам сравнивает пары ответов → модель предпочтений → RL на этих предпочтениях (RL-CAI).]

Эффект длины — очень заметное следствие RLHF. [Chen et al. (2024): по оси «длина — оценка» почти все методы RLHF «покупают» выигрыш длиной. Singhal et al. (2024): награда сильно коррелирует с длиной ответа; пример — после RLHF ответ стал длиннее, не став содержательнее.]

Теперь у нас есть конвейер сбора (качественной) попарной обратной связи. Как адаптировать модель, чтобы она её использовала?

  • Часть 1: PPO — исходный и очень капризный подход (краткая версия).
  • Часть 2: DPO — новый, очень доступный подход.

[Повтор слайда 31: RLHF — найти p^(y∣x)\hat p(y \mid x), максимизирующую Ep[R(y,x)]\mathbb{E}_p[R(y, x)].]

Из InstructGPT: [отрывок — дообучаем SFT-модель в среде-«бандите» с PPO; среда показывает случайный промпт, ждёт ответа и выдаёт награду от модели награды; добавляется штраф KL к SFT-модели на каждый токен; вариант PPO-ptx подмешивает градиенты претрейна]:

objective(ϕ)=E(x,y)∼DπϕRL[rθ(x,y)−βlog⁡πϕRL(y∣x)πSFT(y∣x)]+γ Ex∼Dpretrain[log⁡πϕRL(x)].\text{objective}(\phi) = \mathbb{E}_{(x, y) \sim D_{\pi_\phi^{RL}}}\left[r_\theta(x, y) - \beta \log\frac{\pi_\phi^{RL}(y \mid x)}{\pi^{SFT}(y \mid x)}\right] + \gamma\, \mathbb{E}_{x \sim D_{pretrain}}\left[\log \pi_\phi^{RL}(x)\right].

…это выглядит очень безобидно.

Из статьи «Learning to summarize from human feedback»: [модель награды обучается на парах — потери loss(rθ)=−E(x,y0,y1,i)∼D[log⁡σ(rθ(x,yi)−rθ(x,y1−i))]\text{loss}(r_\theta) = -\mathbb{E}_{(x, y_0, y_1, i) \sim D}\left[\log \sigma\left(r_\theta(x, y_i) - r_\theta(x, y_{1-i})\right)\right], где yiy_i — ответ, который предпочёл человек; политика оптимизируется с наградой R(x,y)=rθ(x,y)−βlog⁡[πϕRL(y∣x)/πSFT(y∣x)]R(x, y) = r_\theta(x, y) - \beta \log\left[\pi_\phi^{RL}(y \mid x) / \pi^{SFT}(y \mid x)\right]. Штраф KL служит двум целям: работает как бонус за энтропию (не даёт схлопнуться в одну моду) и не даёт политике уйти туда, где модель награды ненадёжна.]

Краткое (высокоуровневое) введение в идеи PPO…

  • Попытка 1: policy gradient (дисперсия слишком высока): ∇θEpθ[R(z)]=Epθ[R(z)∇θlog⁡pθ(z)]\nabla_\theta \mathbb{E}_{p_\theta}[R(z)] = \mathbb{E}_{p_\theta}\left[R(z) \nabla_\theta \log p_\theta(z)\right].
  • Попытка 2: TRPO (линеаризуем задачу вокруг текущей политики): максимизировать E^t[πθ(at∣st)πθold(at∣st)A^t]\hat{\mathbb{E}}_t\left[\frac{\pi_\theta(a_t \mid s_t)}{\pi_{\theta_{old}}(a_t \mid s_t)} \hat A_t\right] при условии E^t[KL[πθold(⋅∣st),πθ(⋅∣st)]]≤δ\hat{\mathbb{E}}_t\left[\mathrm{KL}\left[\pi_{\theta_{old}}(\cdot \mid s_t), \pi_\theta(\cdot \mid s_t)\right]\right] \le \delta.
  • Попытка 3: PPO (обрезаем отношения на уровне eps):
L(s,a,θk,θ)=min⁡(πθ(a∣s)πθk(a∣s)Aπθk(s,a), clip(πθ(a∣s)πθk(a∣s),1−ϵ,1+ϵ)Aπθk(s,a)).L(s, a, \theta_k, \theta) = \min\left(\frac{\pi_\theta(a \mid s)}{\pi_{\theta_k}(a \mid s)} A^{\pi_{\theta_k}}(s, a),\ \mathrm{clip}\left(\frac{\pi_\theta(a \mid s)}{\pi_{\theta_k}(a \mid s)}, 1 - \epsilon, 1 + \epsilon\right) A^{\pi_{\theta_k}}(s, a)\right).

Вопрос для многих: можно ли обойтись без «RL» (то есть без on-policy алгоритмов RL)? Разумные идеи, о которых думали:

  • обучить модель с управляющим токеном (SFT на парах: добавить [GOOD] к выбранному ответу и [BAD] к отвергнутому);
  • обучать модель только на предпочтённых ответах;
  • обучить модель награды, получить ответы LM, обучиться на предпочтённых;
  • обучить модель награды, получить 1024 ответа LM, взять лучший.

Попробуем упростить PPO:

  • избавимся от модели награды;
  • избавимся от всего on-policy (роллаутов, внешних циклов и т. д.).

Вместо этого:

  • делаем шаги градиента по логарифмическим потерям на хорошем;
  • делаем отрицательные шаги градиента на плохом (с правильными весами).

[Схема из статьи DPO: RLHF — данные предпочтений → модель награды (максимальное правдоподобие) → RL с сэмплированием ответов → итоговая LM; DPO — данные предпочтений → итоговая LM напрямую, максимальным правдоподобием.]

Наша цель — оптимизировать

max⁡πθEx∼D,y∼πθ(y∣x)[rϕ(x,y)]−β DKL[πθ(y∣x) ∥ πref(y∣x)].\max_{\pi_\theta} \mathbb{E}_{x \sim D, y \sim \pi_\theta(y \mid x)}\left[r_\phi(x, y)\right] - \beta\, \mathrm{D}_{KL}\left[\pi_\theta(y \mid x) \,\|\, \pi_{ref}(y \mid x)\right].

Предположим, что политика π\pi может быть любой (непараметрическое допущение). Тогда максимизатор равен

πr(y∣x)=1Z(x)πref(y∣x)exp⁡(1βr(x,y)).\pi_r(y \mid x) = \frac{1}{Z(x)} \pi_{ref}(y \mid x) \exp\left(\frac{1}{\beta} r(x, y)\right).

Выразим отсюда «неявную награду»:

r(x,y)=βlog⁡πr(y∣x)πref(y∣x)+βlog⁡Z(x).r(x, y) = \beta \log\frac{\pi_r(y \mid x)}{\pi_{ref}(y \mid x)} + \beta \log Z(x).

(Та же эквивалентность использована в статье Kimi k1.5.)

Теперь неявную награду можно оптимизировать как модель награды по целевой функции Stiennon et al.:

loss(rθ)=−E(x,y0,y1,i)∼D[log⁡σ(rθ(x,yi)−rθ(x,y1−i))]иr(x,y)=βlog⁡πr(y∣x)πref(y∣x)+βlog⁡Z(x).\text{loss}(r_\theta) = -\mathbb{E}_{(x, y_0, y_1, i) \sim D}\left[\log \sigma\left(r_\theta(x, y_i) - r_\theta(x, y_{1-i})\right)\right] \quad \text{и} \quad r(x, y) = \beta \log\frac{\pi_r(y \mid x)}{\pi_{ref}(y \mid x)} + \beta \log Z(x).

Это даёт целевую функцию DPO:

LDPO(πθ;πref)=−E(x,yw,yl)∼D[log⁡σ(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x))].\mathcal{L}_{DPO}(\pi_\theta; \pi_{ref}) = -\mathbb{E}_{(x, y_w, y_l) \sim D}\left[\log \sigma\left(\beta \log\frac{\pi_\theta(y_w \mid x)}{\pi_{ref}(y_w \mid x)} - \beta \log\frac{\pi_\theta(y_l \mid x)}{\pi_{ref}(y_l \mid x)}\right)\right].

Ключевые шаги:

  1. Сделать непараметрическое допущение (связывает πθ\pi_\theta и rr в замкнутой форме).
  2. Параметризовать награду rr через политику.
  3. Оптимизировать награду обучением с учителем (что, в свою очередь, оптимизирует политику).

Концептуально это оценка максимального правдоподобия для попарных наград при непараметрическом допущении + альтернативной параметризации.

В каком-то смысле сводится к «положительный градиент на хорошем, отрицательный — на плохом» (с весом по «ошибке предсказания» неявной модели награды):

∇θLDPO=−β E(x,yw,yl)∼D[σ(r^θ(x,yl)−r^θ(x,yw))⏟больше вес, когда оценка награды неверна[∇θlog⁡π(yw∣x)⏟повышаем правдоподобие yw−∇θlog⁡π(yl∣x)⏟понижаем правдоподобие yl]].\nabla_\theta \mathcal{L}_{DPO} = -\beta\, \mathbb{E}_{(x, y_w, y_l) \sim D}\Big[\underbrace{\sigma\left(\hat r_\theta(x, y_l) - \hat r_\theta(x, y_w)\right)}_{\text{больше вес, когда оценка награды неверна}} \Big[\underbrace{\nabla_\theta \log \pi(y_w \mid x)}_{\text{повышаем правдоподобие } y_w} - \underbrace{\nabla_\theta \log \pi(y_l \mid x)}_{\text{понижаем правдоподобие } y_l}\Big]\Big].

Результаты — контролируемое сравнение в AlpacaFarm (59)

Заголовок раздела «Результаты — контролируемое сравнение в AlpacaFarm (59)»

По сравнению с нашей прежней реализацией PPO? То же качество (в симуляции) и никаких мучений! [Таблица AlpacaFarm: доля побед в симуляции и у людей — GPT-4 79,0 / 69,8; ChatGPT 61,4 / 52,9; PPO 46,8 / 55,1; DPO 46,8 / —; Best-of-1024 45,0 / 50,7; Expert Iteration 41,9 / 45,7; SFT 52k 39,2 / 40,7; … LLaMA 7B 11,3 / 6,5.]

От Криса Мэннинга: большинство «лучших открытых» RLHF-моделей обучены DPO. [Снимок лидерборда Open LLM с рукописными пометками «DPO», «DPO (KUNA)», «merge (of DPO models)» почти у каждой строки верхушки.]

Множество вариантов (слишком много), но два, пожалуй, стоит отметить — из статьи Tülu 3.

SimPO (без эталонной модели):

LSimPO(πθ)=−E[log⁡σ(β∣yw∣log⁡πθ(yw∣x)−β∣yl∣log⁡πθ(yl∣x)−γ)].\mathcal{L}_{SimPO}(\pi_\theta) = -\mathbb{E}\left[\log \sigma\left(\frac{\beta}{|y_w|} \log \pi_\theta(y_w \mid x) - \frac{\beta}{|y_l|} \log \pi_\theta(y_l \mid x) - \gamma\right)\right].

DPO с нормировкой на длину:

max⁡πθEyc,yr∼D[log⁡σ(β∣yc∣log⁡πθ(yc∣x)πref(yc∣x)−β∣yr∣log⁡πθ(yr∣x)πref(yr∣x))].\max_{\pi_\theta} \mathbb{E}_{y_c, y_r \sim D}\left[\log \sigma\left(\frac{\beta}{|y_c|} \log\frac{\pi_\theta(y_c \mid x)}{\pi_{ref}(y_c \mid x)} - \frac{\beta}{|y_r|} \log\frac{\pi_\theta(y_r \mid x)}{\pi_{ref}(y_r \mid x)}\right)\right].

Каверзность эмпирической работы с RL… Многие результаты сильно зависят от условий (от конкретики постановки эксперимента). [Ivison et al. «Unpacking DPO and PPO»: при прочих равных PPO чуть лучше DPO, особенно с большей моделью награды. Таблица Tülu 3: у SimPO, DPO, PPO и вариантов DPO с нормировкой длины средние оценки близки, лучший результат (57,3) — у одной из конфигураций DPO с нормировкой длины.]

  • Переоптимизация / переобучение на награду.
  • Схлопывание мод / энтропия.

На что обращать внимание — переоптимизация (64)

Заголовок раздела «На что обращать внимание — переоптимизация (64)»

Для многих разных оптимизаторов в стиле RLHF: оптимизация награды после некоторой точки начинает переобучаться. [AlpacaFarm, три графика «доля побед на оценке» против «прокси-награды»: для предпочтений людей и для шумных предпочтений LM кривые Best-of-n, Expert Iteration и PPO растут, а потом падают; для предпочтений LM без шума — растут монотонно.] Выполняется для предпочтений людей (слева), шумных предпочтений LM (в центре), но не для бесшумных предпочтений LM (справа).

На что обращать внимание — схлопывание мод (65)

Заголовок раздела «На что обращать внимание — схлопывание мод (65)»

RLHF делает модели больше не «вероятностными моделями» — по умолчанию нет калибровки. [График калибровки GPT-4 на MMLU из техотчёта: до RLHF уверенность совпадает с точностью (диагональ), после RLHF — сильно отклоняется. Гистограммы энтропии ответов: у моделей после RLHF энтропия собирается около нуля.]

  1. Сбор данных для RLHF — (тоже) трудное дело! Много мешающих факторов.
  2. Алгоритмы RLHF немного сложнее SFT — особенно PPO.
  3. Помните о влиянии (пере)оптимизации наград.

Лекция 16. Обучение с подкреплением на проверяемых наградах (RLVR)

Заголовок раздела «Лекция 16. Обучение с подкреплением на проверяемых наградах (RLVR)»

(Слайды 2–13 — окончание прошлой лекции: DPO, его вывод и варианты, «PPO тоже работает», переоптимизация и схлопывание мод. См. слайды 55–65 лекции 15 выше.)

Претрейн + RLHF доводят до ~GPT-3.5… Сегодня дойдём до o1/R1. [График OpenAI: точность o1 на AIME растёт с ростом вычислений во время ответа (логарифмическая шкала).]

С RLHF нельзя чисто масштабироваться из-за переоптимизации. [Графики переоптимизации из прошлой лекции.] Можно ли работать в областях, где RL блистает? Где мы оптимизируем ровно то, что хотим? [Логотипы AlphaGo, AlphaFold, Lean.]

  1. Ключевые алгоритмы: PPO → GRPO [статья DeepSeekMath]; варианты GRPO [статья «Understanding R1-Zero-Like Training: A Critical Perspective»].
  2. Разбор случаев [DeepSeek-R1, Kimi k1.5, техотчёт Qwen3].

[Повтор слайда 53 лекции 15: policy gradient → TRPO → PPO с обрезкой.]

Метод policy gradient для оптимизации наград в «настоящих» задачах RL… [Кадры из анонса PPO (2017) — симулированный робот-футболист — и OpenAI Five (2019), обыгравшая чемпионов в Dota 2.]

Целевая функция — по сути всё, что есть на концептуальном уровне. [Алгоритм 1 PPO-Clip из Spinning Up: собрать траектории текущей политикой, посчитать отдачи-до-конца R^t\hat R_t, оценить преимущества A^t\hat A_t по текущей функции ценности, обновить политику, максимизируя целевую функцию PPO-Clip (обычно стохастическим градиентным подъёмом с Adam), подогнать функцию ценности регрессией на среднеквадратичную ошибку.]

Нужно смотреть на живую реализацию, когда говорим о PPO. [Коллаж из статей и блогов вроде «Implementation Matters in Deep Policy Gradients: A Case Study on PPO and TRPO» и «The 37 Implementation Details of PPO» — подпись на слайде нарочно напечатана вперемешку: «если о PPO пишут такие посты, знайте: вас ждут неприятности».]

PPO — идеализация (?) для языковых моделей (21)

Заголовок раздела «PPO — идеализация (?) для языковых моделей (21)»

В условиях языковых моделей… Очень похоже на формулировку RL. Действия — это токены, большая плотная награда — в самом конце, по всей последовательности. [Схема из Zheng et al. (2023): SFT-модель, модель награды, модель ценности, GAE, буфер опыта, обновление политики через потери PPO-clip и функции ценности через MSE.]

Реализация — PPO из AlpacaFarm. Использовалась ещё несколькими работами с неплохим успехом (SALMON, «Aligning Large Multimodal Models with Factually Augmented RLHF»). [Таблица AlpacaFarm: PPO 46,8 / 55,1.]

Внешний цикл PPO. Вызывает внутренний цикл, оптимизирующий потери на наборе роллаутов. [Код step_with_rollouts из alpaca_farm/rl/ppo_trainer.py: по фиксированным роллаутам делается несколько эпох PPO с накоплением градиентов и обрезкой нормы.]

Код AlpacaFarm — вычисление потерь. Вполне стандартно. [Код compute_loss: отношение exp⁡(log⁡π−log⁡πold)\exp(\log\pi - \log\pi_{old}), обрезанные потери политики, обрезанные потери функции ценности, энтропия.] Cliprange = 0,2.

[Код генерации роллаутов: сэмплируем ответы политикой, считаем награды моделью награды, логарифмы вероятностей политики и эталонной модели, значения функции ценности, затем «формируем» награды и считаем преимущества.]

На высоком уровне — штраф KL на каждый токен и полная награда на последнем токене.

На практике? Обрезают KL для последовательностей, где логарифм вероятности новой политики меньше, чем у эталонной. [Код _shape_reward: kl = torch.clamp(logprobs - ref_logprobs, min=0.0), non_score_rewards = -kl_coef * kl, награда модели награды прибавляется к последнему токену.] Помогает стабильности? Если модель «взорвётся», это не даст KL разойтись.

PPO на практике — обобщённая оценка преимущества (27)

Заголовок раздела «PPO на практике — обобщённая оценка преимущества (27)»

Вместо награды используем преимущества:

A^tGAE(γ,λ):=∑l=0∞(γλ)lδt+lV,где δtV=rt+γV(st+1)−V(st).\hat A_t^{GAE(\gamma, \lambda)} := \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l}^V, \qquad \text{где } \delta_t^V = r_t + \gamma V(s_{t+1}) - V(s_t).

[Код _estimate_advantage: цикл по позициям с конца, накопление lastgaelam, затем «отбеливание» преимуществ.]

Забавная деталь: это задача бандита, и γ=λ=1\gamma = \lambda = 1 работает — тогда это просто «отдача до конца» минус функция ценности.

[Три графика обучения: общая награда растёт; награда модели награды растёт; KL-награда (штраф) становится всё более отрицательной.] Это задача бандита — ожидайте разумных кривых обучения.

Почему не PPO?

  • На практике сложная реализация.
  • Модель ценности (прожорлива по памяти, требует дополнительной настройки обучения).

Почему не DPO?

  • Данные не попарные по своей природе (или не в форме сравнений Брэдли — Терри).
  • Офлайн (хотя можно сделать онлайн итерациями).

Что такое GRPOGRPO (групповая относительная оптимизация политики)EN Group Relative Policy Optimization (GRPO)PPO без критика: на промпт генерируется группа из G ответов, преимущество — (r − среднее) / std по группе. DeepSeekMath, 2024.?

  • Начинаем с PPO (многие части похожи).
  • Убираем функцию ценности / вычисление преимуществ.
  • Считаем преимущество как «z-оценку внутри группы».

[Отрывок из статьи DeepSeekMath:]

JGRPO(θ)=E[q∼P(Q),{oi}i=1G∼πθold(O∣q)]1G∑i=1G(min⁡(πθ(oi∣q)πθold(oi∣q)Ai, clip(πθ(oi∣q)πθold(oi∣q),1−ϵ,1+ϵ)Ai)−β DKL(πθ ∥ πref)),\mathcal{J}_{GRPO}(\theta) = \mathbb{E}\left[q \sim P(Q), \{o_i\}_{i=1}^G \sim \pi_{\theta_{old}}(O \mid q)\right] \frac{1}{G}\sum_{i=1}^{G}\left(\min\left(\frac{\pi_\theta(o_i \mid q)}{\pi_{\theta_{old}}(o_i \mid q)} A_i,\ \mathrm{clip}\left(\frac{\pi_\theta(o_i \mid q)}{\pi_{\theta_{old}}(o_i \mid q)}, 1 - \epsilon, 1 + \epsilon\right) A_i\right) - \beta\, \mathbb{D}_{KL}(\pi_\theta \,\|\, \pi_{ref})\right), DKL(πθ ∥ πref)=πref(oi∣q)πθ(oi∣q)−log⁡πref(oi∣q)πθ(oi∣q)−1,Ai=ri−mean({r1,r2,…,rG})std({r1,r2,…,rG}).\mathbb{D}_{KL}(\pi_\theta \,\|\, \pi_{ref}) = \frac{\pi_{ref}(o_i \mid q)}{\pi_\theta(o_i \mid q)} - \log\frac{\pi_{ref}(o_i \mid q)}{\pi_\theta(o_i \mid q)} - 1, \qquad A_i = \frac{r_i - \mathrm{mean}(\{r_1, r_2, \dots, r_G\})}{\mathrm{std}(\{r_1, r_2, \dots, r_G\})}.

(Для сравнения рядом — целевая функция PPO.) В онлайн-случае (роллаут + немедленное обновление) это просто policy gradient с нормированными по группе наградами.

GRPO очень прост (благодаря отсутствию функции ценности..) (31)

Заголовок раздела «GRPO очень прост (благодаря отсутствию функции ценности..) (31)»

Можно написать (и люди пишут) крошечные реализации GRPO:

  • считаем награду каждого роллаута;
  • нормируем среднее/дисперсию по группе;
  • считаем член KL;
  • делаем шаги градиента по потерям.

Можно разобрать пример из https://github.com/McGill-NLP/nano-aha-moment. [Код функции потерь: логарифмы вероятностей политики и эталонной модели, штраф KL, энтропия, потери policy gradient с преимуществами, итоговая сумма.]

Вычисление преимущества тоже очень простое.. (32)

Заголовок раздела «Вычисление преимущества тоже очень простое.. (32)»

По сути, просто «ванильная» постановка GRPO. Главное отличие — стабилизирующий множитель 1e-4 в вычислении стандартного отклонения. [Код: группируем награды по промпту, вычитаем среднее, делим на (std + 1e-4).]

GRPO из исходной статьи. [Рисунок 5 DeepSeekMath: точность DeepSeekMath-Instruct 1.3B на GSM8K и MATH при дообучении разными методами — RFT, Online RFT, GRPO+OS (outcome supervision), GRPO+PS (process supervision); GRPO выше RFT.] Обходит RFT (подкрепление правильных ответов), есть некоторый выигрыш от контроля процесса. Мы ещё к этому вернёмся…

Ключевое отличие GRPO от PPO — преимущество:

Ai=ri−mean({r1,r2,…,rG})std({r1,r2,…,rG}).A_i = \frac{r_i - \mathrm{mean}(\{r_1, r_2, \dots, r_G\})}{\mathrm{std}(\{r_1, r_2, \dots, r_G\})}.

Это хорошо? Небольшое отступление в RL… Базовая линия: из наград можно вычитать любую величину, зависящую только от состояния. [Раздел 13.4 «REINFORCE с базовой линией» из учебника Саттона и Барто: ∇J(θ)∝∑sμ(s)∑a(qπ(s,a)−b(s))∇π(a∣s,θ)\nabla J(\theta) \propto \sum_s \mu(s) \sum_a (q_\pi(s, a) - b(s)) \nabla \pi(a \mid s, \theta) — вычитание b(s)b(s) не меняет ожидание градиента, потому что ∑ab(s)∇π(a∣s,θ)=b(s)∇∑aπ(a∣s,θ)=b(s)∇1=0\sum_a b(s) \nabla \pi(a \mid s, \theta) = b(s) \nabla \sum_a \pi(a \mid s, \theta) = b(s) \nabla 1 = 0.]

GRPO использует «неправильную» базовую линию (35)

Заголовок раздела «GRPO использует «неправильную» базовую линию (35)»

Деление на стандартное отклонение — не допустимая базовая линия, сохраняющая несмещённость. Какова версия GRPO с несмещённым градиентом? [Liu et al. (2025), Dr. GRPO («GRPO done right»): из формулы убраны деление на ∣oi∣|o_i| (длину ответа) и на std: A~i,t=R(q,oi)−mean({R(q,o1),…,R(q,oG)})\tilde A_{i,t} = R(q, o_i) - \mathrm{mean}(\{R(q, o_1), \dots, R(q, o_G)\}). График эффективности по токенам: при той же награде Dr. GRPO даёт ответы короче.]

Обратите также внимание на изменение нормировки на длину слева… (Liu et al., 2025. Это довольно близко к REINFORCE с базовой линией «оставь одного» (leave-one-out).)

Что делают эти члены?

  • Стандартное отклонение — повышает вес слишком лёгких или слишком трудных вопросов.
  • Нормировка на длину: [цитата из Dr. GRPO — «смещение по длине на уровне ответа возникает из-за деления на ∣oi∣|o_i|. При положительном преимуществе (правильный ответ) это даёт большие градиенты коротким ответам, и политика предпочитает краткость в правильных ответах. При отрицательном преимуществе (неправильный ответ) длинные ответы штрафуются меньше, и политика предпочитает длинные неправильные ответы»].

Что делает исправление? [Графики: с Dr. GRPO награда растёт так же, а длина ответов — в особенности неправильных — перестаёт раздуваться.]

Посмотрим на несколько характерных открытых моделей с RLVR.

  • DeepSeek-R1 — центральная для многих недавних работ по RLVR, много интересных деталей.
  • Kimi k1.5 — вышла одновременно с R1, RLVR, дополняющие R1 детали.
  • Qwen3 — самая свежая открытая попытка рассуждающей модели, RLVR на малых данных.

Статья, вызвавшая что-то вроде социального явления… [График поисковых запросов «DeepSeek-R1» с резким пиком после публикации 22 января 2025 года.]

Что замечательного в R1?

  • Качество выше OpenAI o1.
  • Открытый рецепт RL (и довольно простой):
    • положил конец спекуляциям о необходимости MCTS/PRM.
  • Выводы о SFT (и R1-Zero, и distill-R1).

Опираются на результаты GRPO из DeepSeekMath… [Тот же рисунок 5.] Но в R1 они не используют контроль процесса (об этом позже…).

Постановка:

  • Награды: за точность (правильно ли?) и за формат (используются теги размышления).
  • Данные: не опубликованы.
  • Базовая модель: DeepSeek-V3.

Результаты: немного хуже OpenAI o1.

МодельAIME 2024 pass@1AIME 2024 cons@64MATH-500 pass@1GPQA Diamond pass@1LiveCodeBench pass@1CodeForces rating
OpenAI-o1-mini63,680,090,060,053,81820
OpenAI-o1-091274,483,394,877,363,41843
DeepSeek-R1-Zero71,086,795,973,350,01444
  • Цепочки рассуждений удлиняются в ходе обучения. [График средней длины ответа R1-Zero растёт с шагами.]
  • «Момент озарения»? [Пример из статьи: модель решает уравнение, затем пишет «Wait, wait. Wait. That’s an aha moment I can flag here» и переделывает решение.]

Из последующего анализа в Dr. GRPO…

  • Длина — из-за смещённой целевой функции? [Тот же график эффективности по токенам.]
  • «Озарение» есть уже у базовой модели. [Пример: базовая модель без всякого RL пишет «Aha! I can use this to get…» и меняет подход.]

R1 против R1-Zero. Ключевые отличия:

  • инициализация SFT;
  • награда за языковую согласованность цепочки рассуждений;
  • непроверяемые награды (на этапе 2).

Конвейер: DeepSeek-V3 → SFT на рассуждениях → RL (GRPO) → SFT/RLHF.

Начинают с обычной (длинной) цепочки рассуждений, затем, возможно, дополнительная проверка (туманно). [Цитата: в отличие от R1-Zero, чтобы избежать нестабильной фазы холодного старта, собирают небольшое количество длинных цепочек рассуждений — few-shot промптами, просьбами к модели писать подробно с рефлексией, отбором читаемых выходов R1-Zero с доработкой людьми.]

  • Заявленная польза: интерпретируемость.
  • Замечание: происхождение данных не вполне ясно…

Даже небольшого числа примеров достаточно, чтобы «завести» рассуждения у LM. [Таблица из статьи s1: s1-32B, обученная всего на 1000 примеров, — AIME 2024 56,7, MATH-500 93,0, GPQA 59,6, сравнимо с r1-distill на 800 тыс. примеров. График «точность MATH500 от числа примеров»: s1 — самая эффективная по данным.] 1000 вопросов по математике и естественным наукам + длинные цепочки рассуждений от Gemini / R1.

RL-часть по сути та же… Небольшое отличие: дополнительная награда за языковую согласованность. [Цитата: в ходе обучения цепочки рассуждений часто смешивают языки, особенно когда промпты многоязычны; вводится награда — доля слов целевого языка в CoT; абляции показали небольшое падение качества, но читаемость выросла.]

Замечание о переключении языков интересно… RL естественным образом приводит к смешению языков?

Обычный пост-трейнинг идёт после RLVR / RL для рассуждений.

Шаг SFT, 2 эпохи.

  • Данные рассуждений — непроверяемые задачи («напиши доказательство X»), V3 в роли судьи (600 тыс.).
  • Данные без рассуждений — SFT-датасет V3 (200 тыс.).

Шаг RLHF.

  • Здесь повторно используется RL для рассуждений в стиле R1-Zero.
  • Непроверяемые задачи — конвейер RLHF от V3. По-прежнему GRPO (для RLHF).

Довольно хорошо (но вы это знали). [Таблица сравнения с Claude-3.5-Sonnet, GPT-4o, DeepSeek-V3, o1-mini, o1-1217 по английским, кодовым, математическим и китайским бенчмаркам: R1 — AIME 2024 79,8, MATH-500 97,3, Codeforces 2029 (96,3 перцентиль), MMLU 90,8.]

Дистилляция — научим не рассуждающие модели рассуждать? (49)

Заголовок раздела «Дистилляция — научим не рассуждающие модели рассуждать? (49)»

Конвейер: R1 генерирует трассы рассуждений (800 тыс.!); учим Qwen 2.5 дистилляцией. [Таблица: DeepSeek-R1-Distill-Qwen-32B — AIME 2024 72,6, MATH-500 94,3, GPQA 62,1; Distill-Qwen-1.5B — 28,9 / 83,9 / 33,8 — уже выше GPT-4o на AIME (9,3).]

В статье есть целый раздел о неудачных попытках.

  • PRM (PRM800k, DeepseekMath): [цитата — модели награды за процесс трудно определить (что такое «шаг»), трудно размечать промежуточные шаги, и они ведут к взлому награды].
  • MCTS: [цитата — пространство поиска при генерации токенов экспоненциально больше, чем в шахматах; модель ценности для направления поиска трудно обучить].

Почему мы её изучаем?

  • Вышла одновременно с R1.
  • Тоже обходит o1 с помощью RL.

[Столбчатая диаграмма: Kimi k1.5 long-CoT против OpenAI o1 на AIME 2024, MATH-500, Codeforces, LiveCodeBench, MathVista, MMMU.] Ключевые шаги:

  • построение датасета (фильтрация по сложности);
  • SFT (для длинных цепочек рассуждений);
  • RL (со своей функцией потерь policy gradient).

Отбор данных:

  • стандартный отбор по математическим постановкам, баланс тем;
  • исключают вопросы с выбором ответа и «верно/неверно» (ложные положительные срабатывания);
  • оставляют только примеры, на которых модель ошибается при best-of-8.

SFT — описан скупо, лишь как «промпт-инжиниринг» (дистилляция?).

В Kimi — модель награды, сравнивающая с эталонным ответом, поэтому задача оптимизации такова:

max⁡θE(x,y∗)∼D[E(y,z)∼πθ[r(x,y,y∗)]−τ KL(πθ(x) ∥ πθi(x))].\max_\theta \mathbb{E}_{(x, y^*) \sim D}\left[\mathbb{E}_{(y, z) \sim \pi_\theta}\left[r(x, y, y^*)\right] - \tau\, \mathrm{KL}\left(\pi_\theta(x) \,\|\, \pi_{\theta_i}(x)\right)\right].

Алгоритм RL вдохновлён выводом в стиле DPO (непараметрическое допущение + выражаем rr):

r(x,y,y∗)−τlog⁡Z=τlog⁡π∗(y,z∣x)πθi(y,z∣x).r(x, y, y^*) - \tau \log Z = \tau \log\frac{\pi^*(y, z \mid x)}{\pi_{\theta_i}(y, z \mid x)}.

В качестве суррогата — квадратичные потери:

L(θ)=E(x,y∗)∼D[E(y,z)∼πθi[(r(x,y,y∗)−τlog⁡Z−τlog⁡πθ(y,z∣x)πθi(y,z∣x))2]].L(\theta) = \mathbb{E}_{(x, y^*) \sim D}\left[\mathbb{E}_{(y, z) \sim \pi_{\theta_i}}\left[\left(r(x, y, y^*) - \tau \log Z - \tau \log\frac{\pi_\theta(y, z \mid x)}{\pi_{\theta_i}(y, z \mid x)}\right)^2\right]\right].

Policy gradient с базовой линией и регуляризацией:

1k∑j=1k(∇θlog⁡πθ(yj,zj∣x)(r(x,yj,y∗)−rˉ)−τ2∇θ(log⁡πθ(yj,zj∣x)πθi(yj,zj∣x))2).\frac{1}{k}\sum_{j=1}^{k}\left(\nabla_\theta \log \pi_\theta(y_j, z_j \mid x)\left(r(x, y_j, y^*) - \bar r\right) - \frac{\tau}{2}\nabla_\theta\left(\log\frac{\pi_\theta(y_j, z_j \mid x)}{\pi_{\theta_i}(y_j, z_j \mid x)}\right)^2\right).

У целевой функции Kimi нет той же проблемы смещения по длине, что у GRPO… Но они хотят дополнительно сжать цепочки рассуждений. Для каждого батча есть награда за длину:

len_reward(i)={λ,если r(x,yi,y∗)=1,min⁡(0,λ),если r(x,yi,y∗)=0,λ=0,5−len(i)−min_lenmax_len−min_len.\text{len\_reward}(i) = \begin{cases} \lambda, & \text{если } r(x, y_i, y^*) = 1,\\ \min(0, \lambda), & \text{если } r(x, y_i, y^*) = 0, \end{cases} \qquad \lambda = 0{,}5 - \frac{\text{len}(i) - \text{min\_len}}{\text{max\_len} - \text{min\_len}}.

Как это понимать?

  • λ\lambda лежит в [−0,5; 0,5][-0{,}5;\ 0{,}5], более длинные ответы в группе получают отрицательное значение.
  • Правильные ответы поощряются быть короткими.
  • Неправильные ответы поощряются быть короче середины диапазона длин роллаутов.

(Включают это только позже в обучении — из-за влияния на качество.)

Учебный план (curriculum):

  • присваивают задачам метки сложности и идут от простого к сложному;
  • сэмплируют задачи пропорционально (1 − доля успеха), чтобы не повторять решённые.

Награды:

  • для кода — берут задачи с эталонными решениями и генерируют новые тесты;
  • для математики — 800 тыс. примеров для обучения модели награды на цепочке рассуждений, проверяющей эквивалентность ответов. [Цитата: при ручной проверке классическая модель награды дала точность около 84,4, а модель с цепочкой рассуждений — 98,5; в RL использовали вторую.]

Системные стороны RL и загрузка железа очень важны. Почему RL трудно сделать эффективным?

  • On-policy = роллауты, а значит (медленный) инференс.
  • Переключение с обучения на роллауты часто означает разные фреймворки.
  • Длинные цепочки рассуждений делают батчи очень неровными.

[Схема Kimi: rollout-воркеры, train-воркеры (политика и эталонная модель), мастер, модели награды для кода, математики, K-12 и зрения, буфер воспроизведения; «частичные роллауты» — длинные траектории доигрываются по кускам в следующих итерациях.]

[Рисунок 4 «Гибридное развёртывание»: в одном поде Megatron (обучение) и vLLM (роллауты) делят GPU; после шага обучения Megatron выгружает память и передаёт веса в vLLM через общий движок чекпоинтов; после роллаутов vLLM освобождает память, и Megatron продолжает.]

Мы уже знаем, что это примерно равно или лучше o1. Другие интересные результаты… [Графики: для маленькой модели только на математических данных точность на разных бенчмарках растёт вместе с длиной ответов по ходу RL.]

Можно ли обойтись без «отрицательных градиентов» в стиле RL и учиться только на положительных? [Графики: их RL-метод стабильно выше, чем ReST (expert iteration — дообучение только на правильных ответах).]

Лучше o1 и R1 (хотя вышел позже)… но интересны результаты о масштабировании и данных. [Таблица Qwen3-235B-A22B и Qwen3-32B против OpenAI-o1, DeepSeek-R1, Grok 3 Beta, Gemini 2.5 Pro, o3-mini на ArenaHard, AIME, LiveCodeBench, Codeforces, Aider, BFCL и др.]

RLHF идёт после RL для рассуждений (как в R1), дистилляция — после этого. [Рисунок 1 техотчёта Qwen3: флагманские модели — этап 1 холодный старт на длинных CoT → этап 2 RL для рассуждений → этап 3 слияние режимов мышления → этап 4 общий RL; лёгкие модели — дистилляция «от сильного к слабому» из флагманов.]

Мы уже знаем этот сценарий, и Qwen многое из него использует…

  • Фильтрация по сложности (через best-of-n, как в Kimi):
    • убирают то, что модель решает без цепочки рассуждений;
    • убирают слишком похожее на валидационные данные.
  • Ручная фильтрация качества цепочек рассуждений (угадано против честно решено).
  • RL с GRPO всего на 3995 примерах.

Слияние режимов мышления — управление длиной цепочки рассуждений.

  1. Смешиваем данные с мышлением и без, с тегами. [Таблица шаблонов: в режиме мышления — <|im_start|>user {query} /think<|im_end|>, ответ ассистента начинается с <think>{thinking content}</think>; в режиме без мышления — /no_think и пустой блок <think></think>.]
  2. Досрочная остановка по специальной строке. [Цитата: когда длина размышления достигает заданного пользователем порога, процесс вручную останавливают и вставляют инструкцию Considering the limited time by the user, I have to give the solution based on the thinking directly now.\n</think>.\n\n, после чего модель даёт ответ на основе накопленного рассуждения; эта способность не обучалась явно, а возникла как следствие слияния режимов.]

[Рисунок 2 Qwen3: качество Qwen3-235B-A22B на AIME’24, AIME’25, LiveCodeBench v5 и GPQA Diamond плавно растёт с «бюджетом мышления» от 1 до 32 тыс. токенов; без мышления — горизонтальная линия ниже.]

[Таблица: качество после этапа 2 (RL для рассуждений), этапа 3 (слияние режимов) и этапа 4 (общий RL) в режимах с мышлением и без. Например, AIME’24 в режиме мышления: 83,8 → 81,9 → 81,4; общие задачи и следование инструкциям после этапа 4 растут.]

Заметьте, что способности к математике и STEM немного снижаются после общего RLHF.

  • Переоптимизация — проблема… RL в узких областях — одно из решений.
  • GRPO прост (хотя с изъянами) и делает возможным RLVR.
  • В мире много успешных рецептов (R1, Kimi 1.5, Qwen3).

  1. Эффект длины. Возьмите 20 пар ответов одной модели на один вопрос, где один ответ длиннее, и попросите модель-судью (урок 7.3.2) выбрать лучший — сначала как есть, потом поменяв ответы местами. Как часто побеждает длинный?
  2. DPO руками. Посчитайте потери DPO для одного примера: β=0,1\beta = 0{,}1, логарифмы вероятностей выбранного ответа у политики −20 и у эталона −22, отвергнутого — −25 и −24. Каков вес σ(r^l−r^w)\sigma(\hat r_l - \hat r_w) в градиенте (слайд 58)?
  3. Смещения GRPO. Для группы из 4 ответов с наградами [1,0,0,0][1, 0, 0, 0] и [1,1,1,0][1, 1, 1, 0] посчитайте преимущества GRPO (с делением на std) и Dr. GRPO (без него). Какая группа получает больший вес в GRPO и почему?
  4. Практикум. Сделайте практикум 6.4.5 «GRPO своими руками» — это уменьшенная версия задания 5 CS336.
ENRU
alignmentвыравнивание (согласование поведения модели с намерениями людей)
supervised fine-tuning (SFT), instruction tuningобучение с учителем на демонстрациях, дообучение на инструкциях
mid-training, two-phase trainingпромежуточное обучение, двухфазное обучение
catastrophic forgettingкатастрофическое забывание
RLHF, reward model, pairwise feedbackRL на обратной связи от людей, модель награды, попарная обратная связь
generator–verifier gapразрыв «генерация — проверка»
annotator, crowdworkerразметчик, краудворкер
AI feedback, Constitutional AIобратная связь от ИИ, «конституционный ИИ»
over-refusalизбыточные отказы
PPO, TRPO, clipping, GAEпроксимальная оптимизация политики, метод доверительной области, обрезка, обобщённая оценка преимущества
DPO, SimPO, implied rewardпрямая оптимизация предпочтений, SimPO, неявная награда
overoptimization, reward hackingпереоптимизация, взлом награды
mode collapse, calibrationсхлопывание мод, калибровка
RLVR (verifiable rewards)RL с проверяемыми наградами
GRPO, group-normalized advantageGRPO, преимущество, нормированное по группе
baseline, unbiased estimatorбазовая линия, несмещённая оценка
length biasсмещение по длине
process reward model (PRM), MCTSмодель награды за процесс, поиск по дереву Монте-Карло
distillationдистилляция
thinking mode fusion, thinking budgetслияние режимов мышления, бюджет мышления
test-time scalingмасштабирование во время ответа