Автор Хина Сакадзаки

Хина Саказаки, инженер-программист, Dialogflow NLU в Google, представляет: «Адаптация исследований машинного обучения, чтобы сделать обучение ИИ интересным для игр»

Женщины, которые кодируют, подкаст 43 | SpotifyiTunesGoogleYouTubeТекст

Хина Саказаки, инженер-программист, Dialogflow NLU, Google, рассказывает об адаптации исследований машинного обучения, чтобы сделать обучение ИИ для игр увлекательным. Наслаждаться!

Я начал программировать, когда учился в средней школе, если считать HTML на neoPAT и других платформах. Серьёзно программировать начал в колледже, после того как поиграл в игру под названием Portal. В 2015 году я окончил Калифорнийский университет в Беркли по специальности «Компьютерные науки и экономика». Вскоре после этого я присоединился к компании Zynga, занимающейся мобильными играми. Я работал над такими играми, как Words With Friends и Donna Titans. Я присоединился к YouTube Test and Safety в качестве инженера полного цикла в 2018 году. Затем я присоединился к Google Research в качестве пятого инженера, работающего над проектом Synthetic Players Project, о котором я собираюсь рассказать сегодня. Мы смогли завершить проект в июле 2021 года. В настоящее время я работаю над пониманием естественного языка и над командой качества ИИ в Google Cloud Dialogflow, где я создаю диалоговых агентов.

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

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

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

Мы внедрили модель актер-ученик, которая разделяет ИИ на две части: актера, который играет в игру, и ученика, который выясняет, как играть в игру. Актер, играющий в игру, управляет ИИ. Он принимает входные данные из игры и генерирует выходные данные для игры. Затем наш актор заменяется на клиентской машине как SDK. SDK — это комплект для разработки программного обеспечения, который разработчики игр интегрируют в свою игру, чтобы делиться своим игровым состоянием и передавать действия от ИИ в свою игру. Он общается с нашим сервисом, учащимся. Обучение ИИ происходит в учащемся, где игровые данные обрабатываются с помощью интенсивных математических вычислений для изучения поведения. Мы поместили нашего ученика в облако, которое можно было масштабировать до нескольких специализированных экономичных машин, скрытых от разработчиков игр. Актер обновляет модель на устройстве, чтобы сделать ее лучше, или пробует что-то новое, постоянно собирая и отправляя данные, чтобы учиться на игровом процессе, происходящем в режиме реального времени. Это называется паттерном актер-ученик, это проверенная и хорошо известная архитектура в прикладном машинном обучении.

Архитектура актер-ученик позволяет нашим ученикам обучать модели на игровых данных. Мы предоставляем данные об игре через игровой API с указанием первых наблюдений. Это игровые состояния, которые игрок видит в любой момент времени. Затем есть действия, которые являются логическими взаимодействиями, которые может выполнять игрок, например, ходьба или прыжки. Награды — это числовые значения, которые сообщают ИИ, насколько хорошо он работает, например, «получил три очка» или «потерял два очка».

Обучение с подкреплением, когда ИИ учится играть в игру автономно с помощью сигналов вознаграждения и штрафа, было методом обучения ИИ играть в игры. RL — это в основном то, как люди играют в игры или делают что-то еще. Мы взаимодействуем с окружающей средой, получаем обратную связь и продолжаем экспериментировать. Основная проблема с RL для наших требований заключалась в том, что алгоритмы RL требуют порядков величин, больше данных, чем наши разработчики могут предоставить, а также имеют непредсказуемые результаты. Еще одна нетривиальная проблема заключается в том, что формирование или определение наград и наказаний довольно сложно сделать правильно даже для эксперта по машинному обучению. Плохая награда или наказание могут легко сбить ИИ с толку при обучении.

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

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

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

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

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

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