Семья 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 работает как таковое:
- Соберите и сохраните образцы в буфере воспроизведения с текущей политикой
- Случайные образцы опыта из буфера воспроизведения (известного как Воспроизведение опыта).
- Используйте образцы опыта для обновления сети Q
- Повторить 1-3.
Мы более подробно рассмотрим шаги (2) и (3), которые позволят нам сразу перейти к реализации.
Опыт Replay
Почему мы должны использовать случайную выборку опыта, а не просто использовать прошлый последовательный опыт? Последовательные переживания сильно коррелированы (во времени) друг с другом. В задачах статистического обучения и оптимизации мы хотим, чтобы наши данные были независимо распределены. То есть мы не хотим, чтобы данные, которые мы скармливали, каким-либо образом коррелировали друг с другом. Случайная выборка опыта нарушает эту временную корреляцию поведения и распределяет / усредняет ее по многим из предыдущих состояний. Таким образом мы избегаем значительных колебаний или расхождений в нашей модели - проблем, которые могут возникнуть из-за коррелированных данных.
Обновление сети Q
Для обновления сети Q мы хотим минимизировать среднеквадратичную ошибку между нашим целевым значением Q (согласно уравнению Беллмана) и нашим текущим выходом Q:
куда
Оптимально, мы хотим, чтобы ошибка уменьшилась, а это означает, что результаты нашей текущей политики становятся более похожими на истинные значения Q. Следовательно, с функцией потерь, определенной, как указано выше, мы выполняем градиентный шаг для функции потерь в соответствии с:
Руководство по внедрению
Мы начнем с построения нашей сети Deep Q, оснащенной сверточной нейронной сетью:
В функции forward
мы вводим пиксельное изображение и проходим через нашу модель для вывода вектора значений Q, соответствующих каждому действию.
Затем мы создадим наш буфер воспроизведения, в котором мы можем хранить события - переходы (состояние, действие, награда, следующее состояние, bool (is_done)) - и образцы случайных событий для обучения:
Затем мы пишем функцию, которая вычисляет потерю значения на каждом шаге градиента. Это выглядит так:
Наконец, мы соберем их все вместе в нашем агенте DQN:
На этом завершается реализация ванильного DQN. Вы можете найти полную работоспособную реализацию в моем репозитории GitHub:
В следующих частях этой серии мы рассмотрим многочисленные варианты DQN, улучшающие оригинал во многих областях.
Спасибо за прочтение!
Использованная литература:
- Игра в Atari с глубоким обучением с подкреплением (Mnih et al. 2013)
- Обучение с подкреплением: введение (Саттон и Барто)
Следующее сообщение:
Моя серия начнется с ванильного глубокого Q-обучения (этот пост) и приведет к Deepmind's Rainbow DQN, современному последнему слову техники. Посмотрите мой следующий пост о снижении систематической ошибки завышенной оценки с помощью двойного Q-обучения!
- Deep Q Networks
- Сети Double Deep Q