Хотя мы уже выпустили сообщение в блоге с демонстрацией видео по Dota 2, у нас не было возможности подробно рассказать о технологии, над которой мы работаем, и о том, как мы используем машинное обучение для создания ИИ для видео. игры.
Dota 2 как среда RL
Мы внедрили ботов на основе машинного обучения для Dota 2, MOBA-игры, разработанной Valve для демонстрации наших систем обучения с подкреплением и имитационного обучения. Мы выбрали Dota 2, так как она доступна в Linux, имеет LUA bot API, может отправлять состояние каждой команды в виде буфера протокола, имеет легко анализируемые файлы воспроизведения, которые можно использовать в качестве демонстраций, и позволяет запускать игры на повышенной скорости. скорость без графики. Кроме того, предыдущая работа OpenAI дала ценную информацию. Одним из недостатков Dota 2 как среды RL является то, что игра не ждет выполнения временных шагов, а это означает, что наш код должен быть достаточно быстрым, чтобы соответствовать скорости игры. Это становится проблемой, когда игра чрезмерно ускоряется и время игрового шага становится меньше времени логического вывода нейронной сети. Еще одна деталь, которую следует принять во внимание, заключается в том, что Dota 2 не позволяет запускать несколько экземпляров игры одновременно на одном компьютере, но эта проблема была просто решена с помощью Docker.
Dota 2 - интересная игра для машинного обучения из-за ее богатой игровой механики, ее кооперативного и конкурентного многоагентного характера, частичной наблюдаемости и длительного горизонта, а также богатого пространства наблюдения и действий. Кроме того, можно рассматривать ограниченные версии игры (например, 1 на 1, подмножество героев, без курьера) или использовать небольшие подмножества исходных областей наблюдения и действий для обучения агентов. Игра также поддерживает моддинг и имеет огромное сообщество. Это делает Dota 2 очень интересной средой для RL, которую можно адаптировать к вашим потребностям.
Алгоритмы, система, детали реализации
Мы разработали собственный фреймворк для обучения агентов видеоиграм. Наша система является универсальной и может применяться с минимальными изменениями во многих играх (MOBA-игры, но также и в других жанрах). Наша реализация поддерживает фреймворк PPG в сочетании с алгоритмами PPO и RND, а также SAC и SIL. Мы поддерживаем несколько субъектов, работающих на одной машине или распределенных по нескольким узлам через Docker Swarm.
Поскольку акторы являются основным узким местом системы, даже когда игра ускоряется до предела, важно, чтобы код актора имел минимальные накладные расходы, чтобы большая часть времени выполнения фактически тратилась на игру и логический вывод. Мы разработали систему с учетом масштабируемости, не только для увеличения количества участников, но и для поддержки обучения с использованием нескольких графических процессоров. Связь между узлами, потребление памяти и вычисления со смешанной точностью также были важными темами, поскольку во время обучения задействовано множество компонентов, и каждый из них может повлиять на производительность. В случае с несколькими агентами (2 команды до 5 агентов) мы используем пакетный вывод, а также оптимизированную предварительную обработку, чтобы избежать избыточных вычислений. Мы испробовали множество вариантов различных подходов, которые мы используем (формирование вознаграждения, функции, архитектуры нейронных сетей, заголовки действий, маски для допустимых действий, инициализации, нормализации и т. Д.), Чтобы получить лучший компромисс с точки зрения скорости обучения, числовой стабильности и производительности агентов. .
Обеспечение правильной работы обучения и умение диагностировать любые потенциальные проблемы являются ключевыми в машинном обучении. Поэтому наша система генерирует множество статистических данных во время обучения (энтропия политики, объясненная дисперсия, приблизительное расхождение KL и т. Д.) И на этапах оценки (например, винрейт). Наконец, мы разработали Minimoba, упрощенную MOBA, написанную на C, которая работает в тысячи раз быстрее, чем в реальном времени, что позволяет нам отлаживать, тестировать гиперпараметры и готовить крупномасштабные эксперименты.
Наши боты в действии
Мы собрали короткие видеоролики после обучения наших RL-агентов по простому сценарию: мелкомасштабное обучение 1 на 1 против жестко запрограммированного бота (поставляется с игрой) без демонстрации, используя структуру PPG с PPO и простой нейронной сетью с 2,7 миллионами параметров. Мы настроили гиперпараметры таким образом, чтобы обучение было максимально эффективным для фиксированного числа актеров, которые мы планировали использовать, но при этом позволяло агенту приобретать интересные навыки. Наш агент быстро научился оставаться в пределах досягаемости других юнитов, чтобы набираться опыта, избегая при этом агрессии. После нескольких часов мелкомасштабного обучения (64 ядра ЦП с 1 графическим процессором) наши агенты 1 на 1 начали изучать различные интересные варианты поведения, как можно увидеть в следующем видео (подробнее об этом в нашем предыдущем сообщении в блоге).
Что мы не показали…
В видео вы можете увидеть, что наш агент узнал, играя против жестко запрограммированного бота в режиме 1 на 1, но мы также поддерживаем самостоятельную игру и обучение населения для более масштабных сценариев. Как упоминалось ранее, файлы воспроизведения можно использовать в качестве демонстраций, что дает возможность повысить эффективность выборки и более быстрое обучение, чем чисто интерактивный RL. Это позволяет агенту изучать определенные модели поведения, например, техники, относящиеся к 5 на 5. Вот почему наша система также поддерживает RL с демонстрациями и автономное обучение через контролируемое обучение на демонстрациях экспертов.
Хотите узнать больше? Обязательно подпишитесь на нас в Medium, Twitter или LinkedIn.
Не стесняйтесь обращаться по адресу [email protected].
WildMeta, AI для видеоигр.