Будущих учащихся на курсе "Unity Game Developer. Basic" приглашаем посетить открытый вебинар на тему "2d-платформер головоломка".


А пока делимся с вами переводом интересного материала.


Каждое лето AI@Unity набирает группу стажеров для работы над высокоэффективными технологиями, которые призваны продвигать нашу миссию на расширение возможностей разработчиков Unity с помощью инструментов и сервисов искусственного интеллекта и машинного обучения. Прошлое лето не было исключением, и команда AI@Unity была рада принять 24 талантливых стажёра. Эта серия посвящена семи стажерам исследователям и инженерам из команд ML-Agents и Game Simulation: Yanchao Sun, Scott Jordan, PSankalp Patro, Aryan Mann, Christina Guan, Emma Park и Chingiz Mardanov. Далее вы узнаете об их опыте и достижениях во время стажировки в Unity.

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

Семь стажеров, проекты которых рассматриваются в этой серии статей, входили в команды ML-Agents и Game Simulation.

  • Команда ML-Agents — это команда занимающаяся прикладными исследованиями, которая разрабатывает и поддерживает набор инструментов ML-Agents, проект с открытым исходным кодом. Набор инструментов ML-Agents позволяет играм и симуляторам на Unity служить обучающей средой для алгоритмов машинного обучения. Разработчики используют ML-Agents для обучения игрового ИИ или настройки поведения персонажей с помощью глубокого обучения с подкреплением (RL — deep reinforcement learning) или имитационного обучения (IL — imitation learning). Это позволяет избежать утомительности традиционных ручных методов и хардкода. Помимо документации на GitHub, вы можете узнать больше о ML-Agents в этом блогспоте и исследовательской статье.

  • Команда Game Simulation — это группа разработчиков программного продукта, миссия которой — дать возможность разработчикам игр тестировать и балансировать свою игру путем параллельного выполнения нескольких прогонов в облаке. Game Simulation был запущен в начале этого года, и вы можете узнать о нем больше, просмотрев исследования по этой теме, которые мы опубликовали вместе с нашими партнерами iLLOGIKA и Furyion.

По мере роста Unity растет и наша программа стажировок. В 2021 году размах программы стажировки AI@Unity увеличится до 28 позиций. Кроме того, мы нанимаем сотрудников в других местах, включая Орландо, Сан-Франциско, Копенгаген, Ванкувер и Вильнюс, на самые разные должности, от разработки программного обеспечения до исследований в области машинного обучения. Если вас интересует наша программа стажировки на 2021 год, вы можете оставить свою заявку здесь (советуем мониторить эту ссылку, так как в ближайшие недели мы опубликуем дополнительные вакансии стажировок). А теперь предлагаем вам насладиться множеством разнообразных проектов наших талантливых стажеров из набора лета 2020 года!

Yanchao Sun (ML-Agents): Трансферное обучение

В большинстве случаев behavior, обученный с помощью RL, будет хорошо работать в среде, в которой он был обучен, но в аналогичной, немного измененной среде будет выдавать ощутимые ошибки. В результате небольшой тюнинг динамики игры требует, чтобы мы отказались от предыдущего образа действий и обучили все с нуля. Летом 2020 года я разработал новый алгоритм трансферного обучения (Transfer Learning), специально адаптированный к инкрементному процессу разработки игр.

Проблема: Разработка игр инкрементна; RL - нет

Разработка игр происходит поэтапно — игра обычно начинается с простого прототипа и постепенно усложняется. Однако RL не является инкрементным, и обучение требует времени. Использование ML-Agents при разработке игр может оказаться очень затратным, поскольку разработчику может потребоваться несколько часов или даже дней, чтобы увидеть, как агент RL отреагирует на изменение. Хотя некоторые подходы могут сделать политику в процессе обучения более общей, например, рандомизация предметной области, они применимы только к вариациям игр, которые могут быть четко очерчены до обучения, и не могут адаптироваться к будущим произвольным эволюциям игры.

Решение: Разделение представления и прогнозирования

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

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

Чтобы протестировать наш метод (который будет доступен в будущих версиях ML-Agents), мы выбрали среды 3DBall и 3DBallHard из набора инструментов ML-Agents. Эти среды имеют одинаковую динамику, но разные пространства наблюдения. Мы также добавили дополнительный штраф на количество действий агента. Цель агента — уравновесить мяч с минимальными затратами энергии. Чтобы проверить изменение наблюдения, мы сначала обучили политику на основе модели 3DBall, а затем перенесли часть, отвечающую за моделирование, для обучения на 3DBallHard. По сравнению со стандартным алгоритмом Soft Actor-Critic и однозадачным обучением на основе модели, метод трансферного обучения получает наибольшее вознаграждение. Мы также оценили случай изменения динамики путем увеличения размера шара. Результаты показывают, что трансферное обучение превосходит однозадачные методы, и является более стабильным!

Scott Jordan (ML-Agents): Параметризация задач и активное обучение

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

Проблема: Функции вознаграждения нуждаются в тонкой настройке

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

Решение: Параметризация и разбиение задач

Чтобы избавиться от необходимости точно указывать правильную цель, мы используем параметризованное определение задачи целевой функции агента. В этой опции задача агента имеет некоторые параметры, которые можно определить или сэмплировать. Для примера из предыдущего абзаца, задача агента будет заключаться в перемещении в заданное местоположение, а скорость, с которой агент это делает, является параметром. Таким образом, вместо того, чтобы указывать одно поведение для обучения, разработчик вместо этого указывает диапазон поведений, например, чтобы агент двигался к целевому местоположению, но с различной скоростью. Затем, после обучения, параметры задачи можно настроить так, чтобы они наилучшим образом отражали желаемое поведение. Набор инструментов ML-Agents в настоящее время включает экземпляр агента Walker, задача которого — работать с переменной скоростью. Кроме того, мы также создали версию Puppo с переменной скоростью, которая сообщает ему, как быстро нужно бегать во время игры в fetch, и имеет параметр высоты головы, который обучает Puppo прыгать на задних лапах.

Параметризованные задачи полезны для изучения нескольких моделей поведения, но вопрос о том, какие параметризации мы должны использовать при обучении, нетривиален. Наивный подход заключается в использовании случайной выборки параметров, но он может быть неэффективным по ряду причин. Мы выбираем более разумную альтернативу — активное обучение (Da Silva и др., 2014). Активное обучение — это метод, позволяющий узнать, какие параметры следует использовать для обучения, чтобы максимизировать ожидаемое улучшение агента во время обучения. Это позволяет агенту определить все параметры задачи с меньшим количеством сэмплов. Ниже мы сравниваем активное обучение с равномерной случайной выборкой параметров для задачи из предыдущего примера Puppo с параметрами высоты головы и переменной скорости.


Узнать подробнее о курсе "Unity Game Developer. Basic".

Записаться на открытый урок "2d-платформер головоломка".