Как сделать ии для стратегии

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

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

Все IT-сферы сделали огромный скачок в развитии, та же самая тенденция наблюдается и в игровой индустрии. Вначале создания были простейшие игры наподобие Pac-Man и Pong, и даже они позволили забыть игрокам о реальности на недели. Современные проекты по созданию игр уже стали полноценным хобби, настолько распространённым, что сегодня каждый четвёртый житель играет в World of Warcraft, World of Tanks, Call of Duty и т. п.

Для многих остаётся загадкой, какую роль в развитии игр имеет искусственный интеллект. Сегодня постараемся понять, за что он отвечает именно в играх.

Что такое ИИ в играх?

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


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

Есть ли отличая ИИ в играх от обычного?

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

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

Назначение ИИ в игровой индустрии

ИИ может выполнять всевозможные задачи: от обработки общего набора правил, отвечающих за поведение базовых объектов, до управления персонажами. К работе ИИ принято относить представление заранее описанных событий. Иллюстрация: в игре в игре F.E.A.R девочка-призрак, которая наводит ужас на игроков – это заблаговременно написанный сценарий.

Говоря об ИИ, в голову у большинства игроков сразу приходят мысли о ботах, управляемых компьютером. Все перечисленные роли исполняет один единственный актёр – ИИ.

Что нужно для ИИ в играх

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

Простейший пример ИИ

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

Самым известным приложением, работающим по аналогичной системе, является Pac-Man. За игроком гонятся 4 приведения, каждое действует на основании заложенного простейшего набора правил. Одно из них постоянно поворачивает влево, второе всегда идёт вправо, третье может поворачиваться в любую сторону, а четвертое преследует игрока.


Если разделить приведения, их алгоритм действий легко определить и предугадывать. Пользователю оказалось бы слишком просто спасаться от приведений.

Конечные автоматы

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

Есть несколько простых способов реализовать конечный автомат при использовании системы объектов:

  • способ 1 . Представить все состояния в качестве переменных, которые легко проверить в функции. Преимущественно проверка реализуется при помощи громоздких конструкций переключения;
  • способ 2 . Применить указатели функций – это основа игр на языке C. В объектно-ориентированных языках, наподобие C++ используется понятие виртуальная функция.

Адаптивный ИИ

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

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


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

Заключение

Многие действия и события в играх происходят за счёт ИИ, который принимает самые разнообразные формы: от простейших наборов правил до адаптивной системы самосовершенствования.

Больше интересных новостей

7 ошибок, которые мешают разработчику построить успешную карьеру

7 ошибок, которые мешают разработчику построить успешную карьеру

7 веб фреймворков, которые будут в тренде в 2019 году

7 веб фреймворков, которые будут в тренде в 2019 году

5 способов заработка на программировании

5 способов заработка на программировании

5 классных, но недооценённых приложений для программистов

5 классных, но недооценённых приложений для программистов

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

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

Зачем NPC разум: искусственный интеллект в играх

Владимир Семыкин

Энтузиаст геймдизайна, автор Нетологии

Конус зрения, уши и обонятельные рецепторы — как игровой ИИ получает информацию

Зачем NPC разум: искусственный интеллект в играх

В Tom Clancy’s Splinter Cell: Blacklist вражеские собаки умеют выслеживать героя по запаху. Это вынуждает игрока постоянно менять укрытие и не засиживаться на одном месте

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

Зачем NPC разум: искусственный интеллект в играх

Виртуальные рецепторы устроены по-разному. В Metal Gear Solid у противников совсем простой конус зрения, отсутствует периферийное зрение, поэтому они видят только то, что происходит прямо перед ними.

Зачем NPC разум: искусственный интеллект в играх

В Shadow Tactics: Blades of the Shogun тоже используется конус, но он сложнее. Конус поделён на зоны видимости, которые зависят от особенностей ландшафта. Если игрок попадёт в однородную зелёную зону, то его почти сразу увидят. В полосатой зоне видимость затруднена, поэтому игрок будет незаметен, если будет двигаться пригнувшись. А в зоне, покрытой точками, герой полностью скрыт.

Зачем NPC разум: искусственный интеллект в играх

Когда противник замечает игрока, конус зрения постепенно меняет цвет на жёлтый. Когда он заполнится, враг поднимет тревогу

В Tom Clancy’s Splinter Cell: Blacklist визуальный сенсор противников комплексный. У врагов есть основная зона видимости в форме вытянутого шестиугольника. Здесь персонаж видит лучше всего, поэтому в это пространство вообще лучше не заходить. Есть и более крупный шестиугольник, который имитирует периферийное зрение — там противник видит хуже. В такую же зону входят удалённые участки, которые недостаточно хорошо просматриваются.

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

Зачем NPC разум: искусственный интеллект в играх

Особенность противников в Splinter Cell: Blacklist в том, что они могут видеть игрока в частичном укрытии. Если несколько частей тела героя выглядывают из-за препятствия, то враг замечает его. Чтобы реализовать эту механику, разработчики использовали технологию рейкастинга — из глаз врага кастуются лучи, и если они пересекают несколько частей тела героя, то противник поднимает тревогу.

Зачем NPC разум: искусственный интеллект в играх

Зачем NPC разум: искусственный интеллект в играх

Профессия

Геймдизайнер

Узнать больше

  • Освоите профессию геймдизайнера с нуля: от идеи до балансировки и маркетинга
  • Разработаете прототип собственной игры на движке Unreal Engine
  • Составите полный комплект проектной документации для запуска игры

Анализ, коллективный интеллект и навыки режиссёра — что помогает ИИ принимать решения

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

Зачем NPC разум: искусственный интеллект в играх

В Gears Tactics у ИИ противников всегда есть глобальная цель. Групповой ИИ раздаёт каждому задание, которое помогает достигать общей цели. А NPC сами решают, каким образом выполнить задачу

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

Зачем NPC разум: искусственный интеллект в играх

В Horizon Zero Dawn робозвери умеют объединяться в стада, а их поведением управляет групповой агент. У каждой машины есть своя роль: патрулирование, атака, поиск ресурсов

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

Зачем NPC разум: искусственный интеллект в играх

Например, в Final Fantasy XV есть мета ИИ, который постоянно анализирует ситуацию и управляет NPC. Если игрок попал в передрягу, то именно мета ИИ вызовет ему на помощь союзника

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

Зачем NPC разум: искусственный интеллект в играх

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

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

Зачем NPC разум: искусственный интеллект в играх

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

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

Зачем NPC разум: искусственный интеллект в играх

В Gears Tactics у каждого типа юнитов есть собственное дерево поведения, в котором учтены все индивидуальные особенности и способности NPC

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

Зачем NPC разум: искусственный интеллект в играх

Есть и менее популярные решения, которые не смогли полноценно закрепиться в индустрии. В F.E.A.R. использовалась система целеориентированного планирования действий (Goal-Oriented Action Planning, GOAP) — для всех NPC она создаёт план действий, основываясь на информации об игровом мире. Если персонажу нужно перейти в другую комнату, то система сперва проверяет, какое расстояние нужно пройти до двери, есть ли на пути препятствия, открыта ли дверь и так далее. Когда у системы есть вся информация об окружении, она составляет план, а NPC просто проигрывает последовательность анимаций.

Этот подход работает на основе конечных автоматов, но они отвечают только за воспроизведение анимаций. У автоматов есть всего три состояния, каждое из которых отвечает за свой набор анимаций: движение (бег, ходьба), действия (стрельба, реакции), взаимодействие с объектами (открыть дверь, включить свет).

Зачем NPC разум: искусственный интеллект в играх

F.E.A.R. запоминается достаточно умными противниками, которые умеют работать сообща. На самом деле они даже не знают о существовании друг друга — просто ИИ грамотно координирует их действия

На смену GOAP постепенно пришла система ИИ под названием иерархический планировщик сети задач (HTN). Эта сеть создаёт планы, которые состоят из макросов действий, в которых уже заложена определённая последовательность.

Такая система применяется в Horizon Zero Dawn. С помощью неё робоживотные могут обмениваться информацией и запрашивать у группового ИИ план действий для решения задачи.

Зачем NPC разум: искусственный интеллект в играх

У каждого противника в Horizon Zero Dawn есть свой паспорт, который используется при идентификации и добавлении в новую стаю. Когда персонаж попадает в неё, ему присваивается роль внутри группового агента

На земле, в воде и по воздуху — как ИИ передвигается в пространстве

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

Обычно такие данные содержатся в навигационной сетке (NavMesh) — это особая карта, на которой обозначено, где NPC могут передвигаться.

Зачем NPC разум: искусственный интеллект в играх

В Horizon Zero Dawn есть сразу шесть навигационных сеток: четыре для существ разного размера, одна для тех, кто плавает, одна, чтобы игрок мог корректно оседлать существо

Поверх навигационной сетки может располагаться система узлов, которая применяется для того, чтобы NPC корректно выполняли сценарии поведения. К примеру, в Assassin’s Creed Origins у всех NPC есть свой распорядок дня, который они соблюдают даже без участия игрока. Чтобы персонажи следовали сценарию и не застревали в окружении, разработчики сделали специальную сеть узлов — точки на плоскости, где NPC выполняют свою персональную задачу. Описанный метод подходит для заранее предопределённых сценариев. NPC словно перемещаются по рельсам от одной точки к другой.

Зачем NPC разум: искусственный интеллект в играх

Зелёным обозначена навигационная сетка, а поверх неё находится система узлов. Жёлтая стрелка указывает на ошибку — кто-то поставил на узел игровой объект, чем перекрыл NavMesh

В ситуациях, в которых нужно реагировать на действия игрока, используется другой подход. В Just Cause 3 существует система, выбирающая приоритетные позиции, на которых NPC сможет эффективнее всего выполнить свою задачу. Выбор той или иной позиции зависит от конкретных критериев: дальности от цели, наличия препятствий между персонажем и его целью, удалённостью от союзников и так далее.

Зачем NPC разум: искусственный интеллект в играх

Похожая система есть и в Final Fantasy XV: когда NPC хочет применить способность, он оценивает окружение вокруг своей цели, чтобы найти наиболее выгодную позицию. Сначала ИИ ищет цель, потом выстраивает сетку из точек вокруг цели, отсеивает позиции, которые не подходят из-за особенностей ландшафта или удалённости от цели, а из оставшихся выбирает самую высокую точку.

Зачем NPC разум: искусственный интеллект в играх

Зачем NPC разум: искусственный интеллект в играх

A* высчитывает траекторию, основываясь на самой высокой точке локальной местности. Именно из-за этого воздушные противники в Horizon Zero Dawn не могут залетать под мосты или скалы

За 3 года работы над одним из проектов накопилось очень много информации на стыке Edtech, GameDev и AI, хочется увязать всю информацию в единое целое, и это первая статья, надеюсь, из цикла публикаций. Узкоспециализированных статей будет всего несколько, остальные же публикации будут посвещены популяризации взаимопроникновения искусственного интеллекта, игровой индустрии и образовательных платформ, ведь именно искуственный интеллект способен сделать игровые технологии доступными для массового образования, чего я лично очень и очень жду.

Искусственный интеллект по праву является флагманом развития целого ряда отраслей: автоматизация промышленных процессов, облачные решения, медицина, даже уже представлены крайне интересные решения в области сельского хозяйства. Принято считать, что драйверами роста ИИ являются автоматизация бизнес-процессов и решения для интернета вещей. Так, к примеру, аналитик IDC Customer Insights & Analysis Petr Vojtisek считает, что искусственный интеллект способен сыграть важную роль для компаний в реагировании на кризис с COVID-19, а рынок AI в IoT, согласно исследованию ReportCrux Market Research, к 2027 году превысит $27 млрд. Но в этой статье мы рассмотрим, как ИИ влияет на развитие отрасли компьютерных игр, ведь есть все основания предполагать, что именно GameDev – новый драйвер развития технологий искусственного интеллекта.

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

А что же искусственный интеллект может дать существенно нового любителям видеоигр? Во-первых, внедрение машинного обучения позволит реализовать в ряде игр такую долгожданную возможность, как вариация сюжетных линий. Сейчас большинство игр имеют определенный авторами сюжет, вокруг которого выстроен игровой мир. Машинное обучение, которое позволяет моделировать не заданный алгоритм (ответ на определенное действие), а формировать новый ответ системы в зависимости от ряда прочих факторов. Так, выбирая те или иные действия, а также в зависимости от прочих параметров игрового мира геймер сможет выбирать, в какую сторону искривится сюжетная линия.

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

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

Важно отметить существенную роль GameDev в развитии технологий искусственного интеллекта в целом. Механизмы рыночной экономики определяют пропорциональное распределение средств, инвестируемых в те или иные проекты исходя из их доходности, которая уже, в свою очередь, определяется уровнем спроса. Рынок компьютерных игр в мире, по данным портала Global Games Market Report оценивается на 2019 год более $150 млрд. B Российский рынок уже перешагнул отметку в $2 млрд.

К тому же важно понимать, что сфера игр одна из наиболее восприимчивых к новым технологиям и решениям. Таким образом, определенная (и далеко не малая!) доля от почти 2 миллиардов долларов только на российском рынке будет инвестирована в ИИ-инструменты, которые позволят сделать игры еще интереснее. Получается, что применение ИИ-алгоритмов в сфере видеоигр позволит привлечь существенный объем дополнительных инвестиций, что, безусловно, позитивно скажется на отрасли в целом и позволит ускорить ее дальнейшее развитие.

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

Будем дальше наблюдать, за развитием AI-GameDev интеграции. Убедимся, насколько наши прогнозы оказались верными.

alphazero

В марте 2016 программа AlphaGo обыграла одного из сильнейших в мире игроков Go со счётом 4:1 в серии, которую смотрели более 200 миллионов человек. Программа изучила человеческую стратегию игры Go – подвиг, который ранее считался невозможным, или, по крайней мере, в течение десятилетия от достижения.

AlphaZero

Это было выдающимся достижением. Однако 18 октября 2017 года DeepMind сделал огромный скачок вперёд.

В статье “Mastering the Game of Go without Human Knowledge” был представлен новый вариант алгоритма AlphaGo Zero, который обыграл своего предшественника со счётом 100:0. Результат был достигнут только за счёт самообучения: алгоритм начинал с “tabula rasa” (пустого состояния) и постепенно находил алгоритмы, которые обыгрывали предыдущие.

AlphaZero

Всего через 48 дней, 5 декабря 2017, DeepMind выпустил ещё одну статью: "Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm", в которой рассказывалось о том, как AlphaGo Zero может превзойти всемирные программы-чемпионы StockFish и Elmo в шахматах и сёги. Весь процесс обучения от первой игры до уровня лучшей компьютерной программой в мире занял менее суток.

Так появился AlphaZero – общий алгоритм для того, чтобы преуспеть в чём-либо быстро, без каких-либо предварительных знаний о человеческой экспертной стратегии.

В этом достижении есть две удивительные вещи:

  1. AlphaZero требует нулевого опыта в качестве входных данных.
    Это означает, что основная методология AlphaGo Zero может быть применена к любой игре с идеальной информацией (состояние игры известно обоим игрокам в любое время), потому что никакие предварительные экспертизы не требуются вне правил игры. Именно так DeepMind переделал алгоритм AlphaGo Zero под шахматы и сёги всего через 48 дней после публикации статьи. Всё, что нужно было, – изменить файл, описывающий механику игры и настройку гипер-параметров, относящихся к нейронной сети и поиску дерева Монте-Карло.
  2. Алгоритм невероятно элегантен.
    Если бы AlphaZero использовал сверхсложные алгоритмы, понятные только нескольким людям в мире, это всё равно было бы невероятным достижением. Что делает его необычным, так это то, что многие идеи в статье гораздо менее сложны, чем предыдущие. В его основе лежит следующая простая мантра для обучения:
    "Мысленно перебирайте возможные сценарии, отдавая приоритет перспективным путям, а также учитывая, как другие будут реагировать на ваши действия и продолжать исследовать неизвестное.Попав в незнакомое положение, оцените, насколько благоприятным вы его считаете. Пройдитесь по предыдущим шагам, чтобы понять, что именно привело вас в текущее положение.После того, как вы закончили перебирать возможные ходы, действуйте такими методами, которые вы изучили лучше всего.В конце партии вернитесь и найдите те моменты, когда вы недооценили важность будущих позиций. Обновите своё понимание игры соответствующим образом."
    Разве это не похоже на то, как вы учитесь играть в игры? Когда вы делаете плохой ход, это происходит либо потому, что вы недооценили важность будущих позиций, либо потому, что вы неправильно оценили вероятность того, что ваш противник сыграет определённый ход. Это именно те два аспекта игрового процесса, которым обучается AlphaZero.

Прежде всего, просмотрите заметку по AlphaGo Zero для лучшего понимания того, как он работает. Также эта статья объясняет принцип работы AlphaZero более детально.

Работаем с кодом

Скопируйте этот Git репозиторий.

Чтобы начать процесс обучения, запустите две верхние панели в run.ipynb Jupyter notebook. После того, как создастся достаточное количество игровых позиций, нейронная сеть начнёт обучение. С помощью самообучения и тренировок, алгоритм будет постепенно улучшаться при прогнозировании следующих шагов из любой позиции. Это приводит к лучшему принятию решений и улучшению общей игры.

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

Четыре в ряд

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

AlphaZero

Цель игры проста — расположить раньше противника подряд по горизонтали, вертикали или диагонали четыре фишки своего цвета.

Краткое описание ключевых файлов:

game.py

Этот файл содержит правила игры для “Четыре в ряд”. Каждому квадрату присваивается число от 0 до 41, как показано ниже.

AlphaZero

Game.py описывает логику перехода из одного игрового состояния в другое. Например, учитывая то, что поле чистое и то, что фишка ставится на квадрат 38, метод takeAction возвращает новое состояние игры.

Вы можете заменить game.py любым файлом, который соответствует тому же API, и алгоритм будет изучать стратегию посредством самообучения на основе правил, которые вы описали в файле.

run.ipynb

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

  1. Игра с самим собой
  2. Переподготовка нейронной сети
  3. Оценка нейронной сети

В этом цикле задействованы два агента: best_player и current_player.

Best_player содержит наиболее эффективную нейронную сеть и используется для генерирования воспоминаний о своей игре. Нейронная сеть current_player перенимает эти воспоминания, а затем играет против best_player. Если последний проигрывает, то его нейронная сеть перенимает модель current_player, и цикл начинается снова.

agent.py

Содержит класс агента (игрока в игре). Каждый игрок инициализируется со своей собственной нейронной сетью и деревом Монте-Карло.

Метод simulate запускает процесс поиска дерева Монте-Карло. Агент перемещается к конечному узлу дерева, оценивает узел, затем отбрасывает значение этого узла вверх по дереву.

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

Метод replay переучивает нейронную сеть, используя воспоминания из прошлых игр.

model.py

Файл содержит класс Residual_CNN, который определяет способ создания экземпляра нейронной сети.

AlphaZero

Он использует сжатую версию архитектуры нейронной сети AlphaGoZero — т. е. сверточной слой, за которым следуют многие остаточные слои. Глубину и количество сверточных фильтров можно указать в файле конфигурации.

Библиотека Kerras используется для создания нейронной сети с помощью Tensorflow.

Для просмотра отдельных свёрточных фильтров и плотно соединённых слоёв выполните следующие действия в run.ipynb:

AlphaZero

MCTS.py

Содержит классы Node, Edge и MCTS, составляющие дерево поиска Монте-Карло. Класс MCTS содержит упомянутые выше методы moveToLeaf и backFill. Экземпляры класса Edge хранят статистику каждого потенциального перемещения.

config.py

Здесь вы устанавливаете ключевые параметры, влияющие на алгоритм.

AlphaZero

Корректировка этих переменных повлияет на время работы, точность нейронной сети и общий успех алгоритма. Вышеуказанные параметры создают идеального игрока “Четыре в ряд”, но обучаться этот игрок будет очень долго. Чтобы ускорить алгоритм, попробуйте использовать следующие параметры:

AlphaZero

funcs.py

Содержит функции playMatches и playMatchesBetweenVersions, которые играют матчи между двумя агентами. Чтобы сыграть против вашего ИИ, запустите следующий код:

initialise.py

При запуске алгоритма все файлы сохраняются в папке run, в корневом каталоге. Чтобы перезапустить алгоритм с конкретной контрольной точки, переместите папку run в папку run_archive, прикрепив номер выполнения к имени папки. Затем введите номер выполнения, номер версии модели и номер версии памяти в файл initialise.py.

memory.py

Экземпляр класса Memory хранит воспоминания предыдущих игр, которые использует алгоритм для перенастройки нейронной сети current_player.

settings.py

Расположение папок run и run_archive.

loggers.py

Логи хранятся в папке логов в папке run. Чтобы начать вести логи, поменяйте значение logger_disabled на false внутри этого файла. Просмотр логов поможет вам понять, как работает ваш алгоритм. Вот пример логов из файла logger.mcts:

AlphaZero

Аналогично из файла logger.tourney вы можете увидеть вероятности, прикреплённые к каждому ходу, на этапе оценки:

AlphaZero

Обучение в течение нескольких дней привело к следующему графику потерь:

AlphaZero

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

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

Вот финальная таблица:

AlphaZero

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

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

Первая версия нейронной сети:

AlphaZero

Тридцатая версия:

AlphaZero

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

Читайте также: