К сожалению в статье не хватает видео процесса, было бы интересно посмотреть на развитие змеек. Раз я вдохновил автора поста на эксперимент, то покажу, как змейки обучаются посредством естественного отбора в моём варианте. У меня используется линейный классификатор и змейка видит поле 11*11 клеток
Есть несколько моментов, которые сбивают с толку.
Первая картинка (анимация) после «Что такое Метод Обратного Распространения (МОР)?» показывает совсем другие формулы. При вычислении ошибки там не умножают на производную. Умножение на производную происходит при коррекции весов, при этом результат будет уже другим.
И такая строчка
«Запомните, что после подсчета дельты нейрона мы обязаны сразу обновить веса всех исходящих синапсов этого нейрона. Так как в случае с O1 их нет, мы переходим к нейронам скрытого уровня ...»
Вроде, зная дельту нейрона, мы можем обновить веса не исходящих, а входящих синапсов этого нейрона, в случае О1 они есть и их можно обновить.
Когда то экспериментировал с передачей данных с планшета на микроконтроллер через экран.
На планшете мигают два квадратика. Один задаёт такт, другой передаёт биты. www.youtube.com/watch?v=RbQw6dTKIl0
Удивлю Вас ещё больше. Проект написан на планшете, с использованием небольшого интерпретатора Pixilang. Пытался чем-то заполнить свободное время на работе.
Дело в том, что я ничего закладывать не хочу, пусть само появиться. Хотя, конечно, можно ввести такую команду. Сейчас бот может, даже в течении одного хода, посмотреть по всем 8 направлениям и шагнуть в первое попавшее пустое место. Что бы сравнивать направления, нужна память, которой сейчас у бота нет. В следующей версии я запланировал регистры и операции с ними. Вот тогда и может сформироваться оценка лучшего направления.
Суть в том, что я не учу их делать что то. Естественный отбор оставляет тех, кто смог собрать больше энергии и оставить больше жизнеспособного потомства. Как они это делают и к чему стремятся, я уже не решаю.
А что сделать со связями? Под топологией я понимаю не только количество нейронов, но и как они связанны друг с другом. В любом случае, это сложней, чем изначально заданная сеть
Количество команд и размер генома невелики, так что вероятность не такая уж низкая. В начале, через несколько десятков тысяч ходов, мир меняется кардинально. Затем скорость эволюции начинает снижаться. Для подобных алгоритмов нужны масштабы и время, так как это по сути перебор разных вариантов, хоть и оптимизированный.
У меня тоже не прописано, что нужно идти к еде. Те кто к еде не идёт, умирали не оставив потомства, а у тех, кто родился у выживших, это в геноме записано.
Запускать два разных генома не пробовал. Колонии и сейчас различаются. В следующем проекте, надеюсь масштабы мира позволят колониям долго развиваться в естественной изоляции друг от друга, что бы различия были более явными. Плюс расширенный состав команд и больший размер генома будут способствовать этому.
Я думал об этом. Даже последний мой эксперимент касался обучение простейшей нейросети посредством естественного отбора.
(некоторые утверждают, что у меня не нейросеть, а линейный классификатор )
Но подбирались веса, а не топология. С изменяющейся топологией было бы куда интересней. Может быть потом решусь реализовать это.
Любой процессор определяет список команд и ничего нового выполнить не может.
Любой язык определяет список доступных команд и ничего нового на нем не напишешь, кроме того, что было заложено создателем языка. (нет)
Обучаем нейросеть играть в «Змейку» и пишем сервер для соревнований
Нейронные сети для начинающих. Часть 2
Первая картинка (анимация) после «Что такое Метод Обратного Распространения (МОР)?» показывает совсем другие формулы. При вычислении ошибки там не умножают на производную. Умножение на производную происходит при коррекции весов, при этом результат будет уже другим.
И такая строчка
«Запомните, что после подсчета дельты нейрона мы обязаны сразу обновить веса всех исходящих синапсов этого нейрона. Так как в случае с O1 их нет, мы переходим к нейронам скрытого уровня ...»
Вроде, зная дельту нейрона, мы можем обновить веса не исходящих, а входящих синапсов этого нейрона, в случае О1 они есть и их можно обновить.
Создание «искусственной жизни» на компьютере
Смартфон управляет игрушечным автомобилем
На планшете мигают два квадратика. Один задаёт такт, другой передаёт биты.
www.youtube.com/watch?v=RbQw6dTKIl0
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Создание «искусственной жизни» на компьютере
Запускать два разных генома не пробовал. Колонии и сейчас различаются. В следующем проекте, надеюсь масштабы мира позволят колониям долго развиваться в естественной изоляции друг от друга, что бы различия были более явными. Плюс расширенный состав команд и больший размер генома будут способствовать этому.
Создание «искусственной жизни» на компьютере
(некоторые утверждают, что у меня не нейросеть, а линейный классификатор )
Но подбирались веса, а не топология. С изменяющейся топологией было бы куда интересней. Может быть потом решусь реализовать это.
Создание «искусственной жизни» на компьютере
Любой язык определяет список доступных команд и ничего нового на нем не напишешь, кроме того, что было заложено создателем языка. (нет)
Создание «искусственной жизни» на компьютере