Моделирование персонажа с использованием имитационного обучения и физики игрового движка

Авторы: João Rodrigues, Rui Nóbrega

Источник: João Rodrigues Character Simulation Using Imitation Learning With Game Engine Physics / João Rodrigues, Rui Nóbrega // arXiv:2301.02123v1 [cs.GR] 5 Jan 2023

Аннотация — Создание визуальных 3D-персонажей, которые взаимодействуют с аналогами искусственного интеллекта и виртуальными средами, может оказаться сложной задачей для тех, у кого меньше опыта в использовании алгоритмов обучения или создании визуальных сред для выполнения моделирования на основе агентов. В этой статье использование игровых движков в качестве инструмента для создания и выполнения графических симуляций с 3D-сенсорными персонажами исследуется с помощью плагинов, таких как ML-агенты для игрового движка Unity3D. Это позволяет моделировать агентов с использованием готовых алгоритмов и использовать движок игрового движка для визуализации этих агентов. Мы изучаем использование этих инструментов для создания визуальных ботов для игр и учим их играть в игру, пока они не достигнут уровня, на котором смогут выступать в качестве противников для реальных игроков в интерактивных играх.

Ключевые слова: Взаимодействие, Игры, ML-Агенты, Имитация, Обучение

I. ВВЕДЕНИЕ

В играх всегда использовались интерактивные персонажи и неиграбельные персонажи (NPC), чтобы сделать игру более интересной, привлекательной и понятной. Моделирование агентов и персонажей со временем использовалось для самых разных целей [1], начиная от научных исследований, таких как прогнозирование распространения пандемий [2], и заканчивая досугом [3], в играх с участием NPC для придания большей интерактивности или усложнения игры.

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

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

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

Помимо использования игровых движков, за прошедшие годы было создано множество инструментов для облегчения создания и выполнения этих симуляций путем предоставления утилит, облегчающих тестирование и совместное использование различных алгоритмов машинного обучения, таких как OpenAI Gym [4] и PettingZoo [5]. Одним из инструментов, который представляет особый интерес при рассмотрении использования игровых движков, является плагин ML-Agents [3], поскольку он был создан специально для интеграции с игровым движком Unity3D и призван упростить создание и обучение игровых ботов.

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

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

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

II. ОСНОВНЫЕ ПОНЯТИЯ

Основное назначение игрового движка - создавать игры путем рендеринга графики, создания музыки и звуковых эффектов, а также обеспечения возможности внешних манипуляций со сценой путем считывания входных данных с устройства ввода. Обычно игровой движок состоит из Движка рендеринга, Движка анимации, Физического движка, Движка искусственного интеллекта, сетевого движка, Движка 3D-звука и Карты Редактор [6].

Хотя основным назначением игрового движка, как следует из его названия, является создание игр, его функции позволяют использовать его в большем количестве случаев, таких как анимация и симуляции. Движки рендеринга, анимации и физики могут облегчить создание анимации. С помощью этих движков можно просто выбрать сцену для анимации, закодировать предполагаемые движения, а затем просто воспроизвести результат, который будет соответствовать физике, без необходимости покадрово анимировать каждое движение и столкновение [6]. Как и анимация, эти инструменты можно использовать для создания симуляций.

Что делает использование игрового движка привлекательным для анимации и симуляции, так это то, что он позволяет пользователю просматривать эти творения без необходимости создавать низкоуровневый код для рендеринга и анимации сцены, поскольку игровой движок справляется с этим внутренне [7]. Что касается моделирования агентов, то больше всего интересует, как игровой движок позволяет манипулировать движением моделей агентов и как создать среду моделирования, в которой агенты будут играть, просто добавляя игровые объекты в сцену и манипулируя ее свойствами без необходимости в обширных строках кода, описывающих форму, физику и движение каждого объекта в симуляции. Вот некоторые из работ, выполненных при использовании игровых движков для симуляций [8]–[10].

A. Графическое моделирование агента

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

Для создания моделирования на основе агентов необходимо учитывать четыре элемента: набор агентов, набор взаимодействий, среду и инфраструктуру моделирования [12].

Самостоятельное обучение с подкреплением - это когда агенты учатся, исследуя и играя сами с собой. Он успешно применялся во многих игровых сценариях, однако процесс самостоятельного обучения нестабилен и более неэффективен с использованием выборки, чем общее обучение с подкреплением, особенно когда используется в играх с несовершенной информацией [13]. Мультиагентные автоматические учебные программы использовались для решения различных типов многопользовательских игр как в классических дискретных играх, таких как нарды [14] и шахматы [15], так и в непрерывных играх в реальном времени, таких как Dota и Starcraft. Наглядные примеры работ, выполненных с имитацией агентов и обучением самостоятельной игре с подкреплением с использованием визуальных сценариев, приведены на странице [13], [16]–[18].

B. Библиотеки моделирования агентов

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

Агенты машинного обучения Unity [3] (ML-Агенты) - это инструментарий, который позволяет играм и симуляциям служить средами для обучения интеллектуальных агентов. Эта библиотека предназначена специально для игрового движка Unity 3D и предоставляет самые современные реализации, которые позволяют разработчикам игр и исследователям легко обучать агентов для 2D, 3D и VR/AR игр. С помощью MLAgents агентов можно обучать, используя обучение с подкреплением, имитационное обучение, нейроэволюцию и некоторые другие методы с помощью предоставленного простого в использовании Python API.

III. МОДЕЛИРОВАНИЕ И ПРОЦЕСС ОБУЧЕНИЯ

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

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

После этого каждый бот подключается к интерфейсу ML-агентов, его поведение учитывает действия, которые он получает от системы, и наблюдения из среды, с которой он взаимодействует. Каждый бот отправляет набор переменных и значений, которые составляют наблюдение, и историю попаданий из трассировок лучей от бота в мир.

За пределами Unity3D библиотека ML-Агентов выполняется с использованием файла конфигурации, который определяет: идентификатор запуска, флаги и конкретный алгоритм обучения. Обучающие алгоритмы можно разделить на две категории: алгоритмы обучения с подкреплением и алгоритмы имитации. Для алгоритмов RL ML-Agents предлагает оптимизацию проксимальной политики (PPO) и мягкую критику актера (SAC) для сценариев с одним агентом, посмертное присвоение кредитов нескольким агентам (MA-POCA) для сценариев сотрудничества конкуренции нескольких агентов и самостоятельную игру, которая может использоваться в обеих ситуациях.

Блок-схема процесса демонстрационной записи
Рис. 1. Блок-схема процесса демонстрационной записи

Для алгоритмов имитации библиотека ML-агентов предлагает поведенческое клонирование и генеративное состязательное имитационное обучение (GAIL), которые используют демонстрационные записи для выполнения имитационного обучения. Эти алгоритмы могут использоваться вместе как лучший способ усилить имитационное обучение, а также могут использоваться с алгоритмами RL как способ учиться после демонстраций и использовать их только как базу для обучения. Теперь, когда был представлен общий взгляд на то, как ML-агенты могут использоваться для создания самообучающихся ботов в Unity3D, мы можем сосредоточиться на вопросе о том, как демонстрационные записи могут помочь ботам в обучении. Сначала давайте посмотрим, что именно представляют собой эти демонстрационные записи. С помощью пакета ML-Agents в unity можно подключить демонстрационный рекордер к агенту. При подключении этот рекордер сохранит структуру данных со всеми действиями, которые выполняли играющие люди, сопоставленную со всеми переменными, и попаданиями трассировки лучей, предоставленными в качестве наблюдений в каждой точке действия. Это формирует демонстрацию для имитационного обучения, потому что агенты могут затем использовать эти структуры данных, чтобы решить, какие действия предпринять, путем сравнения своих наблюдений с наблюдениями, представленными в демонстрационном файле, и увидеть, какое из них выглядит наиболее похожим, и выполнить действие, предпринятое с этим наблюдением в демонстрации. Это означает, что для создания демонстрационных материалов, которые можно использовать для обучения, мы можем попросить пользователей-людей разыграть сценарии и выполнить задания, которые послужат источником вдохновения для ботов. Это возможно, потому что интерфейс ML-Агентов допускает эвристическую функцию, которая может быть использована для создания человеческих элементов управления ботами.

Идея этого заключается в том, что для более сложных сценариев, изучение которых ботами занимает очень много времени, и что настройка файла конфигурации становится сложнее, мы можем воспользоваться преимуществами этих демонстраций, чтобы ускорить процесс и быстрее создавать пригодных для использования ботов. Для этого сначала нам нужно создать игру, предназначенную как для агентов, так и для пользователей. Нам также нужно определить наблюдения и награды, которые получает агент. Если в этой игре участвуют несколько агентов одновременно, она должна поддерживать мультиплеер, чтобы несколько пользователей могли играть в нее одновременно. После того, как все это сделано, мы продолжаем приглашать пользователей поиграть в игру для записи демонстраций. Чем больше пользователей и чем больше времени, тем лучше. После сбора всех демонстраций можно приступать к обучению ботов. Затем конечный результат работы ботов может быть проанализирован, и если он по-прежнему не соответствует ожиданиям, процесс можно повторить, чтобы собрать больше демонстраций с возможностью использования текущих ботов в качестве противников для пользователей. Блок-схему этого процесса можно увидеть на рисунке 1.

Сцена захвата флага
Рис. 2. Сцена захвата флага, в которой игроки должны захватить вражеский флаг и перенести его на свое поле

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

В этой игре 2 команды (синяя команда и Белая команда) соревнуются в попытке захватить вражеский флаг и пронести его обратно на поле своей команды. Каждая итерация захвата флага и переноса его на поле команд в тренировочных целях считается раундом. В дополнение к этому, поле огорожено несколькими стенами, создающими препятствия для игроков, и мячами, которые игроки могут ловить и бросать, пытаясь попасть в других игроков.

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

IV. РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТА

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

Скриншот игры
Рис. 3. Скриншот игры, на котором показаны все сетевые объекты

По этим первоначальным результатам можно было видеть, что боты становились лучше по мере использования большего количества демонстраций. Время, необходимое для прохождения каждого раунда игры, сократилось в среднем с 517 секунд при обучении ботов с использованием 1 демо-версии до 165 секунд при использовании 10 демо-версий.

Количество ничьих (когда ни одна из команд не может победить по истечении 1000 секунд) также снижается по мере использования большего количества демонстраций, при этом соотношение составляет 20% игр, сыгранных с 1 демонстрацией, и только 7% игр, сыгранных с 10 демонстрациями.

Во время сессий записи было отмечено, что команда, играющая на левой стороне поля (Синяя команда), выиграла в целом 68,9% всех сыгранных раундов, выиграв больше раундов во всех трех игровых сессиях. Это доминирование также перешло к ботам, и их сила возросла по мере использования большего количества демонстраций.

Когда для обучения ботов использовалась только 1 демонстрация, синяя команда выиграла 57% игр, имея небольшое превосходство, но когда для обучения ботов были использованы 10 демонстраций, синяя команда выиграла 81%, имея огромное превосходство, даже большее, чем у синей команды.

Оглядываясь назад на время проведения каждого раунда, мы проанализировали, насколько быстро каждая из команд завершила игру в своих победных раундах. Вопреки ожиданиям, на свои победы у Белой команды было в среднем 50 секунд, и они смогли закончить игру на 50 секунд быстрее, чем у Синей команды, у которой среднее время на победы составляло 100 секунд. Первое объяснение этого события заключается в том, что белая команда способна победить только при идеальных обстоятельствах, в то время как синяя команда может найти способы победить, даже если игра затянется немного дольше.

V. ЗАКЛЮЧЕНИЕ И ВЫВОДЫ

В этой статье мы представляем метод создания самообучающихся ботов игрового движка в Unity3D, которые используют алгоритмы имитации. Этот метод был достигнут с помощью описанного плагина ML-Agents. Затем мы сосредоточились на гипотезе о том, что имитационные методы обучения с использованием демонстрационных записей могут быть хорошим способом создания ботов для игр со сложной средой. Для этого мы создали игру capture the flag 3 против 3, и несколько пользователей-людей одновременно записывали демонстрации.

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

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

БЛАГОДАРНОСТИ

Эта работа была поддержана NOVA.ID.FCT/NOVA LINCS (UIDB/04516/2020).

СПИСОК ИСТОЧНИКОВ

  1. К. Макал и М. Норт, "Агентно-ориентированное моделирование", 12 декабря 2009г.
  2. К. М. Халил, М. Абдель-Азиз, Т. Т. Назми и А.-Б. М. Салем, Моделирование пандемического гриппа на основе агентов в Египте. Berlin, Heidelberg: Springer Berlin Heidelberg, 2012, pp. 205--218. [Онлайн]. Доступно: https://doi.org/10.1007/978-3-642-25755-1_11
  3. А. Джулиани, В.-П. Берджес, Э. Тенг, А. Коэн, Дж. Харпер, К. Элион, К. Гой, Ю. Гао, Х. Генри, М. Маттар и Д. Ланге, "Unity: общая платформа для интеллектуальных агентов", 9 2018. [Онлайн]. Доступно: http://arxiv.org/abs/1809.02627
  4. Г. Брокман, В. Чунг, Л. Петтерссон, Дж. Шнайдер, Дж. Шульман, Дж. Танг и В. Заремба, "Openai gym", 6 декабря 2016 г. [Онлайн]. Доступно: http://arxiv.org/abs/1606.01540
  5. Дж. К. Терри, Б. Блэк, Н. Граммел, М. Джаякумар, А. Хари, Р. Салливан, Л. Сантос, Р. Перес, К. Хорш, К. Диффендаль, Н. Л. Уильямс, Ю. Локеш и П. Рави, "Pettingzoo: тренажерный зал для обучения с многоагентным подкреплением", 35-я конференция по системам обработки нейронной информации, 9 декабря 2020 года. [Онлайн]. Доступно: http://arxiv.org/abs/2009.14471
  6. С. С. Но, С. Д. Хонг и Дж. У. Парк, "Использование техники игрового движка для создания развлекательного 3D-контента", в 16-й Международной конференции по искусственной реальности и телес-существованию-семинары (ICAT'06), 2006, стр. 246-251.
  7. А. Бак и М. Войцеховская, "Использование игрового движка в процессе производства анимации", стр. 209-220, 2020.
  8. К. Бартнек, М. Соуси, К. Флере и Э. Б. Сандовал, "Движок робота - как заставить игровой движок unity 3d работать для hri", 24-й Международный симпозиум IEEE по взаимодействию роботов и человека, 2015.
  9. М. Пастернак, Н. Кахани, М. Багерзаде, Дж. Дингел и Дж. Р. Корди, "Simgen: инструмент для создания симуляций и визуализаций встроенных систем на игровом движке unity", в MODELS 2018, сер. МОДЕЛИ '18. Нью-Йорк, Нью-Йорк, США: Ассоциация вычислительной техники, 2018, стр. 42-46.
  10. А. Карлос, А. Мол, К. Александр, Ф. Хорхе и П. М. Куто, "Использование игрового движка для моделирования виртуальной реальности при планировании эвакуации", IEEE Computer Society, 2008.
  11. Ф. Клагл и А. Л. С. Баззан, "Агентно-ориентированное моделирование", Журнал AI, том 33, № 3, стр. 29, сентябрь 2012.
  12. Ф. Клагль, М. Фелер и Р. Херрлер, "О роли окружающей среды в многоагентном моделировании", том 3374. Springer Verlag, 2005, pp. 127--149.
  13. Г. Брокман, В. Чунг, Л. Петтерссон, Дж. Шнайдер, Дж. Шульман, Дж. Танг и В. Заремба, "Openai gym", 2016. [Онлайн]. Доступно: https://arxiv.org/abs/1606.01540
  14. Г. Тесауро, "Изучение временных различий и td-окорок", Коммун. ACM, том 38, № 3, стр. 58-68, март 1995 г.
  15. Д. Сильвер, Т. Хьюберт, Дж. Шритвизер, И. Антоноглу, М. Лай, А. Гез, Л. Ланкто, Л. Сифре, Д. Кумаран, Т. Грэпел, Т. П. Лилликрап, К. Симонян и Д. Хассабис, "Овладение шахматами и сеги путем самостоятельной игры с общим алгоритмом обучения с подкреплением", КоРР, том abs / 1712.01815, 2017.
  16. Дж. Янг, А. Накхайи, Д. Иселе, К. Фудзимура и Х. Чжа, "Cm3: совместное многоцелевое многоступенчатое обучение с подкреплением несколькими агентами", ICLR 2020, 2020.
  17. OpenAI, "Пятый Опенай", https://blog.openai.com/openai-five/, 2018.
  18. О. Виньялс, И. Бабушкин, Дж. Чанг, М. Матье, М. Ядерберг и В. Чарнецки, "Alphastar: Освоение стратегической игры starcraft ii в реальном времени". [Онлайн]. Доступно: https://www.deepmind.com/blog/alphastar-mastering-the-real-time-strategy-game-starcraft-ii