Как бы вы разработали систему машинного обучения для игры в Angry Birds?


22

После игры слишком много Angry Birds я начал наблюдать за своими собственными стратегиями. Оказывается, я разработал очень специфический подход к получению 3 звезд на каждом уровне.

Это заставило меня задуматься о проблемах разработки системы машинного обучения, которая могла бы играть в Angry Birds. Взаимодействие с игрой и запуск птиц является тривиальным. Но один вопрос, который у меня возник, касается «строительных блоков» системы.

Системы машинного обучения, кажется, работают с простыми понятиями или пониманием проблемы. Это часто кодируется как функции в качестве входных данных. Таким образом, кажется, что система должна иметь способность понимать некоторые концепции высокого уровня для генерации стратегии.

Это правда? Кроме того, каковы проблемы или сложные части разработки такой системы?

РЕДАКТИРОВАНИЕ № 1:

Вот некоторые уточнения. Получить 3 звезды - сложная проблема, потому что вам нужно максимизировать количество баллов. Это можно сделать двумя неисключительными способами: 1) Минимизировать количество используемых птиц (вы получаете 10000 очков за каждую неиспользованную птицу). 2) Максимальное разрушение стекла, дерева и других предметов. Каждый уничтоженный объект дает вам очки. Одной птицей можно уничтожить объекты стоимостью более 10000 очков.

Вот немного больше объяснения о «концепциях высокого уровня». Чтобы максимизировать очки, описанные выше, вам нужно использовать особые способности каждой птицы. Таким образом, это означает запуск разных птиц с разными траекториями, в зависимости от расположения карты. И во время игры я разрабатываю стратегию, которая уничтожает определенные области с определенными птицами в определенном порядке.

Кажется, что без понимания того, как использовать каждую птицу для уничтожения определенной области, система не могла бы научиться получать 3 звезды. Итак, как вы управляете и кодируете что-то подобное? Как вы гарантируете, что система сможет изучить эти концепции высокого уровня?

Ответы:


13

Предполагая, что вы могли бы правильно подключить программное обеспечение (или вы работаете со своим собственным макетом), некоторые вещи будут простыми, а некоторые - нет. Это довольно сложная проблема, я думаю. Как упомянул Карлосцк, « Обучение подкреплению» - это один из возможных путей, хотя я не уверен, что это правильный путь.

Когда вы начинаете, вы должны определить , что ваше состояние пространство , пространство действий , динамика переходов и функция вознаграждения является. Пространства состояния / действия могут быть непрерывными или дискретными, а динамика перехода может задаваться задачей или моделироваться математически. Наконец, функция вознаграждения может быть задана априори или может быть выбрана (с шумом или без него).

Пространство действия простое: это просто направление и сила, по которой вы стреляете в текущую птицу. Для человека это отдельная проблема (мышь / сенсорный экран - это цифровое устройство ввода) - скажем, (например) есть 32 возможных направления и 10 возможных мощностей, что дает 320 возможных действий.

Функцию вознаграждения также довольно легко получить: цель состоит в том, чтобы избавиться от всех свиней с наименьшим количеством птиц (хорошо, так что есть дополнительные очки для других вещей, но давайте пока проигнорируем это). Лучше всего было бы, если бы мы знали реальную функцию, которая генерирует очки от убийства свиней (зависит от размера свиньи и т. Д. IIRC), но для одного уровня это можно было бы смоделировать идеально.

Пространство состояний и динамика перехода гораздо сложнее. Для того, чтобы смоделировать это правильно, мы должны были бы знать весь макет карты и физику игры. Динамика перехода говорит: «Если я нахожусь в состоянии x, и я выполняю действие y , я попаду в состояние z ». Вы можете увидеть трудность этого, во-первых, поскольку сложная физика системы означает, что это будет чрезвычайно трудно точно моделировать, а во-вторых, поскольку после первого раунда (320) существует так много возможных результирующих состояний, и это мы предполагаем, что в физическом движке нет стохастичности , которая, как я подозреваю, существует. Я думаю, что на этом этапе вы бы сдаться и пойти домой.

Другой подход заключается в том, чтобы относиться к этому так, как это делает человек с самого начала, то есть к методам проб и ошибок. Человек, по крайней мере для начала, стреляет практически беспорядочно (хотя с довольно сильным до того, как отправить птиц к свиньям, но это может быть легко закодировано), пока не будет найден ряд хороших действий. Это больше похоже на многорукого бандитаустановка. «Руки» бандитов здесь - возможные действия. Алгоритм пытается сбалансировать исследование и эксплуатацию - то есть исследовать пространство действий и использовать хорошие действия, когда они найдены. Для этого вам не нужно ничего знать о базовой динамике - вам нужно знать только о действиях и наградах. Чтобы сделать это полностью, вам понадобится рука для каждого возможного действия в течение всех раундов (например, у вас есть 5 птиц * 320 действий = 320 ^ 5 = приблизительно 10 ^ 12 действий), поэтому пространство действий очень велико! Однако вы можете использовать некоторые приемы, чтобы улучшить это, если вы немного знаетео государственном пространстве. Например, вы могли бы, вероятно, исключить действия, которые отсылают птицу от свиней, вглубь или без достаточной силы, чтобы добраться до любой из них. Также вам нужно дойти до 5-й птицы, если вы не убили свиней в предыдущих раундах, так что часть состояний действия фактически невозможна. Это несколько напоминает подход, использованный в алгоритме MoGo , который представляет собой компьютерную программу для игры в Го на основе верхних доверительных границ, примененных к деревьям , один из подходов к решению проблемы многорукого бандита.


1
Отличный ответ! Я думаю, что пространство действий намного больше, чем 320 возможных действий. Каждый пиксель, пройденный по дуге, возможно, 0,7 дюйма (на iPad) от горизонтального левого до вертикального нисходящего, создаст другую траекторию и результат. IPad имеет разрешение 132 т / д, поэтому на выбор можно выбрать около 8000 пикселей. Я не хотел останавливаться на деталях, но меняет ли ответ увеличение пространства действия до 8000? Как вы можете работать с большим пространством для действий?
B 7

Попытка смоделировать динамику - это совершенно другой (и сложный) вопрос. Я думаю, что для этого обсуждения мы должны предположить, что у нас есть доступ к исходному коду и мы можем точно получить информацию о состоянии. Кроме того, функция вознаграждения - это не только количество убитых свиней. Чтобы получить 3 звезды на уровне, вы должны сделать что-то более сложное. Смотрите редактировать на вопрос.
B Семь

@BSeven В принципе нет, большее пространство действий не меняет ответ, хотя вам, возможно, придется сократить время и использовать гораздо больше вычислительных мощностей ;-) Обратите внимание, что это идеальный кандидат для параллельной обработки. Вопрос о звездах сложен, поскольку это подразумевает, что не существует простого картирования от убийств до звезд, хотя я думал, что вы получили больше звезд, просто пересекая пороговые значения точек (обычно это делается с использованием меньшего количества птиц). Если нет, вам придется искусственно увеличить количество исследований, чтобы избежать слишком раннего выбора оптимальных путей.
tdc

8

Классный вопрос!

Кажется, что этот вопрос о естественной технике для этого типа проблемы. Я думаю, что естественная техника для этого типа проблемы - обучение с подкреплением (RL). RL о том, как агент должен предпринимать действия в среде, чтобы максимизировать некоторое представление о совокупном вознаграждении. Возможно, самый известный алгоритм для RL - Q-learning . Я думаю, что это первый вопрос на этом сайте об обучении подкреплению.

Я думаю, что вы спрашиваете, правда, если вы пытаетесь рассматривать это как классификацию / регрессию, но они не кажутся подходящим инструментом для решения этой проблемы. Это, естественно, проблема РС, когда необходимо принимать во внимание последовательность действий и результатов.


5

Посмотрите, как другие это делают или участвуйте сами: Angry Birds AI Challenge http://ai2012.web.cse.unsw.edu.au/abc.html


возможно, вы можете суммировать, о чем эта ссылка и как это относится к вопросу. Как и сейчас, ваш ответ лучше в качестве комментария.
FredrikD

4

только что упомянул это в мета. Коза применил новаторское использование генетических алгоритмов для решения видеоигры Pacman. он построил алгоритмические примитивы, которые могли бы чувствовать и действовать. насколько я помню, они были объединены в Lisp-подобные деревья для создания более крупных алгоритмов. Пересечение с деревьями Лисп включает в себя замену или обмен поддеревьев, которые представляют выражения алгоритма. функция успеха - это что-то вроде «съеденные точки» или «съеденные точки плюс привидения» или «время осталось живым». в этой области еще есть работа. в этой статье есть ссылка на козу. время обучения может быть очень продолжительным, а «сближение» - очень постепенным для подобных проблем.

Научиться играть в Pac-Man: эволюционный подход, основанный на правилах , Галлахер и Райан

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.