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

Существует множество стандартных библиотек для контролируемого и неконтролируемого машинного обучения, таких как Scikit-learn, XGBoost или даже Tensorflow, которые помогут вам начать работу в кратчайшие сроки, и вы можете найти множество протоколов поддержки в Интернете. К сожалению, для обучения с подкреплением (RL) это не так.

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

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

Керас-РЛ

Я должен признать из всего списка, это мой любимый. Я считаю, что это самая простая для понимания реализация кода нескольких алгоритмов RL, включая Deep Q Learning (DQN), Double DQN, Deep Deterministic Policy Gradient (DDPG), Continuous DQN (CDQN или NAF), Cross-Entropy Method (CEM) , Dueling DQN) и SARSA. Когда я говорю самый простой для понимания код, я имею в виду не использование, а его настройку и использование в качестве строительного блока для вашего проекта *. Keras-RL github также содержит несколько примеров, которые вы можете использовать, чтобы начать работу в кратчайшие сроки. Конечно, он использует Keras, и вы можете использовать его вместе с Tensorflow или PyTorch.

К сожалению, Keras-RL уже давно не поддерживается, и его официальная документация не самая лучшая. Это дало свет вилке этого проекта под названием Керас-RL2.

(*) Для чего я использовал этот фреймворк? Что ж, я рада, что вы спросили - или это был я? Я использовал этот фреймворк для создания настраиваемого агента Tutored DQN, вы можете прочитать об этом здесь.

Керас-RL2

Keras-RL2 - это ответвление от Keras-RL, поэтому он поддерживает те же агенты, что и Keras-RL2, и легко настраивается. Большим изменением здесь является то, что Keras-RL2 лучше поддерживается и использует Tensorflow 2.1.0. К сожалению, для этой библиотеки нет документации, хотя документацию для Keras-RL можно легко использовать и для этого форка.

Базовые показатели OpenAI

OpenAI Baselines - это набор высококачественных реализаций алгоритмов RL от OpenAI, одной из ведущих компаний в области исследований и разработок искусственного интеллекта и, в частности, RL. Он был задуман для того, чтобы исследователи могли легко сравнивать свои алгоритмы RL, используя в качестве основы самые современные реализации OpenAI - отсюда и название. Фреймворк содержит реализации многих популярных агентов, таких как A2C, DDPG, DQN, PPO2 и TRPO.

С другой стороны, базовые уровни OpenAI плохо документированы, хотя в коде есть много полезных комментариев. Кроме того, поскольку он был разработан для использования в качестве основы, а не в качестве строительного блока, код не столь удобен, если вы хотите настроить или изменить некоторые агенты для своих проектов. Фактически, следующий фреймворк является его ответвлением и решает большинство этих проблем.

Стабильные базовые показатели

Stable Baselines - это ответвление OpenAI Baselines с серьезным структурным рефакторингом и очисткой кода. Изменения, перечисленные на официальном сайте документации, следующие:

  • Единая структура для всех алгоритмов
  • Совместимость с PEP8 (унифицированный стиль кода)
  • Документированные функции и классы
  • Больше тестов и больше покрытия кода
  • Дополнительные алгоритмы: SAC и TD3 (+ HER поддержка DQN, DDPG, SAC и TD3)

Я лично использовал Stable Baselines в прошлом и могу подтвердить, что он действительно хорошо документирован и прост в использовании. Можно даже обучить агента для сред OpenAI Gym с одним лайнером:

from stable_baselines import PPO2
model = PPO2('MlpPolicy', 'CartPole-v1').learn(10000)

Acme

Acme происходит от DeepMind, вероятно, самой известной компании, занимающейся RL в исследованиях. Таким образом, он был разработан для создания удобочитаемых, эффективных, ориентированных на исследования алгоритмов RL и содержит реализации нескольких современных агентов, таких как D4PG, DQN, R2D2, R2D3 и других. Acme использует Tensorflow в качестве бэкэнда, а также некоторые реализации агентов используют комбинацию JAX и Tensorflow.

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

Выводы

Все перечисленные здесь фреймворки - надежные варианты для любого проекта RL; выбор того, какой из них использовать, зависит от ваших предпочтений и того, что именно вы хотите с ним делать. Чтобы лучше представить каждую структуру, ее плюсы и минусы, я сделал следующее наглядное резюме:

Keras-RL - Github

Выбор алгоритмов RL: ☆☆☆
Документация: ☆☆☆
Настройка: ☆☆☆☆☆
Обслуживание: ☆
Серверная часть: Keras и Tensorflow 1.14.

Keras-RL2 - Github

Выбор алгоритмов RL: ☆☆☆
Документация: Недоступно
Настройка: ☆☆☆☆☆
Обслуживание: ☆☆☆
Серверная часть: Keras и Tensorflow 2.1.0.

Базовые показатели OpenAI - Github

Выбор алгоритмов RL: ☆☆☆
Документация: ☆☆
Настройка: ☆☆
Обслуживание: ☆☆☆
Backend: Tensorflow 1.14.

Стабильные базовые показатели - Github

Выбор алгоритмов RL: ☆☆☆☆
Документация: ☆☆☆☆☆
Настройка: ☆☆☆
Поддерживается: ☆☆☆☆☆
Серверная часть: Tensorflow 1.14.

Acme - Github

Выбор алгоритмов RL: ☆☆☆☆
Документация: ☆☆☆
Настройка: ☆☆☆☆
Обслуживание: ☆☆☆☆☆
Бэкэнд: Tensorflow v2 + и JAX

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



Если вы знаете о любом другом хорошем фреймворке RL, дайте мне знать в ответах ниже! Спасибо за прочтение! :)