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