Введение в обучение с подкреплением 5 — статья, которая поможет вам понять DQN

искусственный интеллект обучение с подкреплением

Это 3-й день моего участия в августовском испытании обновлений, узнайте подробности события:Испытание августовского обновления

Узнать больше о DQN

Эта статья является пятой в серии «Начало работы с обучением с подкреплением». Ранее мы представили Q-обучение, а сегодня мы представляем глубокую версию Q-обучения. Цели обучения для этого раздела: Что такое DQN? Связь с Q-learning? Что такое аппроксимация функции цены? Как обучаются нейронные сети?

Введение

DQN расшифровывается как Deep Q Network. DQN — это метод без модели, основанный на ценностях, вне политики. Бумага в DeepMind 2013Playing Atari with Deep Reinforcement Learningпредложено в. Бумага в DeepMind 2015Human-level Control Through Deep Reinforcement LearningПредлагается новая версия DQN с использованием CNN.

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

Q(s,a)Q(s,a)+α[r+γmaxa'Q(s',a')Q(s,a)]Q(s,a)\leftarrow Q(s,a)+\alpha[r+\gamma\max_{a'}Q(s',a')-Q(s,a)]

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

аппроксимация функции цены

Проще говоря, используйте функциюf(s,a)f(s,a)приближатьQ(s,a)Q(s,a). Функции могут быть линейными или нелинейными.

Q^(s,aθ)Q(s,a)\hat{Q}(s,a|\theta)\approx Q(s,a)

θ\thetaявляются параметрами функции. Как приспособить такую ​​функцию? Этот DQN использует сверточную нейронную сеть CNN для соответствия функции. CNN это государствоssНа входе на выходе — вектор, содержащий значения всех действий, а параметры обучаются до сходимости. На следующем рисунке показана структура CNN в статье.

DQN_CNN结构

Как тренироваться?

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

Проще говоря, после первой инициализации используйтеϵgreedy\epsilon-greedyСлучайная стратегия, запускаемая в течение определенного периода времени в соответствии с Q-learning, а затем использующая состояние этого периода времени.ss,действиеaa,наградаrr, состояние следующего моментаs's'хранятся в пуле опыта.

Этот шаг также является важным шагом для DQN. Благодаря накопленному опыту DQN может постоянно учиться. В то же время во время обучения из пула опыта случайным образом выбирается пакет выборочных данных.Этот метод также называетсяExperience ReplayОдним из преимуществ воспроизведения опыта является то, что оно может ослабить корреляцию между данными и сделать нейронную сеть более стабильной.

С помощью образца мы можем построить следующееLoss Function:

L(θ)=E[(QtargetQ(s,aθ))2]=E[(r+γmaxa'(Q(s',a'θ))Q(s,aθ))2]L(\theta)=E[(Q_{target}-Q(s,a|\theta))^2] =E[(r+\gamma\max_{a'}(Q(s',a'|\theta))-Q(s,a|\theta))^2]

Рассчитайте градиент в соответствии с функцией потерь, используйте SGD для обновления градиента, пока он не сойдется к желаемомуθ\theta.

Поток алгоритма

Псевдокод версии CNN на 15 лет здесь

DQN伪代码

Присмотревшись внимательно к псевдокоду выше, мы видим, что есть два параметра нейронной сетиθ,θ\theta,\theta^{-}. Фактически DQN использует две CNN, одну для вычислений.QtargetQ_{target}этоθ\theta^-сети, один используется для расчета текущегоQ(s,a)Q(s,a)этоθ\theta. Так зачем добавлять еще одну целевую сеть?

На самом деле этот метод также называется фиксированными Q-целями. Это добавление целевой сети с той же структурой, но другими параметрами. Цель состоит в том, чтобы предотвратить переоснащение исходной сети Q. Только представьте, если у нас только одна сеть Q, то каждое обновлениеθ\thetaПри целевое значение также будет меняться, то есть цель, которую оно преследует, постоянно меняется. Сеть, полученная таким образом, может быть не очень стабильной. Затем введите целевую сеть, исправьте цель и обновите ее через некоторое время, чтобы наша исходная сеть Q обновлялась.θ\thetaСтремление к фиксированной цели.

резюме

Проще говоря, DQN применяет нейронную сеть, принимает состояние в качестве входных данных нейронной сети, выводит все значения действий, а затем напрямую выбирает действие с максимальным значением в качестве следующего действия по принципу Q-обучения. Другими словами, в Q-обучении нейронная сеть используется для вычисления значения Q, превращая Q-таблицу в Q-сеть, которая может иметь дело с многомерными задачами состояния или пространства действий. У DQN есть и недостатки: например, DQN нельзя использовать для задач непрерывного управления из-за работы MAX Q, так что DQN может обрабатывать только дискретные задачи.

Ссылаться на

  1. Обучение с подкреплением — что произошло от Q-Learning до DQN? - Знаю почти
  2. Нейронная сеть DQN — обучение с подкреплением | Не беспокойтесь о Python