искусственный интеллект играет в майнкрафт
Эксперименты с искусственным интеллектом в Minecraft
11 April 2016 | Пресс-Центр
В июле этого года ученые-исследователи и даже любители смогут оценить и принять участие в совершенствовании программного обеспечения для обучающихся систем и искусственного интеллекта, создавая свои виртуальные ландшафты Minecraft.
По словам исследователей Microsoft Research, работающих над проектом Malmo, Minecraft обладает более «изощренными» возможностями по сравнению с эмуляторами ИИ, а затраты на адаптацию игры для применения в эксперименте меньше, чем на другие аналогичные разработки.
Один из экспертов подчеркивает, что у игры огромный потенциал. «Это исключительно передовое решение, – говорит профессор Хосе Хернандес-Оралло из Технического университета Валенсии, участник одной из небольших групп исследователей, которые первыми получили доступ к экспериментальному ПО. – Ничего подобного сейчас больше нет. Учитывая, что это только начало, у системы огромные перспективы».
Чтобы принять участие в эксперименте, пользователи должны установить AIX – взаимодействующую с Minecraft программную платформу, которая позволяет коду ИИ управлять персонажем и оценивать результаты его действий. AIX является программой с открытым исходным кодом, следовательно стоимость участия – это всего лишь цена стандартной лицензии на игру.
Эксперимент будет проводиться на компьютерах исследователей, «отгороженных» от прочих игроков. При этом экспериментаторы смогут изменять код программы.
«Люди создают в Minecraft невиданные конструкции с удивительными возможностями, что позволит экспериментаторам повысить потенциал модулей ИИ, – объясняет Катя Хофманн (Katja Hofmann), руководитель проекта Malmo в лаборатории MSR в Кембридже. – А со временем мы сможем пойти еще дальше и добавить задачи, которые позволят агентам ИИ учиться помогать людям, расширяя их творческие возможности. Это позволит нам в ближайшие десятилетия достичь нашей цели: поднять ИИ с нынешнего уровня до уровня, близкого к человеческому интеллекту».
Своими глазами
Играть в видеоигры программы с элементами ИИ научили уже давно. Но в данном случае Microsoft стремится использовать такую особенность Minecraft, как открытость. Она даст ИИ возможность «увидеть» происходящее в игре от первого лица.
«Это позволяет нам реализовать «персонализированный ИИ, – говорит Мэтью Джонсон (Matthew Johnson), ведущий программист проекта AIX. – Иными словами, в нашем случае ИИ не наблюдает за своим аватаром извне, а как бы находится внутри и видит происходящее глазами одной из сущностей, живущей в игровом мире. Мы считаем, что это важный шаг к моделированию общего интеллекта».
Исследователи предполагают, что одним из главных направлений их работы станет обучение методом проб и ошибок, при котором агент ИИ не просто выполняет инструкции, а обучается находить оптимальные решения задач, основываясь на предыдущем опыте и расширяя его в процессе взаимодействия со средой.
Этот подход использует программа AlphaGo, которая недавно обыграла одного из лучших игроков в го, предварительно проведя тысячи состязаний с самой собой, обучаясь новым стратегиям.
В Microsoft считают, что Minecraft предоставляет более широкие возможности для развития ИИ по сравнению с обучением конкретной игре.
«Экспериментаторы должны задействовать такие элементы игры, как лава, которая представляет особую опасность для агента-игрока, и оценить темп, в котором он научится распознавать объекты окружающей среды, – рассказала Катя Хофманн в интервью BBC. – Но платформа открыта и для более общих исследований ИИ, например, в агенты можно добавить языковые и зрительные функции. Мы рассматриваем нашу работу как первый шаг в развитии технологии, которая будет применяться при построении роботов, а сейчас же мы имеем возможность проверить ее в безопасной, полностью контролируемой среде, с минимальными затратами».
Основы ИИ
В MSR подчеркивают: несмотря на то, что платформа AIX ориентирована на специалистов в области ИИ, она также позволит создавать простые программы даже детям, и со временем на AIX выйдут разнообразные учебные материалы.
«Мы хотим привлечь к эксперименту людей разного возраста с различным менталитетом», – говорит Джонсон. А профессор Хосе Хернандес-Оралло поясняет идею: «Дети будут создавать агенты в своих любимых мирах и играть с ними. Это повысит интерес к искусственному интеллекту, и мы рассчитываем на то, что в ближайшие 10-20 лет все больше людей будут работать в этой област
Искусственный интеллект для Minecraft или что такое Malmo?
В марте я уже писал о том, что Microsoft использует Minecraft в качестве полигона для тестирования и обучения собственной системы искусственного интеллекта. Теперь этот проект вышел в публичную область и пробовать его в работе может каждый.
Разработчики рассказывают, что системы ИИ, используемые в настоящее время, служат для понимания или перевода человеческой речи, распознавания лиц и создания собственного текста. Однако конечная цель разработки подобных систем — это создание «сложного искусственного интеллекта» — системы, способной обучаться и принимать решения на основе собственного опыта.
И с этой точки зрения Minecraft оказался идеальным полем: практически бесконечный мир, в котором есть и опасности и огромные возможности для созидания. Почему упрощенной модели мира не стать областью, в которой будет жить и обучаться искусственный интеллект?
Проект, получил название Malmo (название скорее всего происходит от названия крупного шведского города, ведь сам Майнкрафт тоже родом из Швеции) и его уже можно скачать и попытаться использовать. Правда, для того чтобы установить систему искусственного интеллекта для Майнкрафта, придётся немного напрячь свой собственный.
Как установить Malmo
Вот так выяснилось, что Malmo — это мод для Minecraft 1.8
Как пользоваться Malmo
Теперь самое время попробовать систему в действии. Поскольку в комплекте поставляются скрипты для Malmo сразу на нескольких языках программирования, то можно воспользоваться ими. Я обращусь к модулю на Java, но думаю суть будет та же.
Итак, в первую очередь надо запустить Malmo (т.е. запустить launchClient.bat). Ну а потом запускать модуль JavaExamples_run_mission.
Делается это командой (я создал небольшой бат-файл):
Правда, при этом у меня возникли проблемы с тем, что библиотек MalmoJava.dll, расположенная тут же в папке с примером, оказалась «невидима» для Java. В итоге, я её скопировал в какую-то директорию, которая прописана в переменной PATH и всё запустилось нормально.
Выглядело это так: внезапно окно Майнкрафта уменьшило размера, открылся какой-то мир, и в нём стало происходить какое-то движение персонажа. При этом в консоль писались сообщения, а через какое-то время всё замерло.
Собственно просмотреть это можно тут:
И это всё?!
Ну собственно на этом этапе — это действительно всё. Т.е. в комплекте с Malmo нет готового искусственного интеллекта, который принимал бы за Вас решения, строил бы города, ловил рыбу и охотился на медведей (тем более, что Мальмо отстаёт от обычного майнкрафт и работает на версии 1.8, а не 1.10).
Самое главное, как а я понимаю, — это инструмент, который позволит разработчикам создать систему, которая будет «видеть майнкрафт» как человек. Т.е. для взаимодействия с миром Майнкрафта через Мальмо надо будет опираться на действия вида «посмотреть под ноги, если там что-то похоже на лаву не идти туда», а не обращаться к блокам напрямую, используя их координаты. Отправив команду в чат, надо будет проанализировать написанный в ответ текст и т.п. Ну и самое главное, делать это всё это можно используя ту среду разработки, к которой Вы привыкли.
Конечно, же я могу ошибаться, — я пока ещё не заглядывал в документацию и не пробовал написать свой скрипт для Мальмо. Но я обязательно постараюсь это сделать и тогда расскажу подробнее.
А как же Malmo для Minecraft Pocket Edition?
После того как я скачал Malmo, меня больше всего удивило то, что она основана на Майнкрафте для ПК. Развитие линейки MCPE имеет больший приоритет развития и я сейчас больше верю в более скорое появление официального инструментария для программирования в MCPE, чем в появление обещанного много лет назад PluginAPI для обычного Майнкрафта.
Разработчики регулярно упоминают о разработке такого API (например, об этом говорил Томмазо Кекки в интервью порталу multiplayer.it) и казалось бы логичным, что такой инструмент будет использован в рамках такого проекта как Malmo.
Но этого не произошло. И думаю, реальная причина не в том, что API находится в каком-то зачаточном состоянии (если вообще существует), а в том, что в данном случае Forge оказывается более удобным инструментом, чем «мифическое» API, которое как известно скорее всего будет представлять собой скриптовый движок, который не будет давать возможности обращаться к функциям игры на низком уровне. Удел будущего API — это новые виды блоков или мобов, представляющие собой вариации существующих.
В общем, ждать варианта Malmo для MCPE/MCW10E думаю не стоит.
Программируем в мире Minecraft
Хабр, привет! Пока все обсуждают ИИ в мире Pacman, мы начнем делать свой ИИ в Minecraft с фреймворком Malmo от Microsoft Research. Pacman у нас тоже появится. Если вы любите кубический мир, или вам хотелось бы начать изучать искусственный интеллект, или у вас есть дети, с которыми вы не можете найти общие увлечения, или же вас просто заинтересовала тема – прошу под кат.
В этой статье я постараюсь затронуть несколько тем:
Minecraft: моя предыстория
Я познакомилась с игрушкой, будучи уже студенткой. Это не помешало мне в тот же день отложить все свои личные, рабочие и академические цели, и целиком уйти в кубическую вселенную. Отпустило меня тогда только через месяц, но до сих пор я с радостью захожу иногда побегать часок по любимому миру.
Для меня Minecraft стал продолжением любимой игрушки детства – Lego, исправив ее главный недостаток: постоянную нехватку деталей. Аналог Lego с безлимитными деталями, что может быть лучше.
Изучая сабж, я случайно узнала, что мир Minecraft не ограничивается игрой, мерчем, летсплеями и фан артами. В игре снимают целые сериалы, и – неожиданно – они являются довольно популярными. На мой взгляд, это забавно.
Меня очень обрадовала новость о наличии open source фреймворка для программирования в мире Minecraft. Я твердо уверена, что в будущем в подавляющем числе профессий могут понадобиться базовые навыки программирования. Фреймворк на базе любимой игрушки, на мой взгляд, отличный способ показать ребенку захватывающий мир программирования.
Malmo: основная идея
Фреймворк Malmo был создан совместными усилиями нескольких исследователей, главной целью которых было адаптировать интересный мир к экспериментам в области искусственного интеллекта. Алгоритмов ИИ по-прежнему относительно мало, и все они имеют огромный потенциал для более детального изучения и усовершенствования. Мне очень нравится, что Microsoft создает дополнительную мотивацию к изучению неизведанного.
Технические моменты
Установка
Несмотря на четкое следование инструкции, вы можете столкнуться с целым рядом проблем в процессе установки. Мои проблемы в основном были связаны с тем, что некоторые компоненты у меня уже были поставлены, но версия отличалась. Все проблемы лечатся с помощью всем известного сайта.
Поддержка ОС и языков программирования
Несмотря на смелое заявление о поддержке всех трех популярных ОС, мне показалось, что тестирование было как следует проведено лишь для ОС Windows. Победив проблемы с установкой, ваша головная боль на ОС Windows обещает закончиться. На Linux проблемы, скорее всего, продолжатся, так как поднятый сервер периодически падает, не сообщая причин. Если вы продолжите мои эксперименты – обязательно пишите в комментарях о вашем опыте.
Авторы постарались поддержать большое число популярных языков и сделали обвязки для C#, C++, Lua, Python2 и Java. Я выбрала Python.
Как играть программировать в Malmo
Логику для каждого из человечков вы можете реализовать в коде, а также можно управлять персонажем самостоятельно всем знакомыми клавишами AWSD.
Кроме сервака с клиентом и файла с логикой, мы также имеем xml файл с описанием начального состояния мира. Авторы не настаивают на его существовании, и в своих примерах они часто кладут его в строку и хранят в коде, но, на мой взгляд, удобнее сразу сделать его отдельным файлом, добавляя нужные куски по мере необходимости.
Авторы позаботились о нас и сделали внушительное число примеров, добавив к ним описание.
Мой совет: не пытайтесь начинать с нуля, возьмите за базу первый пример. В нем ничего не происходит, мы просто создаем самый простой плоский мир и присоединяемся к персонажу. В цикле while в конце вы можете по своему усмотрению добавить экшена в происходящее. Например, напишите там:
В xml файле вы можете задать режим игры:
Задайте начальное время, позицию персонажа, кастомизируйте мир: сделайте его плоским или приближенным к реальности.
Вот этот код нарисует вам Пакмана, который поедает шарики и уходит в радужный кратер:
Наконец, в xml можно добавить необходимые координаты для добавления обзора персонажу:
По умолчанию у нас нет возможности осмотреться и получить информацию о ближайших блоках. Тем не менее, мы можем сказать, что хотим знать, что находится вокруг нас. Учтите, что в этом случае нам нужно использовать относительные координаты, отсчитываемые от кубика с ногами героя. В результате выполнения подобной строчки:
Мы получим массив со строками. Каждая строка – это текстовое представление типа одного из кубиков.
Таким образом можно создать ИИ, который исследует мир, ищет что-либо и не умирает по глупым причинам. Простейший вариант без использования машинного обучения я реализовала тут.
Фичи для ИИ
Конечно же, первое, что мне захотелось увидеть для реализации алгоритмов ИИ в malmo – это возможность двигаться дискретно. В вопросе ИИ и так хватает сложностей, и не хочется добавлять ко всему прочему постоянную корректировку направления и скорости движения.
Включаем нужное в xml так:
К сожалению, этого будет недостаточно. Чтобы двигаться дискретно, ваше начальное положение должно быть строго в центре кубика:
Целые координаты поставят вас в пересечение кубов, персонаж откажется двигаться с места, никаких предупреждений и ошибок вы не увидите. В туториале об этом также не предупреждают. Я потратила около 4 часов, чтобы осознать суть проблемы и сделать координаты x и z половинчатыми. (y отвечает за высоту и не играет роли в данной истории).
Кроме этого, исследователи добавили несколько приятных фич для решения задачи обучения с подкреплением (Reinforcement Learning). Алгоритмы этого типа подразумевают постоянное награждение или наказание искусственного интеллекта за те или иные действия. Разработчики продумали этот момент и добавили возможность прописать эти действия/события в xml, избавив код от постоянных одинаковых проверок. Вы также можете задать окончание игры по наступлению некоторого события:
Например, тут мы постоянно чуть-чуть наказываем персонажа за каждый шаг, не увенчавшийся победой; сильно награждаем за победу и наказываем за смерть; наконец, завершаем раунд в случае смерти или выигрыша.
Malmo: вывод
Авторы фреймворка подарили нам потрясающую возможность погрузиться в любимый мир с другой стороны. Malmo пока что находится в бете, во многих ситуациях он… заставляет совершенствовать свои навыки в troubleshooting. Тем не менее, его плюсы перевешивают все его минусы, а тот факт того, что исходники лежат в открытом доступе на github, позволяет нам самостоятельно доделать нужное место или создать issue для исправления критических багов.
Авторы проекта по понятным для меня причинам не упоминают ни в одной из статей возможность обучать детей на основе фреймворка: ребенок вряд ли справится с борьбой с мелкими, но частыми багами. Тем не менее, я уверена, что если родитель поможет своему ребенку и будет программировать вместе с ним, это даст отличные результаты и позволит вам провести время с пользой.
Malmo Challenge: история и результаты
Кроме самого фреймворка, Microsoft также проводил соревнование на базе платформы, названной Malmo Challenge. Оно было призвано побудить ученых и исследователей к работе над коллаборативными алгоритмами. Конкурс стартовал примерно полгода назад, а результаты появились 5 июня.
Суть челленджа в следующем: у нас есть плоский мир, забор сложной формы, внутри загона бегает хрюшка и ходит 2 человека. Наша задача – создать ИИ для одного из персонажей, которых сможет взаимодействовать со вторым, чтобы вместе они загнали хрюшку в замкнутое пространство. Второй персонаж может вести себя рандомно, может управляться человеком, другим ИИ, это может быть даже второй экземпляр вашего собственного ИИ.
При этом, вы можете получить максимальное число очков, поймав хрюшку, или же получить небольшое число очков, прыгнув в лужу сбоку. Вы не получите ничего, если ваш напарник решит прыгнуть в лужу, отказавшись от взаимодействия с вами.
Эта задача в общем виде называется Охота на оленя. Она была сформулирована еще в 18 веке Жан Жаком Руссо. Несмотря на внушительный возраст проблемы, до сих пор неясно, какой алгоритм наиболее эффективно решает поставленную задачу.
Я рада поделиться с вами результатами соревнования. Меня очень удивило распределение мест в турнирной таблице.
Первое место занял проект команды из Великобритании. Авторы трезво оценили сильный недостаток времени, поняли, что они вряд ли успеют адаптировать для задачи сложные существующие алгоритмы. Они выбрали Байесовский вывод для определения типа напарника, а также Марковские цепи для непосредственного игрового процесса. И победили.
Участники, занявшие второе место, решили взять самые сложные из существующих решений, они использовали DNN, Reinforcement learning, DQN, A3C model… И это все не помогло им обойти Байеса и Марковские цепи.
Подытожим статью мыслью о том, что нужно быть проще.
Если вам хочется также попробовать создать свой ИИ, присоединяйтесь к нашему русскоязычному чату про нейронные сети в Telegram. Там вы можете задать интересующие вас вопросы, а также поделиться вашими достижениями.
Видео с моим рассказом о Malmo на встрече Петербургского Python митапа уже появилось на моем канале на Youtube. Там также есть записи других моих лекций и прочая болтовня про IT.
Игрок в Minecraft создал искусственный интеллект на основе игры
Поклонники Minecraft продолжают создавать на основе игры самые невероятные вещи. На этот раз энтузиаст сделал полноценного виртуального собеседника.
На создание Альберта — так игрок под ником Onnowhere назвал своё творение — у его создателя ушёл целый год. Автор модификации рассказал, что давно увлекается изучением языков программирования Java и Python, но, даже имея такие знания, выполнить поставленную задачу было непросто.
Разработка проекта заняла у моддера год, и, несмотря на то что он увлекался созданием искусственного интеллекта с помощью Java и Python, применить свои знания в Minecraft было нелегко. Но Onnowhere подчеркнул, что реализация чат-бота с помощью глиняных и шерстяных блоков принесла ему определённое удовольствие.
При создании Альберта Onnowhere вдохновлялся известным чат-ботом Cleverbot, способным обучаться новым репликам при общении с пользователями. Реализация столь сложной «программы» в Minecraft стала возможной благодаря введению специальных блоков, позволяющих игрокам выполнять базовые консольные команды.
Искусственный интеллект Альберт для Minecraft умеет общаться с игроками и обучаться новым репликам
Поскольку речь идёт о Minecraft, то неудивительно, что «разум» Альберта состоит из сотен глиняных и шерстяных блоков. Его автор заявил, что во время разработки подолгу искал решение появлявшихся проблем и был не уверен, что когда-то завершит задумку. Но ему это удалось.
Microsoft использует Minecraft для улучшения искусственного интеллекта
Инженеры из исследовательского центра Microsoft Research Lab в Нью-Йорке пытаются научить искусственный интеллект таким вещам, как преодолевание препятствий и поиск пути к самой высокой точке виртуального мира. Для этого они используют популярную игру-песочницу Minecraft.
По мнению инженеров Microsoft, игра Minecraft — идеальная среда для обучения искусственного интеллекта как простым, так и комплексным задачам — от простого исследования местности до постройки собственных зданий в группе с другими игроками. В таком применении популярной игры есть смысл, так как разработка отдельной среды, где боты могли бы учиться и исследовать мир,— довольно затратное по ресурсам и времени занятие. А в Minecraft все необходимые компоненты уже готовы. При этом у Microsoft наверняка есть доступ к исходным кодам игры, так как ее создатель — студия Mojang — принадлежит софтверному гиганту.
Все исследования в области искусственного интеллекта инженеров Microsoft Research Lab в итоге будут доступны для обычных людей в виде Project AIX — специальной модификации для Minecraft, которая позволит играть вместе с ботами и способствовать их обучению. Project AIX будет доступен в версии для одноименной игры на платформах Windows, Linux и OS X. С помощью необходимого инструментария в Project AIX энтузиасты смогут программировать ботов для Minecraft на любом языке.