Alignment по предпочтениям сдвигает вероятности ответов в сторону выбранных людьми и одновременно ограничивает уход от reference-модели. PPO, DPO и GRPO различаются вычислительной механикой, но наследуют одну уязвимость: оптимизируют измеренный proxy. Урок о том, откуда берётся формула ππrefer/β\pi^*\propto\pi_{\mathrm{ref}}e^{r/\beta}, почему её нельзя дожимать до конца и как этот разворот выглядит на настоящих человеческих предпочтениях.

От демонстрации к сравнению

Типичный pipeline начинается с pretrained language model. Затем:

  1. supervised fine-tuning, SFT, на хороших ответах;
  2. сбор попарных предпочтений;
  3. обучение reward model или прямое использование пар;
  4. оптимизация policy;
  5. независимая человеческая и автоматическая оценка.

SFT учит имитировать демонстрации. Preference optimization отвечает на более тонкий вопрос: среди нескольких правдоподобных продолжений какие предпочтительнее. Она не заменяет знания из предобучения, а меняет распределение ответов. Модель уже умеет говорить — мы решаем, что из умеемого она будет говорить чаще.

Обозначим prompt xx, ответ yy, policy πθ(yx)\pi_\theta(y\mid x) и замороженную reference πref\pi_{\mathrm{ref}}. Всё, что делает preference optimization, — переносит вероятностную массу между ответами. Эту физическую картинку стоит держать в голове весь урок: масса не создаётся, она перетекает.

Что именно мы максимизируем

Если максимизировать только learned reward rϕ(x,y)r_\phi(x,y), policy найдёт области, где reward model ошибается: любая обученная функция где-то неверна, а оптимизатор — прицельный искатель именно таких мест. Поэтому к цели добавляют штраф Кульбака–Лейблера:

maxπ  Eyπ(x)[rϕ(x,y)βlogπ(yx)πref(yx)].\max_\pi\; \mathbb E_{y\sim\pi(\cdot\mid x)} \left[ r_\phi(x,y) -\beta\log\frac{\pi(y\mid x)} {\pi_{\mathrm{ref}}(y\mid x)} \right].

Второе слагаемое в среднем равно расхождению

DKL(ππref)=yπ(yx)logπ(yx)πref(yx)    0,D_{\mathrm{KL}}(\pi\|\pi_{\mathrm{ref}}) =\sum_y\pi(y\mid x)\log\frac{\pi(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)}\;\ge\;0,

поэтому вся задача читается как «набрать reward, не отходя далеко от того, чем модель была». Большая β\beta удерживает привычное поведение, малая разрешает сильное изменение.

Есть эквивалентная запись — с ограничением вместо штрафа:

maxπ  Eπ[r]приDKL(ππref)ε.\max_\pi\;\mathbb E_\pi[r]\quad\text{при}\quad D_{\mathrm{KL}}(\pi\|\pi_{\mathrm{ref}})\le\varepsilon .

Связь между двумя формами — ровно та, что разбиралась в уроке об ограничениях и множителях Лагранжа: β\beta есть множитель, теневая цена одного ната расхождения. Практически это значит, что подбор β\beta и подбор допустимого бюджета KL — одна и та же настройка, записанная с двух сторон.

Вывод оптимальной policy

Решим задачу для фиксированного prompt. Введём лагранжиан с условием нормировки:

L=yπ(y)r(y)βyπ(y)logπ(y)πref(y)+λ(yπ(y)1).\mathcal L=\sum_y\pi(y)r(y) -\beta\sum_y\pi(y)\log\frac{\pi(y)}{\pi_{\mathrm{ref}}(y)} +\lambda\Big(\sum_y\pi(y)-1\Big).

Производная по π(y)\pi(y):

Lπ(y)=r(y)βlogπ(y)πref(y)β+λ=0.\frac{\partial\mathcal L}{\partial\pi(y)} =r(y)-\beta\log\frac{\pi(y)}{\pi_{\mathrm{ref}}(y)}-\beta+\lambda=0 .

Отсюда логарифм отношения линеен по reward,

logπ(y)πref(y)=r(y)β+const,\log\frac{\pi(y)}{\pi_{\mathrm{ref}}(y)}=\frac{r(y)}{\beta}+\text{const},

а сама оптимальная policy получается экспоненциальным «наклоном» reference:

π(yx)=1Z(x)πref(yx)exp ⁣(r(x,y)β),Z(x)=yπref(yx)er(x,y)/β.\pi^*(y\mid x)= \frac{1}{Z(x)}\,\pi_{\mathrm{ref}}(y\mid x)\exp\!\Big(\frac{r(x,y)}{\beta}\Big), \qquad Z(x)=\sum_y\pi_{\mathrm{ref}}(y\mid x)e^{r(x,y)/\beta}.

Формула отвечает сразу на несколько вопросов. Во-первых, reference задаёт prior: ответ с почти нулевой исходной вероятностью трудно поднять, если reward конечен. Во-вторых, важны только разности reward — общий сдвиг уходит в ZZ. В-третьих, отношение вероятностей двух ответов зависит от разрыва reward и от β\beta:

π(y1)π(y2)=πref(y1)πref(y2)exp ⁣(r(y1)r(y2)β).\frac{\pi^*(y_1)}{\pi^*(y_2)} =\frac{\pi_{\mathrm{ref}}(y_1)}{\pi_{\mathrm{ref}}(y_2)} \exp\!\Big(\frac{r(y_1)-r(y_2)}{\beta}\Big).

Reference как якорь, а не как тормоз

Часто спрашивают: зачем держаться за reference, если reward известен? Ответ в том, что reward не известен — известна его оценка, обученная по конечной выборке сравнений. KL-штраф работает регуляризатором там, где proxy ненадёжен. Это та же логика, что в регуляризации и ограничениях: мы соглашаемся не получить максимум измеренного критерия ради устойчивости результата.

Второй довод практический. Reference — модель, которую уже проверили: она умеет форматировать, не разваливает грамматику, держит стиль. Уход от неё в среднем оплачивается регрессиями там, где никто не смотрит.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Столбчатая диаграмма: для двенадцати ответов показаны вероятности reference и трёх оптимальных policy при бета 2, 0.6 и 0.2; при бета 0.2 лидер забирает почти сорок процентов массы
Рис. 81.1. Малое β выжимает распределение в один ответ

Реальные данные MovieLens 100K: 40 «ответов» — самых обсуждаемых фильмов, reference — распределение по популярности, reward обучен на 2000 настоящих попарных сравнениях. Серые столбцы — πref\pi_{\mathrm{ref}}, цветные — π\pi^* при β=2\beta=2 (KL =0,02=0{,}02), β=0,6\beta=0{,}6 (KL =0,20=0{,}20) и β=0,2\beta=0{,}2 (KL =1,51=1{,}51). Лидер растёт с 0,0220{,}022 до 0,3890{,}389, а хвост гаснет: при жёсткой оптимизации модель перестаёт предлагать всё, кроме нескольких ответов.

Опыт на настоящих предпочтениях

Дальше нужен честный полигон. Возьмём MovieLens 100K — реальные оценки фильмов реальными людьми — и устроим маленький alignment-эксперимент, в котором «истина» измеряется независимо от «разметчиков».

Роль разметчиков играют 272 пользователя не старше 25 лет: из их оценок случайно набраны 2000 попарных сравнений вида «фильм AA понравился больше, чем BB». Роль независимых судей — 399 пользователей 35 лет и старше; их средняя оценка фильма считается настоящей пользой v(y)v(y), и оптимизатор её никогда не видит. «Ответами» служат 40 самых обсуждаемых фильмов; у каждого не меньше 90 оценок разметчиков и 59 оценок судей. Reference — распределение по популярности среди разметчиков.

Reward model — та же модель Брэдли–Терри, что в прошлом уроке:

P(yiyj)=σ(rirj)=11+e(rirj),P(y_i\succ y_j)=\sigma\big(r_i-r_j\big)=\frac{1}{1+e^{-(r_i-r_j)}},

а её параметры находятся методом максимального правдоподобия:

r^=argmaxr (ij)logσ(rirj)λ2r2.\hat r=\arg\max_r\ \sum_{(i\succ j)}\log\sigma(r_i-r_j)-\frac{\lambda}{2}\|r\|^2 .

Результат подгонки: на обучающих парах accuracy 0,6760{,}676, на новых парах тех же молодых разметчиков — 0,6710{,}671, а на 4000 парах независимых судей — только 0,6270{,}627. Разрыв невелик, но он не шум: модель выучила вкус той группы, которая её размечала.

Теперь у нас есть всё, чтобы построить обещанную кривую: policy πβπrefer/β\pi_\beta\propto\pi_{\mathrm{ref}}e^{r/\beta}, измеряемый proxy

R^(β)=yπβ(y)r(y)\widehat R(\beta)=\sum_y\pi_\beta(y)\,r(y)

и скрытая от оптимизатора истина

V(β)=yπβ(y)v(y).V(\beta)=\sum_y\pi_\beta(y)\,v(y).

Кривая Гудхарта: proxy растёт, истина разворачивается

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
График: по горизонтали KL к reference, красная кривая обученного reward монотонно растёт, синяя кривая оценки независимых судей поднимается, достигает максимума при KL около двух и снижается, зелёная полоса показывает разброс при скудной разметке
Рис. 81.2. Proxy растёт всю дорогу, истина разворачивается

Красная кривая — средний proxy-reward, он растёт монотонно всю дорогу: с 0,005-0{,}005 у reference до 0,8950{,}895 при почти полном схлопывании. Синяя кривая — средняя оценка независимых судей: поднимается с 3,7333{,}733 до максимума 4,0984{,}098 при KL =2,19=2{,}19 (это β=0,15\beta=0{,}15), а затем падает до 4,0494{,}049. Зелёная полоса — то же самое, когда сравнений всего 200: двенадцать независимых разметок дают на конце разброс итога в 0,3460{,}346 балла против 0,0950{,}095 в середине пути.

Числа стоит прочитать медленно. Оптимизация принесла +0,365+0{,}365 балла к оценке независимых зрителей — это настоящая польза, не иллюзия. Но последняя треть пути отдала обратно 0,0490{,}049 балла, примерно седьмую часть выигрыша, и продолжала при этом рапортовать рост proxy. Лидер по обученному reward — «Титаник» с оценкой судей 4,0414{,}041, тогда как лучший по мнению судей фильм — «Побег из Шоушенка» с 4,3334{,}333. Оптимизатор об этом не знает: доступа к vv у него нет.

Заметьте вторую, менее очевидную часть картинки: разброс. При скудной разметке итог полной оптимизации становится лотереей — в двенадцати прогонах конечная точка гуляла на треть балла в зависимости от того, какие 200 пар случайно попались разметчику. На середине пути, при KL около 0,390{,}39, тот же разброс втрое меньше. KL-штраф защищает не только от систематического смещения, но и от дисперсии proxy: у мягкой policy просто нет способа поставить всё на один шумно оценённый ответ.

PPO: осторожный шаг по собственным ответам

PPO генерирует ответы текущей policy, получает rewards и оценивает advantage A^t\widehat A_t. Ключевая величина — probability ratio:

ρt(θ)=πθ(atst)πθold(atst).\rho_t(\theta)= \frac{\pi_\theta(a_t\mid s_t)} {\pi_{\theta_{\mathrm{old}}}(a_t\mid s_t)} .

Наивная цель E[ρtA^t]\mathbb E[\rho_t\widehat A_t] поощряет бесконечно увеличивать вероятность любого выгодного действия внутри одного batch, хотя оценка A^t\widehat A_t верна лишь вблизи πθold\pi_{\theta_{\mathrm{old}}}. Отсюда clipped objective:

Lclip=Emin[ρtA^t,  clip(ρt,1ε,1+ε)A^t].\mathcal L_{\mathrm{clip}} =\mathbb E\min\left[ \rho_t\widehat A_t,\; \operatorname{clip}(\rho_t,1-\varepsilon,1+\varepsilon) \widehat A_t \right].
Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Две панели: для положительного advantage целевая функция растёт до ро равного 1.2 и дальше выходит на плато 2.4, для отрицательного advantage функция ограничена слева и продолжает падать вправо
Рис. 81.3. Clipping снимает награду за слишком большой шаг

Слева A^=+2\widehat A=+2: до ρ=1,2\rho=1{,}2 вклад растёт, дальше выходит на плато 2,42{,}4 — увеличивать вероятность сильнее невыгодно. Справа A^=2\widehat A=-2: плато появляется слева, при ρ<0,8\rho<0{,}8, а вправо функция падает без предела. Асимметрия намеренная: «слишком сильно продвинуть» clipping запрещает, «слишком сильно откатить вредное» — нет.

Advantage считают относительно value-функции критика,

A^t=rt+γV(st+1)V(st),\widehat A_t=r_t+\gamma V(s_{t+1})-V(s_t),

а KL к reference добавляют либо прямо в reward, r~=rϕβlog(πθ/πref)\tilde r=r_\phi-\beta\log(\pi_\theta/\pi_{\mathrm{ref}}), либо отдельным слагаемым в loss. PPO on-policy: после заметного обновления старые samples устаревают. Pipeline дорогой — policy, reference, reward model и critic занимают память одновременно, а шаги по данным остаются шумными оценками градиента, знакомыми по уроку про SGD.

DPO: пары сразу задают логистическую цель

Формула ππrefer/β\pi^*\propto\pi_{\mathrm{ref}}e^{r/\beta} обратима. Выразим reward через policy:

r(x,y)=βlogπ(yx)πref(yx)+βlogZ(x).r(x,y)=\beta\log\frac{\pi^*(y\mid x)}{\pi_{\mathrm{ref}}(y\mid x)} +\beta\log Z(x).

Подставим это в модель Брэдли–Терри. Слагаемое βlogZ(x)\beta\log Z(x) одинаково для обоих ответов на один prompt и сокращается в разности — вот почему неизвестная нормировка не мешает. Остаётся обычная логистическая цель на парах:

LDPO=logσ(β[logπθ(y+x)πref(y+x)logπθ(yx)πref(yx)]).\mathcal L_{\mathrm{DPO}}= -\log\sigma\left( \beta \left[ \log\frac{\pi_\theta(y^+\mid x)} {\pi_{\mathrm{ref}}(y^+\mid x)} - \log\frac{\pi_\theta(y^-\mid x)} {\pi_{\mathrm{ref}}(y^-\mid x)} \right] \right).

Её градиент показателен:

θLDPO=βσ(βΔ)[θlogπθ(y+)θlogπθ(y)],\nabla_\theta\mathcal L_{\mathrm{DPO}}= -\beta\,\sigma(-\beta\Delta)\, \big[\nabla_\theta\log\pi_\theta(y^+)-\nabla_\theta\log\pi_\theta(y^-)\big], Δ=logπθ(y+)πref(y+)logπθ(y)πref(y).\Delta=\log\frac{\pi_\theta(y^+)}{\pi_{\mathrm{ref}}(y^+)} -\log\frac{\pi_\theta(y^-)}{\pi_{\mathrm{ref}}(y^-)} .

Вес шага σ(βΔ)\sigma(-\beta\Delta) велик там, где модель ещё «не поверила» в предпочтение, и гаснет, когда пара уже разведена. Отдельный reward model и online sampling не нужны: обучение похоже на supervised pass по парам, как в обычной логистической задаче с кросс-энтропией.

Но данные фиксированы. DPO не увидит новые странные ответы, которые policy начнёт порождать после сдвига, пока их не соберут в следующем цикле. И пара предпочтений говорит только относительное: если оба ответа плохи, DPO всё равно усиливает меньшее из двух зол. Нужны абсолютные фильтры и качественный сбор кандидатов.

GRPO: сравнение внутри группы

Group Relative Policy Optimization генерирует группу ответов y1,,yGy_1,\ldots,y_G на один prompt и нормирует rewards внутри группы:

A^i=rirsr+ϵ,r=1Gkrk,sr2=1Gk(rkr)2.\widehat A_i= \frac{r_i-\overline r} {s_r+\epsilon}, \qquad \overline r=\frac1G\sum_{k}r_k,\quad s_r^2=\frac1G\sum_k (r_k-\overline r)^2 .

Отдельный value model может не требоваться: роль базовой линии играет среднее по группе. Сравнение внутри одного prompt убирает часть различий сложности между prompt — и это не мелочь.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Две панели: слева сырые оценки двух реальных пользователей MovieLens, щедрого со средним 4.66 и строгого со средним 1.83, справа те же оценки после нормировки внутри группы колеблются вокруг нуля
Рис. 81.4. Группа сравнивает ответы с их же соседями, а не с чужим prompt

Реальные пользователи MovieLens: щедрый ставит в среднем 4,664{,}66, строгий — 1,831{,}83. Слева сырые оценки: разрыв уровней 2,752{,}75 балла заглушает разницу между ответами внутри каждой группы. Справа нормировка внутри группы: средний уровень обнуляется, остаётся только то, чем ответы отличаются друг от друга.

У нормировки есть цена, о которой редко говорят. Деление на srs_r эквивалентно уменьшению β\beta: если advantage в 1/sr1/s_r раз больше, то тот же KL-штраф весит в srs_r раз меньше, и фиксированная точка становится

π(y)πref(y)exp ⁣(r(y)βeff),βeffβsr.\pi(y)\propto\pi_{\mathrm{ref}}(y)\exp\!\Big(\frac{r(y)}{\beta_{\mathrm{eff}}}\Big), \qquad \beta_{\mathrm{eff}}\approx\beta\, s_r .

Мы проверили это численно на тех же реальных данных: при β=0,6\beta=0{,}6 и группе из 64 ответов GRPO сходится к распределению, совпадающему с π\pi^* при βeff=0,165\beta_{\mathrm{eff}}=0{,}165 — расхождение всего 0,0170{,}017 ната. То есть эффективная β\beta упала в 3,63{,}6 раза, а KL к reference вырос с 0,200{,}20 до 1,951{,}95: конфигурация обещала мягкий режим, а фактически получился жёсткий.

Проверка этого предупреждения тоже численная. Та же процедура с группой из 16 ответов вместо 64 схлопывается: policy отдаёт одному ответу вероятность 0,9980{,}998, KL к reference 3,753{,}75. Разнообразие sampling — не косметика, а условие корректности оценки.

Одна цель, три механики

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева логарифмический график расхождения policy с оптимальной по шагам: DPO и PPO уверенно падают, GRPO уходит вверх, справа столбики вероятностей для reference, оптимальной policy и двух вариантов GRPO
Рис. 81.5. Разная механика — одна цель

Слева: DKL(πtπ)D_{\mathrm{KL}}(\pi_t\|\pi^*) по шагам на одних и тех же реальных reward. DPO приходит к 1,91081{,}9\cdot10^{-8}, PPO — к 2,11042{,}1\cdot10^{-4}: две совершенно разные процедуры сходятся к одной и той же аналитической policy. GRPO с группой 64 останавливается на 0,940{,}94 — это не ошибка кода, а другая эффективная β\beta; GRPO с группой 16 уходит в коллапс. Справа то же самое в вероятностях: у π\pi^* лидер набирает 0,1030{,}103, у GRPO-64 заметно больше, у GRPO-16 — почти всю массу.

Итог короткий: PPO и DPO — два способа добраться до одной точки π(β)\pi^*(\beta), а GRPO по дороге незаметно меняет саму точку. Спор «что лучше» без указания фактического KL и фактического βeff\beta_{\mathrm{eff}} беспредметен.

Лаборатория alignment

β, KL и разрыв между proxy и пользой

Загружается живая иллюстрация…

Двигайте β\beta: при большом значении policy почти неотличима от reference, при малом мгновенно концентрируется на лидере. Затем включайте лазейку в reward — она добавляет очки многословному и самоуверенному ответу, не меняя их настоящей пользы. Синяя кривая справа начнёт разворачиваться, а красная продолжит расти: вы своими руками воспроизведёте рисунок 81.2. Переключатель advantage показывает, как нормировка внутри группы тайно уменьшает β\beta и проносит policy мимо максимума пользы.

Проверьте отдельно случай, когда лазейки нет вовсе: синяя кривая тогда растёт почти монотонно, и разрыва между proxy и истиной не возникает. Беда не в оптимизации как таковой, а в несовпадении измеряемого с нужным.

Длина как самая частая лазейка

Reward часто коррелирует с длиной: подробные ответы действительно полезнее в train. Policy учится добавлять вступления, повторы и оговорки — форма растёт быстрее содержания. Диагностика:

  • reward против числа токенов;
  • human preference на length-matched парах;
  • регрессия reward на длину и анализ остатка,
ri=a+bi+ηi,A^icorr=rib^(iˉ);r_i=a+b\,\ell_i+\eta_i,\qquad \widehat A_i^{\text{corr}}=r_i-\hat b\,(\ell_i-\bar\ell);
  • отдельный penalty или явный критерий краткости;
  • тест-prompts, где правильный ответ должен быть коротким.

Нельзя просто запретить длинные ответы: сложная задача требует пространства. Цель должна учитывать prompt и полноту, а не наказывать символы.

Как сравнивать методы честно

Одинаковая preference accuracy не означает одинаковый aligned model. Сравнение PPO, DPO и GRPO требует одной стартовой SFT и reference, сопоставимого preference signal, одинакового протокола генерации и оценки, нескольких seed и win rate с доверительным интервалом. Интервал — обычная задача из урока о доверительных интервалах:

p^±z0,975p^(1p^)n.\hat p\pm z_{0{,}975}\sqrt{\frac{\hat p(1-\hat p)}{n}} .

При p^=0,55\hat p=0{,}55 и n=300n=300 парах половина ширины равна 0,0560{,}056: «победа 55%» неотличима от ничьей. Чтобы получить ±0,05\pm0{,}05 в худшем случае, нужно n(1,96/0,05)20,25385n\ge(1{,}96/0{,}05)^2\cdot0{,}25\approx385 сравнений, и это при парном дизайне, когда один и тот же prompt показан обеим моделям.

LLM-as-a-judge масштабирует оценку, но наследует bias судьи: порядок ответов, стиль, самопредпочтение. Часть выборки должна быть оценена людьми вслепую. И средние скрывают локальное: KL, малый в среднем, может быть огромным на узкой группе prompt, поэтому смотрят распределение по prompt и верхний процентиль

q0,99(DKL(πθ(x)πref(x))),q_{0{,}99}\big(D_{\mathrm{KL}}(\pi_\theta(\cdot\mid x)\|\pi_{\mathrm{ref}}(\cdot\mid x))\big),

а не одно число. Это та же дисциплина срезов, что и в уроке про честные выборки.

Гермейер: критерий — это модель цели

Русская школа исследования операций обсуждала подмену цели измеримым показателем задолго до alignment. Юрий Борисович Гермейер (1918–1975), основатель кафедры исследования операций факультета ВМК МГУ, в книге «Введение в теорию исследования операций» (1971) настойчиво разделял три вещи: цель оперирующей стороны, математическую модель операции и критерий эффективности. Критерий — лишь модель цели; исследователь обязан помнить о разрыве между ними и проверять, не оптимизирует ли он удобно измеримое вместо нужного. Это формулировка нашей задачи за полвека до RLHF, сделанная людьми, у которых ценой ошибки была не метрика на leaderboard.

Второй вклад Гермейера, полезный практически, — свёртка нескольких критериев не суммой, а минимумом нормированных показателей:

u(θ)=mini ui(θ)λi,u(\theta)=\min_{i}\ \frac{u_i(\theta)}{\lambda_i},

то есть оценка системы по её худшему критерию. Для выбора checkpoint это значит: не усредняйте helpfulness, safety и factuality в одно число, где рост одного гасит провал другого, а требуйте, чтобы каждый нормированный критерий был не ниже порога. Такой принцип гарантированного результата защищает от «выигрыша в среднем при обрушенной безопасности» лучше любой взвешенной суммы.

Мини-исследование: Pareto-кривая KL и предпочтений

Обучите несколько checkpoint при β{0,03;0,1;0,3;1}\beta\in\{0{,}03;0{,}1;0{,}3;1\} или остановите один запуск на разных шагах. Для каждого измерьте held-out win rate, KL к reference, длину, diversity и factual error rate. Нанесите точки на плоскость win rate–KL.

Точка AA доминируется точкой BB, если

win(B)win(A)иKL(B)KL(A),\text{win}(B)\ge\text{win}(A)\quad\text{и}\quad \mathrm{KL}(B)\le\mathrm{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,99200,820{,}99^{20}\approx0{,}82 — совсем другой уровень надёжности, чем 0,99.

Преференции меняются между группами и контекстами — наш эксперимент с разметчиками до 25 и судьями 35+ ровно об этом: корреляция вкусов 0,800{,}80, но на отдельных ответах расхождение достигает 0,840{,}84 балла. Полезная система позволяет уточнить цель, показывает неопределённость и не выдаёт один усреднённый вкус за универсальный. Кто размечал — тот и определил, что значит «хорошо».

Proxy требует независимого суда

PPO использует online trajectories и критика, DPO учится прямо на offline-парах, GRPO строит относительный advantage внутри группы. Все три сводятся к одной формуле экспоненциального наклона reference и все три упираются в один предел: измеренное — не то же самое, что нужное. KL удерживает обновление возле reference и покупает устойчивость, но не гарантирует истины.

Маленький опыт на реальных оценках фильмов показал историю в миниатюре: +0,365+0{,}365 балла честного выигрыша, разворот на KL =2,19=2{,}19 и 0,049-0{,}049 балла, отданные назад при полном дожатии proxy, который всё это время бодро рос. Главная проверка одна — разрыв между learned reward и независимым человеческим результатом при сильной оптимизации. Кто этот разрыв не измеряет, тот его и не увидит.

Задачи