Представляем вашему вниманию перевод статьи The AlphaStar team в блоге DeepMind о том, как они учили искусственный интеллект играть в StarCraft.
На протяжении десятилетий игры были одним из главных способов тестирования и оценки производительности систем искусственного интеллекта. По мере того, как возможности ИИ расширялись, исследовательскому сообществу приходилось искать всё более сложные игры, в которых для решения как научных задач, так и задач из обычной жизни, играющий бы задействовал различные элементы интеллекта. В последние годы StarCraft, игра, которая считается одной из самых сложных стратегий в реальном времени (real-time strategy, RTS) и одной из самых популярных киберспортивных игр всех времён, стала общепризнанной «большой задачей» для исследований ИИ.
Мы хотели бы представить нашу программу-игрока в StarCraft II, AlphaStar, — первый ИИ, победивший топового профессионального игрока-человека. В серии тестовых матчей, состоявшихся 19 декабря, AlphaStar решительно победил со счётом 5:0 Гжегожа «MaNa» Коминча (Grzegorz Komincz) из игровой организации Team Liquid, одного из сильнейших профессиональных игроков StarCraft в мире. До этого AlphaStar в знаменательном матче обыграл товарища MaNa по команде Дарио «TLO» Вюнша (Dario Wünsch). Условия были такие же, как и в обычных профессиональных матчах, игроки соревновались на ладдере (competitive ladder map) и без каких-либо ограничений игры.
Несмотря на значительный успех, одержанный ИИ в видеоиграх на платформе Atari, в Mario, в Quake III Arena — Capture the Flag и в Dota 2, методы ИИ до сих пор не могли справиться со сложностью игры в StarCraft. Лучших из полученных результатов удалось достичь только благодаря целевому «затачиванию» основных элементов системы, значительному ограничению правил игры, предоставлению ИИ-системе сверхчеловеческих возможностей и благодаря игре на упрощённых картах. И даже с такими изменениями ни одна ИИ-система не смогла соперничать с профессиональными игроками. В отличие от этого, AlphaStar, используя глубокую нейронную сеть, обученную на «сырых» игровых данных с помощью контролируемого обучения и обучения с подкреплением, играет в полную версию игры StarCraft II.
StarCraft как вызов
В StarCraft II, игре, созданной компанией Blizzard Entertainment, события происходят в вымышленной научно-фантастической вселенной. Её игровой процесс (gameplay) — богатый и многослойный — был создан, чтобы озадачить человеческий интеллект. Наряду с оригинальным тайтлом, она — одна из самых громких и успешных игр всех времён. На киберспортивных турнирах в неё играют уже более 20 лет.
Есть несколько способов играть в неё, но в киберспорте наиболее распространёнными являются турниры 1×1 из 5 игр. Для начала игрок должен выбрать одну из трёх инопланетных «рас» — зергов, протоссов или терранов. Каждая из рас имеет отличительные характеристики и свой набор способностей (хотя профессиональные игроки, как правило, специализируются на одной из рас). У каждого игрока в начале игры есть несколько рабочих единиц (юнитов), которые собирают ресурсы, чтобы потом построить больше юнитов и структур, создать новые технологии. Когда это сделано, можно собрать другие ресурсы, создать более сложные базы и структуры, а также разработать новые возможности, чтобы перехитрить противника. Чтобы выиграть, игрок должен тщательно продумать общий план (big-picture) управления экономикой (известный как «макро») — наряду с управлением отдельными юнитами (этот план игры известен как «микро»).
Сбалансировать краткосрочные и долгосрочные цели и адаптироваться к неожиданным ситуациям — сложная задача для ИИ-систем, которые бывают негибкими и часто ломаются. Чтобы её решить, нужен прорыв в нескольких областях исследований ИИ, включая следующие:
- Теория игр: StarCraft — это игра, в которой, как в «камень-ножницы-бумага», не существует одной лучшей стратегии. Таким образом, процесс обучения ИИ должен постоянно осваивать новые стратегии игры, расширять границы стратегических знаний.
- Неполная (imperfect) информация: В отличие от шахмат и го, в которых игроки видят всё, в StarCraft много важной информации скрыто от игрока. Он должен исследовать её в процессе «разведки».
- Долгосрочное планирование: Как во многих задачах реального мира, влияние причинно-следственных связей заметно не сразу. Игра может длиться до часа, а это означает, что действия, предпринятые в начале игры, могут в длительной перспективе не окупиться.
- Действия в реальном времени: в отличие от обычных настольных игр, в которых игроки чередуют ходы, в StarCraft игроки должны действовать непрерывно и параллельно по мере течения игрового времени.
- Большое игровое пространство: игрок должен контролировать сотни различных юнитов и зданий одновременно, в режиме реального времени, что приводит к комбинаторному пространству возможностей (combinatorial space of possibilities). Кроме того, действия являются иерархическими и могут быть изменены и дополнены. Мы в нашей параметризации игры насчитали в среднем от 10 до 26 возможных действий, доступных в любой момент времени.
Из-за таких очень сложных задач, StarCraft сам стал «грандиозной задачей» для исследований ИИ. В текущих соревнованиях по StarCraft и StarCraft II — AIIDE StarCraft AI Competition, CIG StarCraft Competition, Student StarCraft AI Tournament и Starcraft II AI Ladder — с момента запуска API Brood War в 2009 году ИИ показал прогресс. Чтобы помочь ИИ-сообществу успешно работать по этим задачам, в 2016 и 2017 годах мы с Blizzard разработали набор опенсорсных инструментов PySC2, в который вошёл самый большой из когда-либо выпущенных наборов анонимных повторов игр. И мы сейчас, опираясь на проделанную работу, объединили инженерные и алгоритмические прорывы и создали AlphaStar.
Как натренирован AlphaStar
Поведение AlphaStar генерирует глубокая нейронная сеть. Она получает входные данные от программного (raw) игрового интерфейса (список юнитов и их свойств) и на выход отдаёт последовательность инструкций — действие в игре. Если говорить более подробно, нейросетевая архитектура применяет тело трансформера к юнитам (так же, как при выявлении связей путём глубокого обучения с подкреплением), объединённое с глубоким LSTM-ядром, авторегрессионную политику (auto-regressive policy) в голове с указательной сетью (pointer network) и базовую линию, основанную на централизованных значениях (centralized value baseline). Мы полагаем, что такая передовая модель поможет нам найти решения для многих других задач из области машинного обучения, в которых требуется долгосрочное моделирование последовательностей (long-term sequence modeling) и в которых — большое пространство выходных данных (large output spaces). Среди таких задач — перевод, языковое моделирование и визуальные репрезентации.
В AlphaStar также используется новый мультиагентный алгоритм обучения. Нейронная сеть была изначально обучена методом контролируемого обучения на наборе анонимных повторов игр, выпущенном Blizzard. Подражая им, AlphaStar изучил основные микро- и макростратегии, которые использовали игроки на StarCraft-ладдере. Этот начальный агент побеждал встроенный ИИ Elite-AI (который играет на уровне золота для игрока-человека) в 95% игр.
Затем такие агенты были использованы для запуска мультиагентного обучения с подкреплением. Была создана непрерывно играющая лига, в которой агенты лиги — соперники — играли друг против друга, точно так же, как делают люди-игроки на StarCraft-ладдере. В лигу динамически добавлялись новые соперники — «отпочковываясь» от существующих игроков; каждый агент затем учился в играх с другими игроками. Эта новая форма обучения развивает идеи мультиагентного и основанного на популяциях обучения с подкреплением. Таким образом создаётся процесс, в котором непрерывно осваивается огромное пространство стратегий из игрового процесса StarCraft. Это гарантирует, что каждый агент будет хорошо справляться с сильнейшими стратегиями и не забывать стратегии, встреченные ранее.
По мере того, как лига движется вперёд и создаются новые соперники, появляются новые контрстратегии, предназначенные, чтобы побеждать более ранние. Некоторые новые агенты берут старые стратегии и их совершенствуют, другие создают принципиально новые, состоящие из новых заказов на сборку, составов юнитов и планов микроуправления. Например, на ранних этапах лиги AlphaStar часто отдавалось предпочтение неоригинальным стратегиям, таким как очень быстрый огонь из фотонных пушек или использование тёмных храмовников. По мере того, как процесс обучения шёл дальше, эти рискованные стратегии отбрасывались и появлялись новые: например, получение экономической мощи путём невиданного расширения базы большим количеством работников, или пожертвование двух оракулов, чтобы оказать негативное влияние на работников и экономику противника. Это процесс обучения похож на то, как люди-игроки осваивали новые стратегии и побеждали предыдущие на протяжении многих лет — с момента выпуска StarCraft’а.
Чтобы стимулировать разнообразие в лиге, каждому агенту была задана своя цель обучения: например, каких соперников он должен победить; также могли быть заданы любые другие внутренние мотивы, влияющие на игру агента. Так, какой-то агент мог преследовать цель победить одного конкретного соперника, а другому могло быть дано задание победить целое распределение агентов, но сделать это только путём создания большего количества определённых игровых единиц. Эти цели были адаптированы во время обучения.
По результатам игр против целевых противников в обучении с подкреплением веса нейронной сети каждого агента обновляются, и таким образом оптимизируется его личная цель обучения. Правило обновления весов — это эффективный и новый алгоритм обучения с подкреплением типа «актор-критик» с недетерминированной политикой (off-policy actor-critic reinforcement learning algorithm) с переигрыванием опыта (experience replay), самоимитирующим обучением (self-imitation learning) и дистилляцией политики (policy distillation).
Чтобы обучить AlphaStar, мы создали масштабируемую распределённую систему обучения с использованием тензорных процессоров TPU Google v3, которые поддерживают обучение целой популяции агентов на многих тысячах параллельных экземпляров игры StarCraft II. Лига AlphaStar работала на процессорах в течение 14 дней, на каждого агента было выделено по 16 TPU. Во время обучения каждый агент получал опыт, эквивалентный таковому до 200 лет игровых лет. Конечный агент AlphaStar состоит из компонентов распределения Нэша лиги — то есть, из собрания наиболее эффективных обнаруженных стратегий — которые могут работать на одном десктопном GPU.
Полное техническое описание этой работы будет опубликовано в рецензируемом журнале.
Как AlphaStar играет и как наблюдает за игрой
Профессиональные игроки в StarCraft, такие как TLO и MaNa, могут выполнять в среднем сотни действий в минуту (actions per minute, APM). Это гораздо меньше, чем у большинства существующих игровых ботов, которые контролируют каждую единицу независимо и поддерживают уровень в 1000 или даже 10 000 APM.
В играх против TLO и MaNa у AlphaStar средний APM составлял около 280, и это значительно меньше, чем у профессиональных игроков, хотя действия AlphaStar могут быть более точными. Это частично объясняется тем, что AlphaStar начинал своё обучение с использованием реплеев и, таким образом, имитировал человеческую игру в StarCraft. Кроме того, между наблюдением и реакцией на события у AlphaStar есть задержка — в среднем 350 мс.
Во время матчей против TLO и MaNa AlphaStar взаимодействовал с игровым движком StarCraft напрямую через его программный [raw] интерфейс. Это значит, что он мог наблюдать за свойствами своих собственных юнитов и видимых юнитов противника на карте без увеличения масштаба и без необходимости перемещать камеру. В отличие от этого, люди-игроки должны оттачивать свою «экономику внимания», чтобы решать, на что навести камеру. Тем не менее, анализ партий с AlphaStar показывает, что он имеет неявный фокус внимания. В среднем его агенты «переключали контекст» примерно 30 раз в минуту, почти как MaNa или TLO.
После этих матчей мы дополнительно разработали вторую версию AlphaStar. Как и люди-игроки, эта версия AlphaStar выбирает, когда и куда перемещать камеру. Её восприятие ограничено отображаемой на экране информацией, а места действия ограничены видимой областью карты.
Мы обучили двух новых агентов, один из которых использовал программный интерфейс, а другой должен был учиться управлять камерой, [в играх] против [агентов из] лиги AlphaStar. Каждый агент был изначально обучен с помощью контролируемого обучения на основе повторах игр людей. После этого их тренировали обучением с подкреплением, как это описано выше. Версия AlphaStar, использующая интерфейс с камерой, превысила позицию 7000 MMR (matchmaking rating) в нашем внутреннем списке лидеров и была почти так же сильна, как и та, которая обращалась к программному интерфейсу. В показательном матче MaNa одержал победу над прототипом AlphaStar, который использует интерфейс с камерой, и который обучался всего 7 дней. В ближайшем будущем мы надеемся сделать оценку полностью обученного экземпляра AlphaStar с интерфейсом с камерой.
Полученные результаты свидетельствуют о том, что успех AlphaStar в игре против MaNa и TLO на самом деле был именно из-за его лучшего, чем у людей-игроков, принятия макро- и микростратегических решений, а не благодаря быстроте кликов, короткому времени реакции или обращению к программному интерфейсу.
Сравнение игры AlphaStar с игрой профессиональных игроков
StarCraft позволяет игрокам выбрать одну из трёх рас инопланетян: терранов, зергов и протоссов. Мы решили, что AlphaStar будет пока специализироваться на игре за протоссов, когда сообщали результаты из нашей внутренней лиги. Это позволило сократить время обучения и его вариативность. Тот же самый механизм обучения может быть применён к любой другой расе. Наши агенты играли в StarCraft II (v4.6.2), протоссы против протоссов, на ладдере CatalystLE. Чтобы оценить уровень игры AlphaStar, наши агенты сначала сыграли с TLO: лучшим профессиональным игроком за зергов, который играет за протоссов на уровне GrandMaster. AlphaStar, используя большое разнообразие юнитов и порядков строительства (build orders), выиграл матч со счётом 5:0. «Я был удивлён тем, насколько силён был этот агент», — говорит TLO. «AlphaStar берет известные стратегии и выворачивает их наизнанку. Агент использовал такие стратегии, о существовании которых я никогда бы не подумал. А это значит, что могут существовать другие новые подходы к этой игре, которые мы ещё не открыли”.
Мы обучали наших агентов ещё неделю, после чего дали им сыграть против MaNa, одного из сильнейших игроков StarCraft II в мире, который входит в десятку сильнейших игроков за протоссов. AlphaStar снова выиграл со счётом 5:0, продемонстрировав силу своих микро- и макростратегических навыков. «Я был впечатлён, увидев, как AlphaStar использует сложные ходы и различные стратегии практически в каждой игре. У него был очень человеческий геймплей, я этого не ожидал», — говорит MaNa. «Я осознал, насколько мой геймплей основан на способности заставлять противника ошибаться, использовать его человеческие реакции. [AlphaStar] показал мне StarCraft в совершенно новом свете. Мы с нетерпением ждём, что будет дальше».
AlphaStar и другие сложные задачи
StarCraft — это всего лишь игра, хотя и сложная. Но мы считаем, что методы, лежащие в основе AlphaStar, могут быть использованы и для решения других задач. Например, архитектура её нейронной сети такова, что способна моделировать очень длинные последовательности вероятных действий на основе несовершенной информации — например как для игр, длящихся до часа, и в которых — десятки тысяч ходов. Каждый экранный кадр StarCraft подаётся на вход для очередной итерации работы, и нейронная сеть каждый раз предсказывает ожидаемую последовательность действий для оставшейся части игры. Такая фундаментальная проблема — составление предсказаний для очень длинных последовательностей данных — возникает во многих задачах обычной жизни, например в прогнозировании погоды, моделировании климата, понимании [естественного] языка, и во многих других. Мы очень рады тому, что знания и наработки проекта AlphaStar могут позволить добиться значительных успехов в перечисленных выше областях.
Мы также считаем, что некоторые из наших методов обучения могут быть полезны в исследовании возможностей обеспечения безопасности и надёжности ИИ. Одна из главных проблем ИИ — это то, что есть множество возможных сценариев, где он может ошибиться. Профессиональные игроки в StarCraft ранее с лёгкостью находили изобретательные способы провоцировать ошибки, и таким образом побеждали ИИ-системы. С помощью инновационного процесса обучения, основанного на лигах игр, AlphaStar находит наиболее надёжные подходы к игре, в которых вероятность совершить ошибку — мала. Мы воодушевлены тем, что такой подход может помочь повысить безопасность и надёжность ИИ-систем в целом, особенно в таких областях, где безопасность критически важна, как энергетика, где нужно принимать решения относительно сложных пограничных случаев (edge cases).
То, что ИИ достиг наивысших уровней профессионализма игры в StarCraft, одной из самых сложных видеоигр за всю историю, — это большой прорыв. Мы считаем, что наряду с недавним прогрессом по проектам AlphaZero и AlphaFold, это достижение представляет собой шаг вперёд в нашей миссии по созданию интеллектуальных систем, которые в будущем помогут нам решить некоторые самые важные в мире фундаментальные научные задачи.