После игры слишком много Angry Birds я начал наблюдать за своими собственными стратегиями. Оказывается, я разработал очень специфический подход к получению 3 звезд на каждом уровне.
Это заставило меня задуматься о проблемах разработки системы машинного обучения, которая могла бы играть в Angry Birds. Взаимодействие с игрой и запуск птиц является тривиальным. Но один вопрос, который у меня возник, касается «строительных блоков» системы.
Системы машинного обучения, кажется, работают с простыми понятиями или пониманием проблемы. Это часто кодируется как функции в качестве входных данных. Таким образом, кажется, что система должна иметь способность понимать некоторые концепции высокого уровня для генерации стратегии.
Это правда? Кроме того, каковы проблемы или сложные части разработки такой системы?
РЕДАКТИРОВАНИЕ № 1:
Вот некоторые уточнения. Получить 3 звезды - сложная проблема, потому что вам нужно максимизировать количество баллов. Это можно сделать двумя неисключительными способами: 1) Минимизировать количество используемых птиц (вы получаете 10000 очков за каждую неиспользованную птицу). 2) Максимальное разрушение стекла, дерева и других предметов. Каждый уничтоженный объект дает вам очки. Одной птицей можно уничтожить объекты стоимостью более 10000 очков.
Вот немного больше объяснения о «концепциях высокого уровня». Чтобы максимизировать очки, описанные выше, вам нужно использовать особые способности каждой птицы. Таким образом, это означает запуск разных птиц с разными траекториями, в зависимости от расположения карты. И во время игры я разрабатываю стратегию, которая уничтожает определенные области с определенными птицами в определенном порядке.
Кажется, что без понимания того, как использовать каждую птицу для уничтожения определенной области, система не могла бы научиться получать 3 звезды. Итак, как вы управляете и кодируете что-то подобное? Как вы гарантируете, что система сможет изучить эти концепции высокого уровня?
Классный вопрос!
Кажется, что этот вопрос о естественной технике для этого типа проблемы. Я думаю, что естественная техника для этого типа проблемы - обучение с подкреплением (RL). RL о том, как агент должен предпринимать действия в среде, чтобы максимизировать некоторое представление о совокупном вознаграждении. Возможно, самый известный алгоритм для RL - Q-learning . Я думаю, что это первый вопрос на этом сайте об обучении подкреплению.
Я думаю, что вы спрашиваете, правда, если вы пытаетесь рассматривать это как классификацию / регрессию, но они не кажутся подходящим инструментом для решения этой проблемы. Это, естественно, проблема РС, когда необходимо принимать во внимание последовательность действий и результатов.
источник
Посмотрите, как другие это делают или участвуйте сами: Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html
источник
только что упомянул это в мета. Коза применил новаторское использование генетических алгоритмов для решения видеоигры Pacman. он построил алгоритмические примитивы, которые могли бы чувствовать и действовать. насколько я помню, они были объединены в Lisp-подобные деревья для создания более крупных алгоритмов. Пересечение с деревьями Лисп включает в себя замену или обмен поддеревьев, которые представляют выражения алгоритма. функция успеха - это что-то вроде «съеденные точки» или «съеденные точки плюс привидения» или «время осталось живым». в этой области еще есть работа. в этой статье есть ссылка на козу. время обучения может быть очень продолжительным, а «сближение» - очень постепенным для подобных проблем.
Научиться играть в Pac-Man: эволюционный подход, основанный на правилах , Галлахер и Райан
источник