Алгоритм Машинного Обучения Flappy Bird

Я познакомлю вас с полной Учебное пособие по HTML5 от демо до алгоритм машинного обучения видео игра Flappy Bird .

Цель этого эксперимента — написать игровой контроллер.

искусственный интеллект основанный на нейронные сети И генетический алгоритм .

То есть мы хотим создать робота с искусственным интеллектом, который сможет научиться оптимально играть в Flappy Bird. В результате наша птичка сможет безопасно летать через препятствия.

В лучшем случае она никогда не умрет. Прочитав теорию, лежащую в основе этого проекта, вы можете скачать исходный код в конце этого руководства.

Весь код написан на HTML5 с использованием Фреймворк Фазера .

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



Демо

Сначала посмотрите демо, чтобы оценить алгоритм в действии:

Алгоритм машинного обучения Flappy Bird

Запустить в полноэкранном режиме

Видео презентация

Помимо демо, вы можете посмотреть короткое видео с простым объяснением алгоритма.

Понравится тем, кто любит быстро получать информацию!

Что такое «алгоритм машинного обучения»

Как сформулировал Артур Сэмюэл в 1959 году, машинное обучение — это способ заставить компьютеры работать без явного программирования.

В общем, это процесс тонкой настройки обучения, который постепенно улучшает исходную случайную систему.

То есть цель здесь — создать искусственный интеллект, который сможет найти правильное решение из плохой системы путем тонкой настройки параметров модели.

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

Конкретно в этом проекте основной подход к алгоритму машинного обучения (МО) основан на нейроэволюции.

Эта форма машинного обучения использует эволюционные алгоритмы, такие как генетический алгоритм (ГА), для обучения искусственных нейронных сетей (ИНС).

То есть в нашем случае можно сказать, что ML = GA + ANN.

Искусственная нейронная сеть

Искусственная нейронная сеть — это подмножество алгоритма машинного обучения.

Он основан на структуре и функциях биологических нейронных сетей.

Эти сети создаются из множества нейронов, передающих сигналы друг другу.

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

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

В каждом слое имеется несколько нейронов.

Входные и выходные нейроны напрямую связаны с внешней средой.

Между ними соединяются скрытые нейроны.

В этом проекте каждый объект (птица) имеет свою нейронную сеть, которая используется в качестве ИИ-мозга для завершения игры.

Он состоит из следующих трех слоев:

  1. входной слой с двумя нейронами представляет то, что видит птица:
    • горизонтальное расстояние до ближайшего зазора
    • разница высот с ближайшим интервалом
  2. скрытый слой с шестью нейронами
  3. выходной слой с одним нейроном, создающим действие:
    • если выход > 0,5, то делайте рывок, иначе ничего не делайте
На рисунке ниже показана архитектура нейронной сети для этого примера:

Алгоритм машинного обучения Flappy Bird



Генетический алгоритм

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

Генетический алгоритм — это метод оптимизации на основе поиска, который воспроизводит естественный отбор и генетику.

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

Вот основные этапы реализации нашего генетического алгоритма:

  1. создать начальную популяцию из 10 объектов (птиц) с случайные нейронные сети
  2. позволить всем объектам играть одновременно, используя свои собственные нейронные сети
  3. Для каждого объекта вычисляем его функцию фитнес оценить его качество (подробнее см.

    раздел Фитнес-функция )

  4. после смерти всех объектов мы оцениваем текущее поколение для создания нового с помощью генетических операторов (подробнее см.

    раздел Стратегия замены )

  5. вернемся к этапу 2


Фитнес-функция

Помимо генетического алгоритма (шаг 3), здесь мы подробнее рассмотрим функцию приспособленности — что это такое и как ее определить.

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

В общем, функция приспособленности — это метрика, измеряющая качество объекта.

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

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

Кроме того, мы наказываем ее в соответствии с текущим расстоянием до ближайшего разрыва.

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

Подведем итог: наша фитнес-функция — это разница между общим расстоянием, пройденным птицей, и текущим расстоянием до ближайшего промежутка.



Алгоритм машинного обучения Flappy Bird



Стратегия замены

Помимо генетического алгоритма (шаг 4), здесь приведены шаги по применению естественной эволюции к умирающему поколению.

По сути, лучшие объекты выживают, а их потомки заменяют худшие объекты следующим образом:

  1. сортируем объекты текущего поколения по уровню их приспособленности
  2. мы выбираем четыре лучших объекта (победителя) и передаем их непосредственно следующему поколению
  3. создать одного ребенка в результате скрещивания двух лучших победителей
  4. мы создаем трех потомков в результате скрещивания двух случайных победителей
  5. создать двух детей как прямые копии двух случайных победителей
  6. Мы применяем случайные мутации к каждому потомку, чтобы добавить изменчивость.



Источник

И, наконец, вот ссылка для скачивания исходного кода: https://github.com/ssusnic/Machine-Learning-Flappy-Bird

Алгоритм машинного обучения для Flappy Bird – заключение

В этом уроке мы успешно реализовали робота с искусственным интеллектом для обучения игре в Flappy Bird. После нескольких итераций мы можем получить почти неуязвимого игрока.

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

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

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

Кроме того, вы можете попробовать изменить фитнес-функции.

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

Попробуйте тот же подход к эволюции и в других играх.

Теги: #машинное обучение #Машинное обучение #нейронные сети #нейронные сети #генетические алгоритмы #генетические алгоритмы #Разработка игр #Алгоритмы #Машинное обучение

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

Автор Статьи


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

Dima Manisha

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