Если вы новичок в обучении с подкреплением и хотите его реализовать, то OpenAIGym - правильное место для начала.

Обучение с подкреплением

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

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

OpenAI Gym предоставляет действительно отличную среду для игр. Эти среды разделены на 7 категорий. Одна из категорий - Классический Контрольный, который содержит 5 сред. Я буду решать 3 среды. Я оставлю вам 2 окружения в качестве упражнения. Прочтите этот документ, чтобы узнать, как использовать тренажерный зал. Давай начнем.

Корзина

Об окружающей среде

Шест прикрепляется к тележке, которая движется по бесконтактной дорожке, с помощью незадействованного шарнира. Система управляется приложением к тележке силы +1 или -1. Маятник запускается вертикально, и цель состоит в том, чтобы не допустить его падения. Награда +1 предоставляется за каждый временной шаг, когда шест остается в вертикальном положении. Эпизод заканчивается, когда штанга отклоняется от вертикали более чем на 15 градусов или тележка перемещается более чем на 2,4 единицы от центра.

Пространство действия (дискретное)

  • 0 - Приложите 1 единицу силы в левом направлении к тележке.
  • 1 - Приложите 1 единицу силы в правильном направлении к тележке

Пространство состояний (непрерывное)

  • 0 - Позиция корзины
  • 1 - Скорость тележки
  • 2 - Угол полюса
  • 3 - Скорость полюса на кончике

В этой среде у нас есть дискретное пространство действий и непрерывное пространство состояний. Чтобы получить максимальное вознаграждение, агент должен балансировать полюс как можно дольше. Потому что он получает награду +1 за каждый временной шаг.

Решение проблемы окружающей среды

Я решаю эту проблему с помощью алгоритма DQN, который совместим и хорошо работает, когда у вас есть дискретное пространство действий и непрерывное пространство состояний.

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

Сетевая архитектура для Cart-Pole

Я приложил фрагмент моего алгоритма DQN, который показывает сетевую архитектуру и гиперпараметры, которые я использовал.

Входной размер сети должен быть равен количеству состояний. Выходной размер сети должен быть равен количеству действий, которые может выполнить агент. Если есть 2 возможных действия, сеть выдаст 2 балла. Эти 2 балла соответствуют 2 действиям, и мы выбираем действие, которое имеет наибольшее количество баллов.

У меня небольшой размер сети. Он состоит из 2 скрытых слоев размером 24 каждый с активацией relu. Задача балансировки полюса довольно проста, поэтому небольшая сеть вполне может ее решить.

Ниже приводится сюжет, показывающий награды за эпизод. Мне удалось разобраться в этой среде примерно за 80 эпизодов.

MountainCar-v0

Об окружающей среде

Автомобиль едет по одномерной трассе между двумя «горами». Цель - подъехать на гору справа; однако двигатель автомобиля недостаточно силен, чтобы взобраться на гору за один проход. Следовательно, единственный способ добиться успеха - это двигаться вперед и назад, чтобы набрать обороты.

Пространство действия (дискретное)

  • 0- Приложите 1 единицу силы в левом направлении к автомобилю.
  • 1- Ничего не делать
  • 2- Приложите к автомобилю 1 единицу силы в правильном направлении.

Пространство состояний (непрерывное)

  • 0- Положение автомобиля
  • 1- Скорость автомобиля

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

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

Я даю награду в зависимости от высоты, набранной на правой стороне холма. Чем на большую высоту поднимется автомобиль, тем больше награды он получит. Это побудит машину совершать такие действия, чтобы она могла взбираться все больше и больше. Я также даю одну бонусную награду, когда машина поднимается наверх. Положение цели 0,5, а положение впадины -0,4. Теперь мой код будет вам понятен.

Решение проблемы окружающей среды

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

Ниже приводится сюжет, показывающий награды за эпизод. Примерно через 10 серий машина начала достигать цели.

Маятник-v0

Об окружающей среде

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

Пространство действия (непрерывное)

  • 0- Крутящий момент, приложенный к маятнику, Диапазон: (-2, 2)

Пространство состояний (непрерывное)

  • 0- Угол маятника
  • 1- Маятниковая скорость

Функция вознаграждения по умолчанию зависит от угла маятника. Если маятник стоит вертикально, он принесет максимальную награду. Здесь нам не нужно изменять функцию вознаграждения по умолчанию.

Решение проблемы окружающей среды

Эта проблема немного отличается от двух вышеупомянутых. Пространство действий здесь непрерывно. Я использую алгоритм DDPG для решения этой проблемы. DDPG работает довольно хорошо, когда у нас есть непрерывное состояние и пространство состояний.

В DDPG есть две сети, которые называются «Актер» и «Критик». Значение выходного действия актер-сеть при заданных ему состояниях. Критическая сеть выводит значение Q (насколько хороша пара состояние-действие), заданную пару значений состояния и действия (произведено актором-сетью). Вы можете подробно прочитать о DDPG из источников, доступных в Интернете. Я также прикрепил ссылку в конце.

Ниже приводится сюжет, показывающий награды за эпизод. Мне удалось разобраться в этой среде примерно за 70 эпизодов.

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

Ресурсы

  • Это отличный вводный блог по обучению с подкреплением.
  • Я настоятельно рекомендую вам прочитать статью о DQN от Deepmind.
  • Вот бумага о DDPG.
  • Это очень полезный блог на DDPG.
  • Прочтите этот документ, чтобы узнать, как использовать тренажерный зал.
  • Ознакомьтесь с другими классными средами на OpenAIGym.
  • Ниже ссылка на мой репозиторий GitHub.


Связанные блоги