Семья DQN

Сети Vanilla Deep Q

Объяснение Deep Q Learning

Вступление

Этот пост будет структурирован следующим образом:

Мы кратко рассмотрим итерацию общей политики и методы разницы во времени. Тогда мы будем понимать Q-обучение как итерацию общей политики. Наконец, мы поймем и реализуем DQN, представленный в статье Deepmind Игра в Atari с глубоким обучением с подкреплением (Mnih et al. 2013).

Итерация общей политики (GPI)

Мы называем общей итерацией политики чередование оценки политики и итерации политики. Мы начинаем с некоторой произвольно инициализированной политики, оцениваем политику (обозначается как E), выводим новую политику из оценки (обозначается как I) и повторяем этот процесс, пока мы достичь оптимальной политики. Посредством этого итеративного процесса мы получаем монотонно возрастающие (улучшающие) последовательности {V_π} и {π}.

Как мы можем это гарантировать? Мы рассмотрим теорему об улучшении политики:

Теорема утверждает, что ценность следования политике π ’дает большую ценность, чем ценность следования политике π. То есть политика π ’лучше, чем π. Теперь мы докажем теорему об улучшении политики.

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

Методы временной разницы (TD)

Методы временной разницы представляют собой комбинацию методов Монте-Карло и методов динамического программирования. Вспомните каждый метод:

  • В методах Монте-Карло для обновлений используется оценка (1). Поскольку мы не знаем истинного ожидаемого значения, мы отбираем G_t из окружающей среды.
  • Методы динамического программирования (DP) используют (3) для обновлений. Мы говорим, что методы DP загружаются, потому что мы используем нашу текущую оценку v_pi (s_ {t + 1}) для выполнения обновлений.

В методах TD мы сочетаем выборку Монте-Карло с начальной загрузкой динамического программирования. Мы выбираем наши ожидаемые значения, как показано в (1), и используем текущие оценки наших следующих значений состояния, чтобы обновить значение нашего исходного состояния, как показано в (3). Цель TD \delta может иметь различные формы, но ниже представлена ​​наиболее фундаментальная форма:

Q обучение и GPI

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

Теперь пусть наша Q-функция параметризована некоторым θ, которым в нашем случае являются нейронные сети. Следуя формулировке GPI, мы хотим минимизировать разницу между нашим текущим Q и нашим целевым Q. Для этого мы хотим взять среднеквадратичную ошибку между ними:

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

Deep Q Networks

Deep Q Learning, опубликованный в (Mnih et al, 2013), использует достижения в области глубокого обучения для изучения политик на основе многомерного сенсорного ввода. В частности, он обучается с необработанными пикселями из игр Atari 2600 с использованием сверточных сетей вместо низкоразмерных векторов признаков. На рисунке ниже показана архитектура DQN:

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

На более высоком уровне обучение Deep Q работает как таковое:

  1. Соберите и сохраните образцы в буфере воспроизведения с текущей политикой
  2. Случайные образцы опыта из буфера воспроизведения (известного как Воспроизведение опыта).
  3. Используйте образцы опыта для обновления сети Q
  4. Повторить 1-3.

Мы более подробно рассмотрим шаги (2) и (3), которые позволят нам сразу перейти к реализации.

Опыт Replay

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

Обновление сети Q

Для обновления сети Q мы хотим минимизировать среднеквадратичную ошибку между нашим целевым значением Q (согласно уравнению Беллмана) и нашим текущим выходом Q:

куда

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

Руководство по внедрению

Мы начнем с построения нашей сети Deep Q, оснащенной сверточной нейронной сетью:

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

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

Затем мы пишем функцию, которая вычисляет потерю значения на каждом шаге градиента. Это выглядит так:

Наконец, мы соберем их все вместе в нашем агенте DQN:

На этом завершается реализация ванильного DQN. Вы можете найти полную работоспособную реализацию в моем репозитории GitHub:



В следующих частях этой серии мы рассмотрим многочисленные варианты DQN, улучшающие оригинал во многих областях.

Спасибо за прочтение!

Использованная литература:

Следующее сообщение:

Моя серия начнется с ванильного глубокого Q-обучения (этот пост) и приведет к Deepmind's Rainbow DQN, современному последнему слову техники. Посмотрите мой следующий пост о снижении систематической ошибки завышенной оценки с помощью двойного Q-обучения!

  1. Deep Q Networks
  2. Сети Double Deep Q