Как улучшать ответы, не уходя слишком далеко от исходной модели?
Alignment по предпочтениям сдвигает вероятности ответов в сторону выбранных
людьми и одновременно ограничивает уход от reference-модели. PPO, DPO и GRPO
различаются вычислительной механикой, но наследуют одну уязвимость:
оптимизируют измеренный proxy. Урок о том, откуда берётся формула
π∗∝πrefer/β, почему её нельзя дожимать до
конца и как этот разворот выглядит на настоящих человеческих предпочтениях.
От демонстрации к сравнению
Типичный pipeline начинается с pretrained language model. Затем:
supervised fine-tuning, SFT, на хороших ответах;
сбор попарных предпочтений;
обучение reward model или прямое использование пар;
оптимизация policy;
независимая человеческая и автоматическая оценка.
SFT учит имитировать демонстрации. Preference optimization отвечает на более
тонкий вопрос: среди нескольких правдоподобных продолжений какие
предпочтительнее. Она не заменяет знания из предобучения, а
меняет распределение ответов. Модель уже умеет говорить — мы решаем, что из
умеемого она будет говорить чаще.
Обозначим prompt x, ответ y, policy πθ(y∣x) и замороженную
reference πref. Всё, что делает preference optimization, —
переносит вероятностную массу между ответами. Эту физическую картинку стоит
держать в голове весь урок: масса не создаётся, она перетекает.
Что именно мы максимизируем
Если максимизировать только learned reward rϕ(x,y), policy найдёт
области, где reward model ошибается: любая обученная функция где-то неверна, а
оптимизатор — прицельный искатель именно таких мест. Поэтому к цели добавляют
штраф Кульбака–Лейблера:
πmaxEy∼π(⋅∣x)[rϕ(x,y)−βlogπref(y∣x)π(y∣x)].
Второе слагаемое в среднем равно расхождению
DKL(π∥πref)=y∑π(y∣x)logπref(y∣x)π(y∣x)≥0,
поэтому вся задача читается как «набрать reward, не отходя далеко от того, чем
модель была». Большая β удерживает привычное поведение, малая разрешает
сильное изменение.
Есть эквивалентная запись — с ограничением вместо штрафа:
πmaxEπ[r]приDKL(π∥πref)≤ε.
Связь между двумя формами — ровно та, что разбиралась в
уроке об ограничениях и множителях Лагранжа: β есть
множитель, теневая цена одного ната расхождения. Практически это значит, что
подбор β и подбор допустимого бюджета KL — одна и та же настройка,
записанная с двух сторон.
Вывод оптимальной policy
Решим задачу для фиксированного prompt. Введём лагранжиан с условием
нормировки:
Формула отвечает сразу на несколько вопросов. Во-первых, reference задаёт
prior: ответ с почти нулевой исходной вероятностью трудно поднять, если reward
конечен. Во-вторых, важны только разности reward — общий сдвиг уходит в
Z. В-третьих, отношение вероятностей двух ответов зависит от разрыва reward
и от β:
Часто спрашивают: зачем держаться за reference, если reward известен? Ответ в
том, что reward не известен — известна его оценка, обученная по конечной
выборке сравнений. KL-штраф работает регуляризатором там, где proxy
ненадёжен. Это та же логика, что в
регуляризации и ограничениях: мы соглашаемся не получить
максимум измеренного критерия ради устойчивости результата.
Второй довод практический. Reference — модель, которую уже проверили: она
умеет форматировать, не разваливает грамматику, держит стиль. Уход от неё в
среднем оплачивается регрессиями там, где никто не смотрит.
Рис. 81.1. Малое β выжимает распределение в один ответ
Реальные данные MovieLens 100K: 40 «ответов» — самых обсуждаемых фильмов,
reference — распределение по популярности, reward обучен на 2000 настоящих
попарных сравнениях. Серые столбцы — πref, цветные — π∗
при β=2 (KL =0,02), β=0,6 (KL =0,20) и β=0,2
(KL =1,51). Лидер растёт с 0,022 до 0,389, а хвост гаснет: при
жёсткой оптимизации модель перестаёт предлагать всё, кроме нескольких ответов.
Опыт на настоящих предпочтениях
Дальше нужен честный полигон. Возьмём MovieLens 100K — реальные оценки фильмов
реальными людьми — и устроим маленький alignment-эксперимент, в котором
«истина» измеряется независимо от «разметчиков».
Роль разметчиков играют 272 пользователя не старше 25 лет: из их оценок
случайно набраны 2000 попарных сравнений вида «фильм A понравился больше,
чем B». Роль независимых судей — 399 пользователей 35 лет и старше; их
средняя оценка фильма считается настоящей пользой v(y), и оптимизатор её
никогда не видит. «Ответами» служат 40 самых обсуждаемых фильмов; у каждого не
меньше 90 оценок разметчиков и 59 оценок судей. Reference — распределение по
популярности среди разметчиков.
Результат подгонки: на обучающих парах accuracy 0,676, на новых парах тех
же молодых разметчиков — 0,671, а на 4000 парах независимых судей — только
0,627. Разрыв невелик, но он не шум: модель выучила вкус той группы,
которая её размечала.
Теперь у нас есть всё, чтобы построить обещанную кривую: policy
πβ∝πrefer/β, измеряемый proxy
Рис. 81.2. Proxy растёт всю дорогу, истина разворачивается
Красная кривая — средний proxy-reward, он растёт монотонно всю дорогу: с
−0,005 у reference до 0,895 при почти полном схлопывании. Синяя
кривая — средняя оценка независимых судей: поднимается с 3,733 до
максимума 4,098 при KL =2,19 (это β=0,15), а затем падает до
4,049. Зелёная полоса — то же самое, когда сравнений всего 200:
двенадцать независимых разметок дают на конце разброс итога в 0,346 балла
против 0,095 в середине пути.
Числа стоит прочитать медленно. Оптимизация принесла +0,365 балла к оценке
независимых зрителей — это настоящая польза, не иллюзия. Но последняя треть
пути отдала обратно 0,049 балла, примерно седьмую часть выигрыша, и
продолжала при этом рапортовать рост proxy. Лидер по обученному reward —
«Титаник» с оценкой судей 4,041, тогда как лучший по мнению судей фильм —
«Побег из Шоушенка» с 4,333. Оптимизатор об этом не знает: доступа к v
у него нет.
Заметьте вторую, менее очевидную часть картинки: разброс. При скудной разметке
итог полной оптимизации становится лотереей — в двенадцати прогонах конечная
точка гуляла на треть балла в зависимости от того, какие 200 пар случайно
попались разметчику. На середине пути, при KL около 0,39, тот же разброс
втрое меньше. KL-штраф защищает не только от систематического смещения, но и
от дисперсии proxy: у мягкой policy просто нет способа поставить всё на один
шумно оценённый ответ.
PPO: осторожный шаг по собственным ответам
PPO генерирует ответы текущей policy, получает rewards и оценивает advantage
At. Ключевая величина — probability ratio:
ρt(θ)=πθold(at∣st)πθ(at∣st).
Наивная цель E[ρtAt] поощряет бесконечно увеличивать
вероятность любого выгодного действия внутри одного batch, хотя оценка
At верна лишь вблизи πθold. Отсюда
clipped objective:
Рис. 81.3. Clipping снимает награду за слишком большой шаг
Слева A=+2: до ρ=1,2 вклад растёт, дальше выходит на плато
2,4 — увеличивать вероятность сильнее невыгодно. Справа A=−2:
плато появляется слева, при ρ<0,8, а вправо функция падает без предела.
Асимметрия намеренная: «слишком сильно продвинуть» clipping запрещает,
«слишком сильно откатить вредное» — нет.
Advantage считают относительно value-функции критика,
At=rt+γV(st+1)−V(st),
а KL к reference добавляют либо прямо в reward,
r~=rϕ−βlog(πθ/πref), либо отдельным
слагаемым в loss. PPO on-policy: после заметного обновления старые samples
устаревают. Pipeline дорогой — policy, reference, reward model и critic
занимают память одновременно, а шаги по данным остаются шумными оценками
градиента, знакомыми по уроку про SGD.
DPO: пары сразу задают логистическую цель
Формула π∗∝πrefer/β обратима. Выразим reward
через policy:
r(x,y)=βlogπref(y∣x)π∗(y∣x)+βlogZ(x).
Подставим это в модель Брэдли–Терри. Слагаемое βlogZ(x) одинаково для
обоих ответов на один prompt и сокращается в разности — вот почему неизвестная
нормировка не мешает. Остаётся обычная логистическая цель на парах:
Вес шага σ(−βΔ) велик там, где модель ещё «не поверила» в
предпочтение, и гаснет, когда пара уже разведена. Отдельный reward model и
online sampling не нужны: обучение похоже на supervised pass по парам, как в
обычной логистической задаче с кросс-энтропией.
Но данные фиксированы. DPO не увидит новые странные ответы, которые policy
начнёт порождать после сдвига, пока их не соберут в следующем цикле. И пара
предпочтений говорит только относительное: если оба ответа плохи, DPO всё
равно усиливает меньшее из двух зол. Нужны абсолютные фильтры и качественный
сбор кандидатов.
GRPO: сравнение внутри группы
Group Relative Policy Optimization генерирует группу ответов y1,…,yG
на один prompt и нормирует rewards внутри группы:
Ai=sr+ϵri−r,r=G1k∑rk,sr2=G1k∑(rk−r)2.
Отдельный value model может не требоваться: роль базовой линии играет среднее
по группе. Сравнение внутри одного prompt убирает часть различий сложности
между prompt — и это не мелочь.
Рис. 81.4. Группа сравнивает ответы с их же соседями, а не с чужим prompt
Реальные пользователи MovieLens: щедрый ставит в среднем 4,66, строгий —
1,83. Слева сырые оценки: разрыв уровней 2,75 балла заглушает разницу
между ответами внутри каждой группы. Справа нормировка внутри группы: средний
уровень обнуляется, остаётся только то, чем ответы отличаются друг от друга.
У нормировки есть цена, о которой редко говорят. Деление на sr
эквивалентно уменьшению β: если advantage в 1/sr раз больше, то тот
же KL-штраф весит в sr раз меньше, и фиксированная точка становится
π(y)∝πref(y)exp(βeffr(y)),βeff≈βsr.
Мы проверили это численно на тех же реальных данных: при β=0,6 и
группе из 64 ответов GRPO сходится к распределению, совпадающему с π∗
при βeff=0,165 — расхождение всего 0,017 ната. То
есть эффективная β упала в 3,6 раза, а KL к reference вырос с
0,20 до 1,95: конфигурация обещала мягкий режим, а фактически
получился жёсткий.
Проверка этого предупреждения тоже численная. Та же процедура с группой из 16
ответов вместо 64 схлопывается: policy отдаёт одному ответу вероятность
0,998, KL к reference 3,75. Разнообразие sampling — не косметика, а
условие корректности оценки.
Слева: DKL(πt∥π∗) по шагам на одних и тех же реальных
reward. DPO приходит к 1,9⋅10−8, PPO — к 2,1⋅10−4: две
совершенно разные процедуры сходятся к одной и той же аналитической policy.
GRPO с группой 64 останавливается на 0,94 — это не ошибка кода, а другая
эффективная β; GRPO с группой 16 уходит в коллапс. Справа то же самое
в вероятностях: у π∗ лидер набирает 0,103, у GRPO-64 заметно больше,
у GRPO-16 — почти всю массу.
Итог короткий: PPO и DPO — два способа добраться до одной точки
π∗(β), а GRPO по дороге незаметно меняет саму точку. Спор «что лучше»
без указания фактического KL и фактического βeff
беспредметен.
Лаборатория alignment
β, KL и разрыв между proxy и пользой
График шире экрана — листайте по горизонтали →
Загружается живая иллюстрация…
Двигайте β: при большом значении policy почти неотличима от reference,
при малом мгновенно концентрируется на лидере. Затем включайте лазейку в
reward — она добавляет очки многословному и самоуверенному ответу, не меняя их
настоящей пользы. Синяя кривая справа начнёт разворачиваться, а красная
продолжит расти: вы своими руками воспроизведёте рисунок 81.2. Переключатель
advantage показывает, как нормировка внутри группы тайно уменьшает β и
проносит policy мимо максимума пользы.
Проверьте отдельно случай, когда лазейки нет вовсе: синяя кривая тогда растёт
почти монотонно, и разрыва между proxy и истиной не возникает. Беда не в
оптимизации как таковой, а в несовпадении измеряемого с нужным.
Длина как самая частая лазейка
Reward часто коррелирует с длиной: подробные ответы действительно полезнее в
train. Policy учится добавлять вступления, повторы и оговорки — форма растёт
быстрее содержания. Диагностика:
reward против числа токенов;
human preference на length-matched парах;
регрессия reward на длину и анализ остатка,
ri=a+bℓi+ηi,Aicorr=ri−b^(ℓi−ℓˉ);
отдельный penalty или явный критерий краткости;
тест-prompts, где правильный ответ должен быть коротким.
Нельзя просто запретить длинные ответы: сложная задача требует пространства.
Цель должна учитывать prompt и полноту, а не наказывать символы.
Как сравнивать методы честно
Одинаковая preference accuracy не означает одинаковый aligned model.
Сравнение PPO, DPO и GRPO требует одной стартовой SFT и reference,
сопоставимого preference signal, одинакового протокола генерации и оценки,
нескольких seed и win rate с доверительным интервалом. Интервал — обычная
задача из урока о доверительных интервалах:
p^±z0,975np^(1−p^).
При p^=0,55 и n=300 парах половина ширины равна 0,056: «победа
55%» неотличима от ничьей. Чтобы получить ±0,05 в худшем случае, нужно
n≥(1,96/0,05)2⋅0,25≈385 сравнений, и это при парном
дизайне, когда один и тот же prompt показан обеим моделям.
LLM-as-a-judge масштабирует оценку, но наследует bias судьи: порядок ответов,
стиль, самопредпочтение. Часть выборки должна быть оценена людьми вслепую. И
средние скрывают локальное: KL, малый в среднем, может быть огромным на узкой
группе prompt, поэтому смотрят распределение по prompt и верхний процентиль
Русская школа исследования операций обсуждала подмену цели измеримым
показателем задолго до alignment. Юрий Борисович Гермейер (1918–1975),
основатель кафедры исследования операций факультета ВМК МГУ, в книге
«Введение в теорию исследования операций» (1971) настойчиво разделял три
вещи: цель оперирующей стороны, математическую модель операции и критерий
эффективности. Критерий — лишь модель цели; исследователь обязан помнить о
разрыве между ними и проверять, не оптимизирует ли он удобно измеримое вместо
нужного. Это формулировка нашей задачи за полвека до RLHF, сделанная людьми,
у которых ценой ошибки была не метрика на leaderboard.
Второй вклад Гермейера, полезный практически, — свёртка нескольких критериев
не суммой, а минимумом нормированных показателей:
u(θ)=iminλiui(θ),
то есть оценка системы по её худшему критерию. Для выбора checkpoint это
значит: не усредняйте helpfulness, safety и factuality в одно число, где рост
одного гасит провал другого, а требуйте, чтобы каждый нормированный критерий
был не ниже порога. Такой принцип гарантированного результата защищает от
«выигрыша в среднем при обрушенной безопасности» лучше любой взвешенной суммы.
Мини-исследование: Pareto-кривая KL и предпочтений
Обучите несколько checkpoint при β∈{0,03;0,1;0,3;1} или
остановите один запуск на разных шагах. Для каждого измерьте held-out win
rate, KL к reference, длину, diversity и factual error rate. Нанесите точки на
плоскость win rate–KL.
Точка A доминируется точкой B, если
win(B)≥win(A)иKL(B)≤KL(A),
причём хотя бы одно неравенство строгое. Недоминируемые точки образуют Pareto
frontier. Выбор на frontier требует предметной цены ухода от reference;
максимальный win rate не является автоматическим решением — здесь и работает
гермейеровский минимум по критериям.
Добавьте prompts вне preference-домена. Если KL мал в среднем, он всё же может
быть велик на узкой группе: покажите распределение per-prompt KL и верхний
процентиль.
Проверка reward hacking до дорогого запуска
Постройте набор controlled pairs: одинаковое содержание, но разная длина,
число заголовков, уверенность тона и повтор ключевых слов. Прогоните reward
model до policy optimization. Если surface feature систематически повышает
score, у вас есть предсказуемая лазейка — и закрыть её дешевле сейчас.
Затем включите adversarial generation: попросите простую policy или поиск
максимизировать reward при сохранённом prompt. Каждые 20 шагов отдавайте
samples независимым людям вслепую. График proxy–human divergence определяет
stop point. Это практическое продолжение
Goodhart-эффекта reward model, а не постфактум объяснение.
Проверьте reversibility: после preference optimization выполните небольшой SFT
на исходных demonstrations и измерьте, возвращаются ли длина, KL и качества.
Если поведение не возвращается, обновление затронуло представления шире
наблюдаемого preference direction.
Alignment не заканчивается loss
После обучения нужны system-level меры: retrieval, tool permissions,
отказоустойчивый интерфейс, logging, red teaming. Модель может правильно
отказаться в одиночном тесте и ошибиться в длинном агентном цикле:
агентные системы перемножают вероятности успеха по шагам, и
0,9920≈0,82 — совсем другой уровень надёжности, чем 0,99.
Преференции меняются между группами и контекстами — наш эксперимент с
разметчиками до 25 и судьями 35+ ровно об этом: корреляция вкусов 0,80, но
на отдельных ответах расхождение достигает 0,84 балла. Полезная система
позволяет уточнить цель, показывает неопределённость и не выдаёт один
усреднённый вкус за универсальный. Кто размечал — тот и определил, что значит
«хорошо».
Proxy требует независимого суда
PPO использует online trajectories и критика, DPO учится прямо на
offline-парах, GRPO строит относительный advantage внутри группы. Все три
сводятся к одной формуле экспоненциального наклона reference и все три
упираются в один предел: измеренное — не то же самое, что нужное. KL
удерживает обновление возле reference и покупает устойчивость, но не
гарантирует истины.
Маленький опыт на реальных оценках фильмов показал историю в миниатюре:
+0,365 балла честного выигрыша, разворот на KL =2,19 и −0,049
балла, отданные назад при полном дожатии proxy, который всё это время бодро
рос. Главная проверка одна — разрыв между learned reward и независимым
человеческим результатом при сильной оптимизации. Кто этот разрыв не измеряет,
тот его и не увидит.