Чем меньше информации описывается в гене, тем менее осмысленной будет эволюция. Скажем, если ген - это выполнение какого-то действия в определённой ситуации - это одно, если же ген - это какое-то элементарное действие (например, просто повернуть), получится уже скорее не скрещивание, а рандомизация, положительным признакам будет сложно закрепиться.
@АсельАртыкбаева-и1в10 ай бұрын
Благодарю вас!
@Andrew-tf7rf Жыл бұрын
мой персонаж почему то улетает вверх при состоянии idle
@SweetLemon-zc6bo Жыл бұрын
Крутые видосы! Продолжай!
@usergnusmas6879 Жыл бұрын
Я бы убрал стены, было бы проще и обзор, у змейки, сделал бы на все поле.
@MairanYT Жыл бұрын
А зачем нужна нормализация или инверсия? Просто я вот делал нейронную сеть с овцами и там расстояние и количество объектов так и указывалось: 1, 2, 50, 40, 33 И всё работало нормально
@fourZerglings Жыл бұрын
По моему опыту, нейросети работают лучше всего, когда их веса живут в диапазоне от -1 до +1. Если их не ограничивать, они во время обучения начинают неконтролируемо расти и улетают в бесконечность. Я это в шутку называю «нейросеть взрывается». Есть современные техники, которые борются с этим - Batch Normalization, Layer Normalization. Они измеряют параметры нейросети и сдвигают и масштабируют веса так, чтобы их среднее было 0, а дисперсия 1. Если вы собирали сеть из готовых модулей, подозреваю, что в них уже была встроена нормализация.
@MairanYT Жыл бұрын
@@fourZerglings про величалые весы я знаю, и мысль таким способом регулировать довольно хорошая. Но в видосе же речь про нормализацию входных данных
@fourZerglings Жыл бұрын
Если у узла умножения два входа (x, y), его градиенты умножаются на (y, x). Если один из входов был не нормализован, то он будет влиять на обучение другого входа. То есть из-за не нормированных входов портиться будет вес нейросети. Поэтому нормализовать надо всё.
@sensirexfirst Жыл бұрын
Интересно было бы видео с кратким разбором как работает обучение
@fourZerglings Жыл бұрын
Увы, кратко никак. Тут нужен целый курс лекций или учебник.
@endlessvd Жыл бұрын
Спасибо за видео! Очень интересно и полезно😊
@endlessvd Жыл бұрын
На мой взгляд проще было сделать функцию оценки успешности как сумму 0.001*t+a, где t,a время жизни и яблоки соответственно, тогда змейка будет фокусироваться именно на яблоках больше всего, но и скромный бонус получать за время.
@endlessvd Жыл бұрын
Спасибо за видео, сам сделал перцептрон с произвольным размером слоев и их количеством внутри на С++. Правда проигрался и дальше забросил проект
@КириллМакаричев-п9ю Жыл бұрын
Привет, крутое видео, идея, можно код пожалуйста посмотреть? А то это видео замотивировало в этом поразбираться, но как-то не понимаю нескольких вещей: в интернете нашел deep q learning и просто q learning, как понимаю первый это с использованием ИИ, второй это просто алгоритм перебора всех возможных состояний и нахождение наилучшего результата(надеюсь правильно понял этот момент). Не понимаю как работает награда, типо да это число [-1, 1], показывает ии плохое или хорошее действие, но не понимаю что эта цифра меняет по факту и как ии понимает какую награду ей дали за прошлый шаг, если как ты говоришь у нее в инпутах 24 значения для сенсеров, т.е. они как-то связаны, но как? не могу найти ответа на этот вопрос если дашь посмотреть исходник, был бы благодарен
@fourZerglings Жыл бұрын
Привет! Залил код на гитхаб: github.com/jaros3/reinforcement-learning Q-learning - это алгоритм, который строит таблицу ценности Q(s, a) - насколько хорошо предпринять такое-то действие в таком-то состоянии. Эту таблицу обновляем после каждого шага обучения по специальной формуле, где участвует награда. Я учился по книге Sutton, Barto, PDF доступен по ссылке: incompleteideas.net/book/RLbook2020.pdf . Тебе конкретно нужен раздел 6.5: Q-Learning, но лучше читать с первой главы, чтобы погрузиться в термины и алгоритмы. В ситуациях, когда матрицу строить непрактично, потому что она слишком большая или будет долго заполнять каждую ячейку, матрицу заменяют нейросетью, которая отвечает на вопрос: насколько хорошо предпринять действие a в состоянии s, и получается Deep Q-Learning. Для змейки это перебор
@КириллМакаричев-п9ю Жыл бұрын
@@fourZerglings благодарю
@biosuko Жыл бұрын
@@fourZerglingsсолюшн не собирается. нехватает дополнительного кода. The type or namespace name 'LearningStrategies' could not be found (are you missing a using directive or an assembly reference?)
@SliverRus Жыл бұрын
Продолжения уже не будет как я понимаю? Но всё равно спасибо! Мне понравилось
@Denis-qe2lk Жыл бұрын
23:52 правильно ли я понимаю, что на схеме -0,2222 и 0,3333 местами надо поменять? И огромное спасибо!
@fourZerglings Жыл бұрын
Да, верно
@tarzeronone7274 Жыл бұрын
аФтор вернись!!!
@AsdfgAsdfg12363 Жыл бұрын
Рано нейросетями заниматься
@tarzeronone7274 Жыл бұрын
Самое крутое объяснение что я видел, я впервые вижу для чего нужны на практике частные производные, смотрел на эту тему другие видео с красивой анимацией, они тоже дают разъяснения, но в них не хватает деталей из этого видео нарисованного в пейнте, жаль что канал уже заброшен
@3DGD Жыл бұрын
У меня в 12 строчке,показывает ошибку,может это из-за новой версии? А если так,то как по другому это написать?
@bender__ssbender__ss1199 Жыл бұрын
Здравствуйте ! Спасибо за ваши труды ! Подскажите как сохранить и заново использовать уже обученную нейросеть? Вопрос в лоб у гугла не дал результатов((
@fourZerglings Жыл бұрын
Зависит от того, какой библиотекой пользуетесь Keras: machinelearningmastery.com/save-load-keras-deep-learning-models/ Tensorflow: www.tensorflow.org/tutorials/keras/save_and_load
@endlessvd Жыл бұрын
@@fourZerglingseigen c++))
@endlessvd Жыл бұрын
Довольно хорошая штука, если надо маленькую нейросеть обучать быстро и очень много раз, сотни тысяч)
@АндрейПрокофьев-е7д2 жыл бұрын
Кто может объяснить,почему это работает? private void OnMouseDown() { Destroy(gameObject); Debug.Log(transform.position.x); Debug.Log(transform.position.y); } почему сохраняются координаты ПОСЛЕ уничтожения объекта???
@fourZerglings2 жыл бұрын
Destroy уничтожает объект не сразу, а после небольшой задержки (типа в течение кадра). Так сделано, чтобы код, ссылающийся на уничтоженный объект, не взрывался исключениями. Это есть в документации к методу Destroy
@АндрейПрокофьев-е7д2 жыл бұрын
@@fourZerglings точно,спасибо,не заострил на это внимание в документации.
@godofarms10692 жыл бұрын
Интересное видео, на русскоязычном пространстве таких очень немного. Я ещё слышал о методе применения генетического алгоритма для определения самых оптимальных гиперпараметров для нейронки (learning rate, batches, epochs). Я немного поэкспериментировал с классификацией с помощью генетической нейронной сети, и результаты оказались довольно посредственными (долго и не так точно, как со стандартной архитектурой). Полная замена бэкпропа генетическим мне кажется подходит разве что для игр, где например врагу НЕ нужно идеальное обучение, чтобы постоянно не переигрывать игрока, плюс само обучение происходит в реальном времени с (возможным) влиянием на его процесс игроком или окружающей средой.
@Rayvenor4 ай бұрын
Это разные типы обучения. И применяются они в разных случаях. Обратное распространение возможно применять если мы знаем верное решение в каждом случае, когда нужно сделать выбор. Например в случае если есть размеченные данные при классификации. Если мы не знаем или не хотим задавать верное решение, то обратное распространение применить не удастся. В этом случае у нас есть оценка общего прогресса fitness. Причем оценка берется с потолка и может быть заменена, если оказалась не удачной. В этом случае приходится применять более медленный генетический алгоритм.
@maximmaxim42402 жыл бұрын
Эту функцию можно использовать для поиска коэффициентов пид регулятора ?
@endlessvd Жыл бұрын
Эм, это вузовская штука?
@maximmaxim42402 жыл бұрын
Здравствуй , скажи пожалуйста ,этот алгоритм можно использовать например в регулировке температуры на Ардуино, для стабильной задачи типо PID регулятора ?
@fourZerglings2 жыл бұрын
Не знаком с этой задачей
@playgames-h1k2 жыл бұрын
мой персонаж перемещается назад при заканчивании анимации ходьбы. Что делать?
@happypie48592 жыл бұрын
Можно код пожалуйста
@fourZerglings2 жыл бұрын
github.com/jaros3/nn01snake
@happypie48592 жыл бұрын
@@fourZerglings спасибо
@whyguga2 жыл бұрын
А как сделать прыжок?
@kircow2 жыл бұрын
Спасибо, я сделал свою первую анимацию в юнити.
@hamalekk2 жыл бұрын
Я решил попробовать тоже сделать змеек и у меня есть пара вопросов, 1. При генерации нового поколения я использую только двух самых успешных змеек, т.е. с последующем поколении отличия в поведении будут только в случае мутации, насколько это правильно? Или же мне всё таки стоит сделать так же как и у Вас? 2. Можно ли как нибудь бороться со змейками - "крутилками"? Они ломают всю эволюцию, во первых потому что задерживают переход на следующее поколение, во вторых потому что набирают много очков, соответственно при генерации следующего поколения от этих змеек будет производиться потомство. На данный момент я вручную удаляю таких змеек и обнуляю их счётчик дабы не ломать весь процесс, но хотелось бы как то автоматизировать это
@fourZerglings2 жыл бұрын
1) Топ-две змейки маловато. Генетический алгоритм заинтересован в био-разнообразии. Хорошо иметь в пуле ~100 разных геномов. 2) Специально для змеек-крутилок я ввожу понятие голода: если змейка не находит яблоко в течение 100 шагов, она умирает от голода. Нейросеть действует довольно примитивно: попала в те же обстоятельства - повторяет ту же реакцию; поэтому она зацикливается. Нужно этот вечный цикл как-то разомкнуть
@endlessvd Жыл бұрын
Используй оценку успешности на основании количества съеденных яблок, а именно Успешность = apple + 0.001*time, при этом если второе слагаемое со временем больше, чем первое либо больше какого либо числа, то функция оценки становится равной 0
@endlessvd Жыл бұрын
@@fourZerglingsо, точно, смерть змейки равносильно оценке успешности равной 0
@СочныйСок-е3г2 жыл бұрын
что Вы нажимаете, чтоб посмотреть родителей встроеных классов, местоположение методов? Например на 2:58
@fourZerglings2 жыл бұрын
Нажимаете на имени переменной или функции или класса правой кнопкой → перейти к определению (go to definition). По умолчанию клавиша F12, но я переназначаю на F2, потому что ей реально часто приходится пользоваться.
@ХристианБелов2 жыл бұрын
А какие распространенные метода обучения, или с помощью каких можно сделать deepfake? Ответь пожалуйста
@fourZerglings2 жыл бұрын
Надо использовать Autoencoder и GAN (Generative Adversarial Network)
@ХристианБелов2 жыл бұрын
@@fourZerglings Спасибо. Только, разобравшись, я понял что их нельзя использовать для обучения змейки
@ogurecsoleni2 жыл бұрын
что
@VORONOKVA2 жыл бұрын
Помню приходил с людям создатель вечного двигателя. Кстати, тоже человек. Так вот он сделал настоящий вечный двигатель с подпиткой от сети. .... Если кто (из секты святых нейросетей) не понял (что вероятно), то поясню - алгоритм работает без человека иначе это не алгоритм. Так что нет нейросетей.
@Pr0phet1c2 жыл бұрын
Звук - говно. Чем дальше - тем хуже. Вероятно, в последнем видео автор будет говорить шепотом, так что смотреть не буду.
@MrOgone4ek11 ай бұрын
боже да он рофлит .
@defom_kills2 жыл бұрын
не работает
@АртёмГусев-з1я5 ай бұрын
Работает
@defom_kills5 ай бұрын
@@АртёмГусев-з1я на старой версии которой лет 10 мб работает, на современных виндовс формах нет, так по другому фото добавляется
@docent_dev2 жыл бұрын
даже нне объяснил как сделать чтобы состояния виднны были
@klaxwork12082 жыл бұрын
А есть возможность сейчас скачать проект?
@fourZerglings2 жыл бұрын
github.com/jaros3/nn01snake
@ТимофейАладьин Жыл бұрын
@@fourZerglings к сожалению, по ссылке выдаётся 404
@fourZerglings Жыл бұрын
@@ТимофейАладьин Да, я переехал на Гитлаб. Поправил ссылку
@theAzumi3 жыл бұрын
спасибо
@anzem83 жыл бұрын
Никогда не думал, что - если быть слишком умным для какой-то задачи, то можно не научиться выявлять закономерности, может быть поэтому мы такие ограниченные 🤔 - с помощью Paint можно так наглядно что-то объяснить 🔥
@anzem83 жыл бұрын
Благодаря вашему видео я понял, почему геном человека хранит гены бабушек и дедушек, спасибо)
@userupset63 жыл бұрын
какую литературу ты использовал ?
@fourZerglings3 жыл бұрын
Учебник Sutton & Barto по Reinforcement Learning: www.incompleteideas.net/book/RLbook2020.pdf
@userupset63 жыл бұрын
@@fourZerglings спасибо
@Resident-13373 жыл бұрын
Очень залипательно
@АлександрЮдин-ь7и3 жыл бұрын
Привет. Лайк за видео. Посоветуй программы для рисования объектов и персонажей для юнити. Спасибо друг
@fourZerglings3 жыл бұрын
Советую Blender
@bronepoezd14BB3 жыл бұрын
Действительно полезно
@edgull_tlt3 жыл бұрын
Спасибо
@edgull_tlt3 жыл бұрын
Спасибо
@edgull_tlt3 жыл бұрын
Спасибо
@hovarkgames52323 жыл бұрын
Спасибо, я 3 дня искал подобное видео
@zigzag91223 жыл бұрын
хорошее объяснение. жаль мало просмотров.
@paler_r3 жыл бұрын
А со второй картинкой такие же операции проделывать