Машинное обучение в игре AI

В старые времена игр, я уверен, что простые утверждения переключателя / регистра (в некотором смысле) вполне бы подходили для большинства игр "ИИ". Однако по мере того, как игры становятся все более сложными, особенно при 3-м прыжке, требуются более сложные алгоритмы. Мой вопрос заключается в том, используются ли в настоящее время в игровом ИИ алгоритмы машинного обучения (например, обучение с подкреплением)? Или это все еще в основном только в исследовательских проектах в университетах (с которыми я сталкивался)?

Если не настоящие алгоритмы машинного обучения, то чем движет передовой ИИ коммерческой игры? Это просто очень сложные, но статические (не ML) алгоритмы, которые способны охватить большую часть возможностей? И если да, то какие именно типы алгоритмов используются?

Мне всегда было интересно, спасибо!

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

13 ответов

Решение

РЕДАКТИРОВАТЬ: Обратите внимание, что этому ответу уже более полувека - машинное обучение достигло большого прогресса за это время, и вполне вероятно, что то, что используется в играх, также изменилось. Оригинальный ответ следует.

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

Если не настоящие алгоритмы машинного обучения, то чем движет передовой ИИ коммерческой игры? Это просто очень сложные, но статические (не ML) алгоритмы, которые способны охватить большую часть возможностей?

На самом деле возможностей обычно очень мало. Как уже упоминалось в другом ответе, обычно работает конечный автомат. например. Типичный враг в стреляющей игре может находиться в одном из следующих состояний: бездействующий, бдительный (они знают, что рядом есть проблема), охота (они ищут врага), атака (они могут видеть врага и атаковать его), и убегают (они пытаются убежать от врага). Переходы между состояниями могут быть простыми событиями, такими как слышимый шум, видимый противник, значение здоровья, опускающееся ниже определенного порога, и т. Д. Действительно, очень тривиально.

Реализация каждого состояния обычно может быть разложена на небольшое количество простых действий, например. перемещаться в положение, смотреть в направлении, стрелять в цель и т. д. Эти действия низкого уровня хорошо документированы и широко используются. (Например, A* поиск для поиска пути, векторная математика для управления и ориентации.) Все эти строительные блоки работают в 3D точно так же, как и в 2D, по большей части.

Кроме того, более сложный ИИ часто пишется по сценарию, то есть поведение заранее запрограммировано на простом языке программирования для работы в очень специфической игровой ситуации. Сценарии для конкретных ситуаций могут делать предположения об окружающей среде (например, расположение укрытия, за которым можно спрятаться, близость союзников и врагов и т. Д.) И могут обеспечить весьма конкретные цели соответственно. Более общие сценарии могут быть вызваны набором предопределенных типов событий (например, "Враг увиден", "Убийство союзников", "Неопознанный шум слышал") и очень простыми ответами, написанными в каждом случае (например, "ЕСЛИ self.health > 75%", ЗАТЕМ "attackNearestEnemy ELSE fleeToSafety".

... возможно, алгоритм обучения использовался на этапах разработки для создания модели (статический алгоритм), и эта модель затем используется для принятия решений в игре?

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

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

Большое количество игр просто используют конечные автоматы

В сети есть несколько действительно хороших ресурсов:

Бессмысленно иметь ML в играх, по крайней мере, в большинстве потребительских игр, потому что ИИ очень легко станет слишком сложным для битья и, таким образом, не будет приятным для игрока. Много усилий в игровом ИИ делится на три части: первая позволяет компьютеру обманывать. т.е. ИИ обычно знает, где находится игрок, и заранее знает лучшие маршруты вокруг. Это необходимо, в противном случае ИИ все время будет бездельничать, что не очень хорошо. Другое основное усилие в искусственном интеллекте - сделать NPC достаточно тупыми, чтобы игрок мог победить. ИИ довольно легко написать так, чтобы он всегда побеждал игрока (подумайте о Half Life, где вы столкнулись с командой морских пехотинцев), сложная часть заключается в том, чтобы сбалансировать внешний вид ИИ с возможностью игры. Последняя часть - убедиться, что ИИ занимает только ограниченное количество ресурсов - как с точки зрения процессорного времени, так и использования памяти.

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

Пример "мошенничества" ИИ: В Transport Tycoon компании ИИ никогда не платили за изменение высоты местности. Я знаю это, потому что я перенес это на Mac много лет назад.

Первый FPS, который я сделал, AI всегда направлялся к игроку, но направление было бы взвешено, используя случайную выборку из нормального распределения, поэтому большую часть времени направление было к игроку, но иногда направление было далеко - оно помог ИИ выйти из тупика. Это было за несколько дней до того, как было достаточно ворчания ЦП для поиска A*.

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

Я не думаю, что машинное обучение очень распространено в коммерческих играх, но одним ярким примером был Black & White, который был посвящен обучению питомца и тому, как жители игры поверили в игрока.

Если вы заинтересованы в изучении различных ИИ, я весело провел время с Xpilot-AI. "Звездный" бот, созданный людьми, управляющими проектом, был фиксированным контроллером на основе правил, который, в свою очередь, был продуктом генетического алгоритма. Вот как это произошло:

  • Они построили базового бота, основанного на правилах (если мы собираемся ударить стену, поверните налево и установите двигатели на полную мощность...)
  • Они разбили контроллер бота на параметры (поэтому вместо фиксированного условия "вот-вот ударится о стену" вы бы разбили его на "расстояние до стены Z. ")
  • Генетические алгоритмы были использованы для обучения оптимальных значений X, Y, Z и так далее.
  • После периода обучения значения были скопированы в источник бота, и он был объявлен "выполненным".

Таким образом, хотя активное обучение может быть вычислительно дорогостоящим в середине игры, все же имеет смысл использовать алгоритмы обучения для создания своего ИИ, если вы не думаете, что можете сделать его достаточно умным.

Еще одним преимуществом генетических алгоритмов является то, что вы можете определить "правильный" результат как бот, который выиграет 15% времени, обучая бота в легком режиме.

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

http://nerogame.org/

Alpha-Beta Pruning управляет настольными играми, включая Chess и более простые игры. Это способ сокращения пространства состояний для обеспечения эффективного поиска. Варианты поиска A * позволяют исследовать доску в симуляциях роботов и т. Д. Оба являются "классическим ИИ", а не алгоритмами машинного обучения как таковыми. Проигрыватель Samuel's Checkers и TD-Gammon - примеры использования обучения с подкреплением для игры в шашки и нарды соответственно.

Я думаю, что несколько игр используют (более или менее сложные) нейронные сети.

http://en.wikipedia.org/wiki/Game_AI

В дополнение к моему ответу выше, есть статья по этому вопросу:

Машинное обучение в цифровых играх: опрос

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

Часто в механизме искусственного интеллекта не требуется никакого реального обучения (см. Ответ Kylotan).

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

Вы можете взять Tic Tac Toe в качестве простого примера. Я написал игру Tic Tac Toe с ИИ несколько месяцев назад. Я просто дал компьютеру знания о правилах и о том, как заблокировать выигрышный ход - вот и все. Затем вы можете настроить его так, чтобы он воспроизводился сам по себе, и за кулисами он ведет список прошлых ходов и распознает паттерны по мере их прохождения, становясь "умнее" по мере накопления опыта.

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

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

Нет. Агенты не обучены игровым моделям машинного обучения. Это на самом деле будет дороже на стадии производства и будет бессмысленным.

В игре Spore используются некоторые продвинутые генетические алгоритмы для моделирования жизненных форм в игре.

Другие вопросы по тегам