Это не нейронная сеть, а обычный генетический алгоритм. Нейронная сеть умеет находить решение аналогичной ситуации на основе ранее полученного опыта (распределения веса персептронов). Тут же просто перебираются комбинации клавиш, пока не получится новый результат. Из поколения выбираются несколько лидеров (кто прошел дальше) и создается новая популяция. И так раз за разом, пока одна из особей не дойдет до конца. По измени что-от на уровне и особь его запорет.
Здесь нейронная сеть + генетический алгоритм. Последний используется для обучения сети вместо какого-нибудь градиентного спуска.
Тогда я, видимо, не понял этого видео. Мне кажется, что тут просто последовательность нажатий клавиш. И каждое новое поколение нажимает на одну случайную клавишу больше. И либо умирает, либо нет. Что анализирует нейронная сеть в этом случае?
Посмотрите исходный код, там видно, что есть и нейронная сеть, и генетический алгоритм для ее обучения. То, что тут используется, называется NEAT: https://en.wikipedia.org/wiki/Neuroevolution_of_augmenting_topologies
Данные с экрана - вход сети, клавиша - выход. Т.е., теоретически, хорошо обученная сеть должна справляться с любым уровнем, не обязательно исходным.
Да, теперь я понял Вас. Действительно, клавиши нажимаются не случайно, а на основании решения нейросети, а генетический алгоритм её обучает. Вы правы!
Только вот получается что только новые нажатия делаются нейросетью - она не пересматривает свои решения для предыдущих поколений. Хотя в идеале после каждой интерации обучения - нужно все нажатия заново рассчитывать.
насколько я понял, пересматривает, иначе бы в самом начале как шел несколько метров ГГ вперед без смерти, так бы и шел в конечном результате при прохождении, но нет, сеть решила что прыгать будет быстрее и он уже прыгал.
Исходник не читал, но поумничаю))
Теоретически. Данная сеть слишком сильно сведена к данному конкретному уровню, просто потому что у них в виде входов - матрица вокруг персонажа. Сеть, возможно, и будет справляться с другими уровнями, но гораздо хуже, чем с исходным. Потому что паттерн входов был все время одинаковый (данный уровень), а значит и весы сетки заточены под него. Особенно если у них есть сенсоры времени, которые будут влиять на весы конкретно под этот уровень. Если бы в процессе обучения давался каждый раз разный уровень, то... не факт, что сетка научилась бы вообще что-то делать.
Если у них есть веселые механизмы сброса весов, то, возможно, справится с любым.
Ну, переучить сеть с паттернов текущего уровня куда быстрее, чем учить для каждого нового уровня (и новых паттернов, чем-то, вероятно, схожих с предыдущими) с нуля, правильно ведь?
Это нейросеть, верно. Но преимущества нейросети сведены на нет. Обычно архитектура НС подразумевает обучение на примерах (back propagation, k-means и т.п.), тут же весь fitness сваливается на плечи ген. алгоритма, а для нейросетей с ростом нейронов/слоёв/точности весов пространство поиска (кол-во возможных вариантов генома) растёт очень (нет, ОЧЕНЬ) быстро.
В общем, хороший пример proof-of-concept. Плохо, если кто-то на этом защитит кандидатскую, а какой-нибудь полугосударственный банк (читаем ниже посты sokoban) влупит кучу бабла на разогрев воздуха суперкомпьютером.
K-means вообще кластеризация, как ей сеть обучать не знаю. А back propagation тоже не идеальный вариант для обучения, т.к. локальные минимумы, и все такое.
Ген.алгоритм - тоже локальные минимумы и всё такое :)
Спасают только конские мутации, но это уже эволюционный алгоритм, не канонъ.
Ген.алги применятюся крайне редко и в совершенно других задачах.
1. В данном случае применять геналг очень расточительно ибо задача проста(опять же идёт тупо обучение простой нейросети).
2. Геналг применяется в крайне сложных задачах с большими вычислительными мощностями(ну пару этажей железа на 1 МегаВатт)
3. Дочитал? :) Генетический алгоритм по своей сути является просто одним из СПОСОБОВ обучения нейросети ;) Это просто АЛГОРИТМ!
P.S. Скорее всего(хочу верить) ты обычный студент и вам такую чушь втирают на лекциях, но лучше всё забудь. Я уже года 3 хочу создать тут длиннопост про нейросети и алгоритмы их обучения, но всё лень :) В англоязычной прессе очень много интересного есть ;)
Посмотрите ссылки под видео, и почитайте что такое NEAT ("NeuroEvolution of Augmenting Topologies (NEAT) is a genetic algorithm for the generation of evolving artificial neural networks"): http://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf
Я видео посмотрел. С нейросетями давно работаю и могу честно заявить как специалист: Там использована даже не нейросеть, а пара(немного утрировал) перцептронов. А на самом сайте просто пытаются втереть дичь лохам с бабками.
Через пару дней попробую пост запилить про нейросети, а то что-то в последнее время появляется много дурости про нейросети и хомяки видят в них Грааль(нет, нейросети не создадут искусственный разум)
Так вы не на видео смотрите, а на исходники, раз специалист: http://pastebin.com/ZZmSNaHX
Нормальная сеть, с входами, выходами и сигмоидом для активации.
Уже не могу спорить. Меня просто бомбит!
Блять, ну почитайте про нейросети и генетические алгоритмы хотябы в вики!
function generateNetwork(genome)
Ой, что это? Не может быть, да это же генерируется нейронная сеть по очередному геному!
А ниже еще кроссовер и мутации, типичные для генетических алгоритмов.
Да у меня вообще никогда небыло курса по нейронным сетям или генетическим алгоритмам. Я судомеханик по образованию :)
Не спорю, что генетический алгоритм - это просто алгоритм. И он может применяться как для обучения сети, так и для решения конечной задачи. Но на видео продемонстрирована работа именно генетического алгортима. Я просто сначала не понял, что нажатия не случайны, а рассчитаны сетью на основе предыдущего опыта.
Генетический алгоритм выбирает из кучи нейросетей, а тут действует одна нейросеть с усложнением!
Так понятнее? Когда работает геналг, то создаётся куча(оххуенная куча!) нейросетей и геалг уже выбирает более живучую! Пожалуйста, изучите хотя бы основы нейросетей(там очень легко и просто). Меня уже бомбит.
Посмотрите внимательнее. Там на видео в верхней строке: "Поколение 24, особь 31" - что наводит нас на мысль, что в одном поколении несколько особой. А значит это всё же генетический алгоритм с выбором самых "живучих" особей.
Ну нет там генетического алгоритма, НЕТ ЕГО ТАМ! Идёт обычное обучение простой нейросети! Там идут только эпохи обучения и всё! Когда идёт обучение сетей с геналгом, то нужны такие вычислительные мощности, что мама-не-горюй! Пацаны решили бабла заработать на богатых лохах и вкинули видео в сеть.
Есть у нас в России "Сбербанк" и они миллионы вкладывают в нейросети(прогнозирование временнЫх рядов, кластерные вычисления...). Банк, блять! Сотни нефти вкладывают! У них есть даже дата-цент есть на базе векторных процессоров с хуевой тучей терафлопсов! А тут в ютуб видяху выкинули школотроны! Почти целый институт математиков и прочих гениев рвут мозги и жопы, что бы создать хотя бы отдалённую модель нейросетей в том числе с геналгом. А вот тут хуяк! В ютуб видео выложили и хомячьё в экстазе! Видео- фуфло ради стрижки бабла с лохов пушистых.
Да что ж у вас так бомбит :) Большие вычислительные мощности нужны для Big Data. Где тут оно? А нет его, тут задача довольно простая. И для решения такой задачи обычного, даже офисного компьютера хватит.
Может поделитесь своим профессиональным опытом? Какие сети и обучающие алгоритмы используете, для каких задач?
она обучается алгоритмом. генетическим алгоритмом. тут есть и эпохи и особи . в геноме особей содержатся связи и веса для нейросети.Судя по всему, функция активации - не сигмоида, ступенчатая фунция. Хоть и простая , но всё же нейросеть. Можно было сделать для её "удобства ввод немного другой - персонаж занимает не центральное положение на экране ввода , если экран будет следить за марио, то сеть будет себя лучше вести на других картах.
так вам на хабр :) там достаточно информации по простым сетям. нейронные сети, в первую очередь, математика, пикабу немного не об этом)
@twolegs можно добавиться к тебе ВК или скайп и мучить вопросами?
Ибо как раз в скором планирую изучать эту тему для своих проектов
Не.. как выяснилось - не примитивный. Ниже есть комментарии о том, что нажатия на случайны, а рассчитаны нейронной сетью на основе анализа данных с экрана.
Идеальный вариант - Хайкин "Нейронные сети". Но там очень математика :) Ещё где-то по сети гуляют лекции Ежова, но там больше о задаче прогнозирования.
тут не просто переблр потому, что ПО получает свелния о своём положении, положении злодеев и среды. И учится принимать решения из своего опыта.
Запустить её на другой уровень- она пройдет его памного быстрее чем в перый раз.
Нейронная сеть должна обучаться, и вот именно случайные нажатия и последствия их похоже ее и обучают.