Подробности создания бота для Dota 2

Original author: OpenAI
  • Translation
Результат игры нашего бота показывает, что игра с самим собой [self-play] может серьёзно увеличить качество систем машинного обучения, и повысить его от состояния гораздо ниже уровня человека до уровня сверхчеловека, при наличии соответствующих вычислительных мощностей. В течение месяца наша система поднялась с состояния, едва ли соответствовавшего уровню хорошего игрока до состояния, в котором она обыгрывала лучших профессионалов, и с тех пор продолжает совершенствоваться. Качество системы контролируемого глубинного обучения определяется набором учебных данных, но для систем, играющих с самими собой, доступный набор данных автоматически улучшается.

image
Изменение рейтинга TrueSkill (схожего с рейтингом Эло для шахмат) нашего бота со временем, подсчитанная при помощи симуляции игр между ботами.

Проект развивался следующим образом. Рейтинг 15% игроков находится ниже отметки 1,5К по шкале MMR; у 58% игроков он ниже 3К; у 99,99% игроков ниже 7,5К.

• 1 мая: первые результаты обучения с подкреплением в простом Dota-окружении, где Drow Ranger учится сражаться с жёстко запрограммированным Earthshaker.
• 8 мая: тестировщик с MMR в 1,5K говорит, что его результаты улучшаются быстрее, чем у бота.
• Начало июня: выиграл у тестировщика с MMR 1,5K
• 30 июня: выиграл большую часть игр у тестировщика с MMR 3000.
• 8 июля: впервые с небольшим отрывом выиграл у полупрофессионального тестировщика с MMR 7,5К.
• 7 августа: победил Blitz (6,2К, бывший профессионал) со счётом 3-0, Pajkatt (8,5К, профессионал) 2-1, и CC&C (8,9К, профессионал) 3-0. Все они согласились, что SumaiL придумает, как его обыграть.
• 9 августа: победил Arteezy (10К, профессионал, один из лучших игроков) 10-0. Он сказал, что SumaiL сможет справиться с этим ботом.
• 10 августа: победил SumaiL (8,3К, профессионал, лучший игрок 1 на 1) 6-0. Игрок заявил, что бота победить нельзя. Сыграл с версией бота от 9 августа, победил 2-1.
• 11 августа: победил Dendi (7,3К, профессионал, бывший чемпион мира) 2-0. На 60% больше побед, чем у версии от 10 августа.


Игра против SumaiL

Задача


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

Бот работал со следующими интерфейсами:

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

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


Бот играет против Arteezy

Турнир The International


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

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

После матчей с Arteezy мы обновили модель блокирования крипов, что увеличило TrueSkill на единицу. Последующие тренировки перед матчем с SumaiL в четверг увеличили TrueSkill на два пункта. SumaiL указал на то, что бот научился кастовать разрушающие заклинания [raze] вне поля видимости противника. Это случилось благодаря механике, о которой мы не знали: кастование за пределами поля зрения врага не даёт ему заряжать вонд.

Arteezy сыграл матч с нашим тестировщиком уровня 7,5К. Arteezy выигрывал игру, но наш тестировщик сумел удивить его при помощи стратегии, подсмотренной у бота. Arteezy позже заметил, что эту стратегию против него однажды использовал Paparazi, и что к ней довольно редко прибегают.


Pajkatt выигрывает у понедельничного бота. Он заманивает бота, а потом использует регенерацию.

Уязвимости бота


Хотя SumaiL назвал бота «непобедимым», он всё ещё может запутаться в ситуациях, слишком отличающихся от того, что он видел. Мы запустили его на одном из мероприятий, проходивших на турнире, где игроки играли более 1000 игр с целью победить бота всеми возможными способами.

Удачные уязвимости попали в три категории:

• Перетягивание крипов. Можно постоянно заставлять крипов с линии гнаться за вами сразу после их появления. В результате за вами по всей карте будет бегать несколько десятков крипов, и вражеские крипы уничтожат башню бота.
• Orb of venom + wind lace: дают вам преимущество в скорости передвижения над ботом на первом уровне и позволяют быстро нанести урон.
• Raze на первом уровне: требует навыков, но несколько игроков класса 6-7K смогли убить бота на первом уровне, удачно выполнив 3-5 заклинаний за короткое время.

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

Инфраструктура


Мы пока не готовы обсуждать внутренние особенности бота – команда работает над решением задачи с игрой 5 на 5.

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

В то время Dota не поддерживала выделенные серверы, то есть запуск с масштабированием и без GPU был возможен только в варианте с очень медленным софтовым рендером. Затем мы создали заглушку для большей части вызовов OpenGL, кроме тех, что нужны были для загрузки.

Одновременно мы написали бота на скриптах – в качестве эталона для сравнения (в частности потому, что встроенные боты плохо работают в режиме 1 на 1) и чтобы понять семантику API для ботов. Скриптовый бот доходит до 70 ластхитов за 10 минут на пустом пути, но всё равно проигрывает достаточно хорошо играющим людям. Наш лучший бот играющий 1 на 1, доходит до отметки порядка 97 (башню он уничтожает раньше, так что мы можем только экстраполировать), а теоретический максимум – 101.


Бот играет против SirActionSlacks. Стратегия отвлечения бота толпой курьеров не сработала

Пять на пять


Игра 1 на 1 – сложная задача, но 5 на 5 – это океан сложности. Нам нужно будет расширить пределы возможности ИИ, чтобы он смог с ней справится.

Привычным образом мы начнём с копирования поведения. В Dota проходит порядка миллиона публичных игр в день. Записи матчей хранятся на серверах Valve две недели. Мы скачиваем каждую запись игры на экспертном уровне с прошлого ноября, и набрали набор данных объёмом в 5,8 млн игр (каждая игра – примерно 45 минут с 10 игроками). Мы используем OpenDota для поиска записей и перечислили им $12000 (что в десять раз больше того, сколько они хотели собирать за год) для поддержки проекта.

У нас ещё много идей, и мы нанимаем программистов (интересующихся машинным обучением, но не обязательно экспертов) и исследователей нам в помощь. Мы благодарим Microsoft Azure и Valve за поддержку в нашей работе.
Ads
AdBlock has stolen the banner, but banners are not teeth — they will be back

More

Comments 18

    0
    Мог ошибиться в терминологии, с крипами, ластхитами и рэйзами. Исправления присылайте личным сообщением.
      0
      Крипы это мобы которые идут по линии, ластхиты это последний удар по мобу чтобы получить золото, а вот что такое рэйзы я не знаю, видимо имеются ввиды атакующие скилы?
        0
        да масс атака у ФСа.
          0
          СФа. Shadow Fiend.
          0
          Три первых скилла называются «Shadowraze». Отсюда сленговое рэйзы.
            0
            Что оно дает?
              0
              Наносит аое урон на некотором расстоянии перед героем.
              0
              Койлы же
          0
          Бот с нечеловеческой реакцией и способностью рассчитывать радиус способностей до пикселя будет довольно сильно доминировать в начале игры, при этом бота врядли получится поймать на реакции (не замедляют же его специально?). Итого, получается остается стратегия на долгосрочную игру (собрать 5 обраток? ещё какая упоротость?), либо какие то специфические тактики типа «сагрить ботов на суппорта и ворваться остальной тимой». Тупое мясо 5х5 боты похоже будут выигрывать почти без вариантов.

          У меня остается только один вопрос — зачем? Зачем нужен такой бот?
            +2
            Дефолтные боты в Дота имеют нечеловеческую реакцию, способность расчёта до пикселя, мап хак, двойное золото, двойной опыт. И проигрывают слабым игрокам.
              0
              Но при этом они не способны обучаться. Принципиальная разница.

              У меня правда тут возникает вопрос, а не случается ли «горе от ума», когда слишком много знающий бот начинает упускать выигрышные позиции из-за их опасности.
                0
                В течении одного-десятка матчей эта разница под микроскопом не видна.
                Так проф игроки ровно так же поступают. Халявить по чёрному это очень рисованная и ненадёжная тактика. Тот же Альфа Го легко разменивал всё преимущество на всё больший шанс гарантировано выиграть.
              0
              У бота опенИИ как-раз человеческая реакция. Какие оправдания бесполезным мешкам мяса будут теперь?
              0
              Начало конца соревновательных онлайн игр это ваше машинное обучение. Прикрутите машинное зрение с управлением через драйвер мыши/клавы и вперед покорять не только RTS но и шутеры.
                +1
                Это никак не повлияет на киберспорт, читы существовали давно, одним ботом больше, одним ботом меньше.
                0

                Ну, появление автомобилей не убило же беговые виды спорта.


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

                  0
                  «Наш бот играл по стандартным турнирным правилам – мы не добавляли специальные упрощения для ИИ.» — Возможно вы имели в виду что-то другое, но на интернешынале против Денди было указано куча ограничений которые упростили игру до невозможности — нельзя — ботл, руны, рейндроп и еще несколько менее важных. Люди знающие игру могут подтвердить что было убрано большой пласт возможностей и загнано игрока в изначально проигрышную позицию где он должен конкурировать именно «техническими» скилами а не возможностью мыслить.
                  • UFO just landed and posted this here

                  Only users with full accounts can post comments. Log in, please.