С тех пор, как DeepMind в 2013 году разработала основополагающую работу DQN, в которой агент успешно научился играть в игры Atari на уровне выше, чем средний человеческий, обучение с подкреплением (RL) часто появлялось в заголовках. От игр Atari до робототехники и поразительного поражения чемпиона мира по го Ли-Седола от AlphaGo, казалось, что RL вот-вот захватит мир штурмом.

На самом деле, хотя большинство игр Atari теперь можно изучать с очень хорошими результатами, в некоторых играх до недавнего времени был достигнут относительно небольшой прогресс. Эти игры включают печально известную Месть Монтесумы, Pitfall! и Venture, общей чертой которых является крайняя скудность вознаграждений.

Чтобы понять, почему это серьезная проблема, давайте рассмотрим базовую анатомию большинства алгоритмов обучения с подкреплением.

Агенты обучения с подкреплением учатся методом проб и ошибок, взаимодействуя с окружающей средой, и получают вознаграждение за свои действия. Используя эти сигналы вознаграждения, агент обновляет свое поведение и, надеюсь, учится принимать более правильные решения в будущем. Во многих случаях, чтобы помочь агенту исследовать среду и наткнуться на действия состояния, которые приводят к более высокой отдаче, мы вводим стохастичность в поведение агента путем выборки действий из текущей политики агента или путем случайного выбора действий с некоторой вероятностью (эпсилон- жадный). В основе этих простых стратегий лежит предположение, что случайные действия в конечном итоге приведут агента к некоторой награде.

В средах с редкими вознаграждениями ситуация совсем иная, поскольку агент может проводить большую часть своего времени, не получая никакого вознаграждения, и, следовательно, ему может быть очень трудно учиться. В крайнем случае, чтобы получить любое вознаграждение, агенту может потребоваться вести себя очень разумно и использовать длинные и сложные последовательности действий, чтобы получить даже первую обратную связь. Так обстоит дело в некоторых из этих сложных исследовательских игр, таких как месть Монтесумы, в которых агент должен избегать врагов и смертельных препятствий и действовать разумно на протяжении сотен шагов, прежде чем когда-либо увидит положительную награду. Стандартные алгоритмы RL, использующие общие стратегии исследования, часто не приносят никакой выгоды в этих играх, и так было до недавнего времени.

Итак, как вы подойдете к решению таких проблем? На первый взгляд привлекательный подход состоит в том, чтобы каким-то образом побудить агента исследовать те состояния, которые он до сих пор не видел. Если бы мы могли сделать его «любопытным» и искать новые состояния, даже не получая никакой награды, возможно, в конечном итоге он изучит достаточно, чтобы найти некоторые. В некотором роде это напоминает нам способ обучения детей, получающих внутреннюю награду в виде любопытства.

Что мы хотели бы сделать, так это подсчитать, сколько раз агент посещал каждое состояние, и добавить еще один элемент к редкому внешнему вознаграждению (которое исходит из окружающей среды) в виде внутреннего вознаграждения за попадание в состояния с более низким количество посещений. Если бы мы могли это сделать, то агент продолжит находить новые состояния, которых он раньше не видел, и в конечном итоге перейдет в состояние с положительной внешней наградой. Очевидно, что для достижения желаемого поведения необходимо поддерживать тщательный баланс между внешним и внутренним вознаграждением.

Однако во всех этих играх количество состояний слишком велико для перечисления, и поэтому мы должны найти способ приблизиться к этому количеству посещений. Более раннее предложение по решению этой проблемы звучало так: обучая агента игре, обучите другую нейронную сеть предсказанию переходов состояний и вознаграждений, с которыми агент сталкивается во время игры. Идея состоит в том, что изначально нейронная сеть дает плохие прогнозы для этих переходов и вознаграждений, но в конечном итоге расстояние между прогнозами и основной истиной уменьшается для тех состояний, на которых была обучена сеть, и состояний, похожих на них. (из-за способности NN к обобщению). Это означает, что мы можем рассматривать ошибку предсказания этой нейронной сети как приближение к количеству посещений; если ошибка высока в данном состоянии, то это говорит о том, что это состояние является новым, а если ошибка предсказания мала, мы можем предположить, что подобное состояние посещалось достаточно часто.

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

Еще один недостаток связан с емкостью модели; мы пытаемся подогнать нейронную сеть к динамике окружающей среды, но в некоторых случаях это может оказаться слишком сложной задачей для нашей модели, что ставит под угрозу ее способность в достаточной степени уменьшить ошибку прогнозирования для многих состояний. Наличие состояний с асимптотически высокой ошибкой вызывает предвзятость в поведении агента при исследовании и может привести к его «застреванию» в этих областях пространства состояний.

В конце 2018 года на помощь пришли исследователи из OpenAI и опубликовали статью под названием «Исследование методом случайной сетевой дистилляции», теперь я буду называть их метод RND. Авторы рассматривают несколько существующих методов такого приблизительного подсчета посещений и начинают с определения источников ошибок прогноза:

1) Количество обучающих данных: ошибка прогноза высока в состояниях, которые были недостаточно посещены (это то, что нам хотелось бы).

2) Стохастичность: ошибка прогноза высока в состояниях с сильно изменчивой динамикой.

3) Ошибка в спецификации модели: ошибка прогноза высока, если нашей модели не хватает возможности аппроксимировать динамику окружающей среды.

4) Динамика обучения: ошибка прогноза может быть высокой, если процесс изучения динамики среды нестабилен и не может сходиться.

Источники 2–4 нежелательны, поскольку мы хотели бы, чтобы ошибка прогноза отражала только приблизительное количество посещений. Затем авторы предлагают простое и элегантное решение: Вместо предсказания динамики окружающей среды попробуйте предсказать результат случайной нейронной сети, отсюда и название «Случайная сетевая дистилляция».

Так что именно это означает? Мы случайным образом инициализируем целевую сеть, которая будет оставаться фиксированной на протяжении всего процесса обучения, и инициализируем другую нейронную сеть, которая будет пытаться предсказать результат целевой сети, я буду называть ее сеть предсказаний. Эти сети получают состояния в качестве входных и выходных векторов. Выходные данные целевой сети не имеют ничего общего с переходами и являются просто случайной функцией состояний игры. Первоначально целевая сеть и сеть прогнозирования некоррелированы, и ошибка прогнозирования будет иметь тенденцию быть высокой. Однако в процессе обучения эта ошибка будет уменьшаться для состояний, которые агент часто посещал, как и в методе прогнозирования динамики, который мы обсуждали ранее.

Пытаясь предсказать выход фиксированной целевой сети, мы избегаем проблем в источниках ошибок 2–4:

1) Количество обучающих данных: мы по-прежнему сохраняем этот желаемый источник ошибки.

2) Стохастичность: целевая сеть детерминирована, поэтому источник ошибки исчезает.

3) Ошибка в спецификации: целевая сеть и сеть прогнозирования принадлежат к одному классу модели и поэтому имеют одинаковую емкость, поэтому этот источник ошибки исчезает.

4) Динамика обучения: поскольку целевая сеть является фиксированной, сеть прогнозирования выигрывает от стационарной задачи обучения, которая хорошо выполняется и не имеет тенденции к расхождению. Это контрастирует с задачей обучения динамике среды, которая нестационарна (поскольку агент находит новые состояния, он также может столкнуться с новыми явлениями перехода).

Теперь мы готовы взглянуть на псевдокод алгоритма, представленный в статье:

Авторы использовали метод RND с общим алгоритмом RL, который называется Proximal Policy Optimization (PPO). Важные вещи, которые следует извлечь из этого псевдокода, заключаются в том, что внутреннее вознаграждение - это потеря для сети прогнозирования и что он оптимизирован на тех же образцах, собранных агентом, которые используются для обновления политики.

Остальные детали по большей части относятся к алгоритму RL, используемому в этой статье, но на самом деле RND - это полностью общий метод, который может быть применен в принципе к любому алгоритму RL, включенному или выключенному политике, поскольку RND взаимодействует только с с алгоритмом RL через вознаграждение.

На момент публикации RND предоставил самые современные результаты по Месть Монтесумы для чистых алгоритмов RL (некоторые хорошие результаты были получены с использованием демонстраций на людях в различных формах), что впечатляет, учитывая, насколько универсален этот метод.

Я реализовал минималистичную версию RND для проблемы Mountain-Car, чтобы продемонстрировать, как решить эту проблему без обычного инженерного вознаграждения. Не стесняйтесь проверить это: https://github.com/orrivlin/MountainCar_DQN_RND