Ubisoft La Forge – это открытый научно-исследовательский проект, объединяющий экспертов Ubisoft и ученых, которые стремятся сократить разрыв между академическими исследованиями и инновациями в видеоиграх. Будучи настоящими первопроходцами, исследователи изучают возможности применения передовых технологий, таких как искусственный интеллект, при разработке видеоигр, чтобы этот процесс был более эффективным, а сами игры становились все более реалистичными и интересными.
Достичь этих целей возможно с помощью глубокого обучения с подкреплением – вида машинного обучения, которое используется для поиска эффективного решения различных задач. Джошуа Ромофф, уроженец Монреаля и специалист по обработке данных в Ubisoft La Forge, занялся наукой из любви к видеоиграм и получил докторскую степень в области обработки данных. Мы поговорили с Джошуа о роли машинного обучения в создании сложных игровых миров и реалистичного поведения неигровых персонажей. В данный момент Джошуа исследует различные способы применения машинного обучения в разработке игр. В 2021 году он выступил на конференции "Искусственный интеллект в области интерактивных цифровых развлечений (AIIDE)", где рассказал о том, как его команда использует машинное обучение, чтобы изменить поведение неигровых персонажей.
Что такое глубокое обучение с подкреплением? В чем его суть?
Джошуа Ромофф: Для начала нужно объяснить пару терминов – "агент" и "действие". По сути, агент – это главный герой, взаимодействующий с миром, и в наших исследованиях эту роль играют боты. А действие – это то, как агент взаимодействует с миром. Мне нравится мысль о том, что игрок – это что-то вроде дополнения к геймпаду, и любое нажатие кнопки приводит к совершению какого-либо действия.
Обучение с подкреплением означает, что вы пытаетесь обучить систему определенному поведению, как в знаменитом эксперименте Павлова с собаками, когда ученый звонил в колокольчик перед тем, как покормить их, и животные начали ассоциировать звон колокольчика с наградой. Вы пытаетесь добиться определенной реакции с помощью метода поощрения и наказания. С агентом мы поступаем точно так же – даем ему очки за действия, которые нам нравятся, или отнимаем их за то, что нам не нравится. Я разрабатываю тесты и решаю, в каких случаях стоит дать или отнять награду, а задача ИИ – набрать при тестировании как можно больше очков, используя доступные ему действия.
Обучение называется глубоким, потому что так агент воспринимает окружающий его мир. По сути, это глубокая нейросеть. Экран – это сложное устройство, которое одновременно может отображать сотни тысяч пикселей. Так как же обработать все данные на этом экране? Глубокая нейросеть распознает экран, преобразует его во что-то более простое, анализирует данные, а затем использует их при обучении с подкреплением, совершая действия, основываясь на полученной информации. Мы называем это сквозной системой, потому что все элементы взаимосвязаны, и данные циркулируют между системами, взаимодействуя друг с другом. На каждом этапе мы присуждаем агенту очки в зависимости от его действий и их влияния на окружающую среду, а также вносим различные изменения, чтобы обучить агента определенным действиям.
Есть ли игры, которые особенно повлияли на ваше решение заняться машинным обучением?
Дж. Р.: Конечно. Мне всегда нравились игры с открытым миром, где можно путешествовать и взаимодействовать с неигровыми персонажами – такие, например, как Far Cry. Я всегда считал, что в основе таких игр лежит именно взаимодействие игроков с искусственным интеллектом, управляющим поведением неигровых персонажей. Вы взаимодействуете с миром игры, а эти персонажи представляют собой его неотъемлемую часть. Мне нравилось подшучивать над ними, и я постоянно пытался вызвать неполадки в поведении ИИ, понять, как я могу с ним взаимодействовать. Я наблюдал за поведением персонажей в разных ситуациях. Например, в бою я забирался на ближайшую гору и смотрел, как враг врезается в нее, потому что не знает, как залезть наверх. Я всегда думал о том, как обучить искусственный интеллект, чтобы поведение неигровых персонажей стало более реалистичным.
Как проходит ваш обычный день на работе?
Дж. Р.: Обычно я провожу эксперименты и пытаюсь научить то, что мы называем ИИ-агентом, совершать определенные действия в игре. Я наблюдаю за поведением ИИ во время эксперимента, изучаю диаграммы и графики и вношу в них изменения, чтобы уточнить результаты. Также в мои обязанности входит работа со студентами и аспирантами. Все наши студенты получают стипендии, и вместе с их научными руководителями мы подбираем им темы исследований. Работая над разнообразными проектами, студенты приобретают опыт и одновременно помогают нам в наших исследованиях. Не могу же я все делать один, правда? Как только у нас появляется рабочий прототип, мы помещаем его в "песочницу", которая представляет собой упрощенную версию игрового движка, и смотрим, чего нам удалось добиться. Если студенческий проект оказывается успешным, мы можем использовать его в разрабатываемых нами играх. Для студентов это возможность получить новый опыт, поэтому мы всегда работаем над проектами, результаты которых могут пригодиться командам разработчиков.
В своем выступлении на конференции AIIDE вы упоминали, как проводили испытания в играх вроде Hyper Scape, чтобы создать ботов, которые вели бы себя как другие игроки. Можете рассказать подробности?
Дж. Р.: Мы и вправду проводили испытания в Hyper Scape – но не на серверах с пользователями. Как оказалось, игра представляет собой неплохую песочницу, которая помогла отыскать ответы на наши вопросы. В Hyper Scape отличное трехмерное окружение. В нем не так-то просто ориентироваться и приходится часто перемещаться по вертикали. Для этого у игроков есть масса инструментов: например, батуты, которые подбрасывают вас прямо в воздух, и двойные прыжки. Так можно забираться на вершины строений. Все эти инструменты можно свободно объединять. Между тем разработчикам и тестировщикам было бы интересно узнать, до всех ли мест на карте могут добраться игроки.
Обычно в играх применяется так называемый NavMesh. Это своего рода двухмерная карта всех областей, по которым можно перемещаться. Именно по ней ориентируются боты, когда решают, куда пойти и как туда добраться. Но этот метод не годился для наших испытаний. Все дело в батутах и двойных прыжках, а также поверхностях, которые расположены друг над другом и далеко не всегда соединены рампами или лестницами. Вариантов движения так много, что и представить трудно. Тут-то на выручку и приходит глубокое обучение. Мы запускаем агента в цикл тренировки, и он постепенно учится добираться из пункта А в пункт Б с помощью правильных действий, причем самостоятельно, без NavMesh. Нашей первой задачей было научить агента пользоваться всеми вышеперечисленными инструментами. Ну а затем с его помощью протестировать карту и убедиться, что на ней нет таких мест, куда было бы невозможно попасть.
Как мы знаем, вы проводили испытания и в других играх, и нередко получали очень интересные результаты. Можете рассказать о них?
Дж. Р.: О да, тут надо упомянуть бота, которого мы обучали в игре For Honor. Мы хотели, чтобы он почаще оборонялся, так что выдавали ему за это дополнительную награду. Дело кончилось тем, что агент решил не заканчивать битву, а навечно засесть в глухой обороне. По правде говоря, это очень забавно. Одна из проблем, связанных обучением агентов, заключается в том, что в теории они рано или поздно научатся идеально выполнять любое действие, которое вы решите поощрять – и неважно, что это за действие и каковы условия. Если вы поощряете агента за то, что он выживает или защищается, он так и продолжит выживать и защищаться, потому что получает за это награду. Вы же не хотите, чтобы бот постоянно атаковал и убивал всех игроков, с которыми сталкивается, верно? Это попросту скучно. Поэтому вы подкрепляете и другие типы поведения, к примеру, оборону. Так действия бота становятся разнообразнее.
Есть и еще одна причина для небольших наград: они ускоряют сам процесс обучения. Казалось бы, поощряй в одном случае оборону, а в другом нападение – и дело в шляпе. Но есть подвох: нельзя заранее предугадать, как агент решит объединить эти привычки. Результат может вас повеселить. Вот еще один случай – с агентом, которого мы учили ориентироваться в Hyper Scape. Он должен был добраться из одной точки в другую так быстро, как только сможет. Однако мы не выдали ему способность ускоряться. И вот он самостоятельно "выяснил", что с помощью прыжков и легких поворотов камеры можно двигаться быстрее, чем спокойным шагом. Иными словами, он фактически научился распрыжке. Это было очень смешно. Оба этих примера я упоминал на AIIDE.
Приносят ли пользу такие результаты?
Дж. Р.: Зависит от того, какая цель перед нами стоит. Если цель – протестировать игру, как это было с нашими экспериментами, то подобные результаты очень полезны. Ты видишь, какое поведение избирает агент в той или иной ситуации. Оно неспроста проявляется в ходе обучения: так бот добивается своей цели. А это может указывать на некий недостаток в коде, о котором ты не подозревал. Самое время его исправить. Ну или, наоборот, ты будешь знать, что все работает как надо.
Скажите, повлияли ли как-нибудь консоли нового поколения, облачные сохранения и стриминговые сервисы на искусственный интеллект в играх? Открылись ли в этой сфере какие-нибудь новые возможности?
Дж. Р.: Разумеется. Исследования в области глубокого обучения начались еще в 80-х и 90-х годах. В то время ученые не могли многого себе позволить: вычислительные ресурсы были весьма ограничены. Если вы попытаетесь запустить модель глубокого обучения на какой-нибудь консоли из старых поколений, то у вас ничего не выйдет – картинка попросту зависнет. Но в какой-то момент вычислительная мощность домашних машин невероятно возросла, а затем выросло и качество аппаратного оборудования. Кроме того, сама область ИИ не стояла на месте: там успели провести огромное количество исследований. Все это вместе привело к тому, что мы разобрались с проблемами и теперь учим ботов ориентироваться на сложных трехмерных картах, по которым без двойных прыжков и перемещаться-то нельзя. Агент работает довольно быстро и гораздо больше похож на человека, чем любой бот, поведение которого жестко прописано в коде. Можно даже запустить в игру нескольких таких агентов, при том что они ежесекундно проводят крайне сложные вычисления. Все это – не какое-нибудь далекое будущее, которое настанет когда-нибудь потом, лет через десять. Нет, мы уже живем в мире исследований и технологий будущего. Они долго росли и постепенно доросли до сегодняшнего уровня.
Как думаете, найдется ли еще какое-нибудь применение этой технологии?
Дж. Р.: Самое очевидное – это, конечно, боты. Вот почему мы сосредоточились на них. Моя исследовательская группа даже называется "Умные боты". Как видите, мы их очень любим. Сейчас наши боты тестируют игры. Но я думаю, что если обучить агента ориентироваться в окружении и доработать, то его можно выставить против игрока – как полноценного противника с искусственным интеллектом.
Кроме того, обучение с подкреплением – это довольно-таки универсальная вещь, которой можно найти множество применений помимо ботов. К примеру, оно могло бы пригодиться в управлении серверами. Есть такая проблема, что порой серверы работают, а игроков на них почти нет. Или наоборот: игроков слишком много и запущенных серверов не хватает. В теории мы можем так обучить агента, чтобы он оптимизировал принятие решений. Вначале он бы наблюдал за количеством игроков в определенное время суток, а затем увеличивал бы или уменьшал число работающих серверов в зависимости от того, нужны они сейчас или нет.
Какие цели вы и ваша команда ставите себе в будущем?
Дж. Р.: По правде говоря, наша цель – постараться придать играм больше реализма, а поведению неигровых персонажей и ботов – больше человечности. Ну и, конечно, решить проблемы, которые до сегодняшнего дня решить было невозможно. Кроме того, мы хотели бы поделиться этой технологией с игровыми дизайнерами и создать с ее помощью инструменты, ориентированные на игрока. Обучение агентов пригодилось бы разработчикам. С его помощью они могли бы настраивать ботов и делать с ними все, что захотят. Это был бы большой прорыв – как я уже упоминал, наши тесты до сих пор не проводились в полноценных условиях работающей игры или на серверах с игроками. Думаю, наш следующий шаг – поделиться технологией с тестировщиками, чтобы те могли испытывать с ее помощью самые разные нюансы: от производительности до игровых механик.
__Как думаете, каковы могут быть последствия у применения в играх машинного обучения и искусственного интеллекта?
Дж. Р.: Так как мы используем эту технологию лишь для того, чтобы тестировать игры и не выпускаем ее к игрокам, то нет никаких причин волноваться, что у нас вдруг разыграется какой-нибудь негативный сценарий из тех, что обычно связывают с ИИ. Кто-то, быть может, обеспокоен тем, что ИИ начнет заменять живых тестировщиков – но это игровой сфере не грозит. Испытания, которые совершает бот, в корне отличаются от испытаний, которые должны проводить люди. Взаимодействие игрока и игры никуда не денется, а значит, нам все равно понадобятся люди, чтобы испытывать такие интересные элементы, как квесты и тому подобное.
Ну а если говорить о ботах с искусственным интеллектом в качестве противников, то тут, как я думаю, очень важно быть с игроком честным и обо всем его предупреждать. Думаю, люди боятся, что встретят такого бота и не смогут отличить его от человека. Да, это сложный вопрос. Вот почему я считаю, что мы должны раскрыть все карты заранее и не обманывать игроков. Думаю, есть как минимум одна важная причина вводить ИИ в игры. Все дело в том, что игры – это идеальная песочница. В ней можно смело испытывать любые идеи, а все неожиданные результаты так и останутся в виртуальном мире и никак не повлияют на реальный. Так что не стоит бояться, что мой бот из For Honor, который засел в глухой обороне, вдруг попытается захватить мир. Он может действовать только в игре – и то не очень-то удачно.
Чтобы узнать больше об искусственном интеллекте и глубоком обучении, а также своими глазами увидеть все, о чем рассказывал Джошуа, смотрите его речь на конференции AIIDE 2021. Самые свежие новости от разработчиков Ubisoft доступны на Ubisoft News hub.