Модуль 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, вычисления занимают секунды.
Что содержится внутри:
- Кривая Гудхарта на числах: прокси и истинная цель совпадают в начале и расходятся под давлением. Оптимум прокси — не оптимум цели.
- Reward hacking в gridworld: награда назначена за «бонусные клетки» вместо достижения выхода. Агент зацикливается на бонусе и до выхода не добирается — прокси-награда высокая, истинный успех нулевой.
- RLHF-переоптимизация: модель награды с ошибкой против истинной награды. Слабое давление — истинная награда растёт, сильное — прокси растёт, а истинная падает.
- Штраф KL как лечение: он удерживает политику в зоне, где прокси ещё честен, и не даёт провалиться за пик.
Часть 2. Собственная награда¶
Возьмите систему из своей работы, у которой есть метрика успеха.
- Запишите, что вы подразумеваете, и что вы измеряете. Это одно и то же?
- Придумайте способ поднять метрику, не поднимая цель. Если придумали — это и есть щель, которую обнаружит оптимизатор.
- Что стало бы прокси, если бы вы обучали агента максимизировать эту метрику? Где именно он свернёт не туда?
- Каким образом вы бы ограничили оптимизацию, чтобы прокси не разошёлся с целью?
Задание¶
- Постройте прокси и истинную цель как две функции одной переменной, совпадающие вблизи нуля и расходящиеся дальше. Покажите, что их максимумы — разные точки.
- Реализуйте gridworld с наградой за бонусные клетки и покажите, что при достаточном дисконте оптимальная политика зацикливается, а не идёт к выходу. Найдите порог дисконта, при котором это происходит.
- Смоделируйте модель награды как истинную награду плюс шум. Оптимизируйте политику против неё с различной силой давления и постройте истинную награду как функцию прокси.
- Добавьте штраф KL и покажите, что он возвращает истинную награду к пику. Найдите коэффициент штрафа, при котором истинная награда максимальна.
- Опишите один реальный случай reward hacking из своей области в формате модуля 1: что записали как награду, что подразумевали, где щель.
Проверка усвоения¶
- Сформулируйте закон Гудхарта и объясните, почему он про оптимизацию, а не про измерение.
- Что такое reward hacking и почему это добросовестная работа агента, а не сбой?
- Почему оптимум прокси и оптимум истинной цели — разные точки?
- Откуда в RLHF берётся модель награды и почему она неточна?
- Что делает штраф KL и от чего он защищает?
- Приведите одну и ту же ошибку «оптимизируют не то» в трёх разных местах курса.
- Почему более мощный оптимизатор опаснее для прокси, а не безопаснее?
Что дальше¶
Часть IV закончена: среда и награда, ценность и политика, дофамин и Гудхарт. В части V — рекомендательные системы, и там reward hacking выходит из лаборатории на миллиарды людей: лента оптимизирует вовлечение, находит щель во внимании человека и набивает метрику в ущерб тому, ради чего внимание бралось. Та же линия, другой масштаб.
Награда — не цель, а её приблизительная запись. Оптимизатор поднимает записанное; совпадёт ли оно с задуманным — зависит от того, насколько сильно вы на него надавили.
Принцип
Любая метрика — прокси. Пока её не оптимизируют, она честна; как только она стала целью, её начинают набивать. Вопрос не «хорошая ли метрика», а «что с ней сделает тот, для кого она стала наградой».