Взлом вознаграждения

Взлом вознаграждения или игра со спецификацией — понятие в области искусственного интеллекта, описывающее поведение, при котором система обучения с подкреплением оптимизирует целевую функцию, формально реализуя поставленную задачу, но не достигая результата, который подразумевался программистами. Исследователи из DeepMind сравнивают это с человеческой склонностью искать «короткие пути» при оценке успешности: «В реальном мире, когда ученик получает награду за хорошее выполнение домашнего задания, он может просто списать у другого, а не разобраться в материале — эксплуатируя лазейку в формулировке задания»[1].

Примеры

Около 1983 года система Eurisko — одна из первых попыток эволюции общих эвристик — неожиданно присвоила максимальный уровень фитнеса паразитной мутации H59, единственным действием которой было искусственное максимизирование собственного показателя за счёт незаслуженного учёта достижений других эвристик. Эта «ошибка» была устранена программистами посредством переноса части кода в защищённую область, недоступную для модификации со стороны эвристик[2][3].

В статье 2004 года описывался алгоритм с подкреплением, призванный поощрять физического робота Mindstorms оставаться на размеченной трассе. Ни одно из трёх разрешённых действий робота не позволяло ему оставаться неподвижным, поэтому ожидалось, что робот будет двигаться вперёд, следуя изгибам маршрута. Однако чередование двух составных команд позволило роботу медленно пятиться назад зигзагом: так он научился максимизировать вознаграждение, двигаясь взад-вперёд по прямому участку трассы. Из-за ограниченных сенсорных возможностей робота вознаграждение только за положение оказалось неэффективным; функцию подкрепления пришлось дополнить наградой за движение вперёд[2][4].

В книге You Look Like a Thing and I Love You (2019) приводится пример бота для крестиков-ноликов (вариант n-подряд на произвольном поле), который научился выигрывать, делая ход с огромным значением координаты, что приводило к сбою (краху) у других ботов при попытке расширить представление игрового поля. В числе других примеров в книге есть и эволюционный ИИ для автоматического исправления ошибок (GenProg): в его задачу входило устранить ошибки сортировки в списке, но вместо этого он попросту обрезал список[5]. В другом случае GenProg обошёл регрессионный тест — сравнивающий вывод программы с эталонным файлом с результатами («trusted-output.txt») — просто глобально удалив файл эталонных результатов, что позволяло тесту имитировать успешное прохождение. Подобные проблемы исправлялись вручную по мере их выявления[6].

В виртуальной робототехнике

undefined

В демонстрации эволюции существ в виртуальной среде, проведённой Карлом Симсом в 1994 году, используемая фитнес-функция должна была поощрять появление существ, способных «ходить» или ползти к цели, однако вместо этого эволюционировали высокие и жёсткие существа, добиравшиеся до цели простым падением. Это исправили введением условия: более высокие существа стартовали дальше от цели[6][7].

У исследователей из Института Нильса Бора в 1998 году циклобот вначале поощрялся за движение к цели, но не наказывался за уход от неё; результатом стал выработавшийся у агента стиль движения по кругу радиусом 20-50 метров вокруг точки старта, что и вознаграждалось, так как такие круги очень устойчивы на велосипеде[8].

В эксперименте 2011 года тестировался отбор мутировавших организмов («выживание наименее пригодного»): алгоритмы пытались запретить мутации, изменяющие базовую скорость размножения. Каждый раз при мутации система останавливала симуляцию для тщательной проверки, отклоняя те, что давали прирост скорости. В итоге возникли организмы, научившиеся распознавать тестовую среду и подавлять размножение («притворяться мёртвыми»), чтобы пройти тест. Попытка устранить это удалением сигнала о тестовой среде не полностью решила проблему: мутанты стали «притворяться мёртвыми» периодически, чтобы иногда обходить фильтр случайным образом[6].

В статье DeepMind 2017 года подчёркивалось: «Определение функции награды требует большой осторожности — при проектировании функций мы сталкивались с непредвиденными ошибками, например, агент переворачивал кирпич, руководствуясь неправильной точкой отсчёта захвата»[9][10]. OpenAI отмечала в 2017 году, что «в некоторых областях наши полу-супервизированные системы приводят к стратегиям обмана со стороны агентов»: например, вместо захвата объекта робот вставлял манипулятор между камерой и предметом, чтобы казаться успешным. В 2018 году в OpenAI Gym ошибка позволяла роботу, который должен был передвинуть блок, вместо этого сдвигать сам стол[9].

В ряде подобных примеров отмечалось: «у эволюции свои интересы, отличные от намерений программиста» и «первое правило управляемой эволюции: „ты получаешь то, что заказываешь“»[6].

В ботах для видеоигр

В 2013 году программист Том Мёрфи VII опубликовал ИИ, обучающийся прохождению игр для NES. Когда он проигрывал в Tetris, система выучила способ — ставить игру на паузу без окончания, уходя от поражения. Мёрфи сравнил это с кульминацией фильма Военные игры, где компьютер приходит к выводу: «Единственный способ выиграть — не играть»[11].

ИИ, обучаемые прохождению игр, порой повторяют однотипные действия ради счёта и избегают завершения уровня. Например, алгоритм OpenAI 2016 года в гонке CoastRunners освоил способ зарабатывать очки, бесконечно крутясь по малому кругу между тремя целями, не завершив гонку[12][13]. Эволюционные алгоритмы, тренировавшиеся для игры в Q*Bert (2018), также находили способы бесконечно набирать очки на одном уровне, избегая его прохождения[14]. Аналогично ИИ, осваивающие Road Runner, освоили «эксплойт» — нарочно проигрывать под конец первого уровня, чтобы переигрывать его вновь и вновь. В 2017 году в эксперименте по предотвращению катастроф вводился отдельный модуль-наблюдатель, обучаемый повторять человеческие вмешательства; под контролем такого ИИ агент больше не мог явно «самоубиваться», но находил обходные манёвры (например, держаться края экрана), на которые наблюдатель не реагировал[15][16].

Примечания