Вертолёт. War is On 02
4:28
4 жыл бұрын
Анимация. Урок Unity 08
10:36
Обучающий уровень
0:42
Союзник: стражник
0:47
Пікірлер
@Eugene24444
@Eugene24444 3 ай бұрын
Спасибо, очень познавательный ролик❤
@noitaukkokronk
@noitaukkokronk 6 ай бұрын
Чем меньше информации описывается в гене, тем менее осмысленной будет эволюция. Скажем, если ген - это выполнение какого-то действия в определённой ситуации - это одно, если же ген - это какое-то элементарное действие (например, просто повернуть), получится уже скорее не скрещивание, а рандомизация, положительным признакам будет сложно закрепиться.
@АсельАртыкбаева-и1в
@АсельАртыкбаева-и1в 10 ай бұрын
Благодарю вас!
@Andrew-tf7rf
@Andrew-tf7rf Жыл бұрын
мой персонаж почему то улетает вверх при состоянии idle
@SweetLemon-zc6bo
@SweetLemon-zc6bo Жыл бұрын
Крутые видосы! Продолжай!
@usergnusmas6879
@usergnusmas6879 Жыл бұрын
Я бы убрал стены, было бы проще и обзор, у змейки, сделал бы на все поле.
@MairanYT
@MairanYT Жыл бұрын
А зачем нужна нормализация или инверсия? Просто я вот делал нейронную сеть с овцами и там расстояние и количество объектов так и указывалось: 1, 2, 50, 40, 33 И всё работало нормально
@fourZerglings
@fourZerglings Жыл бұрын
По моему опыту, нейросети работают лучше всего, когда их веса живут в диапазоне от -1 до +1. Если их не ограничивать, они во время обучения начинают неконтролируемо расти и улетают в бесконечность. Я это в шутку называю «нейросеть взрывается». Есть современные техники, которые борются с этим - Batch Normalization, Layer Normalization. Они измеряют параметры нейросети и сдвигают и масштабируют веса так, чтобы их среднее было 0, а дисперсия 1. Если вы собирали сеть из готовых модулей, подозреваю, что в них уже была встроена нормализация.
@MairanYT
@MairanYT Жыл бұрын
@@fourZerglings про величалые весы я знаю, и мысль таким способом регулировать довольно хорошая. Но в видосе же речь про нормализацию входных данных
@fourZerglings
@fourZerglings Жыл бұрын
Если у узла умножения два входа (x, y), его градиенты умножаются на (y, x). Если один из входов был не нормализован, то он будет влиять на обучение другого входа. То есть из-за не нормированных входов портиться будет вес нейросети. Поэтому нормализовать надо всё.
@sensirexfirst
@sensirexfirst Жыл бұрын
Интересно было бы видео с кратким разбором как работает обучение
@fourZerglings
@fourZerglings Жыл бұрын
Увы, кратко никак. Тут нужен целый курс лекций или учебник.
@endlessvd
@endlessvd Жыл бұрын
Спасибо за видео! Очень интересно и полезно😊
@endlessvd
@endlessvd Жыл бұрын
На мой взгляд проще было сделать функцию оценки успешности как сумму 0.001*t+a, где t,a время жизни и яблоки соответственно, тогда змейка будет фокусироваться именно на яблоках больше всего, но и скромный бонус получать за время.
@endlessvd
@endlessvd Жыл бұрын
Спасибо за видео, сам сделал перцептрон с произвольным размером слоев и их количеством внутри на С++. Правда проигрался и дальше забросил проект
@КириллМакаричев-п9ю
@КириллМакаричев-п9ю Жыл бұрын
Привет, крутое видео, идея, можно код пожалуйста посмотреть? А то это видео замотивировало в этом поразбираться, но как-то не понимаю нескольких вещей: в интернете нашел deep q learning и просто q learning, как понимаю первый это с использованием ИИ, второй это просто алгоритм перебора всех возможных состояний и нахождение наилучшего результата(надеюсь правильно понял этот момент). Не понимаю как работает награда, типо да это число [-1, 1], показывает ии плохое или хорошее действие, но не понимаю что эта цифра меняет по факту и как ии понимает какую награду ей дали за прошлый шаг, если как ты говоришь у нее в инпутах 24 значения для сенсеров, т.е. они как-то связаны, но как? не могу найти ответа на этот вопрос если дашь посмотреть исходник, был бы благодарен
@fourZerglings
@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ю
@КириллМакаричев-п9ю Жыл бұрын
@@fourZerglings благодарю
@biosuko
@biosuko Жыл бұрын
​@@fourZerglingsсолюшн не собирается. нехватает дополнительного кода. The type or namespace name 'LearningStrategies' could not be found (are you missing a using directive or an assembly reference?)
@SliverRus
@SliverRus Жыл бұрын
Продолжения уже не будет как я понимаю? Но всё равно спасибо! Мне понравилось
@Denis-qe2lk
@Denis-qe2lk Жыл бұрын
23:52 правильно ли я понимаю, что на схеме -0,2222 и 0,3333 местами надо поменять? И огромное спасибо!
@fourZerglings
@fourZerglings Жыл бұрын
Да, верно
@tarzeronone7274
@tarzeronone7274 Жыл бұрын
аФтор вернись!!!
@AsdfgAsdfg12363
@AsdfgAsdfg12363 Жыл бұрын
Рано нейросетями заниматься
@tarzeronone7274
@tarzeronone7274 Жыл бұрын
Самое крутое объяснение что я видел, я впервые вижу для чего нужны на практике частные производные, смотрел на эту тему другие видео с красивой анимацией, они тоже дают разъяснения, но в них не хватает деталей из этого видео нарисованного в пейнте, жаль что канал уже заброшен
@3DGD
@3DGD Жыл бұрын
У меня в 12 строчке,показывает ошибку,может это из-за новой версии? А если так,то как по другому это написать?
@bender__ssbender__ss1199
@bender__ssbender__ss1199 Жыл бұрын
Здравствуйте ! Спасибо за ваши труды ! Подскажите как сохранить и заново использовать уже обученную нейросеть? Вопрос в лоб у гугла не дал результатов((
@fourZerglings
@fourZerglings Жыл бұрын
Зависит от того, какой библиотекой пользуетесь Keras: machinelearningmastery.com/save-load-keras-deep-learning-models/ Tensorflow: www.tensorflow.org/tutorials/keras/save_and_load
@endlessvd
@endlessvd Жыл бұрын
​@@fourZerglingseigen c++))
@endlessvd
@endlessvd Жыл бұрын
Довольно хорошая штука, если надо маленькую нейросеть обучать быстро и очень много раз, сотни тысяч)
@АндрейПрокофьев-е7д
@АндрейПрокофьев-е7д 2 жыл бұрын
Кто может объяснить,почему это работает? private void OnMouseDown() { Destroy(gameObject); Debug.Log(transform.position.x); Debug.Log(transform.position.y); } почему сохраняются координаты ПОСЛЕ уничтожения объекта???
@fourZerglings
@fourZerglings 2 жыл бұрын
Destroy уничтожает объект не сразу, а после небольшой задержки (типа в течение кадра). Так сделано, чтобы код, ссылающийся на уничтоженный объект, не взрывался исключениями. Это есть в документации к методу Destroy
@АндрейПрокофьев-е7д
@АндрейПрокофьев-е7д 2 жыл бұрын
@@fourZerglings точно,спасибо,не заострил на это внимание в документации.
@godofarms1069
@godofarms1069 2 жыл бұрын
Интересное видео, на русскоязычном пространстве таких очень немного. Я ещё слышал о методе применения генетического алгоритма для определения самых оптимальных гиперпараметров для нейронки (learning rate, batches, epochs). Я немного поэкспериментировал с классификацией с помощью генетической нейронной сети, и результаты оказались довольно посредственными (долго и не так точно, как со стандартной архитектурой). Полная замена бэкпропа генетическим мне кажется подходит разве что для игр, где например врагу НЕ нужно идеальное обучение, чтобы постоянно не переигрывать игрока, плюс само обучение происходит в реальном времени с (возможным) влиянием на его процесс игроком или окружающей средой.
@Rayvenor
@Rayvenor 4 ай бұрын
Это разные типы обучения. И применяются они в разных случаях. Обратное распространение возможно применять если мы знаем верное решение в каждом случае, когда нужно сделать выбор. Например в случае если есть размеченные данные при классификации. Если мы не знаем или не хотим задавать верное решение, то обратное распространение применить не удастся. В этом случае у нас есть оценка общего прогресса fitness. Причем оценка берется с потолка и может быть заменена, если оказалась не удачной. В этом случае приходится применять более медленный генетический алгоритм.
@maximmaxim4240
@maximmaxim4240 2 жыл бұрын
Эту функцию можно использовать для поиска коэффициентов пид регулятора ?
@endlessvd
@endlessvd Жыл бұрын
Эм, это вузовская штука?
@maximmaxim4240
@maximmaxim4240 2 жыл бұрын
Здравствуй , скажи пожалуйста ,этот алгоритм можно использовать например в регулировке температуры на Ардуино, для стабильной задачи типо PID регулятора ?
@fourZerglings
@fourZerglings 2 жыл бұрын
Не знаком с этой задачей
@playgames-h1k
@playgames-h1k 2 жыл бұрын
мой персонаж перемещается назад при заканчивании анимации ходьбы. Что делать?
@happypie4859
@happypie4859 2 жыл бұрын
Можно код пожалуйста
@fourZerglings
@fourZerglings 2 жыл бұрын
github.com/jaros3/nn01snake
@happypie4859
@happypie4859 2 жыл бұрын
@@fourZerglings спасибо
@whyguga
@whyguga 2 жыл бұрын
А как сделать прыжок?
@kircow
@kircow 2 жыл бұрын
Спасибо, я сделал свою первую анимацию в юнити.
@hamalekk
@hamalekk 2 жыл бұрын
Я решил попробовать тоже сделать змеек и у меня есть пара вопросов, 1. При генерации нового поколения я использую только двух самых успешных змеек, т.е. с последующем поколении отличия в поведении будут только в случае мутации, насколько это правильно? Или же мне всё таки стоит сделать так же как и у Вас? 2. Можно ли как нибудь бороться со змейками - "крутилками"? Они ломают всю эволюцию, во первых потому что задерживают переход на следующее поколение, во вторых потому что набирают много очков, соответственно при генерации следующего поколения от этих змеек будет производиться потомство. На данный момент я вручную удаляю таких змеек и обнуляю их счётчик дабы не ломать весь процесс, но хотелось бы как то автоматизировать это
@fourZerglings
@fourZerglings 2 жыл бұрын
1) Топ-две змейки маловато. Генетический алгоритм заинтересован в био-разнообразии. Хорошо иметь в пуле ~100 разных геномов. 2) Специально для змеек-крутилок я ввожу понятие голода: если змейка не находит яблоко в течение 100 шагов, она умирает от голода. Нейросеть действует довольно примитивно: попала в те же обстоятельства - повторяет ту же реакцию; поэтому она зацикливается. Нужно этот вечный цикл как-то разомкнуть
@endlessvd
@endlessvd Жыл бұрын
Используй оценку успешности на основании количества съеденных яблок, а именно Успешность = apple + 0.001*time, при этом если второе слагаемое со временем больше, чем первое либо больше какого либо числа, то функция оценки становится равной 0
@endlessvd
@endlessvd Жыл бұрын
​@@fourZerglingsо, точно, смерть змейки равносильно оценке успешности равной 0
@СочныйСок-е3г
@СочныйСок-е3г 2 жыл бұрын
что Вы нажимаете, чтоб посмотреть родителей встроеных классов, местоположение методов? Например на 2:58
@fourZerglings
@fourZerglings 2 жыл бұрын
Нажимаете на имени переменной или функции или класса правой кнопкой → перейти к определению (go to definition). По умолчанию клавиша F12, но я переназначаю на F2, потому что ей реально часто приходится пользоваться.
@ХристианБелов
@ХристианБелов 2 жыл бұрын
А какие распространенные метода обучения, или с помощью каких можно сделать deepfake? Ответь пожалуйста
@fourZerglings
@fourZerglings 2 жыл бұрын
Надо использовать Autoencoder и GAN (Generative Adversarial Network)
@ХристианБелов
@ХристианБелов 2 жыл бұрын
@@fourZerglings Спасибо. Только, разобравшись, я понял что их нельзя использовать для обучения змейки
@ogurecsoleni
@ogurecsoleni 2 жыл бұрын
что
@VORONOKVA
@VORONOKVA 2 жыл бұрын
Помню приходил с людям создатель вечного двигателя. Кстати, тоже человек. Так вот он сделал настоящий вечный двигатель с подпиткой от сети. .... Если кто (из секты святых нейросетей) не понял (что вероятно), то поясню - алгоритм работает без человека иначе это не алгоритм. Так что нет нейросетей.
@Pr0phet1c
@Pr0phet1c 2 жыл бұрын
Звук - говно. Чем дальше - тем хуже. Вероятно, в последнем видео автор будет говорить шепотом, так что смотреть не буду.
@MrOgone4ek
@MrOgone4ek 11 ай бұрын
боже да он рофлит .
@defom_kills
@defom_kills 2 жыл бұрын
не работает
@АртёмГусев-з1я
@АртёмГусев-з1я 5 ай бұрын
Работает
@defom_kills
@defom_kills 5 ай бұрын
@@АртёмГусев-з1я на старой версии которой лет 10 мб работает, на современных виндовс формах нет, так по другому фото добавляется
@docent_dev
@docent_dev 2 жыл бұрын
даже нне объяснил как сделать чтобы состояния виднны были
@klaxwork1208
@klaxwork1208 2 жыл бұрын
А есть возможность сейчас скачать проект?
@fourZerglings
@fourZerglings 2 жыл бұрын
github.com/jaros3/nn01snake
@ТимофейАладьин
@ТимофейАладьин Жыл бұрын
@@fourZerglings к сожалению, по ссылке выдаётся 404
@fourZerglings
@fourZerglings Жыл бұрын
@@ТимофейАладьин Да, я переехал на Гитлаб. Поправил ссылку
@theAzumi
@theAzumi 3 жыл бұрын
спасибо
@anzem8
@anzem8 3 жыл бұрын
Никогда не думал, что - если быть слишком умным для какой-то задачи, то можно не научиться выявлять закономерности, может быть поэтому мы такие ограниченные 🤔 - с помощью Paint можно так наглядно что-то объяснить 🔥
@anzem8
@anzem8 3 жыл бұрын
Благодаря вашему видео я понял, почему геном человека хранит гены бабушек и дедушек, спасибо)
@userupset6
@userupset6 3 жыл бұрын
какую литературу ты использовал ?
@fourZerglings
@fourZerglings 3 жыл бұрын
Учебник Sutton & Barto по Reinforcement Learning: www.incompleteideas.net/book/RLbook2020.pdf
@userupset6
@userupset6 3 жыл бұрын
@@fourZerglings спасибо
@Resident-1337
@Resident-1337 3 жыл бұрын
Очень залипательно
@АлександрЮдин-ь7и
@АлександрЮдин-ь7и 3 жыл бұрын
Привет. Лайк за видео. Посоветуй программы для рисования объектов и персонажей для юнити. Спасибо друг
@fourZerglings
@fourZerglings 3 жыл бұрын
Советую Blender
@bronepoezd14BB
@bronepoezd14BB 3 жыл бұрын
Действительно полезно
@edgull_tlt
@edgull_tlt 3 жыл бұрын
Спасибо
@edgull_tlt
@edgull_tlt 3 жыл бұрын
Спасибо
@edgull_tlt
@edgull_tlt 3 жыл бұрын
Спасибо
@hovarkgames5232
@hovarkgames5232 3 жыл бұрын
Спасибо, я 3 дня искал подобное видео
@zigzag9122
@zigzag9122 3 жыл бұрын
хорошее объяснение. жаль мало просмотров.
@paler_r
@paler_r 3 жыл бұрын
А со второй картинкой такие же операции проделывать
@ДухЖизни-д2ш
@ДухЖизни-д2ш 3 жыл бұрын
Хороший урок!!!
@AleksandrIotmalik
@AleksandrIotmalik 3 жыл бұрын
Что там с тензорами?