Автор: Майкл Луо, Свен Мика

TL; DR; До сих пор RLlib поддерживал модели: бесплатное обучение с подкреплением, эволюционные алгоритмы и алгоритмы планирования. В этом сообщении блога мы описываем успешное расширение RLlib до нового класса алгоритмов: «основанный на RL (MBRL)». Прочитав этот пост в блоге, вы узнаете, как работает MBRL, как проводить эксперименты с MBRL в различных средах и как мы использовали новый API распределенного выполнения RLlib для разработки этих новых алгоритмов.

В частности, мы сосредоточимся на следующих новых алгоритмах MBRL в RLlib:

  • MBMPO (оптимизация метаполитики на основе моделей) - алгоритм MBRL в стиле Dyna, который учится на поддельных данных, сгенерированных из ансамбля динамических моделей.
  • Dreamer - алгоритм MBRL на основе градиента, который учится, воображая траектории в будущее.

Кроме того, для каждого из этих алгоритмов мы представляем результаты и простые потоки данных из нового API распределенного выполнения для представления сложных алгоритмов на основе моделей.

Почему обучение с подкреплением на основе моделей?

Обычно для обучения агентов RL требуются миллионы, если не миллиарды, образцов из окружающей среды, чтобы достичь производительности человеческого уровня. Например, OpenAI Five смоделировал 900-летний опыт игры с использованием алгоритма PPO, прежде чем агент смог победить лучших игроков мира. Сделать это в реальных условиях (без симулятора) нереально, например, робот может страдать от износа и вызывать несчастные случаи, прежде чем научится правильному поведению. Следовательно, агенты RL должны быть более эффективными с точки зрения выборки. Здесь появляется RL на основе моделей: вместо обучения сети политик агента с использованием реальных образцов среды мы используем только эти образцы для обучения отдельной модели - контролируемым образом - которая может прогнозировать поведение среды, а затем используем этот переход. динамическая модель »для генерации (фальшивых) образцов для изучения политики агента.

Мы продемонстрируем, как мы разработали (используя новый API распределенного выполнения RLlib), а затем протестировали два новых агента на основе моделей на RLlib: один алгоритм в стиле Dyna, Оптимизация метаполитики на основе модели (MB-MPO) » и один алгоритм на основе градиента: Мечтатель. Наши результаты сопоставимы с результатами из оригинальных статей и их можно найти в репозитории RL Experiments. Мы проводили эксперименты на Mujoco и Deepmind Control Suite, которые являются средами непрерывного контроля.

Установка Ray / RLlib

RLlib является частью Ray, библиотеки Python для распределенных вычислений. Он доступен как пакет PyPI и может быть установлен следующим образом:

pip install ray[rllib]

Кроме того, вы должны установить либо TensorFlow, либо PyTorch вместе с указанным выше. Другие способы установки Ray перечислены здесь.

MB-MPO: алгоритм MBRL в стиле Dyna

Рисунок 1. Общая схема алгоритмов MB на основе Dyna. Есть три компонента: 1) агент, который действует в реальной среде и обучается на основе данных, созданных моделью, 2) среда, которая отправляет реальные образцы в модель, и 3) модель, которая обучается на данных реальной среды и генерирует поддельные данные для агента.

Алгоритмы в стиле Dyna, такие как MB-MPO, чередуются между выборкой из реальной среды и выборкой из прокси-среды, которая обычно представлена ​​как аппроксиматор функции для реальной среды, как показано на рис. 1. .

Примером алгоритма в стиле Dyna является оптимизация метаполитики на основе моделей (MB-MPO).

Рисунок 2: Архитектура MB-MPO

Концептуальный обзор

MB-MPO использует ансамбль моделей динамики перехода (TD) для изучения реальных образцов окружающей среды. По сути, MB-MPO - это алгоритм метаобучения, который рассматривает каждую TD-модель (и ее эмулируемую среду) как отдельную задачу. Цель MB-MPO - мета-изучение политики, которая может работать и хорошо адаптироваться ко всему ансамблю.

В принципе, MB-MPO накладывается на MAML, алгоритм метаобучения на основе градиента, и использует ту же функцию потерь. Затем рабочие-лучи рассматриваются как отдельные задачи и выбирают одну (всегда одну и ту же) динамическую модель из ансамбля для генерации поддельных данных.

Таким образом, главный рабочий (водитель):

  • Собирает образцы из реальной среды, добавляя образцы в буфер воспроизведения.
  • Совместно тренирует ансамбль TD (используя указанный выше буфер воспроизведения).
  • Агрегирует поддельные данные от рабочих для выполнения шага мета-обновления в графе вычислений MAML, обучая сеть метаполитики.

Пока рабочие:

  • Соберите предадаптационные поддельные образцы из их динамической модели.
  • Выполните внутреннюю адаптацию
  • Соберите фальшивые образцы постадаптации из их динамической модели.

Алгоритм: распределенный план выполнения

Недавнее введение нового API распределенного выполнения RLlib позволяет делать разнообразные обобщения для различных алгоритмов RL, включая MB-MPO. Это важно, поскольку алгоритмы на основе метаобучения и моделей демонстрируют более сложные потоки данных, чем типичный алгоритм RL без моделей. API достаточно гибок, чтобы позволить нам писать любой алгоритм на высоком уровне и при этом выполнять его распределенным образом с помощью Ray.

Рис. 3. Алгоритм MBPO

Каждая итерация в алгоритме MBPO представляет собой интервал между обучением динамического ансамбля. Для каждой итерации агенты проходят несколько итераций MAML. Чтобы еще больше усложнить поток данных, каждая итерация MAML производит выборку данных для предварительной и постадаптации.

Несмотря на сложность описанного выше алгоритма MBMPO, план выполнения можно кратко выразить в четырех строках кода.

Чтобы смоделировать алгоритм MB-MPO, который включает в себя несколько итераций MAML, мы разбиваем алгоритм на два класса / метода генераторов.

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

Метод transform действует как очередь для данных, подлежащих агрегированию, и по завершении возвращает накопленные данные до и после адаптации.

Волшебство происходит во втором классе генератора MetaUpdate, который берет образцы до и после адаптации из inner_adaptation_steps и применяет мета-обновление к графу вычислений политики. MetaUpdate - это мета-обновление для MAML, отслеживающее количество итераций MAML.

Метод combine ожидает возврата MetaUpdate (после N итераций MAML) и возвращает статистику регистрации.

Полученные результаты

Мы оцениваем MB-MPO RLlib по сравнению с реализацией оригинальной статьи в средах MuJoCo Halfcheetah и Hopper, используя горизонт эпизода в 200 временных шагов и выполняя 100 тысяч временных шагов. Все описанные ниже эксперименты проводились на одном компьютере с графическим процессором Titan X с 32 ядрами (ЦП).

Таблица 1: тесты MuJoCo для MB-MPO

Показаны журналы Tensorboard. Регистрируется дополнительная статистика: MAMLIter$i$_DynaTrajInner$j$ соответствует производительности агента по всем моделям динамики во время итерации i MAML и внутренней адаптации j.

Рисунок 4: производительность MB-MPO для MuJoCo

Запуск MB-MPO с RLlib

MB-MPO в настоящее время поддерживает большинство сред MuJoCo. Мы предоставляем читателю пример команды, чтобы опробовать ее:

rllib train -f tuned_examples/mbmpo/halfcheetah-mbmpo.yaml

Чтобы запустить MB-MPO в вашей собственной среде, мы приводим два примера здесь и здесь.

Важным ограничением алгоритма является то, что фактическая функция вознаграждения (python) def reward(self, obs, action, next_obs) должна быть указана в классе среды.

Наш следующий алгоритм, Dreamer, не имеет этого ограничения на среду. Давайте взглянем.

Мечтатель: обучение MBRL на основе градиентов в скрытых пространствах

Рисунок 5. Алгоритмы MBRL на основе градиентов обучаются путем развертывания траекторий с помощью модели динамики и политики. Это позволяет дифференцировать направление цели RL (максимизировать вознаграждение).

Подобно алгоритмам в стиле Dyna, алгоритмы MBRL на основе градиентов собирают данные из реальной среды для обучения модели динамики перехода (TD). Ключевое отличие заключается в том, что алгоритмы Dyna рассматривают каждое наблюдение как независимые входные данные, тогда как методы на основе градиента вычисляют (фальшивые) траектории из каждого наблюдения, что приводит к прямой дифференциации цели RL, запутывая необходимость аппроксимировать цель RL с помощью градиентов политики.

Рис. 6. Визуализация траекторий мечтателя (поддельные); Верхняя строка соответствует моделированию в реальных условиях (слева: Уокер, справа: HalfCheetah), средняя строка соответствует прогнозам TD-модели, а нижняя строка показывает разницу между ними. Приведенные выше изображения автоматически сохраняются в Tensorboard (как гифки).

Концептуальный обзор

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

Рисунок x: динамика обучения (слева), обучающийся субъект и критик (в центре), взаимодействие с окружающей средой (справа)

Модель динамики: Dreamer использует PlaNET, частично стохастическую рекуррентную модель динамики. Как и любая динамическая модель, PlaNET принимает изображение o_t, предыдущее действие a_{t-1} и выводит скрытое состояние s_t , reward r_t .

PlaNET состоит из четырех компонентов:

  • Кодировщик - преобразует изображение o_t в скрытое состояние s_t, представляет p(s_t|o_t)
  • Декодер - преобразует скрытое состояние s_t обратно в изображение o_t, представляет p(o_t|s_t)
  • Переход (предыдущий) - переход в предыдущее состояние s_{t-1} и действие a_{t-1} и прогнозирование следующего состояния s_t, представляет p(s_t|s_{t-1}, a_{t-1})
  • Представление (заднее) - принимает в предыдущем состоянии s_{t-1} действие a_{t-1}, а также текущее изображение o_t , чтобы предсказать следующее состояние s_t, представляет p(s_t|s_{t-1}, a_{t-1}, o_t)

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

Актер: Актер принимает скрытые состояния, генерируемые динамической моделью PlaNET. Для каждого скрытого состояния Dreamer учится, представляя траектории горизонта h, развертывая динамическую модель и актера. Поскольку траектория развертывается с помощью дифференцируемой нейронной сети, функция потерь для Актера получается путем развертывания динамической модели и действующего лица. Поскольку траектория разворачивается через дифференцируемую нейронную сеть, функция потерь для Актера выполняется посредством дифференцирования направления целевого значения!

Мы опускаем вывод целевого значения, так как это вариант Обобщенной оценки преимущества.

Критик: Критик берет воображаемые состояния у актера и вычисляет простую потерю L2:

Алгоритм: распределенный план выполнения

Рисунок 7. Алгоритм мечтателя

На первый взгляд алгоритм Dreamer сложен. Тем не менее, динамическое обучение и обучение поведению на рисунке xx можно переместить в политику Tensorflow или Torch и график потерь. Благодаря этому псевдокод исполнения может быть эффективно сокращен до:

Короче говоря, агент в цикле развертывает эпизод и обучает его n итерациям. Преобразовать этот алгоритм в распределенный план выполнения просто. План выполнения Dreamer автоматически обрабатывает коллекцию эпизодов в ParallelRollouts, итераторе, который возвращает недавно собранный эпизод. Обработка буфера воспроизведения и обучение агента выполняется в DreamerIteration, показанном ниже.

Полученные результаты

Dreamer сравнивается с реализацией оригинальной статьи с использованием Deepmind Control Suite, однократного запуска и измерения после 100 тыс. И 1 млн временных шагов. Описанные ниже эксперименты проводились на одном компьютере с графическим процессором Titan X с 32 ядрами (ЦП).

Таблица 2: эталонный тест Deepmind Control Suite на беге Walker-Walk и Cheetah-Run

Журналы тензорборда показаны ниже.

Рисунок 8: производительность Dreamer для Deepmind Control Suite

Запуск Dreamer с RLlib

В настоящее время Dreamer поддерживает все среды Deepmind Control Suite.

rllib train -f tuned_examples/dreamer/dreamer-deepmind-control.yaml

Заключение

Вот и все! Короче говоря, мы представили RLlib-алгоритмы на основе моделей. Мы доказали, что структура RLlib может быть обобщена для различных типов алгоритмов MBRL, включая алгоритмы Dyna-style (MB-MPO) и градиентные алгоритмы (Dreamer).

Конечно, это лишь небольшая часть функций, которые предлагает RLlib, которые варьируются от мультиагентного обучения, мотивации внутреннего любопытства до функционального RL! Если вы хотите увидеть больше возможностей, ознакомьтесь с нашим полным списком примеров.

Если вы успешно использовали RLlib или вам нужна помощь в понимании его API, обратитесь через Discourse или Slack - мы будем рады услышать от вас. Если вы хотите узнать, как RLlib используется в промышленности, посетите Ray Summit.