Обзор того, как видеоигры A.I. со временем развивался и используется в играх сегодня

Авторы Лаура Э. Шуммон Маасс и Энди Люк

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

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

История А.И. в играх

А.И. это очень широкий термин. Это не обязательно должна быть модель, которая учится на действиях игрока. Wolfenstein 3D был выпущен еще в 1992 году, и даже солдаты в этой игре имели рудиментарную форму искусственного интеллекта. F алгоритм конечного автомата - это относительно простой искусственный интеллект. где дизайнеры создают список всех возможных событий, которые может испытать бот. Затем дизайнеры назначают конкретные реакции бота на каждую ситуацию (Lou, 2017). Можно представить, что в 1992 году разработчики Wolfenstein 3D рассмотрели все возможные ситуации, в которых может оказаться вражеский солдат. Дверь могла открываться в их поле зрения, Бласкович (герой серии Wolfenstein) мог войти в поле зрения, они могли получить выстрел со спины, они могли потерять из виду Бласковича и т. Д. Разработчики составили этот список и для каждой ситуации , они скажут боту, что он должен делать. Вот полезный наглядный пример из статьи Лу:

Это явно упрощенный пример. Мы можем представить, что чем больше деталей мы добавим, тем сложнее будет все. Как долго бот должен искать Бласковича, прежде чем сдаться? Когда / если они сдаются, должны ли они оставаться на месте или вернуться к месту своего появления? Список может быстро стать очень длинным и довольно подробным. В FSM разработчики, создающие игру, назначают каждой ситуации конкретное действие.

Алгоритм FSM не может быть использован во всех играх. Представьте, например, использование FSM в стратегической игре. Если бы бот был запрограммирован на то, чтобы каждый раз реагировать одинаково, игрок быстро научился бы перехитрить компьютер. Это создает повторяющийся игровой процесс, который, как и следовало ожидать, не доставит удовольствия игроку. Алгоритм M onte Carlo Search Tree (MCST) был создан для предотвращения аспекта повторяемости конечного автомата. Принцип работы MCST заключается в том, чтобы сначала визуализировать все возможные ходы, доступные боту в данный момент. Затем для каждого из этих возможных ходов он анализирует все ходы, которыми игрок может ответить, затем рассматривает все возможные ответные ходы, которые он может сделать в ответ, и т. Д. (Lou, 2017). Вы можете представить себе, как быстро это дерево станет огромным в размерах. Вот хорошая диаграмма, чтобы наглядно представить, как работает MCST:

На рисунке 2 показан процесс, через который проходит компьютер, использующий MCST, прежде чем предпринять шаги против человеческого компонента. Сначала он рассматривает все имеющиеся у него варианты, в приведенном выше примере это варианты защиты, создания технологий или атаки. Затем он строит дерево, которое предсказывает вероятность успеха для каждого последующего потенциального хода. Выше мы видим, что вариант с наибольшей вероятностью успеха - это «атака» (потому что темно-красный цвет означает более высокую вероятность вознаграждения), поэтому компьютер выбирает атаку. Когда игрок делает следующий ход, компьютер заново повторяет процесс построения дерева.

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

А.И. в Alien: Isolation

Одна из наиболее популярных форм продвинутого искусственного интеллекта. в последнее время в видеоиграх появился Alien из Alien: Isolation от Creative Assembly. Существуют некоторые недопонимания относительно того, как A.I. работает за кадром. Однако это замечательная демонстрация того, как А.И. могут быть использованы для создания привлекательной и непредсказуемой среды для игрока.

У пришельца в Alien: Isolation есть два управляющих ИИ. силы, контролирующие его движения и поведение: директор А.И. и Чужой А. Режиссер А. это пассивный контроллер, который отвечает за создание приятного игрового процесса. Для этого директор А.И. всегда знает, где находятся игрок и пришелец. Однако он не делится этими знаниями с инопланетянином. Режиссер А. следит за тем, что называется датчиком угрозы, который, по сути, является просто мерой ожидаемого уровня стресса игрока, определяемого множеством факторов, таких как близость пришельца к игроку, количество времени инопланетянин проводит рядом с игроком, количество времени, проведенное в поле зрения игрока, количество времени, проведенное видимым на устройстве отслеживания движения и т. д. Этот датчик угроз информирует системы работы инопланетянина , который по сути является просто трекером задач для пришельца. Если датчик угроз достигает определенного уровня, приоритет задачи «поиск новой зоны локации» будет расти, пока инопланетянин не уйдет от игрока в отдельную зону.

Поведенческие деревья принятия решений:

Прежде чем погрузиться в то, как Alien A.I. работает в действии, важно сначала выделить структуру, которая влияет на процесс принятия решений. Чужой А. использует обширное дерево поведенческих решений с более чем 100 узлами и 30 узлами выбора. Представьте себе простой пример ниже:

Дерево поведения работает путем задания вопросов слева направо. Успех позволяет продвигаться по дереву, в то время как неудача вернется к узлу последовательности. Вот процесс: Последовательность - ›Я голоден? (Успех) -› Последовательность (бег) - ›Есть ли у меня еда? (Успех) -› Последовательность (бег) - ›Вокруг нет врагов (успех) -› Последовательность (бег ) - ›Eat Food (успех) -› Последовательность (успех) - ›Родительский узел (Симпсон, 2014). Если в какой-то момент один из узлов вернет (сбой), вся последовательность потерпит неудачу. Например, если выяснилось, что «Есть ли у меня еда?» не удалось, он не проверяет, есть ли поблизости враги, и не ест пищу. Вместо этого последовательность потерпит неудачу, и это будет конец этой последовательности.

Очевидно, что последовательности могут становиться намного более сложными и многослойными по глубине. Вот более глубокий пример:

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

Итак, нам не удалось открыть дверь, но мы еще не сдались. У нашего родительского узла есть еще одна последовательность, которую мы можем попробовать. На этот раз вместо этого нужно войти через окно. Чужой А. имеет 30 различных узлов селектора и всего 100 узлов, поэтому он экспоненциально сложнее, чем этот пример, но я надеюсь, что это дает вам представление о том, как Alien A.I. работает под капотом.

Назад к Alien AI

Как известно, Alien A.I. это система, которая контролирует действия пришельца. Информация о местонахождении игрока никогда не предоставляется. Единственная информация, которую он получает от директора А.И. в какой области следует искать. Кроме того, он должен сам найти игрока. У него есть некоторые инструменты, которые помогут ему выследить игрока. Первая - это сенсорная система, которая позволяет инопланетянам улавливать звуковые и визуальные сигналы в окружающей среде. Шумы, такие как шаги, выстрелы, открытие дверей, даже звуковой сигнал трекера движения, все это помогает инопланетянам выследить игрока. Диапазон звука зависит от типа создаваемого шума. В дополнение к аудиодатчикам инопланетянин также может улавливать визуальные датчики, такие как мельком пробегающего мимо Рипли, или видение открытой двери и т. Д.

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

Наиболее часто обсуждаемая тема об Alien: Isolation - это то, как инопланетянин, кажется, узнает больше об игроке по мере прохождения игры. Действия, которые он производит, становятся более сложными, поскольку он изучает определенные особенности стиля игры игрока. Удивительно для некоторых, но способ, которым разработчики достигли этого, был не путем встраивания сложной нейронной сети в ИИ инопланетянина. система. Чтобы показать, как игра реализует это ощущение инопланетного обучения, нам нужно вернуться к дереву поведенческих решений Alien AI.

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

Генетические нейронные сети в видеоиграх

Эта статья была бы неполной, если бы мы не упомянули нейронные сети, применяемые в видеоиграх. Есть несколько очень известных недавних примеров, одним из которых является A.I. которые обыграли профессиональную команду по Dota 2. Однако лучший способ раскрыть эту тему - начать с малого и получить базовое представление о том, как нейронная сеть изучает цели и стратегии видеоигры.

Для этой основной цели мы будем использовать игру Snake. Для тех из вас, кто не знаком, Snake - это 2D-игра, в которой вы управляете линией квадратов (называемой змейкой). У вас есть три варианта движения: влево, вправо или прямо. Если вы ударились о стену или наткнулись на хвост, вы мгновенно умрете и перезапустите. Вы можете собрать точку (называемую едой), которая отрастет ваш хвост на один квадрат. Так что чем больше вы едите, тем дольше вы становитесь.

Представим, что мы хотим научить нашу змею набирать как можно больше очков. Чтобы наша змея выжила в этом мире, ей нужно научиться нескольким вещам. Чтобы наша змея научилась, ей необходимо предоставить информацию об окружающей среде. Мы будем ссылаться на эту информацию, которую мы предоставляем, как на входные данные. Эти входные данные могут быть чем угодно, о чем у нас есть информация. Например, нашими входными данными могут быть следующие 6 вопросов типа «да / нет»: ясно ли прямо, ясно ли слева, ясно ли справа, правильно ли еда, слева ли еда, правильно ли (Designing AI, 2017). Это предоставит 6 входных узлов с 1 или 0 в зависимости от ответа на каждый вопрос. Однако эти входные данные также могут быть мерой расстояния между головой змеи и стеной, или ее хвостом, или пищей. Для простоты остановимся на нашем примере с 6 входными узлами.

Следующее, что нам нужно сказать нашей змее, - это то, чего мы хотим от нее добиться. Чтобы сообщить о нашей желаемой цели, мы внедряем систему вознаграждений. Например, мы можем давать нашей змее 1 балл каждый раз, когда она движется на 1 шаг к еде, и, возможно, 10 баллов каждый раз, когда она ест еду и увеличивается в длину. Однако, когда Бинггезер (Designing AI, 2017) реализовал эти награды для своей змеи, он понял, что его змея будет двигаться только по очень маленькому кругу. Таким образом, его змея могла набирать очки, избегая опасностей, создаваемых стенами и длинным хвостом. Очевидно, это не был ожидаемый результат. В исходную модель необходимо было встроить какое-то наказание, которое удаляло очки всякий раз, когда змея удалялась от еды. Это побуждало змею двигаться в первую очередь в направлении еды.

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

Нейронная сеть поколений

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

В нашем примере со змеей у нас будет 6 входных узлов, которые представляют собой 6 вопросов типа «да / нет», которые мы определили ранее: ясно ли прямо, ясно ли слева, ясно ли справа, еда прямая, еда левая, еда правая. Каждый входной узел соединяется с каждым из первых узлов скрытого слоя через то, что мы называем весами. На рисунке 8 мы видим все линии (веса), соединяющие каждый из узлов. Эти веса - это то, что наша модель будет корректировать, когда узнает, какие входные данные следует усилить или ослабить, чтобы получить наиболее точные результаты. В нашем случае «наиболее точный результат» определяется как «змейка, которая набирает наибольшее количество очков». Помните, наша змея получает очки за движение к еде, она получает еще больше очков за поедание еды и получает отрицательные очки за отход от еды.

Способ «обучения» нейронной сети поколений заключается в том, чтобы сначала определить размер каждого поколения (допустим, мы хотим, чтобы каждое поколение содержало 200 змей). Затем он создает микроварианты веса для каждой из 200 змей в первом поколении, затем запускает каждую из 200 змей в первом поколении и выбирает наиболее успешных змей (змей, набравших наибольшее количество очков). Предположим, мы выбираем 10 лучших змей (5% лучших), набравших наибольшее количество баллов в нашем первом поколении. Эти 10 змей становятся «родителями» второго поколения. Вес этих 10 змей используется для определения отправной точки второго поколения. Второе поколение из 200 змей снова создаст микровариации этих весов, и лучшие исполнители будут выбраны в качестве «родителей» для третьего поколения и так далее.

Назад к Змеи

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

Может быть, в первом, втором и третьем поколениях ни одна из змей никогда не ела кусочка еды и, следовательно, никогда не узнала, что еда приносит 10 очков. Однако, возможно, в четвертом поколении одна змея съедает кусок пищи. Эта змея, вероятно, будет иметь наибольшее количество очков от своего поколения и, следовательно, будет выбрана, чтобы влиять на будущие поколения. Вес будущих поколений будет изменен в зависимости от наиболее успешных предков змей. Вы можете себе представить, сколько поколений будет происходить через 10, 100 или даже 1000 поколений.

Использование видеоигр A.I. в реальном мире

Тот же тип обучения с подкреплением, который используется в индустрии видеоигр, успешно применяется и в других отраслях. Например, игры Grand Theft Auto, в которых были заранее запрограммированы «правила дорожного движения, дороги и физика автомобиля» (Лузгин, 2018), использовались для обеспечения безопасной и реалистичной среды для тестирования алгоритмов беспилотных автомобилей. Это не только безопасно и реалистично, но и позволяет до 1000 раз быстрее собирать данные в виртуальной среде по сравнению с реальным миром (Лузгин, 2018).

«Видеоигры - отличный способ тренировки алгоритмов искусственного интеллекта, потому что они созданы, чтобы дать человеческому разуму возможность постепенно переходить к более сложным и сложным задачам». (Лузгин, 2018)

Одно из последних достижений А.И. в видеоиграх был разработан исследователями Open AI. Открытый ИИ создал игру, основанную на алгоритме, единственной целью которого было просто исследовать с чувством естественного любопытства. Система вознаграждений была сосредоточена на поощрении исследования за продвижение в игре. Исследователи поместили эту основанную на любопытстве модель в игру Super Mario Bros., и она успешно прошла 11 уровней из чистого любопытства. Очевидно, у этого есть и обратные стороны, так как это требует огромных вычислительных мощностей, и машину можно легко отвлечь. Однако то же самое будет и с человеком, играющим в игру впервые. Как цитирует Лузгин в своей статье, «младенцы, похоже, используют бесцельное исследование, чтобы овладеть навыками, которые пригодятся в дальнейшей жизни». Это чувство бесцельного исследования сохраняется на протяжении всей жизни, но наиболее очевидным примером является исследование виртуальных сред с помощью видеоигр.

Резюме

Есть много форм A.I. используется сегодня в индустрии видеоигр. Будь то упрощенная модель конечного автомата или расширенная нейронная сеть, обучающаяся на основе обратной связи в своей среде, возможности, которые эти виртуальные среды предоставляют для развития искусственного интеллекта. (как в игровой индустрии, так и за ее пределами) безграничны.

Процитированные работы

Бинггесер, Питер. Создание искусственного интеллекта: решение проблемы змеи с помощью эволюции. 2017. https://becominghuman.ai/designing-ai-solving-snake-with-evolution-f3dd6a9da867

Коми, Мауро. Как научить ИИ играть в игры: глубокое обучение с подкреплением. 2017. https://towardsdatascience.com/how-to-teach-an-ai-to-play-games-deep-reinforcement-learning-28f9b920440a

Лу, Харбинг. ИИ в видеоиграх: к более интеллектуальной игре. 2017. http://sitn.hms.harvard.edu/flash/2017/ai-video-games-toward-intelligent-game/

Лузгин, Роман. Видеоигры как идеальная площадка для искусственного интеллекта. 2018. https://towardsdatascience.com/video-games-as-a-perfect-playground-for-artificial-intelligence-3b4ebeea36ce

Симпсон, Крис. Деревья поведения для ИИ: как они работают. 2014. https://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php

Томпсон, Томми. Идеальный организм: ИИ пришельца: изоляция. 2017. https://www.gamasutra.com/blogs/TommyThompson/20171031/308027/The_Perfect_Organism_The_AI_of_Alien_Isolation.php