Проксимальная оптимизация по политике

Посмотреть кодЧитать статью
Openai Baselines Ppo

Иллюстрация: Бен Барри (Ben Barry)

Мы выпускаем новый класс алгоритмов обучения с подкреплением — проксимальную оптимизацию по политике (Proximal Policy Optimization, PPO), которые демонстрируют результаты, сравнимые с современными подходами или превосходящие их, при этом значительно проще в реализации и настройке. PPO стал алгоритмом обучения с подкреплением по умолчанию в OpenAI благодаря своей простоте использования и высокой эффективности.

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

Исследователи стремились устранить эти недостатки с помощью таких подходов, как TRPO и ACER, путем ограничения или иной оптимизации размера обновления политики. У этих методов есть свои компромиссы: ACER гораздо сложнее, чем PPO, так как требует добавления кода для внеполитических (off-policy) коррекций и буфера воспроизведения, при этом показывая лишь незначительное превосходство над PPO на бенчмарке Atari; TRPO, хотя и полезен для задач непрерывного управления, плохо совместим с алгоритмами, которые разделяют параметры между политикой и функцией ценности или вспомогательными потерями, подобно тем, что используются для решения задач в Atari и других областях со значительным визуальным входом.

PPO

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

Мы ранее описывали вариант PPO, в котором используется адаптивный KL-штраф для контроля изменения политики на каждой итерации. Новый вариант использует новую целевую функцию, которая обычно не встречается в других алгоритмах:

LCLIP (θ)=E^t[min (rt (θ))A^t, clip (rt (θ),1−ε,1+ε)A^t)]L^{CLIP}(\theta) = \hat{E}_{t}[ min (r_t (\theta))\hat{A}_t, clip (r_t (\theta), 1 — \varepsilon, 1 + \varepsilon) \hat{A}_t) ]
  • θ \theta  — параметр политики
  • E^t \hat{E}_{t} обозначает эмпирическое математическое ожидание по шагам времени
  • rt r_t  — отношение вероятностей при новой и старой политиках соответственно
  • A^t \hat{A}_t  — оценка функции преимущества в момент времени t t
  • ε \varepsilon  — гиперпараметр, обычно равный 0,1 или 0,2

Эта целевая функция реализует способ выполнения обновления в доверительной области (Trust Region), совместимый со стохастическим градиентным спуском, и упрощает алгоритм за счет удаления KL-штрафа и необходимости выполнения адаптивных обновлений. В тестах этот алгоритм продемонстрировал наилучшую производительность в задачах непрерывного управления и практически сравнялся с производительностью ACER на Atari, несмотря на то, что он гораздо проще в реализации.

Управляемые, сложные роботы

Мы создали интерактивных агентов на основе политик, обученных с помощью PPO: мы можем использовать клавиатуру, чтобы задавать новые целевые положения для робота в среде Roboschool; хотя последовательности ввода отличаются от тех, на которых обучался агент, он успешно генерализует полученные навыки.

Базовые алгоритмы (Baselines): PPO, PPO2, ACER и TRPO

Этот выпуск baselines включает масштабируемые параллельные реализации PPO и TRPO, которые используют MPI для передачи данных. Обе используют Python 3 и TensorFlow. Мы также добавляем предварительно обученные версии политик, использовавшихся для обучения вышеупомянутых роботов, в репозиторий агентовRoboschool.

Обновление: Мы также выпускаем реализацию PPO с поддержкой GPU под названием PPO2. Она работает примерно в 3 раза быстрее текущего базового алгоритма PPO на игре Atari. Кроме того, мы выпускаем реализацию алгоритма Actor Critic с буфером опыта (ACER — Actor Critic with Experience Replay), являющегося эффективным по выборкам алгоритмом градиента политики. ACER использует буфер воспроизведения, что позволяет ему выполнять более одного градиентного обновления с использованием каждого фрагмента опробованного опыта, а также аппроксимацию Q-функции, обученную с помощью алгоритма Retrace.

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

Авторы

Джон Шульман (John Schulman), Олег Климов, Филип Вольский (Filip Wolski), Прафулла Даривал (Prafulla Dhariwal), Алек Рэдфорд (Alec Radford)

Полный текст статьи читайте на OpenAI