Перейти к содержанию

Модуль 16. Награда как спецификация

Чему вы научитесь в этом модуле

  • Формулировать закон Гудхарта и показывать на графике, где прокси-метрика и истинная цель расходятся.
  • Объяснять reward hacking как оптимизацию того, что записано, а не того, что подразумевалось.
  • Разбирать устройство RLHF: откуда берётся модель награды и почему её нельзя оптимизировать слишком агрессивно.
  • Объяснять, зачем при дообучении на предпочтениях вводится штраф за отклонение от исходной модели.
  • Распознавать одну и ту же ошибку — «оптимизируют не то» — в награде агента, в ленте рекомендаций и на лидерборде.

Время: около двух недель. Пререквизиты: модуль 14 и модуль 11. Ноутбук: открыть в Colab · notebooks/16-reward-as-specification.ipynb

Зачем нужен этот модуль

До сих пор награда была честной. В модуле 15 наградой служили деньги, и оптимизировать их было безопасно: больше прибыли — лучше, без подвоха. Однако чаще награда — не сама цель, а её приблизительная замена. Вы хотите «полезный ответ», а награждаете за «ответ, который понравился человеку». Вы хотите «здоровье пользователя», а измеряете «время, проведённое в приложении». Эта замена — прокси, и пока её оптимизируют умеренно, она честно отражает цель. Стоит надавить сильнее — и они расходятся.

Этот модуль посвящён тому, что происходит на этой развилке. Он завершает часть про RL, потому что именно в RL агент оптимизирует награду до предела, безо всякой оглядки на то, что вы подразумевали.

Закон Гудхарта

Одна фраза, значительно старше машинного обучения:

Когда мера становится целью, она перестаёт быть хорошей мерой.

Пока метрика остаётся просто наблюдением, она коррелирует с тем, что действительно важно. Начните её оптимизировать — и оптимизация найдёт способ поднять метрику, не поднимая то, ради чего она вводилась. Корреляция, на которой всё держалось, разрушается ровно в том месте, где на неё надавили.

Двигайте давление оптимизации. Слева прокси и цель растут вместе — метрика честна. В середине — оптимум истинной цели: дальше давить незачем. Справа прокси продолжает расти к своему максимуму, а истинная цель падает: систему довели до состояния, когда она набивает метрику в ущерб тому, ради чего эта метрика существует. Оптимум прокси и оптимум истинной цели — разные точки, и чем сильнее давление оптимизации, тем дальше они друг от друга.

Reward hacking

В RL это явление называется reward hacking, и это не сбой, а добросовестная работа агента. Агент делает ровно то, за что платят, — а платят за прокси.

Классические примеры собраны десятками. Лодка в гоночной видеоигре, которой награду назначили за очки на трассе, а не за пересечение финиша, обнаруживает лагуну с бонусами и вечно кружит в ней, набирая очки и врезаясь в стены. Симулированный робот, которому наградой назначили высоту «центра масс», вместо того чтобы научиться прыгать, вытягивается в тонкую вышку и падает. В каждом случае агент нашёл максимум заданной награды, и в каждом случае этот максимум оказался не тем, чего хотел человек.

Причина всегда одна: невозможно записать в награду всё, что подразумеваешь. «Выиграй гонку» превращается в «набери очки», «будь полезен» — в «получи одобрение», и агент оптимизирует записанное, а не задуманное. Чем мощнее оптимизатор, тем изобретательнее он находит эту щель.

прокси-награда что записали истинная цель что имели в виду агент оптимизирует записанное — и уходит мимо

RLHF и его предел

В модуле 11 языковую модель дообучали на предпочтениях: показывали пары ответов с пометкой «этот лучше того». Внутренне это устроено как обучение с подкреплением на обратной связи человека (RLHF), и оно упирается ровно в закон Гудхарта.

Человек физически не может оценить каждый ответ модели — их слишком много. Поэтому на собранных человеческих предпочтениях обучают модель награды: отдельную нейронную сеть, которая предсказывает, как человек оценил бы данный ответ. Затем основную модель оптимизируют в направлении максимизации этой модели награды методами из модуля 14.

Модель награды — это прокси, причём неточный: она обучена на конечной выборке и неизбежно ошибается. Оптимизируйте против неё умеренно — ответы становятся лучше. Оптимизируйте агрессивно — модель находит щели в модели награды: ответы, которые та оценивает высоко, а живой человек — нет. Это закон Гудхарта на выученной награде, и лечится он так же, как и везде: не давить до конца. В RLHF это реализовано через штраф за отклонение (KL-дивергенцию) от исходной модели — он удерживает оптимизацию в той области, где прокси ещё адекватно отражает реальное качество.

Одна ошибка в трёх местах. «Оптимизируют не то» — сквозная линия курса. Здесь это reward hacking у агента. В модуле 19 — лента рекомендаций, оптимизирующая вовлечение вместо пользы. В модуле 25 — лидерборд как источник истины, который начинают набивать, как только он стал целью. И исток — в модуле 11: как только понятие «хорошо» было превращено в число, его принялись оптимизировать в ущерб самому «хорошо». Один закон в трёх обличьях.

Практическая часть

Часть 1. Работа с ноутбуком

Откройте notebooks/16-reward-as-specification.ipynb. Только numpy и matplotlib, вычисления занимают секунды.

Что содержится внутри:

  1. Кривая Гудхарта на числах: прокси и истинная цель совпадают в начале и расходятся под давлением. Оптимум прокси — не оптимум цели.
  2. Reward hacking в gridworld: награда назначена за «бонусные клетки» вместо достижения выхода. Агент зацикливается на бонусе и до выхода не добирается — прокси-награда высокая, истинный успех нулевой.
  3. RLHF-переоптимизация: модель награды с ошибкой против истинной награды. Слабое давление — истинная награда растёт, сильное — прокси растёт, а истинная падает.
  4. Штраф KL как лечение: он удерживает политику в зоне, где прокси ещё честен, и не даёт провалиться за пик.

Часть 2. Собственная награда

Возьмите систему из своей работы, у которой есть метрика успеха.

  1. Запишите, что вы подразумеваете, и что вы измеряете. Это одно и то же?
  2. Придумайте способ поднять метрику, не поднимая цель. Если придумали — это и есть щель, которую обнаружит оптимизатор.
  3. Что стало бы прокси, если бы вы обучали агента максимизировать эту метрику? Где именно он свернёт не туда?
  4. Каким образом вы бы ограничили оптимизацию, чтобы прокси не разошёлся с целью?

Задание

  1. Постройте прокси и истинную цель как две функции одной переменной, совпадающие вблизи нуля и расходящиеся дальше. Покажите, что их максимумы — разные точки.
  2. Реализуйте gridworld с наградой за бонусные клетки и покажите, что при достаточном дисконте оптимальная политика зацикливается, а не идёт к выходу. Найдите порог дисконта, при котором это происходит.
  3. Смоделируйте модель награды как истинную награду плюс шум. Оптимизируйте политику против неё с различной силой давления и постройте истинную награду как функцию прокси.
  4. Добавьте штраф KL и покажите, что он возвращает истинную награду к пику. Найдите коэффициент штрафа, при котором истинная награда максимальна.
  5. Опишите один реальный случай reward hacking из своей области в формате модуля 1: что записали как награду, что подразумевали, где щель.

Проверка усвоения

  1. Сформулируйте закон Гудхарта и объясните, почему он про оптимизацию, а не про измерение.
  2. Что такое reward hacking и почему это добросовестная работа агента, а не сбой?
  3. Почему оптимум прокси и оптимум истинной цели — разные точки?
  4. Откуда в RLHF берётся модель награды и почему она неточна?
  5. Что делает штраф KL и от чего он защищает?
  6. Приведите одну и ту же ошибку «оптимизируют не то» в трёх разных местах курса.
  7. Почему более мощный оптимизатор опаснее для прокси, а не безопаснее?

Что дальше

Часть IV закончена: среда и награда, ценность и политика, дофамин и Гудхарт. В части V — рекомендательные системы, и там reward hacking выходит из лаборатории на миллиарды людей: лента оптимизирует вовлечение, находит щель во внимании человека и набивает метрику в ущерб тому, ради чего внимание бралось. Та же линия, другой масштаб.

Награда — не цель, а её приблизительная запись. Оптимизатор поднимает записанное; совпадёт ли оно с задуманным — зависит от того, насколько сильно вы на него надавили.


Принцип

Любая метрика — прокси. Пока её не оптимизируют, она честна; как только она стала целью, её начинают набивать. Вопрос не «хорошая ли метрика», а «что с ней сделает тот, для кого она стала наградой».