Как нейронные сети используют генетические алгоритмы и обратное распространение в играх?

Я наткнулся на это интересное видео на YouTube о генетических алгоритмах.

Как вы можете видеть на видео, боты учатся драться.
Я уже некоторое время изучаю нейронные сети, и я хотел начать изучать генетические алгоритмы .. Это как-то объединяет и то, и другое.

Как вы комбинируете генетические алгоритмы и нейронные сети для этого?
А также как узнать ошибку в этом случае, которую вы используете для обратного распространения и обновления ваших весов и обучения сети? А также как, по вашему мнению, программа в видео рассчитала свою фитнес-функцию? Я предполагаю, что в программе на видео определенно происходит мутация, но как насчет кроссовера?

Спасибо!


person SSR    schedule 01.01.2016    source источник
comment
Обратное распространение обычно намного лучше, чем генетические алгоритмы в этом контексте.   -  person Untitled123    schedule 01.01.2016
comment
Попробуйте найти хорошее введение в обратное размножение :)   -  person Untitled123    schedule 01.01.2016
comment
Как вы думаете, программа в видео ... Рассчитывала фитнес-функцию?   -  person SSR    schedule 01.01.2016


Ответы (3)


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

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

Например, это видео показывает, как генетические алгоритмы помогают выбрать "лучшее < / em> "Архитектура, чтобы играть в Марио, и у него это очень хорошо получается!" Однако обратите внимание, что если GA выберет архитектуру для очень хорошей игры с Марио на одном уровне, эта архитектура не обязательно будет хорошо работать на следующих уровнях, как показано в другое видео. На мой взгляд, это связано с тем, что и генетические алгоритмы, и обратное распространение имеют тенденцию находить локальные минимумы. Так что впереди еще долгий путь ...

Источники

person Amir    schedule 01.01.2016
comment
Что такое фитнес-функция .. В случае с упомянутым мной видео? - person SSR; 01.01.2016
comment
@SSR Они должны были объяснить это сами, но я предполагаю, что фитнес-функция работает успешно. - person Amir; 02.01.2016
comment
@SSR, обратите внимание, что сегодня используются новые подходы к обучению для игр с использованием нейронных сетей. Одна сантиментальная работа была проведена в прошлом году исследователями vua Google в Лондоне. Вы можете заглянуть в Deep Q Learning, чтобы узнать больше об этом. - person Amir; 02.01.2016
comment
Спасибо .. Но я искал создание игр, в любом случае спасибо за ваш ответ! - person SSR; 02.01.2016

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

Взгляните на этот документ. Там мы предложили алгоритм, называемый нейронной эволюцией, который представляет собой комбинацию нейронных сетей с генетическим алгоритмом, называемым дифференциальной эволюцией. Он используется, чтобы заставить робота-гуманоида обнаруживать человеческие эмоции и взаимодействовать в соответствии с ними. Существует также обширная информация по этому вопросу. Надеюсь, это поможет.

person hoaphumanoid    schedule 01.01.2016

Как для этого совместить генетические алгоритмы и нейронные сети?

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

А также как узнать ошибку в этом случае, которую вы используете для обратного распространения и обновления ваших весов и тренировки сети?

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

Я предлагаю взглянуть на один из самых продвинутых (в настоящее время) генетических алгоритмов - NEAT.

person Mikhailov Valentine    schedule 01.01.2016
comment
Как вы думаете, как была написана программа в видео? Как вы думаете, как он интегрировал генетические алгоритмы и нейронные сети? - person SSR; 01.01.2016
comment
Мне кажется, вы не очень хорошо поняли видео (хотя я его не видел). Эта ссылка может быть полезной ai-junkie.com/ann/evolved/nnt1.html - person Untitled123; 01.01.2016
comment
@SSR Похоже, что для обучения нейронной сети используется генетический алгоритм вместо обратного распространения ошибки. - person Mikhailov Valentine; 01.01.2016
comment
@ Untitled123 Может быть, я думаю, что это обычный многослойный перцептрон, с учителем в качестве некоего универсального алгоритма. - person Mikhailov Valentine; 01.01.2016
comment
Должен признать, не видел видео, ха-ха - person Untitled123; 01.01.2016