Объяснение Deep Q-Network

Глубокое обучение с подкреплением (DRL) в течение последних нескольких лет находится в центре внимания в области искусственного интеллекта. В игровом мире несколько роботов (они же агенты или модели в остальной части поста), такие как AlphaGo для игры в го или AlphaStar для StarCraft и Open AI Five для видеоигр Dota, и это лишь некоторые из них. известные, показали, что с помощью умного сочетания репрезентативной способности глубоких нейронных сетей и структуры обучения с подкреплением можно доминировать в лигах профессиональных геймеров.

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

Зная это, мне было очень любопытно понять, как можно достичь таких результатов. Как всегда, то, что я начал с самых основ дисциплины, очень помогло мне понять фундаментальные концепции и построить понимание DRL, прежде чем копаться в его более сложной архитектуре. Таким образом, цель этого поста — сосредоточиться на теории и объяснить некоторые основные концепции глубокой Q-сети (DQN), одного из базовых алгоритмов DRL, чтобы понять, как глубокое обучение и обучение с подкреплением (RL) сформулировать вместе, чтобы построить такого сверхчеловеческого агента.

Прежде чем двигаться дальше в этом посте, я предполагаю, что читатели уже знакомы с фундаментальными понятиями и словарем RL. Если нет, то можно сначала проверить этот замечательный курс UCL по RL или это введение от вашего покорного слуги:



👾 🎮 Space-Invaders (S-I) — видеоигра для знаменитой консоли Atari 2600 (рис. 1). Эта видеоигра широко используется для тестирования моделей ДХО.
В S-I вы пилотируете маленький космический корабль и должны уничтожить, стреляя в них, как можно больше кораблей пришельцев, прежде чем они уничтожат вас. Мы будем использовать игру S-I в качестве игрушечной среды, чтобы проиллюстрировать концепции RL, которые мы рассматриваем в этом посте.

Как мы уже упоминали, игровой агент будет сделан из кубиков DRL. Он научится играть в S-I напрямую, просматривая необработанные изображения игры и реагируя соответственно, выбирая действие из всех возможных действий (как это сделал бы человек).

Чтобы понять эти кирпичики DRL, лежащие в основе агента, мы анализируем 3 основные статьи из DeepMind (перечисленные ниже в хронологическом порядке их публикации), лежащие в основе многих современных подходов DRL:

Начнем наше путешествие с того, что заглянем прямо в логово льва (Алгоритм 1 ниже👇).

Гоша 😱! На первый взгляд это выглядит довольно пугающе… Но не беспокойтесь, мы пройдемся по строчке и раскроем каждую концепцию.

⛰️ Q-обучение

Во-первых, в Deep Q-Network у нас есть Q. И вначале Саттон и Барто создали Q-функцию. Q-функция (также известная как функция значения состояния-действия) отображает пару состояние, действие в значение (или ожидаемое вознаграждение).

Говоря простым языком, Q-функция говорит вам, насколько хорошим является действие, которое вы хотите предпринять, учитывая конкретное состояние, в котором вы находитесь. Рисунок 2 ниже иллюстрирует это определение на конкретном примере в среде S-I.

Как только Q-функция, связанная со средой, известна, агент всегда может выбрать действие, которое приводит к максимальному ожидаемому вознаграждению, следовательно, следуя так называемой оптимальной политике в этой среде. Именно знание оптимальной политики позволяет агенту достичь сверхчеловеческой производительности.

Игра S-I аналогична среде Марковского процесса принятия решений (MDP). Исследователи RL теоретизировали несколько способов найти оптимальную политику в такой среде. В агенте DQN для поиска оптимальной Q-функции используется подход Q-learning. Итак, давайте немного погрузимся в математику, лежащую в основе этого подхода, чтобы разложить различные шаги, которые ведут нас к основной части Алгоритма 1.

По определению уравнение Q-функции было поставлено Беллманом как рекурсивная задача (динамического программирования):

Уравнение Беллмана утверждает, что Q-функция для действия a в состоянии s может быть разбита на 2 части:

  • немедленное вознаграждение
  • сниженная будущая ожидаемая награда

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

На самом деле, нашу среду S-I можно рассматривать как детерминированную среду. Действительно, движение влево при нажатии левой кнопки обязательно. Следовательно, это позволяет нам избавиться от вероятностей перехода состояний.

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

Математически говоря, оптимальная функция Q должна соблюдать равенство, наблюдаемое в (4).

Из теоретического определения оптимальной Q-функции (4) Q-learning выводит итерационный алгоритм, который сходится к оценке оптимальной Q-функции, используя следующий шаг обновления:

  • Красным цветом обозначена TD-ошибка: это разрыв между двумя разными во времени оценками. Чем ближе к 0, тем ближе к оптимальности, следовательно, меньше обновление; чем больше, тем ближе к оптимальности, следовательно, тем больше обновление.
  • Зеленым цветом обозначена скорость обучения λ, которая показывает, насколько мы хотим обновить старое оценочное значение Q.
  • Синим цветом показано старое оценочное значение Q, которое обновляется.

Подводя итог последнему уравнению (5) на простом английском языке: Q-обучение итеративно обновляет оценочные значения Q в направлении оптимальности. К концу этого итеративного процесса он сходится к оптимальной Q-функции.

💧 Глубокое Q-обучение

Вы видели, как это происходит здесь (или, может быть, Deep Q-Network недостаточно явная 🙃). Это действительно так, использование глубоких нейронных сетей (ГНС), известных как универсальные аппроксиматоры функций. Кроме того, ГНС особенно эффективны при работе с неструктурированными данными, такими как изображения (по сравнению с более традиционные подходы ML). Обратите внимание, что в остальной части поста мы используем взаимозаменяемые термины DQN и DNN для обозначения модели агента (учитывая, что DQN — это DNN).

Давайте вспомним, что мы используем непосредственно поток изображений видеоигры S-I, чтобы агент выучил оптимальную Q-функцию. И так вопрос следующий:

Почему бы не использовать DNN в качестве аппроксиматора Q-функции?

Давайте посмотрим, как использовать репрезентативные возможности DNN в задаче аппроксимации Q-функции. И поскольку изображение стоит тысячи слов, вот (на рисунке 3 ниже 👇) рецепт того, как игровые изображения S-I обрабатываются DNN для вывода значений (точнее, Q-значений), связанных с возможными игровыми действиями.

  • пропуск кадров: очень близкое состояние (или переход) не несет много информации, мы предпочитаем исследовать больше различных шаблонов, а не собирать сильно коррелированные переходы, которые выдают очень близкие значения Q. Кроме того, дешевле запустить игровой движок для меньшего количества кадров, чем вычислять значение Q для всех этих сильно коррелированных переходов. Следовательно, с использованием этой техники запускается больше разных эпизодов.
  • понижающая выборка, оттенки серого и нормализация: в машинном обучении принято следовать этим этапам предварительной обработки, чтобы уменьшить объем вычислений, необходимых для изучения изображений, и сохранить представление пикселей в сопоставимом масштабе.
  • Ввод DQN: 4 кадра, поступающие от S-I, используются как вход DNN, они называются состоянием или переходом.
  • Сверточные слои: изучение информативных признаков из необработанных изображений находится именно в сфере применения нейронных сетей, в частности, сверточных нейронных сетей (CNN), которые доминируют в области компьютерного зрения.
  • выходной слой: последний слой DNN дает 4 балла, связанные с каждыми 4 возможными действиями (чем выше балл, тем лучше действие).

Это была хорошая визуализация того, как обрабатываются изображения, но для обучения DNN последним ингредиентом является функция потерь. Здесь нет ничего особенного, используемая потеря представляет собой адаптированную среднеквадратичную ошибку (TD-MSE, см. уравнение (6) на рис. 4 ниже), в которой используется оцененная оптимальная функция Q. Наконец, классический стохастический градиентный спуск используется для обновления весов сетей DNN в сторону минимума потерь в уравнении (7).

Все идет нормально. Теперь давайте посмотрим, почему красные параметры (на рисунке 4 ⬆️) остаются замороженными при дифференциации потерь на этапе обновления градиентного спуска.

⚡ Онлайн против целевых сетей

Если мы правильно поняли уравнение (6), цели/метки, которые мы используем в потерях, взяты из той же модели, которую мы обновляем. Другими словами, модель учится на своих собственных предсказаниях… Разве это не странно, как змея, кусающая себя за хвост? ♾️

Звучит странно на первый взгляд. Но если подумать, это все равно, что использовать наше лучшее (пока что) предположение об оптимальной Q-функции. И учитывая, что Q-обучение итеративно сходится к оптимальной Q-функции, мы можем ожидать, что наши зашумленные оценки в начале будут становиться все более и более последовательными, итерация за итерацией.
Теоретически это будет работать в том и только в том случае, если модель дает все более актуальные цели во время обучения.

К сожалению, на практике это работает не так хорошо. Действительно, на каждом этапе обучения веса модели обновляются, что может привести к большим изменениям в прогнозах целей для двух похожих состояний, что не позволит DNN эффективно обучаться.
Например, для двух последовательных шагов обучения при очень похожем входном состоянии DNN может выбрать разные оптимальные действия… это означает, что наши цели несовместимы. 😢

Это несоответствие, известное как проблема движущейся цели, приводит к нестабильности обучения. Вот откуда пришла идея использовать две сети:

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

Этот рабочий процесс онлайн/целевых сетей показан на рисунке 5 ниже ⬇️

  • Шаг 1: целевая сеть создает цель данного перехода
  • Шаг 2: онлайн-модель учится на цели, созданной целевой сетью.

Использование подхода онлайн/целевых сетей гарантирует стабильные цели для обучения DNN.

Мы начинаем видеть это, чтобы объединить глубокое обучение и обучение с подкреплением, мы должны обеспечить DNN эффективный режим обучения. Итак, давайте посмотрим на другие инженерные приемы, необходимые для раскрытия полной мощности DNN! 💥

🍃 Двойное (глубокое) Q-обучение

Опять же, на пути к обучению и конвергенции DQN падает еще одно препятствие.

Оглядываясь назад на оптимальность Q-обучения (уравнение (4) выше), мы видим, что Q-значение пары «состояние, действие» зависит от максимального Q-значения по всем возможным действиям. следующего состояния (красные члены в уравнении (4)). Это означает, что в Q-обучении максимальное значение по всем возможным действиям является соответствующим прокси для оценки значения состояния.

Такая уверенность в том, что максимальное значение является правильной оценкой значения состояния, называется предвзятостью к максимальному. И это то, что показано в примере с игрушкой на рисунке 6 ниже 👇

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

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

Идея Хадо ван Хассельта исправить это смещение состояла в том, чтобы использовать 2 аппроксиматора функций параллельно (отсюда и название Двойное Q-обучение):

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

Действительно, использование двух агентов вносит столь желанную случайность в наши зашумленные оценки. Позвольте мне объяснить 🤓
Две модели не переоценивают одни и те же действия при одинаковом состоянии, поскольку они были обучены по-разному, поэтому использование одной для выбора действия, а другой для вычисления связанного значения ‹состояние, выбранное действие› смешанное случайным образом увеличивает шум двух моделей и, следовательно, искажает оценку значения.

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

🌀 Опыт воспроизведения

До сих пор считалось само собой разумеющимся, что DQN учится на потоке последовательных переходов... Давайте подумаем еще раз.

Если бы мы взяли несколько последовательных переходов, большую часть времени они выглядели бы совершенно одинаково. В машинном обучении мы бы сказали, что последовательные переходы сильно коррелированы… И подача коррелированных входных данных в DNN замедляет ее обучение, заставляя DNN последовательно подходить к нескольким коррелирующим примерам. Действительно, мы все знаем, что перетасовка набора данных намного лучше для сходимости модели 🙏

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

Примечание: Воспроизведение воспоминаний — это настоящий нейрофизиологический феномен, происходящий в гиппокампе (по крайней мере, у грызунов 🐭).

🔥 Повтор приоритетного опыта (PER)

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

Во-первых, что означает интересный для агента? Бывает, что на одних переходах агент работает намного хуже, чем на других. Это означает, что TD-ошибка агента выше для этих переходов. Таким образом, идея PER состоит в том, чтобы сосредоточиться на этих плохо предсказуемых переходах (они же интересные переходы), чтобы улучшить обучение агента.

Всегда тренируйтесь на своих слабостях 🦾 #protips

На рис. 8 ниже показано, как вычисляется оценка приоритета перехода. После выборки перехода его TD-ошибка (и, следовательно, оценка приоритета) немедленно обновляется обучающим агентом.

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

Но ничего страшного, как обычно нашлись хитрые заклинания для борьбы с этими проклятиями 🧙‍♂️

  • Стохастическая приоритизация позволяет избежать проблемы отсутствия разнообразия за счет сглаживания необработанного распределения оценок приоритета, чтобы можно было выбрать некоторые переходы с низкой TD-ошибкой (см. рис. 9 ниже).

  • Выборка по важности вступает в дело, чтобы повторно взвесить, насколько параметры агента обновляются в глубоком Q-обучении, чтобы компенсировать сдвиг распределения, вызванный приоритетной выборкой. Чем ближе β к 1, тем больше компенсация.

Возможность настройки двух параметров αиβ во время обучения повышает способность агента к обучению и его более быструю сходимость к оптимальной политике.

Примечание. Повторная выборка с приоритетом и обновление этих приоритетов имеют линейную сложность O(n). Тем не менее, в DRL необходимо исследовать огромное количество переходов для обучения агента, поэтому эта сложность линейной выборки создает узкое место в общей процедуре обучения. Поэтому, чтобы решить эту техническую проблему, для приоритетного буфера использовалась особая структура данных: SumTree, которая повышает сложность выборки с O(n) до O(log(n)).

Выводы

Отличная работа! Мы проделали здесь хорошую работу 🥵.

Теперь у нас достаточно значков, чтобы понять первоначальный Алгоритм 1 DQN. Давайте быстро вспомним различные ключевые идеи и сопоставим их со строками псевдокода Алгоритма 1, которые они охватывают:

⛰️ Q-обучение: строка 11
💧 Глубокое Q-обучение: строки 11, 13 и 15
⚡ Онлайн против целевых сетей: строки 11 и 16
🍃 Двойное (глубокое) Q-обучение: строка 11
🌀 Повтор опыта: строки 6 и 9
🔥 Повтор приоритетного опыта: строки 6, 9, 10 и 12

Как мы видели, необходимы многочисленные математические/инженерные/вычислительные уловки, чтобы успешно сочетать структуру обучения с подкреплением и глубокое обучение для достижения сверхчеловеческой производительности.
DQN может быть старой моделью (2015 год подобен вечности в масштабе времени ML), но его основные концепции являются строительными блоками более сложных и последних архитектур Deep RL.

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

И вуаля ! 👌

Все изображения принадлежат автору, если не указано иное

Ссылки

Документы:
— Документ Игра в Atari с глубоким обучением с подкреплением от DeepMind
— Документ Глубокое обучение с подкреплением с двойным Q-обучением от DeepMind
Приоритет Experience Replay документ от DeepMind

Блоги и сообщения:
Победите Atari с помощью глубокого обучения с подкреплением! из отличной серии Deep RL Адриана Экоффета
- Давайте сделаем DQN: двойное обучение и повторение опыта с приоритетами из очень хорошего блога Яромиру на Deep RL
- блог Даниэля Сейты в RL
- блог Роберта Ланге на DQN

Au plus gentil des gars, mon ami Adrien.