Релиз ML-Agents v2.0: Теперь поддерживается обучение сложному совместному поведению

MARWAN MATTAR / UNITY TECHNOLOGIESContributor
May 5, 2021|15 Мин
Релиз ML-Agents v2.0: Теперь поддерживается обучение сложному совместному поведению
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Около года назад мы объявили о выпуске пакета ML-Agents v1.0 Unity, который был проверен для выпуска редактора 2020.2. Сегодня мы рады объявить о выходе версии 2.0 пакета ML-Agents Unity, который в настоящее время находится на стадии проверки для выпуска редактора 2021.2. За прошедший год мы внесли более пятнадцати ключевых обновлений в проект ML-Agents на GitHub, включая улучшения в работе пользователей, новые алгоритмы и функции обучения, а также значительное увеличение производительности. В этой статье мы расскажем о трех основных событиях: Возможность обучать совместное поведение, позволять агентам наблюдать за различными объектами в окружающей среде и использовать параметризацию задач для поддержки обучения нескольким задачам. Совокупность этих достижений приближает ML-агенты к полноценной поддержке сложных совместных сред.

В нашей записи в блоге, посвященной окончанию года 2020, мы кратко описали весь прогресс, достигнутый с момента выпуска версии 1.0 в мае 2020 по декабрь того же года. Мы также рассказали о трех основных алгоритмических улучшениях, на которых мы планировали сосредоточиться в первой половине 2021 года: Кооперативное поведение нескольких агентов, способность агента наблюдать за разным количеством сущностей и создавать одну модель для решения нескольких задач. Теперь мы можем с гордостью сказать, что все три основных улучшения доступны в ML-Agents.

В дополнение к этим трем функциям мы внесли следующие изменения в основной пакет ML-Agents:

Добавили ряд возможностей, которые ранее были частью наших сопутствующих расширений . Пакет Unity - компонент Grid Sensors и игровые поля Match-3.

Улучшенное распределение памяти во время вывода. В некоторых демонстрационных сценах мы наблюдали снижение до 98%.

Удаление устаревших API и сокращение объема API. Эти изменения в API привели к необходимости обновления версии с 1.x до 2.0. Более подробную информацию об удобном обновлении см. в разделе "Примечания к выпуску" и "Руководство по миграции".

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

Обучение совместному поведению

Во многих средах, например в многопользовательских играх, таких как Among Us, игрокам приходится сотрудничать, чтобы решить поставленные задачи. Хотя раньше можно было обучать ML-агентов с несколькими агентами в сцене, до выпуска 15 (март 2020 года) вы не могли определять конкретные группы агентов с общими целями. ML-Agents теперь явно поддерживает обучение кооперативному поведению. Таким образом, группы агентов могут работать над достижением общей цели, а успех каждого из них будет зависеть от успеха всей группы.

В таких сценариях агенты обычно получают вознаграждение группой. Таким образом, если команда агентов выигрывает игру у команды соперников, вознаграждение получают все, даже те агенты, которые не внесли непосредственного вклада в эту победу, что затрудняет самостоятельное обучение. Именно поэтому мы разработали новый мультиагентный тренер (получивший название MA-POCA от Multi-Agent POsthumous Credit Assignment; полный текст статьи в arXiv будет опубликован в ближайшее время) для обучения централизованного критика - нейронной сети, которая выступает в роли "тренера" для всей группы агентов.

Благодаря этому дополнению вы сможете продолжать поощрять всю команду в целом, но при этом агенты будут учиться тому, как наилучшим образом внести свой вклад в общие достижения. Агенты могут даже получать индивидуальные награды, чтобы не терять мотивацию и помогать друг другу в достижении целей. Во время эпизода вы можете добавлять или удалять агентов из группы, например, когда агенты появляются или умирают в игре. Если агенты будут удалены в середине эпизода, они все равно смогут понять, способствовали ли их действия победе команды в дальнейшем. Это дает им возможность ставить группу на первое место в своих действиях, даже если в итоге они выведут себя из игры путем самопожертвования или принятия других игровых решений. Сочетая MA-POCA с самостоятельной игрой, вы также можете обучать команды агентов играть друг против друга.

Кроме того, мы разработали две новые среды для образцов: Cooperative Push Block and Dungeon Escape. Блок Cooperative Push Block демонстрирует задание, для выполнения которого требуется несколько агентов. В видеоролике ниже представлен Dungeon Escape, в котором один из агентов должен убить дракона, заставив его удалиться в середине эпизода, чтобы его товарищи по команде смогли подобрать ключ и выбраться из подземелья.

Ознакомьтесь с нашей документацией, чтобы узнать, как внедрить кооперативные агенты в ваш проект.

Наблюдение за разным количеством сущностей

Одной из наиболее часто запрашиваемых функций для инструментария была возможность сделать реакцию игровых персонажей на различное количество сущностей. В видеоиграх персонажи часто учатся справляться с несколькими врагами или предметами одновременно. Чтобы удовлетворить этот спрос, в выпуске 15 (март 2020 года) появилась возможность задавать массив наблюдений произвольной длины, называемый "буфером наблюдений". Агенты могут научиться использовать буфер произвольного размера с помощью модуля внимания, который кодирует и обрабатывает различное количество наблюдений.

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

Более того, агенты могут узнать о важности объектов на основе их связей с другими объектами в сцене. Например, если агенты должны научиться сортировать плитки в порядке возрастания, они смогут определить, какая плитка является следующей правильной, основываясь на информации обо всех остальных плитках. Эта новая среда, получившая название Sorter, теперь доступна в составе наших примеров окружений, которые вы можете загрузить и использовать для начала работы.

Ознакомьтесь с нашей документацией, чтобы узнать, как внедрить наблюдения переменной длины в ваш проект.

Параметризация задачи: Одна модель для всех

Персонажи видеоигр часто сталкиваются с несколькими задачами в разных игровых режимах. Один из способов решить эту проблему - обучать несколько моделей поведения по отдельности, а затем менять их местами. Однако предпочтительнее обучать одну модель, которая может выполнять несколько задач одновременно. В конце концов, единая модель уменьшает объем памяти в конечной игре и, как следствие, сокращает общее время обучения, поскольку модель может повторно использовать некоторые части нейронной сети в нескольких задачах. Для этого в последней версии(Release 17) мы добавили возможность для одной модели кодировать несколько моделей поведения с помощью HyperNetworks.

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

В следующем видеоролике показано, как агент одновременно решает две задачи, представленные в примерах ML-Agents(WallJump и PushBlock). Если нижний цвет зеленый, агент должен переместить блок в зеленую зону. Но если правый верхний квадрат зеленый, агент должен перепрыгнуть через стену на зеленый квадрат.

О том, как реализовать параметризацию задачи с помощью сигналов цели в вашем проекте, читайте в нашей документации.

Функции, продвигаемые из пакета расширений
Датчики сетки
ML-агенты под названием Grid Sensor

В ноябре 2020 года мы писали о том, что Eidos разработала новый тип сенсоров в ML-Agents под названием Grid Sensor. В то время эта реализация Grid Sensor была добавлена в наш пакет расширений, после чего мы продолжили работу над ней и продвинули ее в последний выпуск основного пакета ML-Agents.

Матч-3

В выпуске 10 (ноябрь 2020 года) ML-Agents мы представили новую среду Match-3 и добавили в пакет расширений утилиты для обучения играм Match-3. С тех пор мы сотрудничаем с Code Monkey и выпустили обучающее видео. Подобно Grid Sensors, мы сделали наши утилиты для обучения играм Match-3 частью основного пакета ML-Agents в нашем последнем выпуске.

Улучшение производительности

Наша цель - продолжать совершенствовать ML-агенты. Получив ваши отзывы об объемах памяти, выделяемой при выводе, мы незамедлительно произвели значительное сокращение объема выделяемой памяти. В таблице ниже приведено сравнение показателей сборки мусора (килобайты на шаг Академии) в двух наших примерах сцен между версиями 1.0 (выпущенной в мае 2020 года) и 2.0 (выпущенной в апреле 2021 года). Эти показатели не учитывают память, используемую Barracuda (движок Unity Inference Engine, на который опирается ML-Agents для кроссплатформенных выводов):

сравнение показателей сборки мусора в двух наших примерах между версиями 1.0 и 2.0
ML-Agents Cloud: Обновление

В нашей статье в блоге v1.0 мы впервые рассказали некоторые подробности о ML-Agents Cloud. Наш облачный сервис ML-Agents Cloud позволяет запускать несколько учебных сессий, параллельно работающих в нашей облачной инфраструктуре, чтобы вы могли своевременно завершить эксперименты. Сегодня основные функции ML-Agents Cloud позволяют вам:

Загрузите сборки игр с реализованными ML-агентами (C#).

Запуск, пауза, возобновление и остановка учебных экспериментов. Вы можете запускать несколько экспериментов одновременно и использовать высокопроизводительные машины для одновременного запуска множества экземпляров Unity для каждого учебного эксперимента - и все это с более быстрым временем завершения.

Загрузите результаты нескольких экспериментов по обучению.

В течение всего 2021 года мы планируем ускорить разработку ML-Agents Cloud, основываясь на отзывах клиентов Alpha. Дополнительные функции будут направлены на визуализацию результатов, управление экспериментами через веб-интерфейс и настройку гиперпараметров. На самом деле, мы и сегодня принимаем кандидатов на участие в программе Alpha. Если вы хотите записаться, пожалуйста, зарегистрируйтесь здесь.

Что будет дальше?

В этом посте мы описали три основных улучшения, которые приближают ML-агенты к поддержке сложных кооперативных игр. Мы продемонстрировали каждое из этих трех улучшений в отдельности, а также обсудили примеры окружений, недавно добавленные в инструментарий. Что мы еще не показали, так это еще одно предстоящее окружение для демонстрации под названием Dodgeball. Dodgeball - это игра в формате "команда против команды", которая наглядно демонстрирует, как все три функции работают вместе. Агенты должны рассуждать в сложных условиях, чтобы решать многочисленные задачи, сотрудничать с товарищами по команде и наблюдать за различными объектами в сцене. Мы планируем выпустить эту среду в ближайшие недели, а также выпустить еще одну специальную статью в блоге. А пока посмотрите, как наши агенты тренируются играть в доджбол.

Спасибо.

От имени всей команды Unity ML-Agents мы хотим поблагодарить вас за то, что вы присоединились к нам на этом пути и постоянно поддерживали нас на протяжении многих лет.

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

Наконец, мы будем рады услышать ваши отзывы! Для получения обратной связи по инструментарию Unity ML-Agents, пожалуйста, заполните следующий опросник или напишите нам по адресу ml-agents@unity3d.com. Если у вас возникнут какие-либо проблемы, не стесняйтесь обращаться к нам на странице проблем ML-Agents на GitHub. Любые другие общие комментарии или вопросы, пожалуйста, сообщайте нам на форумах Unity ML-Agents.