Семья DQN

Сети Double Deep Q

Устранение предвзятости максимизации в Deep Q-Learning

Введение

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

Если вы не до конца знакомы с Q-обучением, я бы порекомендовал взглянуть на мой пост о Q-обучении!

Мотивация

Рассмотрим целевое значение Q:

Конкретно,

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

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

Hasselt et al. (2015) иллюстрируют эту тенденцию к завышению оценок в экспериментах в различных игровых средах Atari:

Как мы видим, традиционные DQN имеют тенденцию значительно переоценивать ценности действий, что приводит к нестабильному обучению и политике низкого качества:

Решение: обучение Double Q

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

Ниже мы рассмотрим 3 различных варианта обучения Double Q и реализуем последние два.

1. Оригинальный алгоритм «двойного Q-обучения» (Хасселт, 2010 г.)

Исходный алгоритм двойного Q-обучения использует две независимые оценки Q^{A} и Q^{B}. С вероятностью 0,5 мы используем оценку Q^{A} для определения действия максимизации, но используем ее для обновления Q^{B}. И наоборот, мы используем Q^{B} для определения действия максимизации, но используем его для обновления Q^{A}. Таким образом, мы получаем несмещенную оценку Q^{A}(state, argmaxQ^{next state, action) для ожидаемого значения Q и подавляем смещение.

2. Обновленная версия от того же автора в книге «Глубокое обучение с подкреплением с двойным Q-обучением» (Hasselt et al., 2015),

Во втором алгоритме двойного Q-обучения у нас есть модель Q и целевая модель Q’ вместо двух независимых моделей, как в (Hasselt, 2010). Мы используем Q’ для выбора действия и Q для оценки действия. То есть:

Мы минимизируем среднеквадратичную ошибку между Q и Q*, но мы Q' медленно копируем параметры Q. Мы можем сделать это, периодически копируя параметры на бумажном носителе, а также усредняя по Поляку:

где θ ’- целевой параметр сети, θ - параметр первичной сети, а τ (скорость усреднения) обычно устанавливается на 0,01.

3. Обрезанное двойное Q-обучение, в Ошибка аппроксимации функции адресации в методах, критикующих акторов (Fujimoto et al., 2018) ».

В Clipped Double Q-Learning мы следуем оригинальной формулировке Hasselt 2015. У нас есть две независимые оценки истинного значения Q. Здесь для вычисления целей обновления мы берем минимум из двух значений действия следующего состояния, создаваемых нашими двумя Q-сетями; Когда оценка Q из одного значения больше, чем из другого, мы уменьшаем его до минимума, избегая завышения.

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

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

Мы начнем с той же настройки агента DQN, что и в первой части этой серии. Если вы хотите увидеть более полную реализацию настройки, см. Мой пост Q-Learning или мой репозиторий Github (ссылка внизу).

Агент DQN:

  1. Двойное Q-обучение, Хасселт и др., 2015 г .:

Мы инициализируем модель и целевую модель:

Для вычисления потерь мы используем нашу целевую модель для вычисления следующих значений Q:

А затем мы медленно копируем / усредняем параметры модели в целевые параметры модели:

2. Обрезанное двойное Q-обучение, Фудзимото и др., 2018 г .:

Инициализируем две сети Q:

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

И, наконец, функция обновления:

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

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

Здесь можно найти мою полную реализацию:



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