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

К сожалению, кажется, что нет огромного сообщества, активно использующего Universe. Я не знаю, связано ли это с конкретной темой RL или проблемами, возникающими при работе с Universe из-за его специфической архитектуры, как упоминалось, например. от Алекс Николь:

… самая большая проблема с Universe заключается в том, что VNC и Flash должны работать в режиме реального времени. Это означает, что любые сбои на вашей тренировочной машине […] могут внезапно изменить частоту кадров, с которой ваш ИИ испытывает свою виртуальную среду.

Поэтому я искал решения проблем с производительностью, с которыми я сталкивался при запуске более сложных сред в Universe, и наткнулся на µniverse. µniverse разработан Алексом Николом, также известным как unixpickle, и предоставляет среду для обучения агентов RL для игр HTML5, что должно улучшить общую производительность и сложность среды обучения и разработки агентов RL.

1 | Установка

Установка µniverse довольно проста и задокументирована на странице µniverse Github.
Unixpickle также разработал µniverse-agent, который предоставляет готовые к использованию агенты на основе популярных концепций, таких как PPO, TRPO, A3C.
Доступные параметры можно просмотреть, введя следующие команды:

Параметры, специфичные для алгоритма, можно найти, набрав

2 | Обучение агента

Я выбрал Doodle Jump в качестве первой игры для обучения агентов A3C, но вы можете выбирать из всех игр, предоставляемых µniverse. Их можно найти в папке игр µniverse. Именование чем-то похоже на соглашения об именах, используемые в OpenAI’s Gym.
Чтобы начать процесс обучения, можно использовать следующую команду:

muniverse-agent a3c -env DoodleJump-v0 -out doodlejump >> log_doodle.txt 2>&1

Первый и второй параметры говорят сами за себя.

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

В конце команды >> log_doodle.text 2>&1 перенаправляет вывод агента µniverse в файл журнала, который мы будем использовать для анализа производительности в следующей статье.

3 | Наблюдение за агентом

Во время обучения вы могли заглянуть в папку универсального агента, чтобы найти какую-то визуализацию текущего состояния агента. Один из способов получить представление о производительности агента — взглянуть на файл журнала, созданный на предыдущем шаге. Другой способ — визуализировать взаимодействие агента с окружающей средой. В нашем случае геймплей Doodle Jump.

Это можно просто сделать, остановив обучение и добавив флаг -record <PATH_TO_RECORDING_FOLDER>. Перезапуск агента создаст пару сотен изображений, содержащих «скриншоты» игрового процесса агента.

4 | Следующие шаги

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

Если вам понравился этот пост, нажмите👏, чтобы его могли прочитать и другие. Подпишитесь на меня в Твиттере @8B_EC, чтобы быть в курсе последних обновлений или просто поздороваться :)