Як би ви створили систему машинного навчання грі Angry Birds?


22

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

Це змусило мене замислитися над проблемами розвитку системи машинного навчання, яка б змогла грати Angry Birds. Взаємодія з грою та запуск птахів є тривіальною. Але одне питання, яке у мене було, стосується "будівельних блоків" системи.

Системи машинного навчання, здається, працюють із простими поняттями або розуміють проблему. Це часто кодується як функції, як входи. Отже, здається, що для створення стратегії системі необхідно мати можливість розуміти деякі концепції високого рівня.

Це правда? Також які виклики чи складні складові розвитку такої системи?

Редагувати №1:

Ось кілька уточнень. Отримати 3 зірки є складною проблемою, оскільки вам доведеться максимізувати бали. Це можна зробити двома неексклюзивними способами: 1) Мінімізація кількості використаних птахів (ви отримуєте 10000 балів за кожну невикористану птицю). 2) Максимально знищено скло, дерево та інші предмети. Кожен знищений об’єкт дає вам бали. Можна знищити об'єкти на суму понад 10 000 очок за допомогою однієї птиці.

Ось трохи більше пояснень щодо "концепцій високого рівня". Для того, щоб максимально використати описані вище точки, потрібно використовувати спеціальні сили кожної птиці. Отже, це означає запускати різних птахів з різними траєкторіями, залежно від компонування карти. І, граючи, я розробляю стратегію, яка знищує певні райони з певними птахами в певному порядку.

Схоже, що без розуміння того, як використовувати кожну птицю для знищення певної ділянки, система не змогла навчитися отримувати 3 зірки. Отже, як ти керуєш і кодуєш щось подібне? Як ви гарантуєте, що система може засвоїти ці концепції високого рівня?

Відповіді:


13

Якщо припустити, що ви можете отримати правильні гачки в програмному забезпеченні (або ви працюєте з власним макетом), деякі речі тут будуть легкими, а деякі менш. Думаю, це досить жорстка проблема. Як згадував carlosdc, навчання з посилення (RL) - це одна з можливих шляхів, хоча я не впевнений, що це правильний.

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

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

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

Простір стану та динаміка переходу значно складніші. Щоб правильно моделювати це, нам довелося б знати весь макет карти та фізику гри. Динаміка переходу говорить: "Якщо я перебуваю в стані x і виконую дію y , я приземлюся в стан z ". Ви можете бачити складність цього, по-перше, оскільки складна фізика системи означає, що це буде вкрай складно точно моделювати, а по-друге, так як існує навіть дуже багато можливих результативних станів навіть після першого раунду (320), і це якщо ми припускаємо, що в двигуні фізики немає стохастичності , і я, підозрюючи, що є, зігравши її. Я думаю, що на цьому етапі ти б здався і пішов додому.

Інший підхід - це поводитися з ним так, як це робить людина на самому початку - тобто спроби та помилки. Людина, принаймні для початку, вистрілює практично випадковим чином (хоча і досить сильним, перш ніж відправляти птахів у бік свиней, але це легко можна закодувати), поки не буде знайдено ряд хороших дій. Це більше схоже на багатозбройного бандитаналаштування. "Озброєння" бандитів тут - можливі дії. Алгоритм намагається збалансувати розвідку та експлуатацію, тобто досліджувати простір дій та використовувати хороші дії, коли вони знайдені. Для цього вам не потрібно нічого знати про основну динаміку - вам потрібно знати лише про дії та винагороду. Щоб виконати це повністю, вам доведеться мати руку для кожної можливої ​​дії протягом усіх раундів (наприклад, у вас є 5 птахів * 320 дій = 320 ^ 5 = приблизно 10 ^ 12 дій), тому простір дій дуже великий! Однак ви можете скористатися деякими хитрощами, щоб покращити це, якщо знаєте трохипро державний простір. Наприклад, ви, можливо, могли б виключити дії, які відсилають птицю подалі від свиней, в землю, або не маючи достатньої сили, щоб досягти будь-якої з них. Крім того, вам потрібно досягти 5-ї птиці, лише якщо ви не вбили свиней в попередніх раундах, тому частина дій дій насправді неможлива. Це дещо нагадує підхід, використаний в алгоритмі MoGo , який є комп’ютерною програмою для відтворення Go, заснованої на верхніх межах довіри, застосованих до Trees , - один підхід до вирішення проблеми багатогранної бандити.


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

Спроба моделювати динаміку - це зовсім інше (і складне) питання. Я думаю, що для цього обговорення ми повинні припустити, що ми маємо доступ до вихідного коду і можемо точно отримати інформацію про стан. Також функція винагороди полягає не лише в тому, скільки свиней ви вбиваєте. Щоб отримати 3 зірки на рівні, вам доведеться зробити щось складніше. Дивіться правки для запитання.
B Сім

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

8

Класне питання!

Схоже, це питання стосується природної техніки для такого типу проблем. Я думаю, що природним прийомом для цього типу проблем є підкріплення навчання (RL). RL - це про те, як агент повинен вживати дій в оточенні, щоб максимізувати поняття накопичувальної винагороди. Мабуть, найвідомішим алгоритмом RL є Q-навчання . Я думаю, що це перше питання на цьому веб-сайті про посилення навчання.

Я думаю, що те, що ви запитуєте, вірно, якщо ви намагаєтесь підходити до цього як до класифікації / регресії, але це не здається правильним інструментом для цієї проблеми. Це, природно, проблема RL, коли послідовність дій та результатів потрібно враховувати.


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.