Решение OpenAI's Cartpole, Lunar Lander и Pong с помощью алгоритма REINFORCE.
Обучение с подкреплением, пожалуй, самая крутая ветвь искусственного интеллекта. Он уже доказал свое мастерство: поразить мир, победить чемпионов мира в шахматах, го и даже в DotA 2.
В этой статье я хотел бы пройти по довольно элементарному алгоритму и показать, как даже с его помощью можно достичь сверхчеловеческого уровня производительности в определенных играх.
Обучение с подкреплением связано с проектированием «агентов», которые взаимодействуют с «средой» и самостоятельно учатся «решать» среду посредством систематических испытаний. и ошибка. Средой может быть игра, такая как шахматы или гонки, или даже задача, такая как решение лабиринта или достижение цели. Агент - это бот, выполняющий действие.
Агент получает «вознаграждение», взаимодействуя с окружающей средой. Агент учится выполнять «действия», необходимые для максимизации вознаграждения, которое он получает от окружающей среды. Среда считается решенной, если агент накапливает некоторый заранее определенный порог вознаграждения. В этой лекции ботаников мы учим ботов играть в сверхчеловеческие шахматы или двуногих андроидов - ходить.
Алгоритм REINFORCE
REINFORCE принадлежит к особому классу алгоритмов обучения с подкреплением, который называется алгоритмами градиента политики. Простая реализация этого алгоритма будет включать создание политики: модели, которая принимает состояние в качестве входных данных и генерирует вероятность выполнения действия в качестве выходных данных. Политика - это, по сути, руководство или шпаргалка для агента, сообщающая ему, какие действия следует предпринять в каждом состоянии. Затем политика повторяется и слегка настраивается на каждом этапе, пока мы не получим политику, которая решает проблему со средой.
Политика обычно представляет собой нейронную сеть, которая принимает состояние в качестве входных данных и генерирует распределение вероятностей в пространстве действий в качестве выходных данных.

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

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

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

В соответствии с исходной реализацией алгоритма REINFORCE ожидаемое вознаграждение представляет собой сумму произведений журнала вероятностей и дисконтированных вознаграждений.
Шаги алгоритма
Шаги, связанные с внедрением REINFORCE, будут следующими:
- Инициализировать случайную политику (сеть, которая принимает состояние в качестве входных данных и возвращает вероятность действий)
- Используйте политику для прохождения N шагов игры - запись вероятностей действий - из политики, вознаграждения из среды, действия - выборка агентом
- Рассчитайте вознаграждение со скидкой для каждого шага методом обратного распространения ошибки
- Рассчитать ожидаемую сумму вознаграждения
- Отрегулируйте веса политики (ошибка обратного распространения в NN), чтобы увеличить G
- Повтор с 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
Плечи гигантов:
- Алгоритмы градиента политики (https://lilianweng.github.io/lil-log/2018/04/08/policy-gradient-algorithms.html)
- Получение REINFORCE (https://medium.com/@thechrisyoon/deriving-policy-gradients-and-implementing-reinforce-f887949bd63)
- Курс обучения с подкреплением от Udacity (https://github.com/udacity/deep-reinforcement-learning)
Об авторе
Я работаю в Dubai Holding, ОАЭ, специалистом по анализу данных. Вы можете связаться со мной по адресу [электронная почта защищена] или https://www.linkedin.com/in/kvsnoufal/
Вы также можете прочитать эту статью в нашем мобильном приложении.


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