Нейроэволюционный Алгоритм Учится Играть В Марио



Нейроэволюционный алгоритм учится играть в Марио

СетБлинг известен своим
канал , где он публикует различные советы и изобретения для мира Майнкрафт. Часто там появляется другой контент. Например, в списке интересов видеоблогера есть Марио.

Именно СетБлинг был первым прошедший Super Mario World на консоли использует ошибку с редактированием памяти путем перемещения объектов в игре.

Его последние видео и стримы по-прежнему показывают ту же игру.

Но играет уже не человек, а нейроэволюционный алгоритм, который написал сам СетБлинг.

Реализация называется MarI/O. Графическое представление нейронной сети находится в верхней части экрана.

Слева показано, как алгоритм видит уровень — он понимает окружение и положение игрока.

Белые квадраты — это блоки, на которых может стоять игрок, чёрные — движущиеся объекты.

Справа расположены кнопки, которые может нажимать нейросеть.

Нейронные связи расположены посередине, в каждый момент времени используется только часть из них.

Структура сложная, но SethBling не создавал нейросеть.

Это была его реализация нейроэволюционного алгоритма.

Программа пыталась выполнить действия, затем их эффективность оценивалась по пройденному расстоянию.

Обучение заняло день.

Нулевое поколение было очень глупым, некоторые особи просто стояли на месте.

Если игрок стоял слишком долго, симуляция закончилась.

Некоторые научились двигаться вперед, не обращая внимания на наличие препятствий и врагов.

Это приводило к встречам с врагами и пулям, но хоть какой-то прогресс был.



Нейроэволюционный алгоритм учится играть в Марио

Один из особей нулевого поколения.

Зеленая линия – положительная связь.

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

Красная линия отрицательна, а выходной сигнал имеет цвет, противоположный полученному.



Нейроэволюционный алгоритм учится играть в Марио

Столкнувшись с несколькими врагами над головой, игрок несколько раз прыгает и оказывается на платформе, заканчивающейся скалой.

Поскольку в нужном месте блока уже нет, этот индивидуум останавливается здесь.

У более сложных и, возможно, более успешных особей нейронов больше, но принцип работы остается прежним.

Чтобы заставить нейронную сеть учиться, используется отбор.

Результативность каждого человека оценивается по пройденному расстоянию и скорости.

Только наиболее продуктивные особи скрещиваются в следующее поколение, затем происходят мутации.

Процесс повторяется необходимое количество раз.

Чтобы пройти один уровень, потребовалось 35 поколений.

Самый совершенный индивидуум получил показатель пригодности около 4000.

Нейроэволюционный алгоритм учится играть в Марио

SethBling не придумал принцип работы с нуля.

При его создании он использовал уже существующую научная работа согласно NEAT (NeuroEvolution of Augmenting Topologies), нейроэволюция возрастающих топологий.

Он также описывает, как поколения могут быть разделены на виды, что пытаются сделать не все генетические алгоритмы.

MarI/O был написан на Lua с использованием эмулятора.

БизХок .



Нейроэволюционный алгоритм учится играть в Марио

СетБлинг не остановился на достигнутом.

Он заставлял алгоритм завершать другие платформеры, транслируя процесс обучения на своем аккаунте Twitch. Среди игр были классические Super Mario Brothers. MarI/O смогла пройти первый уровень, но застопорилась на втором.

Даже несмотря на сбой, алгоритм случайно обнаружил небольшую ошибку, которая потенциально может быть полезна спидраннерам.

Некоторые люди застряли на одной из стен на уровне Donut Plains 4 в Super Mario World. Потребовалось некоторое время, чтобы понять, что нужно бежать на стену, не нужно на нее прыгать.

Следующее поколение уже умело бежать по стене, но на следующем препятствии особи застопорились — они разучились прыгать перед препятствием.

Спустя еще несколько поколений алгоритм понял, где нажать кнопку слева и куда прыгнуть.



Нейроэволюционный алгоритм учится играть в Марио

MarI/O так и не смогла пройти этот уровень.

Одна из труб слишком высока, чтобы на нее можно было запрыгнуть.

Вместо этого вам нужно использовать платформу одного из Братьев Хаммер.

СетБлинг прервал процесс обучения, полагая, что алгоритм никогда не научится.



Нейроэволюционный алгоритм учится играть в Марио

В третьем видео MarI/O играет в Super Mario Kart в режиме Time Trial без врагов.

Winterbunny помог модифицировать сценарий для работы в этой игре.

Хотя Super Mario Kart отличается от платформеров, кривая обучения у них такая же.

В начале алгоритм глуп и не может выполнять никаких действий.

Люди просто пытаются нажать определенные кнопки.

Но даже в нулевом поколении были личности, которые научились хорошо ездить.

Уже в седьмом поколении была найдена особь, проехавшая 5 кругов за 2,5 минуты.

Этот показатель плохой, мировой рекорд составляет около минуты.

Индивид постоянно натыкался на препятствия и иногда бегал кругами.

Особь девятого поколения показала хороший результат — 1,5 минуты; она даже старалась оставаться на дороге, не сходя на обочину.

Исходный код MarI/O на Pastebin Еще один канал Twitch, где MarI/O учится побеждать в различных играх.

Теги: #игры #Популярная наука #Игры и игровые приставки #видео #искусственный интеллект #нейронные сети #Марио #нейроэволюционные алгоритмы #SethBling

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.