ОБНОВЛЕНИЕ 2018-07-26: Вот и все!Сейчас мы приближаемся к тому моменту, когда эта игра станет решаемой!Используя OpenAI и основанную на игре DotA 2, команда может создать ИИ, который сможет победить полупрофессиональных геймеров в игре 5 на 5 .Если вы знаете DotA 2, вы знаете, что эта игра очень похожа на Diablo-подобные игры с точки зрения механики, но можно утверждать, что она еще сложнее из-за командной игры.
Как и ожидалось, это былодостигнуто благодаря последним достижениям в обучении подкреплению с глубоким обучением, а также с использованием открытых игровых сред, таких как OpenAI, что облегчает разработку ИИ, поскольку вы получаете аккуратный API, а также потому, что вы можете ускорить игру (ИИ играл в эквиваленте 180 летгеймплея против себя каждый день!).
5 августа 2018 года (через 10 дней!) планируется сразить этого ИИ с топовыми игроками DotA 2.Если это сработает, ожидайте большую революцию, возможно, не такую медийную, как решение игры в Го, но, тем не менее, она станет огромной вехой для игрового ИИ!
ОБНОВЛЕНИЕ 2017-01: С момента успеха AlphaGo эта область очень быстро продвигается, и существуют новые платформы, облегчающие разработку алгоритмов машинного обучения в играх почти каждый месяц.Вот список последних, которые я нашел:
- Вселенная OpenAI : платформа для игры практически в любую игру с использованием машинного обучения .API находится в Python, и он запускает игры в среде удаленного рабочего стола VNC, поэтому он может захватывать изображения любой игры!Вероятно, вы можете использовать Universe для игры в Diablo II с помощью алгоритма машинного обучения!
- Тренажерный зал OpenAI : аналогично Universe, но специально ориентирован на алгоритмы обучения с подкреплением (поэтому это своего рода обобщение используемой платформыот AlphaGo, но гораздо больше игр).В Udemy существует курс , посвященный применению машинного обучения в играх типа Breakout или Doom с использованием OpenAI Gym.
- TorchCraft : мост между Torch (структура машинного обучения) и StarCraft: Brood War.
- pyGTA5 : проект по созданию в GTA5 автомобилей с автоматическим управлением, используя только снимки экрана (с большим количеством видео онлайн).
Очень захватывающие времена!
ВАЖНОЕ ОБНОВЛЕНИЕ (2016-06): Как отмечает OP, эта проблема обучения искусственных сетейиграть в игры, используя только визуальные входы, в настоящее время занимаются несколько серьезных организаций, с довольно многообещающими результатами, такими как DeepMind Deep-Qlearning-Network (DQN) .
И теперь, если вы хотитечтобы принять вызов следующего уровня, вы можете использовать одну из платформ для разработки игр AI vision , таких как ViZDoom , высоко оптимизированную платформу (7000 fps) для обучения сетейиграть Doom Using только визуальные входы:
ViZDoom позволяет разрабатывать AI-ботов, которые играют в Doom, используя только визуальную информацию (экранный буфер).Он в первую очередь предназначен для исследований в области машинного визуального обучения и, в частности, глубокого обучения с подкреплением.ViZDoom основан на ZDoom для обеспечения игровой механики.
И результаты весьма впечатляющие, смотрите видео на их веб-странице и хороший учебник (в Python) здесь!
Существует также аналогичный проект для Quake 3 Arena, который называется Quagents , который также обеспечивает легкий доступ API к основным игровым данным, но вы можете отказаться от него и просто использоватьскриншоты и API только для управления вашим агентом.
Почему такая платформа полезна, если мы используем только скриншоты?Даже если у вас нет доступа к основным игровым данным, такая платформа обеспечивает:
- высокая производительность реализация игр (вы можете генерировать больше поколений данных / игр / обучения за меньшее времячтобы ваши алгоритмы обучения могли сходиться быстрее!).
- простой и отзывчивый API для управления вашими агентами (т. Е. Если вы попытаетесь использовать человеческие ресурсы для управления игрой, некоторые из ваших команд могут быть потеряны, поэтому вы также столкнетесь с ненадежностью ваши выводы ...).
- простая настройка пользовательских сценариев .
- настраиваемый рендеринг (может быть полезно для "упрощения" изображений, которые вы получаете для облегчения обработки)
- синхронизированная («пошаговая») игра (поэтому вам не нужен ваш алгоритм для работы в реальном времени, это значительно снижает сложность).
- дополнительные удобные функции, такие как кроссплатформенная совместимость, ретро-совместимость (вы не рискуете, чтобы ваш бот больше не работал с игрой, когда выходит новое обновление игры) и т. Д.
Подводя итог, можно сказать, что в этих платформах замечательно то, что они снимают большую часть предыдущих технических проблем , с которыми вам приходилось сталкиваться (как управлять входами в игру, как настраивать сценарии и т. Д.), Чтобы вам просто нужно разобраться с алгоритмом обучения .
Итак, приступайте к работе и сделайте нас лучшими ИИ-ботами за всю историю;)
Старый пост , описывающий технические проблемы разработки ИИ, основанные только на визуальных входах:
Вопреки некоторым из моих коллег выше, я не думаю, что эта проблема неразрешима. Но это, конечно, хелла хард!
Первая проблема, как указывалось выше, заключается в представлении состояния игры : вы не можете представить полное состояние одним изображением, вам нужно поддерживать какое-то запоминание (здоровье, но также предметы экипировки и предметы, доступные для использования, квесты и цели и т. Д.). Чтобы получить такую информацию, у вас есть два способа: либо получить прямой доступ к игровым данным, что является наиболее надежным и простым; или вы можете создать абстрактное представление этой информации, реализовав несколько простых процедур (открыть инвентарь, сделать снимок экрана, извлечь данные). Конечно, при извлечении данных из скриншота вы должны будете ввести какую-то контролируемую процедуру (которую вы определили полностью) или неконтролируемую (с помощью алгоритма машинного обучения, но тогда это значительно увеличит сложность ...). Для неконтролируемого машинного обучения вам нужно будет использовать совсем недавний вид алгоритмов, называемых алгоритмами структурного обучения (которые изучают структуру данных, а не то, как их классифицировать или предсказать значение). Одним из таких алгоритмов является Рекурсивная нейронная сеть (не путать с Рекуррентной нейронной сетью) Ричарда Сошера: http://techtalks.tv/talks/54422/
Тогда еще одна проблема заключается в том, что даже когда вы собрали все необходимые данные, игра только частично наблюдаема . Таким образом, вам нужно внедрить абстрактную модель мира и передать ей обработанную информацию из игры, например, местоположение вашего аватара, а также местоположение квестовых предметов, целей и врагов за пределами экрана. Возможно, вы можете посмотреть на Фильтры частиц смеси от Vermaak 2003 для этого.
Кроме того, вам необходим автономный агент , с динамически генерируемыми цели . Хорошо известной архитектурой, которую вы можете попробовать, является агент BDI, но вам, вероятно, придется настроить ее, чтобы она работала в вашем практическом случае. В качестве альтернативы есть также Рекурсивная сеть Петри, которую вы, вероятно, можете комбинировать со всеми видами вариаций сетей Петри для достижения того, чего вы хотите, поскольку это очень хорошо изученная и гибкая структура с большими формализационными и проверочными процедурами.
И наконец, даже если вы выполните все вышеперечисленное, вам нужно будет найти способ эмулировать игру на ускоренной скорости (использование видео может быть неплохим, но проблема в том, что ваш алгоритм будет только наблюдать без контроля, и способность учиться для себя очень важна для обучения). Действительно, общеизвестно, что современный современный алгоритм требует гораздо больше времени, чтобы выучить то же, что человек может выучить (особенно в том, что касается обучения с подкреплением), то есть если не может ускорить процесс ( то есть, если вы не можете ускорить игровое время), ваш алгоритм не будет сходиться даже за одну жизнь ...
В заключение, вы хотите достичь здесь на пределе (и, возможно, немного выше) современных современных алгоритмов . Я думаю, что это возможно, но даже если это так, вы собираетесь потратить уйму времени , потому что это не теоретическая проблема, а практическая проблема , к которой вы приближаетесь здесь, и, следовательно, вам необходимо реализовать и объединить множество различных подходов ИИ для его решения.
Несколько десятилетий исследований, над которыми работает целая команда, может оказаться недостаточным, поэтому, если вы один и работаете над ним неполный рабочий день (поскольку у вас, вероятно, есть работа для жизни), вы можете провести всю жизнь без достигать где-нибудь рядом с рабочим раствором.
Итак, мой самый важный совет здесь заключается в том, чтобы вы понизили свои ожидания и попытались уменьшить сложность вашей проблемы, используя всю информацию, которую можете, и избегайте, насколько это возможно, полагаясь на скриншоты (т. е. попробуйте подключиться непосредственно к игре, ищите инъекцию DLL) и упростите некоторые проблемы, реализуя контролируемые процедуры, не позволяйте вашему алгоритму изучать все (т. е. пока что максимально отбросьте обработку изображений и полагайтесь на внутреннюю игру) В дальнейшем, если ваш алгоритм работает хорошо, вы можете заменить некоторые части вашей программы ИИ на обработку изображений, тем самым грубо достигнув своей цели, например, если вы можете заставить что-то работать достаточно хорошо, вы можете попытаться усложнить вашу проблему и замените контролируемые процедуры и данные игры памяти неконтролируемыми алгоритмами машинного обучения на скриншотах.
Удачи, и если это сработает, обязательно опубликуйте статью, вы наверняка прославитесь решением такой сложной практической задачи!