Решение OpenAI's Cartpole, Lunar Lander и Pong с помощью алгоритма REINFORCE.

Обучение с подкреплением, пожалуй, самая крутая ветвь искусственного интеллекта. Он уже доказал свое мастерство: поразить мир, победить чемпионов мира в шахматах, го и даже в DotA 2.

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

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

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

Алгоритм REINFORCE

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

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

Политика: пример

Целью политики является максимальное увеличение «Ожидаемого вознаграждения».

Каждая политика генерирует вероятность выполнения действия на каждой станции среды.

Политика 1 против политики 2 - разные траектории

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

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

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

Дисконтированный коэффициент рассчитывается для каждого состояния путем обратного распространения вознаграждений.

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

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

Шаги алгоритма

Шаги, связанные с внедрением REINFORCE, будут следующими:

  1. Инициализировать случайную политику (сеть, которая принимает состояние в качестве входных данных и возвращает вероятность действий)
  2. Используйте политику для прохождения N шагов игры - запись вероятностей действий - из политики, вознаграждения из среды, действия - выборка агентом
  3. Рассчитайте вознаграждение со скидкой для каждого шага методом обратного распространения ошибки
  4. Рассчитать ожидаемую сумму вознаграждения
  5. Отрегулируйте веса политики (ошибка обратного распространения в NN), чтобы увеличить G
  6. Повтор с 2

Ознакомьтесь с реализацией с использованием Pytorch на моем Github.

Демо

Я протестировал алгоритм на Pong, CartPole и Lunar Lander. Тренироваться на Pong и Lunar Lander нужно бесконечно - более 96 часов тренировок на облачном графическом процессоре. Есть несколько обновлений этого алгоритма, которые могут ускорить его сходимость, но я здесь не обсуждал и не реализовывал. Ознакомьтесь с моделями «Критик-исполнитель» и «Проксимальная оптимизация политики», если хотите узнать больше.

CartPole

Состояние:

Горизонтальное положение, горизонтальная скорость, угол полюса, угловая скорость

Действия:

Толкайте тележку влево, толкайте тележку вправо

Произвольное воспроизведение правил:

Политика агента, прошедшая обучение в REINFORCE:

Лунный посадочный модуль

Состояние:

Состояние - это массив из 8 векторов. Я не уверен, что они представляют.

Действия:

0: ничего не делать

1: Пожар в левом двигателе

2: Пожарный двигатель

3: Пожарный правый двигатель

Политика агента, прошедшая обучение в REINFORCE:

Понг

Тренировать это было намного труднее. Тренировался на облачном сервере GPU в течение нескольких дней.

Состояние: изображение

Действия: переместите ракетку влево, переместите ракетку вправо.

Обучение с подкреплением значительно превзошло REINFORCE. Моя цель в этой статье состояла в том, чтобы 1. изучить основы обучения с подкреплением и 2. показать, насколько мощными могут быть даже такие простые методы в решении сложных проблем. Я бы с удовольствием опробовал их в некоторых прибыльных «играх», таких как торговля акциями… думаю, это святой Грааль для специалистов по анализу данных.

Репозиторий Github: https://github.com/kvsnoufal/reinforce

Плечи гигантов:

  1. Алгоритмы градиента политики (https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html)
  2. Получение REINFORCE (https://medium.com/@thechrisyoon/deriving-policy-gradients-and-implementing-reinforce-f887949bd63)
  3. Курс обучения с подкреплением от Udacity (https://github.com/udacity/deep-reinforcement-learning)

Об авторе

Я работаю в Dubai Holding, ОАЭ, специалистом по анализу данных. Вы можете связаться со мной по адресу [электронная почта защищена] или https://www.linkedin.com/in/kvsnoufal/

Вы также можете прочитать эту статью в нашем мобильном приложении.

Первоначально опубликовано на https://www.analyticsvidhya.com 24 ноября 2020 г.