Глубокое обучение с подкреплением. Вступление. Алгоритм Deep Q Network (DQN).

Введение в глубокое обучение с подкреплением

1. ВВЕДЕНИЕ

Истоки глубокого обучения с подкреплением - это чистое обучение с подкреплением, где проблемы обычно формулируются как марковские процессы принятия решений (MDP). MDP состоит из набора состояний S и действий A. Переходы между состояниями выполняются с вероятностью перехода P, вознаграждением R и коэффициентом скидки гамма. Вероятность перехода P (системная динамика) отражает количество различных переходов и возникновения вознаграждений из одного состояния в другое, где последовательное состояние и вознаграждение зависят только от состояния и действия, предпринятого на предыдущем временном шаге.

Обучение с подкреплением определяет среду, в которой Агент выполняет определенные действия (в соответствии с политикой), чтобы максимизировать вознаграждение. Основа оптимального поведения Агента определяется уравнением Беллмана, которое является широко используемым методом решения практических задач оптимизации. Для решения оптимального уравнения Беллмана мы используем динамическое программирование.

Когда агент существует в среде и переходит в другое состояние (положение), нам необходимо оценить значение состояния V (s) (положение) - функция значения состояния. Как только мы узнаем значение каждого состояния, мы сможем выяснить, как лучше всего действовать Q (S, A) - функция значения действия (просто следуя за состоянием с наибольшим значением).

Эти два сопоставления или функции очень взаимосвязаны и помогают нам найти

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

Значения символов следующие:

E [X] - математическое ожидание случайной величины X

𝜋 - политика

Gt - доходность со скидкой в ​​момент времени t

γ - ставка дисконтирования

Однако функция значения действия q (s, a) представляет собой ожидаемый результат, начиная с состояния S, выполняя действие A и следуя политике 𝜋, и сообщает нам, насколько хорошо предпринять конкретное действие из определенного состояния,

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

MDP решается с помощью уравнения Беллмана, названного в честь американского математика Ричарда Беллмана. Уравнение помогает найти оптимальную политику и функции стоимости. Агент выбирает действие в соответствии с наложенной политикой (стратегия - формально политика определяется как распределение вероятностей по действиям для каждого возможного состояния). Различные политики, которым может следовать Агент, подразумевают разные функции значения для состояния. Однако, если цель - максимизировать собранные вознаграждения, мы должны найти наилучшую возможную политику, называемую оптимальной политикой .

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

Наконец, уравнение Беллмана для функции цены может быть представлено как,

Точно так же уравнение Беллмана для функции Q можно представить следующим образом:

На основе функции оптимального значения состояния и приведенных выше уравнений для функции значения-действия функции значения состояния мы можем составить окончательное уравнение для функции оптимального значения, называемое оптимальным уравнением Беллмана:

Как правило, задачи обучения с подкреплением решаются с использованием алгоритмов Q-обучения. Здесь, как было сказано выше, Агент взаимодействует с Окружением и получает награды. Цель состоит в том, чтобы разработать оптимальную политику (стратегию выбора действия) для максимизации вознаграждения. В процессе обучения агент обновляет таблицу Q (S, A) (завершение происходит по окончании эпизода - достижение цели).

Q - алгоритм обучения выполняется по следующим шагам:

1. Инициализируйте таблицу Q (S, A) случайными значениями.

2. Выполните действие (A) с помощью epsilon - жадная политика и перейдите к следующему состоянию S ’

3. Обновите значение Q предыдущего состояния, следуя уравнению обновления:

Лучше всего начать с решения окружения Замерзшее озеро из OpenAI gym.

В среде Frozen Lake (ознакомьтесь с описанием OpenAI) агент может находиться в 16 состояниях и выполнять 4 различных действия (в одном состоянии). В этом случае наша таблица Q (S, A) имеет размер 16 x 4.

Код для Frozen Lake может быть следующим:

Обратите внимание, что приведенный выше Q-алгоритм относится к алгоритмам обучения временной разнице (разработан Ричардом С. Саттоном в 1988 г.). Q-алгоритм - это алгоритм вне политики (как способность метода учиться на старых исторических данных). Расширением алгоритма Q-обучения является SARSA (алгоритм на основе политики. Единственное отличие - это обновление таблицы Q (S, A):

2. ГЛУБОКОЕ ОБУЧЕНИЕ ПО УСИЛЕНИЮ (ГЛУБОКОЕ Q - СЕТИ - DQN)

Обучение с подкреплением может быть достаточно применимо к среде, где все достижимые состояния могут управляться (повторяться) и храниться в стандартной оперативной памяти компьютера. Однако в среде, в которой количество состояний превышает возможности современных компьютеров (для игр Atari имеется 12833600 состояний), стандартный подход обучения с подкреплением не очень применим. Более того, в реальной среде Агент должен сталкиваться с непрерывными состояниями (не дискретными), непрерывными переменными и проблемами непрерывного управления (действия).

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

3. АЛГОРИТМ ИЗУЧЕНИЯ DQN

Основная концепция DQN была изображена на рисунке ниже (в процессе обучения), где Q-сеть действует как нелинейное приближение, которое отображает оба состояния в значение действия.

В процессе обучения Агент взаимодействует с окружающей средой и получает данные, которые используются при обучении Q-сети. Агент исследует среду, чтобы составить полную картину переходов и результатов действий. Вначале Агент выбирает свои действия случайным образом, чего со временем становится недостаточно. Исследуя окружающую среду, Агент пытается взглянуть на Q-сеть (приближение), чтобы решить, как действовать. Мы назвали этот подход (сочетание случайного поведения и Q-сети) как epsilon-жадный метод (блок выбора Epsilon -greedy action), что означает просто переключение между случайной политикой и политикой Q с использованием вероятности гиперпараметр эпсилон.

Ядро представленного алгоритма Q-Learning основано на контролируемом обучении.

Здесь, как упоминалось выше, цель состоит в том, чтобы аппроксимировать сложную нелинейную функцию Q (S, A) с помощью глубокой нейронной сети.

Точно так же для контролируемого обучения в DQN мы можем определить функцию потерь как квадрат разницы между целевым и прогнозируемым значением, и мы также попытаемся минимизировать потери, обновив веса (предполагая, что агент выполняет переход из одного состояния s до следующего состояния s ', выполнив какое-либо действие a и получив вознаграждение r).

В процессе обучения мы используем две отдельные Q-сети (Q_network_local и Q_network_target) для вычисления прогнозируемого значения (веса θ) и целевого значения (веса θ ’). Целевая сеть замораживается на несколько временных шагов, а затем веса целевой сети обновляются путем копирования весов из фактической Q-сети. Замораживание целевой Q-сети на некоторое время с последующим обновлением ее весов с учетом фактических весов Q-сети стабилизирует обучение.

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

Алгоритм DQN можно описать следующим образом:

1. Инициализировать буфер воспроизведения,

2. Предварительная обработка и среда и состояние передачи S) в DQN, который вернет значения Q для всех возможных действий в состоянии.

3. Выберите действие, используя эпсилон-жадную политику: с вероятностью эпсилон мы выбираем случайное действие A и с вероятностью 1-эпсилон. Выберите действие с максимальным значением Q, например A = argmax (Q (S, A, θ)).

4. После выбора действия A Агент выполняет выбранное действие в состоянии S и переходит в новое состояние S ' и получает вознаграждение. Р.

5. Сохраните переход в буфере воспроизведения как ‹S, A, R, S’ ›.

6. Затем выберите несколько случайных пакетов переходов из буфера воспроизведения и рассчитайте потери по формуле:

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

8. После каждых k шагов скопируйте наши фактические веса сети в целевые веса сети.

9. Повторите эти шаги для M количества серий.

4. НАСТРОЙКА ПРОЕКТА. РЕЗУЛЬТАТЫ.

В этом разделе я представляю результаты реализации проекта Udacity (Deep Reinforcement Learning) - загляните на мой GitHub.

a. ЦЕЛЬ в проекте

В этом проекте цель состояла в том, чтобы научить Агента ориентироваться в квадратной среде и собирать желтые бананы. Требование проекта - набрать средний балл +13 за 100 последовательных серий.

б. В проекте «Навигация» были применены следующие настройки архитектуры нейронной сети и гиперпараметров:

Изображенный ниже график вознаграждений за эпизод показывает, что Агент может получить среднее вознаграждение (более 100 эпизодов) не менее +13, играя 2247 эпизодов.

Архитектура Q-Network:

Входной слой FC1: 37 узлов на входе, 64 узла на выходе
Скрытый слой FC2: 64 узла на входе, 64 узла на выходе
Скрытый слой FC3: 64 узла на входе, 64 узла на выходе
Выходной слой: 64 узла in, 4 out - размер экшена

Примененные гиперпараметры:

BUFFER_SIZE = int (1e5) # размер буфера воспроизведения
BATCH_SIZE = 64 # размер мини-пакета
GAMMA = 0.99 # коэффициент скидки
TAU = 1e-3 # для мягкого обновления целевых параметров
LR = 5e-4 # скорость обучения
UPDATE_EVERY = 4 # как часто обновлять сеть
Epsilon start = 1.0
Epsilon start = 0.01
Epsilon decay = 0.999

5. ИДЕИ БУДУЩЕЙ РАБОТЫ

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

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

Архитектура дуэльного DQN такая же, как и описанная выше DQN, за исключением того, что полностью

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

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

Наконец, мы можем рассмотреть возможность обучения на основе предпочтений человека (OpenAI и Deep Mind). Основная идея тонкой новой концепции - изучить Агента по отзывам людей. Агент, получив обратную связь от человека, попытается выполнить действия, предпочитаемые человеком, и установит

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

Полный код этого проекта можно найти в моем Github.