Семья DQN

Дуэльные сети Deep Q

Дуэльные сетевые архитектуры для глубокого обучения с подкреплением

Обзор и введение

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

  • Учитывая политику агента π, значение действия и значение состояния определяются, соответственно, как:

  • Вышеупомянутая функция Q также может быть записана как:

  • Преимущество - это величина, получаемая путем вычитания значения Q на значение V:

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

Какие изменения и мотивация

  • (Ван и др.) Представляют новую дуэльную архитектуру, которая явно разделяет представление значений состояния и преимущества зависимых от состояния действий через два отдельных потока.
  • Основная мотивация этой архитектуры заключается в том, что для некоторых игр нет необходимости знать значение каждого действия на каждом временном шаге. Авторы приводят пример игры Atari Enduro, где нет необходимости знать, какие действия предпринять, пока столкновение не станет неизбежным.

  • Явно разделяя два оценщика, дуэльная архитектура может узнать, какие состояния являются (или не являются) ценными, без необходимости узнавать эффект каждого действия для каждого состояния. Как и в случае с эндуро, эта архитектура становится особенно актуальной в задачах, где действия не всегда могут существенно влиять на окружающую среду.

Архитектура

Как и в стандартной архитектуре DQN, у нас есть сверточные слои для обработки игровых кадров. Оттуда мы разделяем сеть на два отдельных потока: один для оценки значения состояния, а другой - для оценки преимуществ действий, зависящих от состояния. После двух потоков последний модуль сети объединяет выходные значения состояния и преимущества.

Теперь, как нам объединить / агрегировать два значения?

Кажется интуитивно понятным просто суммировать два значения, что сразу очевидно из определения значения преимущества:

Однако авторы представляют два вопроса об этом методе:

  1. Проблематично предположить, что и дает разумные оценки преимуществ состояния и действия, соответственно. Поэтому наивное сложение этих двух значений может быть проблематичным.
  2. Наивная сумма двух является «неидентифицируемой», поскольку, учитывая значение Q, мы не можем однозначно восстановить V и A. Это эмпирически показано в Wang et al. что это отсутствие идентифицируемости приводит к плохой практической работе.

Поэтому последний модуль нейронной сети реализует прямое отображение, показанное ниже:

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

В качестве альтернативы, как это использовалось в экспериментах Ванга и др., Мы также можем использовать:

Затем мы выбираем оптимальное действие a* на основе:

Обучение

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

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

Реализация

Итак, рассмотрим реализацию Dueling DQN.

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

2. Далее мы реализуем функцию обновления:

Помимо этого, в стандартной архитектуре DQN ничего не меняется; для полной реализации, посмотрите мой пост ванильного DQN или мой репозиторий Github:



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