OpenAI Five

Наша команда из пяти нейросетей, OpenAI Five, начала побеждать команды любителей-людей в Dota 2.

A group of people seated facing a large monitor showing the Dota 2 interface

Наша команда из пяти нейросетей, OpenAI Five, начала побеждать команды любителей в Dota 2. Хотя на сегодняшний день мы играем с ограничениями, наша цель — в августе обыграть команду топовых профессионалов на турнире The International, используя лишь ограниченный набор героев. Возможно, нас ждет неудача: Dota 2 — одна из самых популярных и сложных киберспортивных игр в мире, а ее креативные и мотивированные профессиональные игроки тренируются круглый год, чтобы побороться за часть ежегодного призового фонда Dota размером в $40 млн (крупнейшего среди всех киберспортивных дисциплин).

OpenAI Five ежедневно проводит с самим собой матчи, эквивалентные 180 годам игрового времени, обучаясь методом самообучения. ИИ тренируется с помощью масштабированной версии алгоритма Proximal Policy Optimization, запущенного на 256 графических и 128 000 процессорных ядрах. Это более масштабная версия системы, которую мы создали в прошлом году для игры в гораздо более простой одиночный вариант этой игры. Используя отдельную сеть LSTM для каждого героя и не прибегая к данным людей, система вырабатывает узнаваемые стратегии. Это указывает на то, что обучение с подкреплением способно обеспечить долгосрочное планирование при достижении крупных, но реальных масштабов — и всё это без фундаментальных прорывов, вопреки нашим собственным ожиданиям на старте проекта.

Чтобы оценить наш прогресс, 5 августа мы проведем матч против топовых игроков. Следите за нами на Twitch, чтобы посмотреть прямую трансляцию, или запросите приглашение, чтобы посетить мероприятие лично!

Проблема

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

Dota 2 — это стратегия в реальном времени между двумя командами по пять игроков, где каждый управляет персонажем, называемым «героем». ИИ, играющий в Dota, должен освоить следующее:

  • Большие временные горизонты. Матчи в Dota идут со скоростью 30 кадров в секунду и длятся в среднем 45 минут, что составляет 80 000 тактов за игру. Большинство действий (например, приказ герою переместиться в определенную точку) имеют незначительное влияние по отдельности, но некоторые действия, такие как использование свитка телепортации, могут стратегически повлиять на всю игру;, а некоторые стратегии реализуются на протяжении всей партии. OpenAI Five наблюдает каждый четвертый кадр, что дает 20 000 ходов. Шахматные партии обычно завершаются быстрее чем за 40 ходов, а го — быстрее чем за 150, причем почти каждый ход в них является стратегическим.
  • Частичная наблюдаемость состояния. Юниты и здания видят только область вокруг себя. Остальная часть карты покрыта туманом войны, скрывающим врагов и их планы. Успешная игра требует делать выводы на основе неполных данных, а также моделировать намерения противника. И шахматы, и го — игры с полным знанием.
  • Высокоразмерное непрерывное пространство действий. В Dota каждый герой может совершать десятки действий, причем многие из них нацелены либо на другого юнита, либо на точку на земле. Мы дискретизируем пространство до 170 000 возможных действий для каждого героя (не все из них доступны каждый такт, например, использование заклинания на перезарядке); без учета непрерывных частей в каждый такт в среднем доступно около 1000 валидных действий. Среднее число действий в шахматах составляет 35, а в го — 250.
  • Высокоразмерное непрерывное пространство наблюдений. Dota идет на большой непрерывной карте, на которой находятся десять героев, десятки зданий, десятки NPC-юнитов и множество других игровых элементов, таких как руны, деревья и варды. Наша модель наблюдает за состоянием игры в Dota через Bot API от Valve в виде 20 000 (в основном с плавающей запятой) чисел, представляющих всю информацию, доступную человеку. Шахматная доска естественным образом представляется примерно 70 значениями перечисления (доска 8×8, 6 типов фигур и незначительная историческаяинформация); доска го — примерно 400 значениями (доска 19×19, 2 типа фигур плюс правило ко).

Правила Dota также чрезвычайно сложны: игра активно развивается уже больше десяти лет, а ее логика реализована сотен тысяч строк кода. На выполнение этой логики уходят миллисекунды за такт, в то время как на движки шахмат или го — наносекунды. Кроме того, примерно раз в две недели игра получает обновление, которое постоянно меняет семантику окружения.

Наш подход

Наша система обучается с использованием масштабированной версии алгоритма Proximal Policy Optimization. И OpenAI Five, и наш более ранний бот для формата 1в1 учатся исключительно в процессе самообучения. Они стартуют со случайных параметров и не используют поиск или начальную загрузку на основе реплеев матчей людей.

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

Наш агент обучен максимизировать экспоненциально затухающую сумму будущих наград, взвешенную с помощью коэффициента экспоненциального затухания под названием γ. Во время последнего прогона обучения OpenAI Five мы изменили γ с 0.998 (оценивая будущие награды с периодом полураспада 46 секунд) до 0.9997 (оценивая будущие награды с периодом полураспада пять минут). Для сравнения, наибольший горизонт в статье PPO составлял 0.5 секунды с периодом полураспада, в статье про Rainbow — 4.4 секунды, а в статье Observe and Look Further использовался период полураспада в 46 секунд.

Хотя текущая версия OpenAI Five слабо справляется с добиванием крипов (наблюдая за нашими тестовыми матчами, профессиональный комментатор Dota Blitz оценил этот навык на уровне среднего игрока в Dota), его распределение приоритетов целей соответствует принятой профессиональной стратегии. Получение долгосрочных преимуществ, таких как стратегический контроль над картой, часто требует пожертвования кратковременной выгодой вроде золота за фарм, поскольку объединение команды для атаки башен требует времени. Это наблюдение укрепляет нашу уверенность в том, что система действительно оптимизирует поведение на большом временном отрезке.

Структура модели

Каждая из сетей OpenAI Five содержит однослойную сеть LSTM на 1024 элемента, которая видит текущее состояние игры (извлекаемое из Bot API компании Valve) и выдает действия через несколько возможных голов (выходов) действий. Каждый выход имеет определенный смысл, например: количество тактов задержки перед действием, выбор конкретного действия, координаты X или Y этого действия в сетке вокруг юнита и т. д. Головы действий вычисляются независимо.

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

OpenAI Five способна реагировать на недостающие части состояния, коррелирующие с тем, что она видит. Например, до недавнего времени наблюдения OpenAI Five не включали зоны шрапнели (области, куда на врагов падают снаряды), которые люди видят на экране. Тем не менее, мы заметили, что OpenAI Five научилась выходить из активных зон шрапнели (хотя и не избегать их входа), поскольку видела уменьшение своего здоровья.

Исследование среды

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

OpenAI Five обучается путем самоигры (начиная со случайных весов), что обеспечивает естественную программу обучения для исследования среды. Чтобы избежать «краха стратегии», агент проводит 80% матчей против самого себя и еще 20% против своих прошлых версий. В первых играх герои бесцельно бродят по карте. После нескольких часов обучения появляются такие концепции, как лайнинг,  фарм или борьба за мид. Спустя несколько дней они стабильно перенимают базовые человеческие стратегии: пытаются украсть руны богатства (Bounty) у противников, идут фармить к своим башням первого уровня и ротируют героев по карте для получения преимущества на линиях. А при дальнейшем обучении они становятся искусными в стратегиях высокого уровня, таких как ранний пуш впятером.

В марте 2017 года наш первый агент побеждал ботов, но терялся в играх против людей. Чтобы принудительно запустить исследование пространства стратегий, во время обучения (и только во время него) мы рандомизировали характеристики юнитов (здоровье, скорость, начальный уровень и т.д.), и бот начал побеждать людей. Позже, когда один из тестовых игроков стал стабильно обыгрывать нашего бота 1v1, мы увеличили степень рандомизации при обучении, и тестовый игрок начал проигрывать. (Наша команда по робототехнике одновременно применяла схожие методы рандомизации к физическимроботам, чтобы перенести навыки из симуляции в реальный мир.)

OpenAI Five использует ту же рандомизацию, которую мы написали для нашего бота 1v1. В нее также добавлен новый элемент — «назначение линий». В начале каждой тренировочной игры мы случайным образом «назначаем» каждого героя на подмножество линий и штрафуем его за отклонение от них до определенного момента времени в игре, выбранного случайно.

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

Мы жестко прописываем сборки предметов и прокачку способностей (изначально созданные для нашей скриптовой базовой модели) и выбираем одну из сборок случайным образом. Управление курьером также заимствовано из скриптовой основы.

Координация

OpenAI Five не использует явный канал связи между нейронными сетями героев. Командная игра контролируется гиперпараметром, который мы назвали «командным духом». Командный дух варьируется от 0 до 1 и определяет вес, с которым каждый из героев OpenAI Five должен заботиться о своей индивидуальной функции вознаграждения по сравнению со средним значением функций вознаграждения всей команды. Мы постепенно увеличиваем это значение от 0 до 1 в процессе обучения.

Rapid

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

Rapid Architecture

Система обучения разделена на рабочих агентов (rollout-воркеры), которые запускают копию игры и собирают опыт, и оптимизаторы (узлы оптимизации), выполняющие синхронный стохастический градиентный спуск на парке графических процессоров (GPU). Ролл-аут воркеры передают свой опыт оптимизаторам через Redis. Каждой эксперимент также включает в себя воркеры, оценивающие обученного агента в сравнении с эталонными, а также инструменты мониторинга, такие как TensorBoard,  Sentry и Grafana.

Во время синхронного градиентного спуска каждый GPU вычисляет градиент на своей части батча, после чего градиенты усредняются по всему кластеру. Изначально мы использовали MPI-функциюallreduce для усреднения, но теперь применяем собственные NCCL2-обертки, которые распараллеливают вычисления на GPU и передачу данных по сети. Задержки при синхронизации 58 МБ данных (таков размер параметров OpenAI Five) на разном количестве GPU показаны справа. Задержка настолько мала, что в основном маскируется вычислениями на GPU, которые выполняются параллельно с ней.

Мы реализовали бэкенды Kubernetes, Azure и GCP для Rapid.

Игры

К настоящему моменту OpenAI Five сыграла (с нашими ограничениями) против следующих команд:

  1. Лучшая команда сотрудников OpenAI: 2,5 тыс. MMR (46-й процентиль).
  2. Лучшие игроки из числа зрителей матча сотрудников OpenAI (включая Blitz, который комментировал первый матч сотрудников): 4–6 тыс. MMR (90–99-й процентили), хотя они никогда не играли вместе как команда.
  3. Команда сотрудников Valve: 2,5–4 тыс. MMR (46–90-й процентили).
  4. Любительская команда: 4,2 тыс. MMR (93-й процентиль), тренируются как команда.
  5. Полупрофессиональная команда: 5,5 тыс. MMR (99-й процентиль), тренируются как команда.

Версия OpenAI Five от 23 апреля первой превзошла нашу скриптовую базовую модель. Версия от 15 мая сыграла на равных с командой 1, выиграв одну игру и проиграв другую. Версия от 6 июня решительно выиграла все матчи против команд 1–3. Мы организовали неофициальные скримы (тренировочные матчи) с командами 4 и 5, ожидая сокрушительного поражения, но OpenAI Five выиграла две из трех первых игр против каждой из них.

Two competitive gamers wearing headsets speaking to each other while a live audience looks on in front of them
«Аспект командной работы у бота просто потрясающий. Ощущение, будто играешь с пятью самоотверженными игроками, которые понимают хорошую общую стратегию».
Blitz

Мы заметили, что OpenAI Five:

  • Неоднократно жертвовала собственной сложной линией (верхняя линия для сил Тьмы; нижняя линия для сил Света) ради контроля над сложной линией противника, перенося драку на сторону, которую сопернику защищать сложнее. Эта стратегия появилась на профессиональной сцене за последние несколько лет и теперь считается доминирующей тактикой. Блиц (Blitz) отметил, что узнал об этом лишь после восьми лет игры, когда ему об этом рассказала Team Liquid.
  • Ускоряла переход от ранней игры к мидгейму быстрее соперников. Это достигалось за счет: (1) организации успешных ганков (когда игроки перемещаются по карте для засады на вражеского героя — см. анимацию), если противники слишком далеко выдвигались на линии, и (2) объединения сил для сноса башен до того, как оппоненты успевали организовать контратаку.
  • В некоторых аспектах отступала от текущего металди, например, выделяя героям поддержки (у которых обычно нет приоритета в ресурсах) много опыта и золота на ранней стадии. Распределение приоритетов OpenAI Five позволяет её героям быстрее достигать пика урона и агрессивнее наращивать преимущество, побеждая в командных боях и используя чужие ошибки для быстрой победы.
Person raising a trophy in front of an audience in a bright room

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

Отличия от людей

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

OpenAI Five совершает в среднем 150–170 действий в минуту (при теоретическом максимуме 450 из-за обзора каждого 4-го кадра). Тайминг с точностью до кадра, хотя и возможен для опытных игроков, для OpenAI Five является тривиальной задачей. Среднее время реакции OpenAI Five составляет 80 мс, что быстрее, чем у людей.

Эти различия наиболее важны в режиме 1v1 (где время реакции нашего бота составляло 67 мс), однако условия игры относительно равны, поскольку мы видели, как люди учатся у бота и адаптируются к нему. Десятки профессионаловиспользовали нашего бота 1v1 для тренировок в месяцы после прошлогоднего турнира TI. По словам Блица, бот 1v1 изменил то, как люди думают о матчах 1v1 (бот задал динамичный стиль игры, и теперь все подстроились под этот уровень, чтобы не отставать).

Неожиданные результаты

  • Бинарные награды могут обеспечивать хорошую производительность. Наша модель 1v1 имела спроектированное вознаграждение, включавшее награды за добивания, убийства и тому подобное. Мы провели эксперимент, в котором вознаграждали агента только за победу или поражение: обучение шло на порядок медленнее и несколько застопорилось на среднем уровне, в отличие от плавных кривых обучения, которые мы обычно наблюдаем. Эксперимент проводился на 4500 ядрах и 16 GPU k80, обучившись до уровня полупрофессионалов (70 по TrueSkill), а не до 90 TrueSkill нашего лучшего бота 1v1).
  • Блокировке крипов можно научиться с нуля. Для режима 1v1 мы обучали блокировке крипов (крип-блокингу) с помощью традиционного обучения с подкреплением и специальной награды за «блок крипов». Один из членов нашей команды оставил модель 2v2 обучаться, когда уехал в отпуск (делая предложение своей нынешней жене!), рассчитывая посмотреть, насколько дольше обучение сможет улучшить производительность. К его удивлению, модель научилась блокировать крипов без каких-либо специальных инструкций или наград.
  • Мы все еще исправляем баги. На графике показан процесс обучения кода, победившего любительских игроков, по сравнению с версией, в которой мы просто исправили ряд ошибок — например, редкие вылеты во время обучения или баг, приводивший к огромному отрицательному вознаграждению за достижение 25-го уровня. Оказывается, можно побеждать сильных людей, продолжая скрывать серьезные баги!
A Dota team gathered in a circle around a laptop, each with one hand placed on top of it.

Часть команды OpenAI Dota с ноутбуком, который победил лучших мировых профессионалов в матче 1v1 по Dota на турнире The International в прошлом году.*

Что дальше

Наша команда сосредоточена на выполнении августовской цели. Мы не знаем, удастся ли её достичь, но верим, что при усердной работе (и некоторой доле удачи) у нас есть реальные шансы.

В этом посте представлен срез состояния нашей системы по состоянию на 6 июня. Мы будем выпускать обновления по мере продвижения к превзодению человеческих результатов и напишем отчет о нашей финальной системе после завершения проекта. Пожалуйста, присоединяйтесь к нам 5 августа виртуально или лично, когда мы сыграем против команды топ-игроков!

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

Авторы

Грег Брокман, Кристи Деннисон, Сьюзан Чжан, Якуб Пахоцкий, Михаил Петров, Энрике Понде, Пшемыслав Дебяк, Давид Фархи, Филип Вольский, Джонатан Райман, Цзе Тан, Шимон Сидор, Брук Чан

Участники

Курин Фишер, Кристофер Хессе, Шарик Хашме, Илья Суцкевер, Алек Радфорд, Скотт Грэй, Джек Кларк, Пол Кристиано, Давид Луан, Кристофер Бернер, Эрик Сиглер, Йонас Шнайдер, Лариса Скьяво, Диана Юн, Джон Шульман

Текущий набор ограничений

Ограничение на пул героев сильно отличает эту игру от того, как Dota играется на мировом элитном уровне (т. е. в режиме «Капитанский» (Captains Mode) драфт из более чем 100 героев). Однако разница с обычными «публичными» играми (All Pick / Random Draft) меньше.

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

Отзывы о черновиках

Спасибо следующим лицам за отзывы о черновиках этого поста: Александру Лавину, Андрею Гибянскому, Анне Голди, Азалии Мирхосейни, Катрин Ольссон, Давиду Дохану, Давиду Ха, Денни Бритцу, Эриху Эльсену, Джеймсу Брэдбери, Джону Миллеру, Люку Метцу, Мэдди Холл, Майлзу Брандаджу, Нельсону Элхайджу, Офиру Нахуму, Питеру Аббелу, Румену Христов, Шубхо Сенгупте, Соломону Булосу, Стивену Мерити, Тому Брауну, Заку Стоуну

Полный текст статьи читайте на OpenAI