Создаём мозг для "змейки". Часть1.
HTML-код
- Опубликовано: 22 июл 2018
- Создание простейшего мозга для змейки из классической игры.
Обучение змеек и проведение чемпионата между ними.
Моя группа ВКонтакте electronics_nn
Выражаю благодарность тем, кто поддерживает меня финансами.
Реквизиты для финансовой поддержки можно найти в
/ foo52ru - Наука
Увлекательней чем футбол!
PERESMOTRI 😂
😂👍
Что угодно увлекательнее чем футбол
10:17 "это на аппаратном уровне уберет возможность самоубийства способом 'сходить под себя'" - ржунимагу)
Ну ты просто представь, как змейка попытается сходить под себя.
Да это просто выжгет глаза всем, и сломает логику этого мира.
Но змейка всё ещё сможет съесть себя, хотя для этого ей нужно будет стать длиннее.
@@user-mf6br5iu4l ВыЖЖет, а не выЖГет!
А вы как это скажите, умники блин, чебурек?
@@sannaz3344, это на аппаратном уровне не позволит змейке съесть себя.
Я пришел от overbafera 2019, не оставляй проекты!
Возможно человек не забрасывал канал... Возможно это нейросеть обучалась)
+
+++++
Иван Иванов я тож от овера давайте лайканем видосики
+
волновался за синих больше чем за свои отношения
А что за игра ?
А я за зеленых)
Сделай змейку с глубокой НС, которая видит всё поле и планирует маршрут. Пусть генетический алгоритм подбирает не только веса, но и структуру нейросети (кол-во слоёв и кол-во нейронов). For Science!
Итогом прога сожрёт все ресурсы
@@DimaTiunov да нет, изменение структуры нейросети может быть реализовано с помощью NEAT алгоритма
Сделанно действительно интерессно. Кажется меня никогда не перестанут удивлять похожие вещи в программировании. Жду каждое видео с упоением. У тебя очень интересные эксперименты и идеи.
И я пришел от overbafera 2019, не оставляй проекты пжл
3 часа ночи, что я блять делаю?
То же, что и я))
Генетика, нейронные сети и крутой скринсейвер бонусом)
4 часа о_О
Успокаивает мозг перед сном наверное умным людям или отвлекает нервы или изза любопытности))
развиваешься
нахрен аватарку скоммуниздил?
"Это на аппаратном уровне уберет способность самоубийства способом сходить под себя" xD
Это лучшее, что я видел за этот год)))
Очень интересно рассказано,а ещё класно то что в ролике не только теория как создать змейку,но и практика,чемпионат змеек
Самоубийство методом "сходить под себя". Никогда о таком не слышал, но очень интригующе.
С нетерпением жду вторую часть видео. Автору поклон и уважение
Уникальный годный контент. Спасибо, было очень интересно!
Спасибо! С нетерпением ждал ваших новых экспериментов!
Очень интересно, ждём вторую часть.
Спасибо что показываете все визуально. Так приходит понимание, что такое веса и как они работают. Ниде больше так не увидишь
самый лучший канал по нейростям! СПАСИБО
10:21 сходить под себя :D
Я со смеху чуть не сходил под себя :)))
Смешно
Великолепно, не видел таких подробно объясняющих видео с примером. Очень жду следующие видео. Не мог бы ты выкладывать код, тоже охота по экспериментировать
Вводи дополнительные веса для движущихся змеек. Это позволит научить змейку обходить не только неподвижные объекты, но и преследовать и подрезать врагов, а также зацикливаться в себя )) и обучать лучше через эволюционный алгоритм
А че делать с альтруизмом ? Он выжил тоже а эволюции , а для чего ?
Отличный видео-ролик, наглядно показывающий процесс разработки и обучения нейронных сетей. Огромное спасибо автору за эту непростую работу в создании данного познавательного материала
Хорошо, посмотрел удовольствие получил, лайк поставил.
Спасибо. Мотивирует и заинтересовывает
Я просто кайфую с твоих видосов, пускай и не все понимаю, но ты делаешь все круто!
Спасибо за видео! Жду следующие!
Это лучшее, что я когда либо видел. Чемпионат змеек, чья нейросеть лучше! Бро, продолжай дальше, не забрасывай, за этим стоит будущее)
Как всегда годный контент! Жду новых змеек и искусственную жизнь!
Найс! Очень интересное видео.
Да, это можно назвать нейронкой, хотя там обычно используются float, но здесь они не особо-то и нужны.
Backpropagation и эволюция это все-таки разные вещи, хотя когда ты сам говорил змейке куда идти, это немного напоминало обычный метод обучения нейронок, только обучающие данные не были заранее заготовлены, а создавались в процессе обучения.
Уж не допинг ли тут замешан? :DDDD
КРУТО!
Слушайте я так думаю что вы будете первым кто создаст симуляцию мира.
Сначала генетические алгоритмы, потом мозг для змейки, что будет дальше?
Жду не дождусь нового виде о искусственной жизни (эволюции).
>что будет дальше?
Мир дикого запада
Богдан сооветую уже привыкать быть домашним животным. Потому что скоро foo52ru
Создаст искусственный интеллект и человечество будет домашними животными для этого интеллекта.
Советую прикидываться котиком или собакой, может в будущем ты станешь звездой Ютьюба искусственного интеллекта.
таким задачкам уже более 20 лет... Змеемозг - традиционный челендж для студентов. Ток они не яблоки на время грызут, а головы в прыжке )
Очень интересно смотреть, все больше затягивает эта тема :)
Смотрю на соревнование змеек и меня это умиляет!!!
Примите мои аплодисменты
👏👏👏
Просто вау! Нет слов! Круто!
Не знаю кому как, но мне от каждого видео сносит голову. Дико интересно. Считай, игра в бога. Автору бесконечное спасибо! (Блин спать уже хотел, а тут...)
Очень интересно! Анимация выглядит очень наглядно! Спасибо за интересный контент
Пришел сюда, чтобы не деградировать в трендах.
Я вообще бойкотирую трендовый раздел
Оооооочень крутая подача!!!!
Ниразу не было скучно за время просмотра!!!!
Желаю тебе удачи!
Спасибо!
Супер! Продолжай проекты
А если серьёзно - ты красавчик, очень интересное видео. На ютубе мало таких. Держись на нем!
очень интересно! По началу не понял, как работает мозг змейки, но сейчас понял. Азарт возрастает! кто же победит?..
круто! урок простенький и залипательный, но чувствуется, что серьёзно заморочился, чтобы его записать
Интересно смотреть. Хорошо снимаете
Чертовски интересно!
10:48 Это не ИНС, а *линейный классификатор*, т.к. нет функции нелинейности (функции активации). И это не back propogation. Для BP нужна функция ошибки, чтобы было чего минимизировать, расчет градиентов и т.д.
ступенька чем не функция активации ? и чем не обратная-propagation если приближённая функция потерь показывалась при обучении ?
пруфлинк на функцию "ступенька", плиз =) И вопрос: "ступенька" дифференцируема? А не BP, потому что для BP особая математика нужна, а тут никакой математики, всё на пальцах... Просто чел сделал линейный классификатор и изобрёл для него некий велосипед в качестве адгоритма обучения. И ещё не понятно, во всех ли случаях этот алгоритм имеет сходимость...
пруф (первый в поисковике) - ppt-online.org/278109 , да и в книгах было. сходимость в большом очевидно есть, а в малом - это не обязательно, да и у людей бывают сбои , но это не значит , что их мозг не нейросеть )) да и не линейный классификатор это, ибо функция мозга змейки не является линейным оператором.
Обычно такую функцию называют пороговой. Ок, где у него там ступенька/пороговая функция? Он просто помножает входы на веса и суммирует: 1:40 Никаких функций от результата суммирования не считает. Просто смотрит, где максимум - туда и ходит.
С человеческим мозгом такие примитивы вообще сравнивать некорректно. Даже если бы это была ИНС, сделанная по всем правилам.
Это линейный классификатор, причём "простой и непорочный" :)
ru.wikipedia.org/wiki/%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80
И, кстати, во всех Х функции вида "ступенька" градиент dY/dX равен 0, следовательно, BP работать не будет.
"Просто смотрит, где максимум - туда и ходит. " это и есть порог, причём порог адаптивный.
Ладно,пускай, но однослойный перцептрон так же может быть линейным классификатором - ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD#%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F
Красава, очень интересно!
это просто шикарная теория! на пальцах разжевано, на примерах показано
Я вообще случайно набрел на канал. Очень познавательно! пересматриваю видосы.
Заметил, что выживаемость змейки зависит от дальновидности. Яркий пример, когда змейка запутывается в собственном хвосте.
Годно, интересно возможно обучить змейку предсказывать ситуацию что-бы не давать возможности "самозамкнутся" т.е. делает последовательность после которой она сталкивается сама с собой или препятствием.
Круто, спасибо ))
Класс, однозначно поствлю лайк.
Особенно за коментарит на чемпионате!!!
Хотелось бы услышать про алгоритм отбора самообучаемых змеек =) Однозначно лайк за труд!
В группе вк есть. vk.com/cyberbiology
Генетический алгоритм, там видео старое найдите, такой же принцип
Скорей бы с работы вернуться. Чет ии создать захотелось.
Дружище,ты не гений случайно ? Потому как я думаю,именно гений !
Ты создал точную копию моего мозга
Захватывающие ))
Зрелищно!
Это очень интересно, искал подобные каналы - все в пустую, нашёл ваш, нашёл надежду, не бросайте проект, и на каком языке вы пишите нейронки?
С интересом наблюдаю, как самообучается ваша головная нейросеть )
Интересно посмотреть как ты будешь учить змеек загонять соперников в ловушку ;)
Интереснейшие видосы!!!
скорее бы уже змейки захватили мир! лайк, если тоже ждёшь этого
Круто!!!!))
Как уже заметили, это не является нейронной сетью и методом распространения ошибки. Чтобы это стало нейронной сетью, нужно добавить нелинейность к сумме. Также у вас здесь фактически задача классификации, на выход стоит еще добавить softmax. Чтобы обучить методом обратного распространения ошибки, можно поступить следующим образом. Играйте змейкой сами, как обычно, не по шагам, но на каждом шаге сохраняйте показания сенсоров и ваш выбор. Получите датасет. Можно будет его разделить на обучающую и тестовую выборку (ну а можно и не делать тестовую, просто запускать и оценивать "на глазок"). Затем уже на этом датасете обучите с использованием всего того матана метода обратного распространения ошибки. Можно реализовать самостоятельно, можно воспользоваться готовыми. Хорошая книга: yadi.sk/i/AuHUvb-71GFC1Q
Спасибо за книгу. Посмотрел по диагонали, выглядит сложновато, хотя возможно объяснения будут доступные. Сейчас я читаю "Создаём нейронную сеть" Тарик Рашид.
В свою очередь, Вам тоже спасибо за эту книгу.
круто!
я придумал оптимизацию: змейке можно подавать три расстояние до еды: по направлению движение, слева направления и справа. точно также и с преградами, и еще лучше добавить нейрон смещение, также добавить один или несколько скрытых слоев.
Заряд мотивации
лучший!
Надо добавить еще несколько входных параметров, собственная длина и история собственных движений. И больше обучать при длинном червяке, это должно уменьшить количество самоедства.
Пошаманить со скрытыми слоями, может удастся научить распознавать опасные рисунки и избегать их.
У меня был параметр "история собственных движений"
У одной змейки из команды вычиталось несколько очков в том же направлении, куда был сделан прошлый шаг. Змейка становилась более вертлявой.
У второй змейки прибавлялось несколько очков в прошлом направлении, змейка становилась более прямолинейной.
Третья змейка оставалась без изменений.
Потом убрал это, что бы сохранить простоту.
Собирал статистику, змейки, где происходило прибавление/убавление очков по старому направлению, были чуть результативней на несколько процентов.
Круто
Как написать такую ж программу на C#? имеется ввиду клетки и движения и срабатывания на препятствия или еду
Самый лучший
По-моему улучшения будут только полезны для проекта. Замечательная задумка, кстати!
Как прога называется?
Спс автору за видео
Блин, Я за зеленых болел(((
Автор, Ты - великолепен! =)
Что за программа? Очень интересно!
Прикольно!
Клёво
Стало интересно почему именно 8? Оказывается можно и 12 если квадраты заменить на шестиугольники. Дело в том, что теория групп даёт исчерпывающий ответ, на подобные вопросы, давайте спросим у неё. Нам понадобится понятие порядка группы, порядок группы это просто напросто количество элементов в этой самой группе. Так вот порядок группы самосовмещений квадрата равен 8, откуда следует что порядок группы самосовмещений квадратной сетки равен 8, и уже отсюда следует что можно оптимизировать обучение именно в 8 раз. Если рассмотреть сетку из правильных шестиугольников, то рассуждая подобным образом придём к числу 12. Есть общая формула для порядка группы самосовмещений правильного n-угольника, |G| = 2n.
"Сходить под себя!" - способ самоубийства, хахахааа
*лайк от овера*
А что за программа в видео?
Вполне НС. Ты даже указал до оптимизации 240 входных нейронов, 4 выходных и 960 связей. Скрытого слоя нет.
С методом обучения я так не уверен. Обратное распространение по сути реализовано, но без матана.
Правда, что зеленые змейки могли суицидить не только запутавшись в себе, но и методом "сходить под себя"? В одном моменте показалось, что именно это произошло, было обидно.
Не ожидал, что начнёшь заниматься НС. Был уверен с первых секунд, что будет привычный генетический алгоритм.
ГА будет во второй части
Обучение с учителем.
На входе сигналы 0 или 1. Функция активации - нечто вроде софтмакс (выбирается то направление, значение на котором больше).
Функция ошибки считается от разности между правильным направлением и неверно выбранным змейкой. Матрица коррекции весов равна произведению вектор-столбца сигналов со входа на вектор-строку сигналов ошибки.
Несмотря на такую простоту, поведение змеек выглядит сложным.)
На каком языке делали программу?
Да это нейронная сеть и метод обратной ошибки, но вот насчёт распространения... нету его тут. Слоёв маловато и функция при нейронах должна быть нелинейной, точнее нужна сигмоидальная функция. Ещё слоёв можно добавить и даже нужно.
Пили еще, тебя увидели!
С чего начать чтобы самому сделать такую же? Я не программист.
А где можно скачать эту програмку
прикольно мне видео понравилось
А где ты это делаешь?
Нужно еще ввести термин шаговой доступности или скорректировать термин поля видимости : так как 5 клеток на 5 клеток --- это квадрат , а видимость предпологает радиус равный . ТОгда то и можно ввести термин шаговой доступности . Тоесть 5 шагов . Шаг вверх + 4 шага влево или 3 шага вверх + 2 шага вправо .....и так далее (шаговая доступность :) Что в свою очередь даст параметр - количество шагов до еды . И выбор наименьших затрат (шагов до еды), тоесть выбор еды , но не пути до еды.
Опять же, делал подобное (как и в случае с генетическим алгоритмом). Проект назывался "Микробыш". По полю бегали пиксели, обладающие собственной индивидуальностью: кто-то просто бегал прямолинейно и сворачивал лишь при виде жертвы / финиша, а кто-то был любопытным и старался бегать вдоль стен, заходя в двери и выискивая цель в укромных местах. Также я добавил управление и даже реализовал локальный мультиплеер, забавно было вдвоём прятаться от эдакого искусственного интеллекта) Ну и, разумеется, всякие доп. фишки сделал: редактор карт, сохранение и загрузку карт, управление скоростью симуляции в режиме реального времени и др. Алгоритм, правда, такой себе получился, боты тупенькие, не умеют смотреть диагонально, да и без экранной лупы не поиграешь, но для первого крупного проекта, я считаю, неплохо.
надо бы еще ввести возможность видеть голову противника
круто)
Интересно еще добавить "еде" возможность двигаться, т.е. убегать от змейки. Или сделать несколько видов (цветов) еды, каждый из которых может двигаться со своей скоростью)
А ещё можно добавить еду которая будет убивать змейку при поедании. Так сказать яд.
Но, тогда смерть змейки не будет зависеть от ее "навыков выживания", что "несправедливо")) Фактически, это будет смерть рандомной змейки, что не спортивно.
Поликарп Вайншток
Ну тогда придётся учить змеяк опозновать и избегать ядов))
Я имел ввиду способность змейки выбирать не только направление движения к статичной еде, но и ее разборчивость в пище, которую также можно попытаться прививать разными путями)
Поликарп Вайншток
Ну да хорошая идея.
Идея змейки понравилась, но есть дополнение. Такой алгоритм имеет смысл только для симуляции реальной жизни змеи. Если же мы пытаемся написать алгоритм именно для игры в игру Змейка, то здесь явная неточность. Игрок видит всё поле сразу и на основе этого выстраивает путь змеи. А тут получается змея почти слепая, если видит лишь участок поля.
Самый жоский матч в моей жизни
вот очень обидно когда у таких людей подписоты нет(