Абстрактный

В этой статье блога мы обсудим глубокое Q-обучение и четыре его наиболее важных дополнения. Double DQN, Dueling DQN, Noisy DQN и DQN с приоритетным воспроизведением опыта - это четыре дополнения, каждое из которых обрабатывает разные аспекты агента. агент имеет разные аспекты, такие как его разум, опыт, который он получает от окружающей среды, и ее исследование (изучение новых вещей независимо от того, что было изучено). Каждый из упомянутых подходов учитывает один из этих аспектов. Итак, как они работают и как они работают, а также самый главный вопрос, «почему» они работают, будет объяснено в этой статье.

Ссылка на код: https://github.com/Parsa33033/Deep-Reinforcement-Learning-DQN

1. Введение

Для объяснения каждого из методов мы сначала должны представить алгоритм, с которого они все были начаты, - «Q-обучение». В общем, обучение с подкреплением состоит из разных частей. Агент, действие агента, среда, в которой агент выполняет действия, и состояние или наблюдение, которое агент получает в результате совершенного им действия. Разум агента в Q-обучении - это таблица, в которой строки представляют собой состояние или наблюдение агента из среды, а столбцы - действия, которые необходимо предпринять. Каждая из ячеек таблицы будет заполнена значением, называемым Q-значением, которое представляет собой значение, которое действие приносит с учетом состояния, в котором оно находится. Давайте назовем эту таблицу Q-таблицей. Q-таблица - это мозг агента.

Есть несколько шагов к обучению с подкреплением:

1) Агент начинает действовать в среде и запускает Q-таблицу, инициализированную нулями во всех ячейках.

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

3) Агент получает вознаграждение за выполнение действия. У награды есть смысл. чем выше значение, тем лучше, но иногда меньшее значение может означать, что агент предпринял лучшие действия. Вознаграждение исходит от окружающей среды, и среда определяет, какая из более низких или более высоких наград лучше. Среда дает агенту вознаграждение за действие в определенном состоянии.

4) Агент продолжает выполнять шаги с 1 по 3 и собирает информацию в своей «памяти». Память содержит кортежи состояния, следующего состояния, действия, вознаграждения и логического значения, указывающего на завершение работы агента. эти шаги продолжаются, и агент запоминает информацию до тех пор, пока не произойдет завершение.

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

6) После завершения работы агента, что может означать завершение задачи или отказ, агент начинает воспроизведение опыта, накопленного в его памяти. Из памяти будет выбрана партия определенного размера и на ней будет выполняться задача обучения. Фактически это означает, что Q-таблица начинает заполняться. Это называется «Воспроизведение опыта».

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

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

2 Глубокое Q-Learning (DQN)

Единственная разница между Q-обучением и DQN - это мозг агента. Мозг агента в Q-обучении - это Q-таблица, но в DQN мозг агента - это глубокая нейронная сеть.

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

3 двойной DQN

Double DQN использует две идентичные модели нейронных сетей. Один учится во время воспроизведения опыта, как и DQN, а другой является копией последнего эпизода первой модели. Фактически значение Q вычисляется с помощью этой второй модели. Итак, почему это так? В DQN Q-значение рассчитывается с добавлением вознаграждения к максимальному Q-значению следующего состояния. Очевидно, что если каждый раз, когда Q-value вычисляет большое число для определенного состояния, значение, полученное из выходных данных нейронной сети для этого конкретного состояния, будет каждый раз увеличиваться. Значение каждого выходного нейрона будет становиться все выше и выше, пока разница между каждым выходным значением не станет высокой. Теперь, если, скажем, для состояния s действие a имеет более высокое значение, чем действие b, то действие a будет выбираться каждый раз для состояния s. теперь рассмотрим, становится ли для некоторого опыта воспоминаний действие b лучшим действием для состояния s. тогда, поскольку нейронная сеть обучается таким образом, чтобы давать гораздо более высокое значение для действия a при заданном состоянии s, трудно обучить сеть, чтобы узнать, что действие b является лучшим действием в некоторых условиях. Итак, что нам делать, чтобы уменьшить разницу между выходными значениями (действиями)? Используйте вторичную модель, которая является копией основной модели из последнего эпизода, и, очевидно, поскольку разница между значениями второй модели ниже, чем в основной модели, мы используем эту вторую модель для достижения значения Q:

Таким образом Q-value рассчитывается в Double DQN. Мы находим индекс наивысшего Q-значения из основной модели и используем этот индекс для получения действия из второй модели. И остальное уже история.

4 Дуэль DQN

Отличие Dueling DQN заключается в структуре модели. Модель создается таким образом, чтобы выводить формулу ниже:

Здесь V (s) обозначает значение состояния s, а A - преимущество выполнения действия в состоянии s. Ценность государства не зависит от действия. Значит, насколько хорошо быть в том или ином состоянии. Но в чем преимущество? Чем он отличается от Q-value? Поясним это на примере. Агент может находиться в состоянии, в котором каждое из действий будет давать одинаковое значение Q. Итак, в этом состоянии нет хорошего действия. Что произойдет, если мы разделим Q-значение на значение состояния и преимущество, которое имеет каждое действие. Если каждое действие дает одинаковый результат, то преимущество каждого действия будет иметь одинаковое значение. Теперь, если мы вычтем среднее значение всех преимуществ из каждого преимущества, мы получим ноль (или близкое к нулю), а значение Q фактически будет значением, которое имеет состояние.

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

Имейте в виду, что выходом модели будет значение состояния плюс преимущество действий. Но для обучения модели мы используем то же значение Q для целей, что и раньше:

Мы даже можем использовать метод Double DQN.

5 Шумная сеть (Noisy DQN)

Как вы, возможно, помните из введения, агент иногда исследует окружающую среду независимо от того, что ему велела Q-таблица или нейронная сеть (ее мозг). Как мы уже упоминали, вероятность разведки со временем снижалась. Это произойдет с вероятностью 1, уменьшающейся, например, до 0,01. но Noisy Net делает эту работу по-другому. Noisy Net создает шум на выходе нейронной сети, поэтому таким образом агент исследует окружающую среду всякий раз, когда на выходе нейронной сети есть шум, и другое действие получает более высокое значение, когда реальное действие, которое необходимо предпринять, является другим.

Для этого нужно определить разные веса для нейронной сети. Как вы помните из нейронных сетей, выход нейрона - это сумма входов, умноженная на вес их связи с соответствующим нейроном. Таким образом, веса (для краткости W) были параметрами, которые необходимо изучить в нейронных сетях. Но в Noisy Net (W = Mu + Sigma * epsilon), где Mu - это переменная со случайной инициализацией, Sigma - это переменная с постоянной инициализацией, а эпсилон - это фактически шум со случайным значением от нуля до единицы. Таким образом, полностью связанные слои будут иметь такие веса, которые нужно изучать, и со временем, если исследования больше не нужны, значение сигмы будет близко к нулю, чтобы нейтрализовать эпсилон.

6 DQN с приоритетным воспроизведением опыта

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

Так как же нам распознать важность? Если значение Q из следующего состояния сильно отличается от значения Q из текущего состояния, это означает, что важность высока, увеличивается или уменьшается значение Q в следующем состоянии. Это почтение называется ошибкой временной разницы (ошибка TD).

Итак, для каждой памяти у нас есть ошибка TD, как показано ниже:

Тогда вероятность того, что будет выбрано воспоминание об опыте, будет:

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

Таким образом, p будет вероятностью того, что опыт важен, и партия будет заполнена с учетом вероятностей опыта. Но есть еще кое-что. Как вы, возможно, знаете, обучение сети происходит случайным образом. Это означает, что каждый опыт используется для обучения индивидуально. Итак, если опыт имеет высокую вероятность, то этот опыт будет выбираться каждый раз, и нейронная сеть будет переобучаться для этого конкретного опыта (для получения дополнительной информации о переобучении см. Https://medium.com/greyatom/what-is -underfitting-and-overfitting-in-machine-learning-and-how-to-work-with-it-6803a989c76 ), поэтому для решения этой проблемы мы умножаем указанное ниже значение на потери при обучении:

Где b - значение, начинающееся с нуля и постепенно достигающее 1. Итак, в этой формуле важность рассчитывается на основе распределения, из которого был получен опыт. Так что, если вероятность высока, ее не будут выбирать все время. Следовательно, потеря тренировки будет рассчитана как:

7 Результаты

Ссылка на код: https://github.com/Parsa33033/Deep-Reinforcement-Learning-DQN