ИНТУИТИВНАЯ СЕРИЯ ОБУЧЕНИЯ

Визуальное объяснение обучения с подкреплением (часть 5): Deep Q Networks, шаг за шагом

Краткое руководство по DQN с воспроизведением опыта на простом английском языке

Это пятая статья из моей серии об обучении с подкреплением (RL). Теперь у нас есть хорошее понимание концепций, которые составляют строительные блоки проблемы RL, и методов, используемых для их решения. Мы также подробно рассмотрели алгоритм Q-Learning, который составляет основу сетей Deep Q Networks (DQN), которым и посвящена данная статья.

Благодаря DQN мы, наконец, можем стать нашим путешествием в глубокое обучение с подкреплением, которое на сегодняшний день является, пожалуй, самой инновационной областью обучения с подкреплением. Мы рассмотрим этот алгоритм шаг за шагом, включая некоторые из нововведений, меняющих правила игры, таких как Experience Replay, чтобы понять, как именно они помогли DQN достичь рекордных результатов, когда они были впервые представлены.

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

  1. Введение в основные концепции и терминологию (Что такое проблема RL и как применить к ней структуру решения проблем RL, используя методы из Марковских процессов принятия решений и такие концепции, как возврат, ценность и политика)
  2. Подходы к решению (Обзор популярных решений RL и их категоризация на основе взаимосвязи между этими решениями. Важные выводы из уравнения Беллмана, которое является основой всех алгоритмов RL.)
  3. Алгоритмы без моделей (Сходства и различия решений на основе ценностей и политик с использованием итеративного алгоритма для постепенного улучшения прогнозов. Политика использования, исследования и ε-жадности.)
  4. Q-Learning (Углубленный анализ этого алгоритма, который является основой для последующих подходов к глубокому обучению. Развивайте интуитивное понимание того, почему этот алгоритм сходится к оптимальным значениям.)
  5. Deep Q Networks - эта статья (Наш первый алгоритм глубокого обучения. Пошаговое описание того, как именно он работает и почему эти архитектурные решения были выбраны сделано.)
  6. Градиент политики (Наш первый алгоритм глубокого обучения на основе политик.)
  7. Критик-исполнитель (сложный алгоритм глубокого обучения, сочетающий в себе лучшее из сетей Deep Q и градиентов политик.)
  8. Тема-сюрприз 😄 (Следите за обновлениями!)

Если вы не читали предыдущие статьи, особенно четвертую по Q-Learning, было бы неплохо сначала прочитать их, поскольку эта статья основывается на многих концепциях, которые мы там обсуждали.

Обзор сетей Deep Q

Q-table может справиться с простыми проблемами с несколькими состояниями

Q Learning создает Q-таблицу значений состояния-действия с размером (s, a), где s - количество состояний, а a это количество действий. По сути, Q-таблица отображает пары состояния и действия на Q-значение.

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

Используйте Q-функцию для реальных проблем

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

Нейронные сети - лучшие аппроксиматоры функций

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

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

Он изучает параметры (веса) сети, чтобы выводить оптимальные значения Q.

Основной принцип сети Deep Q очень похож на алгоритм Q Learning. Он начинается с произвольных оценок Q-значения и исследует окружающую среду с использованием политики ε-жадности. И в своей основе он использует то же понятие двойных действий, текущего действия с текущим значением Q и целевого действия с целевым значением Q, для своей логики обновления, чтобы улучшить свои оценки Q-значения.

Компоненты архитектуры DQN

В архитектуре DQN есть две нейронные сети, сеть Q и целевые сети, а также компонент, называемый Experience Replay. Сеть Q - это агент, который обучен производить значение оптимального состояния-действия.

Experience Replay взаимодействует со средой для генерации данных для обучения Q Network.

Сеть Q представляет собой довольно стандартную архитектуру нейронной сети и может быть такой же простой, как линейная сеть с парой скрытых слоев, если ваше состояние может быть представлено с помощью набора числовых переменных. Или, если ваши данные состояния представлены в виде изображений или текста, вы можете использовать обычную архитектуру CNN или RNN.

Целевая сеть идентична сети Q.

Рабочий процесс DQN высокого уровня

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

Сбор обучающих данных

Теперь давайте увеличим масштаб этого первого этапа.

Experience Replay выбирает ε-жадное действие из текущего состояния, выполняет его в среде и возвращает вознаграждение и следующее состояние.

Это наблюдение сохраняется как образец обучающих данных.

Затем мы увеличим масштаб следующей фазы потока.

Q Network прогнозирует значение Q

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

Затем этот пакет обучающих данных вводится в обе сети. Сеть Q берет текущее состояние и действие из каждой выборки данных и прогнозирует значение Q для этого конкретного действия. Это «Прогнозируемое значение Q».

Целевая сеть прогнозирует целевое значение Q

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

Вычислить потери и обучить сеть Q

Прогнозируемое значение Q, целевое значение Q и наблюдаемое вознаграждение из выборки данных используются для вычисления потерь для обучения сети Q. Целевая сеть не обучена.

Зачем нам нужен Experience Replay?

Вы, наверное, задаетесь вопросом, зачем нам вообще нужна отдельная память Experience Replay? Почему бы нам просто не принять меры, наблюдать за результатами в окружающей среде, а затем передать эти данные в Q Network?

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

Хорошо, в таком случае очевидный ответ: почему бы нам не выполнить несколько действий последовательно одно за другим, а затем передать эти данные в виде пакета в сеть Q? Это должно помочь сгладить шум и привести к более стабильной тренировке, не так ли?

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

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

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

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

Вот почему была представлена ​​память Experience Replay. Все действия и наблюдения, предпринятые агентом с самого начала (конечно, ограниченные объемом памяти), сохраняются. Затем из этой памяти случайным образом выбирается партия образцов. Это гарантирует, что пакет «перемешан» и содержит достаточно разнообразия от старых и новых образцов (например, из нескольких регионов производственного цеха и в разных условиях), чтобы позволить сети узнать веса, которые обобщаются для всех сценариев, которые будут требуется обрабатывать.

Зачем нам нужна вторая нейронная сеть (Target Network)?

Вторая загадка - зачем нам вторая нейронная сеть? И эта сеть не обучается, что делает ее еще более загадочной.

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

Но это может создать потенциальную проблему. Веса Q-сети обновляются на каждом временном шаге, что улучшает предсказание прогнозируемого значения Q. Однако, поскольку сеть и ее веса одинаковы, она также меняет направление наших прогнозируемых значений Target Q. Они не остаются постоянными, но могут колебаться после каждого обновления. Это похоже на погоню за движущейся целью 😄.

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

Было обнаружено, что использование целевой сети приводит к более стабильному обучению.

DQN Подробно о работе

Теперь, когда мы понимаем общий поток, давайте подробно рассмотрим работу DQN. Сначала инициализируется сеть.

Инициализация

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

Инициализируйте сеть Q со случайными весами и скопируйте их в целевую сеть.

Опыт Replay

Начиная с первого временного шага, Experience Replay запускает этап генерации обучающих данных и использует сеть Q для выбора ε-жадного действия. Сеть Q действует как агент, взаимодействуя с окружающей средой для создания обучающей выборки. На этом этапе обучение DQN не происходит.

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

Данные образца (текущее состояние, действие, награда, следующее состояние) сохраняются.

Experience Replay выполняет ε-жадное действие и получает следующее состояние и награду.

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

Выбрать случайную тренировочную группу

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

Используйте текущее состояние из образца в качестве входных данных, чтобы предсказать значения Q для всех действий.

Чтобы упростить объяснение, давайте возьмем один образец из партии. Сеть Q прогнозирует значения Q для всех действий, которые могут быть предприняты из состояния.

Выберите прогнозируемое значение Q

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

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

Следующее состояние из выборки вводится в целевую сеть. Целевая сеть прогнозирует значения Q для всех действий, которые могут быть предприняты из следующего состояния, и выбирает максимальное из этих значений Q.

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

Получите целевое значение Q

Целевое значение Q - это результат целевой сети плюс вознаграждение за образец.

Вычислить потерю

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

Вычислить потерю

Потери обратного распространения в Q-Network

Распространите потери в обратном направлении и обновите веса Q-сети с помощью градиентного спуска. Целевая сеть не обучена и остается фиксированной, поэтому потери не вычисляются и обратное распространение не выполняется. На этом обработка этого временного шага завершена.

Без потерь для целевой сети

Целевая сеть не обучена, поэтому потери не вычисляются и обратное распространение не выполняется.

Повторите для следующего временного шага

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

После T временных шагов скопируйте веса Q сети в целевую сеть.

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

Веса Q-сети и Целевая сеть снова равны.

Заключение

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

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

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

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





Продолжаем учиться!