ОБНОВЛЕНИЕ 2018-07-26: Вот и все! Сейчас мы приближаемся к тому моменту, когда такая игра станет разрешимой! Используя OpenAI и основанную на игре DotA 2, команда могла бы создать ИИ, который сможет победить полупрофессиональных игроков в игре 5 на 5 . Если вы знакомы с DotA 2, вы знаете, что эта игра очень похожа на Diablo-подобные игры с точки зрения механики, но можно утверждать, что она еще более сложна из-за командной игры.
Как и ожидалось, это было достигнуто благодаря последним достижениям в обучении с подкреплением с помощью глубокого обучения и использованию открытых игровых фреймворков, таких как OpenAI, что упрощает разработку ИИ, поскольку вы получаете аккуратный API, а также потому, что вы можете ускорить игру (ИИ играл эквивалент 180 лет игры против самого себя каждый день!).
5 августа 2018 года (через 10 дней!) Планируется провести этот ИИ против лучших игроков DotA 2. Если это сработает, ожидайте большой революции, возможно, не такой медиатизированной, как решение игры го, но тем не менее это будет огромной вехой для игрового ИИ!
ОБНОВЛЕНИЕ 2017-01: область развивается очень быстро с момента успеха AlphaGo, и почти каждый месяц появляются новые структуры, облегчающие разработку алгоритмов машинного обучения в играх. Вот список последних, которые я нашел:
- OpenAI's Universe : платформа для практически любой игры с использованием машинного обучения . 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 ) .
А теперь, если вы хотите принять вызов следующего уровня, вы можете использовать одну из различных платформ для разработки игр с искусственным интеллектом , такую как ViZDoom , высокооптимизированную платформу (7000 кадров в секунду) для обучения сетей игре в Doom, используя только визуальные входы. :
ViZDoom позволяет разрабатывать AI-ботов, которые играют в Doom, используя только визуальную информацию (экранный буфер). Он в первую очередь предназначен для исследований в области машинного визуального обучения и, в частности, глубокого обучения с подкреплением. ViZDoom основан на ZDoom для обеспечения игровой механики.
И результаты просто потрясающие, смотрите видео на их веб-странице и хороший учебник (на Python) здесь!
Существует также аналогичный проект Quake 3 Arena под названием Quagents , который также обеспечивает простой API-доступ к базовым данным игры, но вы можете отказаться от него и просто использовать снимки экрана и API только для управления своим агентом.
Чем полезна такая платформа, если мы используем только скриншоты? Даже если у вас нет доступа к базовым данным игры, такая платформа предоставляет:
- высокопроизводительная реализация игр (вы можете генерировать больше данных / игр / обучения за меньшее время, чтобы ваши алгоритмы обучения могли сходиться быстрее!).
- простой и отзывчивый API для управления вашими агентами (например, если вы попытаетесь использовать человеческий ввод для управления игрой, некоторые из ваших команд могут быть потеряны, поэтому вы также столкнетесь с ненадежностью ваших выходных данных ...).
- простая настройка нестандартных сценариев .
- настраиваемый рендеринг (может быть полезно для «упрощения» получаемых изображений для облегчения обработки)
- синхронизированная («пошаговая») игра (так что вам не нужно, чтобы ваш алгоритм сначала работал в реальном времени, это значительно снижает сложность).
- дополнительные удобные функции, такие как кроссплатформенная совместимость, ретро-совместимость (вы не рискуете, что ваш бот перестанет работать с игрой при выходе нового обновления игры) и т. д.
Подводя итог, можно сказать, что самое замечательное в этих платформах состоит в том, что они устраняют большую часть предыдущих технических проблем, с которыми вам приходилось иметь дело (как управлять входными данными игры, как настраивать сценарии и т. Д.), Так что вам просто нужно иметь дело с алгоритмом обучения сам.
Итак, приступайте к работе и сделайте нас лучшим визуальным ботом для ИИ;)
Старый пост, описывающий технические проблемы разработки ИИ, полагающегося только на визуальные входы:
В отличие от некоторых моих коллег, упомянутых выше, я не думаю, что эта проблема неразрешима. Но это определенно чертовски сложно!
Первая проблема, как указывалось выше, связана с представлением состояния игры : вы не можете представить полное состояние с помощью всего лишь одного изображения, вам нужно поддерживать какое-то запоминание(здоровье, но также экипированные предметы и предметы, доступные для использования, квесты и цели и т. д.). Получить такую информацию можно двумя способами: либо путем прямого доступа к данным игры, что является наиболее надежным и простым; либо вы можете создать абстрактное представление этой информации, выполнив несколько простых процедур (открыть инвентарь, сделать снимок экрана, извлечь данные). Конечно, при извлечении данных из скриншота вам придется либо ввести некоторую контролируемую процедуру (которую вы полностью определяете), либо неконтролируемую (с помощью алгоритма машинного обучения, но тогда это значительно увеличит сложность ...). Для неконтролируемого машинного обучения вам нужно будет использовать совсем новый тип алгоритмов, называемых алгоритмами структурного обучения (которые изучают структуру данных, а не то, как их классифицировать или прогнозировать значение).http://techtalks.tv/talks/54422/
Затем возникает еще одна проблема: даже когда вы получили все необходимые данные, игру можно наблюдать лишь частично . Таким образом, вам нужно ввести абстрактную модель мира и снабдить ее обработанной информацией из игры, например, местоположением вашего аватара, а также местоположением квестовых предметов, целей и врагов за пределами экрана. Для этого вы можете изучить Mixture Particle Filters от Vermaak 2003.
Кроме того, вам понадобится автономный агент с динамически генерируемыми целями . Хорошо известная архитектура, которую вы можете попробовать, - это агент BDI, но вам, вероятно, придется настроить его, чтобы эта архитектура работала в вашем практическом случае. В качестве альтернативы существует также рекурсивная сеть Петри, которую вы, вероятно, можете комбинировать со всеми видами вариаций сетей Петри для достижения желаемого, поскольку это очень хорошо изученная и гибкая структура с прекрасными процедурами формализации и доказательств.
И, наконец, даже если вы сделаете все вышеперечисленное, вам нужно будет найти способ имитировать игру с ускоренной скоростью (использование видео может быть приятным, но проблема в том, что ваш алгоритм будет только наблюдать без контроля и иметь возможность попробовать на себе очень важно для обучения). В самом деле, хорошо известно, что современный алгоритм требует гораздо больше времени, чтобы изучить то же самое, что и человек (тем более с обучением с подкреплением), поэтому, если он не может ускорить процесс ( то есть, если вы не можете ускорить игровое время), ваш алгоритм даже не сойдется за одну жизнь ...
В заключение, то, что вы хотите достичь здесь, находится на пределе (и, возможно, немного выше) существующих современных алгоритмов . Я думаю, что это возможно, но даже если это так, вы собираетесь потратить чертовски много времени , потому что это не теоретическая проблема, а практическая проблема, к которой вы здесь приближаетесь, и, следовательно, вам нужно реализовать и объединить много различных подходов ИИ для ее решения.
Несколько десятилетий исследований с целой командой, работающей над этим, может быть недостаточно, поэтому, если вы один и работаете над ним неполный рабочий день (поскольку у вас, вероятно, есть работа для жизни), вы можете провести всю жизнь, не дойдя до рабочий раствор.
Поэтому мой самый важный совет заключается в том, чтобы снизить свои ожидания и попытаться уменьшить сложность.решения вашей проблемы, используя всю возможную информацию, и избегайте как можно большего количества снимков экрана (например, пытайтесь подключиться непосредственно к игре, ищите DLL-инъекцию) и упрощайте некоторые проблемы путем реализации контролируемых процедур, не позволяйте вашему Алгоритм изучит все (т. е. сейчас как можно больше откажется от обработки изображений и будет полагаться на внутреннюю игровую информацию, позже, если ваш алгоритм работает хорошо, вы можете заменить некоторые части своей программы ИИ обработкой изображений, тем самым грубо достигнув своей полной цели например, если вы можете заставить что-то работать достаточно хорошо, вы можете попытаться усложнить свою проблему и заменить контролируемые процедуры и данные игры с памятью на неконтролируемые алгоритмы машинного обучения на снимках экрана).
Удачи, и если это сработает, обязательно опубликуйте статью, вы наверняка прославитесь решением такой сложной практической задачи!