Нейронная сеть учится играть в Марио


Используя эволюционный алгоритм, нейронная сеть научилась играть в компьютерную игру Марио.

Нейронная сеть, получает на свой вход небольшое графическое изображение, которое представляет собой спрайт из игрового окна.
Далее, входной сигнал проходит через ряд искусственных нейронов, и преобразуется в команды для контроллера — нажатие клавиш управляющих движением Марио.
Таким образом, используется очень простая нейронная сеть, состоящая менее чем из десятка нейронов – которая со временем, становится способна выполнить даже такую сложную задачу, как провести Марио через весь игровой уровень.

Для обучения нейронной сети и настройки весов связей между нейронами, в данном случае, используется эволюционный (генетический) алгоритм.
Этот алгоритм, сначала генерирует несколько случайных нейронных сетей, которые затем «эволюционируют». Целевой (фитнес-) функцией, в данном случае выступает как далеко и как быстро Марио проходит игровой уровень.
Лучшие сети каждого поколения объединяются, и процесс продолжается для следующего поколения.
Потребовалось всего 34 поколения, чтобы Марио смог пройти уровень до конца.

Ссылки
исходный код
статья о «NEAT» (NeuroEvolution of Augmenting Topologies) — Kenneth O. Stanley, Risto Miikkulainen — Evolving Neural Networks through Augmenting Topologies (PDF)

UPD 2016-07-18
NEATNeuroEvolution of Augmenting Topologies
http://nn.cs.utexas.edu/?neat
http://www.cs.ucf.edu/~kstanley/neat.html

По теме
Нейронная сеть — введение
Принцип обучения многослойной нейронной сети с помощью алгоритма обратного распространения
Пример работы самоорганизующейся инкрементной нейронной сети SOINN
RC-машинка управляется нейронной сетью


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна конкурс манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение