Результат игры наш бот показывает, что самостоятельная игра может серьезно улучшить качество систем машинного обучения, от гораздо ниже человеческого уровня до сверхчеловеческого уровня, при наличии соответствующей вычислительной мощности.
В течение месяца наша система превратилась из едва способной быть хорошим игроком в победу над лучшими профессионалами и с тех пор продолжает совершенствоваться.
Качество контролируемой системы глубокого обучения определяется набором обучающих данных, но для систем, которые играют сами с собой, доступный набор данных автоматически улучшается.
Изменение рейтинга TrueSkill (похожий на рейтинг Эло для шахмат) нашего бота с течением времени, рассчитанное с помощью моделирования игр между ботами.
Проект развивался следующим образом.
15% игроков имеют рейтинг ниже 1,5К по шкале ММР ; У 58% игроков оно ниже 3К; 99,99% игроков имеют рейтинг ниже 7,5К.
• 1 мая: первый Результаты обучение с подкреплением в простой среде Dota, где Drow Ranger учится сражаться с жестко запрограммированным Earthshaker. • 8 мая: тестер с ММР at 1.5K говорит, что его результаты улучшаются быстрее, чем у бота.
• Начало июня: победил тестера с MMR 1,5 тыс.
• 30 июня: выиграл большинство игр у тестера с MMR 3000. • 8 июля: впервые с небольшим отрывом выиграл от полупрофессионального тестировщика с ММР 7,5К.
• 7 августа: победа Блиц (6,2К, бывший профессионал) со счетом 3-0, Пайкатт (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 августа: победил Денди (7,3К, профессионал, бывший чемпион мира) со счетом 2-0. На 60% больше побед, чем в версии от 10 августа.
Игра против СумаиЛ
Задача
В полной версии игры игроки сражаются 5 на 5, но в некоторый турниры есть и игры 1 на 1. Наш бот играл по стандартным турнирным правилам — особых упрощений для ИИ мы не добавляли.Бот работал со следующими интерфейсами: • Наблюдение: API-интерфейсы, разработанные с учетом тех же возможностей, что и живые игроки, в отношении героев, других персонажей в игре и поверхности вокруг героя.
Игра частично наблюдаема.
• Действия: доступны через API с частотой, сравнимой с человеческой, включая перемещение в определенное место, атаку и использование предметов.
• Обратная связь: бот получает вознаграждение за победу, а также простые параметры, такие как здоровье и последние хиты .
Мы выбрали несколько десятков предметов, доступных боту, и выбрали один из них для изучения.
Мы также отдельно обучали блокирующих крипов, используя традиционные методы обучения с подкреплением, поскольку это происходит до появления противника.
Бот играет против Arteezy
Турнир The International
Наш подход, сочетающий самостоятельную игру и внешнее обучение, позволил нам значительно улучшить производительность нашего бота с понедельника по четверг во время турнира.Вечером в понедельник Пайкатт победил, используя необычную сборку предметов.
Мы добавили эту сборку в список доступных предметов.
Около 13:00 в среду мы протестировали последнюю версию бота.
Бот потерял много здоровья после первой волны.
Мы решили, что нужно откатиться, но потом заметили, что последующая игра была потрясающей, а поведение в первой волне было просто приманкой для других ботов.
Последующие игры сами с собой решили проблему, когда бот научился сопротивляться стратегии приманки.
И мы объединили это с ботом Monday только для первой волны и закончили всего за 20 минут до появления Arteezy. После матчей с Arteezy мы обновили модель блокировки крипов, что увеличило TrueSkill на единицу.
Последующая тренировка перед матчем с SumaiL в четверг увеличила TrueSkill на два очка.
SumaiL отметил, что бот научился произносить разрушительные заклинания [raze] вне поля зрения противника.
Это произошло благодаря механике, о которой мы не знали: применение за пределами прямой видимости противника не позволяет ему зарядить вонд. Arteezy сыграл матч с нашим тестером уровня 7,5К.
Arteezy выигрывал игру, но нашему тестировщику удалось удивить его стратегией, которую он узнал от бота.
Позже Артизи отметил, что эту стратегию однажды применили против него Папарази, и что она используется редко.
Пайкатт побеждает бота Monday. Он заманивает бота, а затем использует регенерацию.
Уязвимости ботов
Хоть SumaiL и назвал бота «непобедимым», он все равно может запутаться в ситуациях, слишком отличающихся от увиденных.Мы запустили его на одном из турнирных мероприятий, где игроки сыграли более 1000 игр с целью победить бота всеми возможными способами.
Успешные уязвимости разделились на три категории: • Перетаскивание крипов.
Вы можете постоянно заставлять крипов с линии преследовать вас сразу после их появления.
В результате за вами по всей карте побегут несколько десятков крипов, а вражеские крипы разрушат башню бота.
• Сфера яда + кружево ветра: дает преимущество в скорости передвижения перед ботом на первом уровне и позволяет быстро наносить урон.
• Raze на первом уровне: требует умения, но несколько игроков класса 6-7К смогли убить бота на первом уровне, успешно выполнив 3-5 заклинаний за короткое время.
Исправление проблем в матчах один на один будет аналогично исправлению ошибки Пайкатта.
Но для матчей 5 на 5 эти проблемы не являются уязвимостями, и нам понадобится система, которая сможет справиться со странными ситуациями, которых она раньше не видела.
Инфраструктура
Мы пока не готовы обсуждать внутренние особенности бота — команда работает над решением проблемы с игрой 5 на 5. Первым шагом проекта было выяснить, как запустить Dota 2 в облаке на физическом графическом процессоре.Игра в таких случаях выдавала непонятную ошибку.
Но при запуске на графическом процессоре на рабочем столе Грега (во время выступления этот рабочий стол был вынесен на сцену) мы заметили, что Дота загружалась с подключенным монитором, и выдавала то же самое сообщение без монитора.
Именно поэтому мы настроили наши виртуальные машины так, чтобы они делали вид, что к ним подключен физический монитор.
На тот момент Дота не поддерживала выделенные сервера, то есть запуск с масштабированием и без GPU был возможен только в версии с очень медленным программным рендерингом.
Затем мы создали заглушку для большинства вызовов OpenGL, за исключением тех, которые необходимы для загрузки.
Заодно мы написали бота в скриптах - как эталон для сравнения (особенно потому, что встроенные боты плохо работают в режиме 1 на 1) и для понимания семантики API бота .
Скрипт-бот достигает 70 ластхитов за 10 минут на пустой дорожке, но все равно проигрывает достаточно хорошим игрокам.
Наш лучший бот 1 на 1 набирает примерно 97 (он рано разрушает башню, поэтому мы можем только экстраполировать), а теоретический максимум — 101. Бот играет против SirActionSlacks. Стратегия отвлечь бота толпой курьеров не сработала
Пять на пять
1 на 1 — это сложно, но 5 на 5 — это океан трудностей.Нам нужно будет расширить возможности ИИ, чтобы справиться с этим.
Как обычно, начнем с копирования поведения.
В Dota ежедневно проводится около миллиона публичных игр.
Записи матчей хранятся на серверах Valve в течение двух недель.
Мы загружали записи каждой игры на экспертном уровне с ноября прошлого года и накопили набор данных из 5,8 миллионов игр (каждая игра длится примерно 45 минут с участием 10 игроков).
Мы используем OpenDota на поиск записей и дал им 12 000 долларов (в десять раз больше, чем они хотели собрать за год) на поддержку проекта.
У нас еще много идей, и мы мы нанимаем программисты (интересующиеся машинным обучением, но не обязательно эксперты) и исследователи, чтобы помочь нам.
Мы благодарим Microsoft Azure и Valve за поддержку в нашей работе.
Теги: #Игры и игровые консоли #искусственный интеллект #dota 2
-
Понимание Пакета Go: Io
19 Dec, 24 -
Образ Catalyst 2.1
19 Dec, 24 -
Яндекс Ожил
19 Dec, 24 -
Ie6 Независимый?
19 Dec, 24 -
Чтение Хабра На Всю Ширину Браузера
19 Dec, 24 -
Яндекс Оцифрует Словари
19 Dec, 24