Facebook AI представила MiniHack — песочницу для обучения ИИ-агентов с подкреплением

Обучение с подкреплением (Reinforcement Learning, RL) в последние годы стало одним из главных инструментов для решения задач последовательного принятия решений. Прогресс в этой области почти полностью держится на симуляционных бенчмарках — но именно с ними и возникла проблема. Классические тестовые среды быстро «насыщаются»: исследователи придумывают алгоритмы, которые почти идеально справляются с задачами, и становится всё труднее понять, какие именно способности агента проверяет тот или иной сложный и насыщенный по содержанию бенчмарк.

Дополнительная сложность в том, что большинство таких тестовых стендов представляют собой целые готовые игры. Это плохо подходит для проверки конкретных навыков RL-агента — например, способности к исследованию среды, работе с памятью или правильному распределению «заслуг» между действиями, приведшими к результату (credit assignment).

Решение на основе NetHack

Чтобы закрыть этот пробел, команда Facebook AI разработала MiniHack — фреймворк для создания сред обучения и набор готовых задач на основе NetHack, одной из самых сложных игр в мире. Инструмент избавляет разработчиков от необходимости с нуля собирать насыщенные и запутанные окружения под конкретную исследовательскую задачу в глубоком RL: с MiniHack можно быстро собрать целый набор сценариев, нацеленных на конкретные проблемы и бросающих вызов современным методам обучения с подкреплением.

MiniHack опирается на NetHack Learning Environment (NLE) и открывает разработчикам сред доступ ко всему богатству контента этой игры. В распоряжении инженеров оказывается свыше 500 видов монстров и 450 предметов — оружие, жезлы, инструменты, магические книги, — каждый со своими уникальными свойствами и сложной динамикой взаимодействия со средой. Благодаря этому специалисты по RL могут выйти за рамки простых задач навигации по сетке с ограниченным набором действий и перейти к более комплексным задачам приобретения навыков и решения проблем.

Как это работает

В основе MiniHack лежат те же файлы описания подземелий, что используются в самом NetHack. Они написаны на человекочитаемом предметно-ориентированном языке (DSL), похожем на вероятностное программирование. Буквально несколькими строками кода пользователь может задать всё: расположение и типы существ, ловушки, предметы, геометрию уровня — и при этом заложить в среду элемент непредсказуемости, который проверяет способность агента к обобщению.

Тот же DSL позволяет легко «недоопределять» отдельные параметры среды и подключать процедуры случайной генерации: уровень, на котором оказывается агент, может меняться при каждом сбросе среды и начале нового эпизода. Именно на этой процедурной генерации контента строится проверка способности RL-агентов обобщать полученный опыт на ранее неизвестные ситуации — а значит, и разрабатывать более устойчивых агентов общего назначения.

Гибкая настройка сред

Среды MiniHack построены на популярном интерфейсе Gym и полностью настраиваются. Пользователь сам выбирает, какие наблюдения получает агент — на основе пикселей, символьные или текстовые — и какими действиями он может пользоваться. Отдельно предусмотрен простой интерфейс для задания собственной функции вознаграждения, которая направляет обучение агента.

Авторы уже собрали на базе MiniHack набор RL-задач для проверки ключевых навыков агентов — его можно использовать как самостоятельный бенчмарк или как строительные блоки для создания новых сценариев. Кроме того, фреймворк позволяет свести в одном месте уже существующие сеточные (grid-based) бенчмарки и усложнить их за счёт новых сущностей, элементов среды и рандомизации — благодаря гибкости и насыщенности MiniHack.

Команда публикует набор базовых решений (baselines) с использованием фреймворков TorchBeast и RLlib, чтобы разработчикам было проще начать работу с MiniHack. Также на примере недавно предложенного метода PAIRED авторы показывают, как с помощью MiniHack можно строить среды в режиме без учителя (unsupervised).

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

Источник: MarkTechPost.