Тёмный

Back propagation - алгоритм обучения по методу обратного распространения | #3 нейросети на Python 

selfedu
Подписаться 159 тыс.
Просмотров 111 тыс.
50% 1

Описание алгоритма обратного распространения ошибки (back propagation). Пример его реализации на Python для обучения простой нейронной сети.
Телеграм-канал: t.me/machine_l...
Инфо-сайт: proproprogs.ru
lesson 3. Back propagation.py: github.com/sel...
О градиентном спуске: • ЦОС Python #2: Метод г...

Опубликовано:

 

1 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 318   
@tysprogramist
@tysprogramist Год назад
мне 11 я низнаю других других преподователей такого уровня в 4 классе но очень здорово правда чуть ли не каждый второй термин смотрю в яндексе чтобы понимать
@nikkapusta838
@nikkapusta838 Год назад
В 11 лет надо пробовать сигареты курить, а не ерундой заниматься
@user-mu5cj4hv9l
@user-mu5cj4hv9l 11 месяцев назад
@@nikkapusta838 «гениальный» комент
@ИльяАксенов-е6к
@ИльяАксенов-е6к 5 месяцев назад
А мне 10 пропустил 1 видео про перспетрон и смотрю это
@Игорь-ц2б8в
@Игорь-ц2б8в 2 месяца назад
​@@nikkapusta838 вы сейчас насоветуете
@iyashnaider
@iyashnaider Год назад
Лучший обучающий канал по нейронкам на всем русскоязычном ютубе! Всё максимально понятно и интересно. Спасибо большое за такой контент
@АлександрГурьев-з4ш
Добрый день, Сергей! Решил еше раз пройти Ваш курс по данным видео. Обнаружил ряд неточностей: 1. В Функции гиперболического тангенса отсутствует показатель степени 2 в экспоненте: должно быть 2/(1 + np.exp(-x*2)) -1; 2. На мой взгляд функция производной от гиперболического тангенса должна быть другой: я взял такую 4/np.power((np.exp(x)+np.exp(-x)), 2) ; 3. В обучающей выборке последняя строчка должна быть: (1, 1, 1, 1)]. Т.е. когда у мальчика есть квартира, он симпатичный, но при этом рок-гитарист, он все равно симпатичен девочке. Тем более, в самом начале видео у Вас приведён такой расклад. Изменив программу я получил более стабильные результаты обучения и весовых коэффициентов. До этого они очень сильно "плавали". На видео тоже видно, что по результатам на первой выборке получилось значение 0.025, хотя должно быть ближе к -1. Я получаю у себя такие значения (на модернизированной программе): Выходное значение НС: -0.9999942675244059 => -1 Выходное значение НС: 0.9999942461944535 => 1 Выходное значение НС: -0.9999942080082161 => -1 Выходное значение НС: 0.9999942702756277 => 1 Выходное значение НС: -0.9999942702756276 => -1 Выходное значение НС: 0.999994208008216 => 1 Выходное значение НС: -0.9999942461944537 => -1 Выходное значение НС: 0.999994267524406 => 1
@selfedu_rus
@selfedu_rus Год назад
Спасибо! 1. В общем случае у гиперболического тангенса используется параметр alfa > 0, который умножается на x. Я просто взял его 1, чтобы не перегружать материал. 2. Производная, да неверно записана, но в видео я ее ручками поправил. 3. Здесь полностью согласен, недоглядел! ))
@ALxOBR15Q
@ALxOBR15Q 3 месяца назад
​@@selfedu_rusКто Вы блеадь такие? Вы боги
@VitalijaAlishauskaite
@VitalijaAlishauskaite Год назад
1) Backpropagation Algorithm, 5.06: логистическая функция (sigmoid) должна быть f(x) = 1 / (1 + e^(-x)) 2) Backpropagation Algorithm, 14.16: нейронная сеть обучилась, у нас нет никаких ошибок... А как насчет самого первого выходного значения?
@romandeveloper7720
@romandeveloper7720 8 месяцев назад
фух) а то я сижу, голову ломаю, почему у меня производная не равняется fx * (1-fx) ))
@gorguliastone
@gorguliastone 3 года назад
Почему так мало просмотров?! Вы чудесно, четко, понятно объясняете. А самое главное - у вас хорошо поставленная речь без паразитов, и приятный тембр.
@rpuropu
@rpuropu 3 года назад
Поддержу оратора) мне 37 лет и даже мне понятно)
@евгенийбогданов-щ1б
@@rpuropu мне 14, даже мне понятно
@noname-hw3bb
@noname-hw3bb 3 года назад
умных людей будет слишком много)
@Домашка-и6в
@Домашка-и6в 2 года назад
Вся проблема в том, что Ютубу не нравится технический контент. По большей степени я подписан на видео такого направления, но Ютуб предлагает посмотреть всякую шляпу.
@maxsmail1471
@maxsmail1471 2 года назад
Давайте честно признаемся, даже те кто в вузе это учат ничего не учат, а что говорить про самообучение
@МихаилДроздов-с3ю
@МихаилДроздов-с3ю 2 года назад
на 5:27 у логистической функции в знаменателе у экспоненты должен быть показатель с минусом, производная получается другая, да и в целом, постройте график, он не соответствует тому что в видео показано. А так видео очень качественное, все понятно, спасибо!
@selfedu_rus
@selfedu_rus 2 года назад
да, спасибо, это опечатка, недосмотрел
@ruslriz8949
@ruslriz8949 2 года назад
Сергей у Вас замечательные видео! Вы очень талантливый преподаватель. Просто, понятно и по существу. По этому видео - небольшая опечатка в программе ( выборка, последняя строка ) . Если подправить, почти идеальные результаты...
@selfedu_rus
@selfedu_rus 2 года назад
спасибо! а что там в выборке, последняя строка (1, 1, 1, -1)
@girrra1233
@girrra1233 Год назад
@@selfedu_rus Подскажите, а если у меня выходной нейрон не один а несколько их? Т.е. у меня выход сети это вектор, то как тогда быть?
@ShurikProg
@ShurikProg Год назад
В прошлых видео было. Если красивый с домом, то пусть хоть хэви металл играет
@mistrebrown7642
@mistrebrown7642 4 года назад
Большущее вам спасибо за ролики!
@ALxOBR15Q
@ALxOBR15Q 3 месяца назад
Суукаа... Лучший!!! Я каждый день пересматриваю эти видео
@silentage6310
@silentage6310 Год назад
пример только получился неудачный. формаула сразу понятна y = x3. нейросеть должна научится игнорировать первые 2 параметра.
@nadyamoscow2461
@nadyamoscow2461 Год назад
Огромное спасибо за урок. Думала, что до нейронок не доберусь никогда. Когда начинала по вашим видео учить питон, этот плейлист казался порождением инопланетного разума. В итоге я здесь, и, как всегда, восхищаюсь вашим даром фундаментально и понятно объяснять сложный материал.
@DezelDanmark
@DezelDanmark 3 месяца назад
Скажу что мне сложно это даётся, даже не смотря на такой приятный материал и рассказано как для обывателей, но всё равно тяжело. Спасибо за труд!
@vdvorezlaya
@vdvorezlaya Год назад
(y-d) это формула не ошибки, а производной от ошибки. Формула ошибки в данном случае будет 0.5*(y-d)^2. Если это не уточнить то те кто попытается вникнуть откуда что берется - не поймут зачем просто ошибку множить на производную активационной функции. Перемножая производную ошибки на производную активационной функции мы как раз получаем локальный градиент. А с точки зрения просто формул - они правильные.
@Cygni7
@Cygni7 Год назад
Когда автор заговорил про производные, возникло сильное желание выключить видео, потому как не знал, как их применить для такой функции, хорошо что автор все правильно сделал. (Хотя производные - одна их моих любимых тем в математике))) Плейлист меня очень заинтересовал, не догадывался, как работают нейросети и тем более, как их написать. Думаю потом ещё изучу материалы, связанные с python, уверен, найду что-то новое. Спасибо за ваши видео и удачи вам в продвижении канала!
@dgofman1975
@dgofman1975 Год назад
Похоже у вас ошибка при входе. Или было желание затупить машинное обучение. Последнии праметры должны быть (1, 1, 1, 1), тогда и результат будет чище. epoch = [(-1, -1, -1, -1), (-1, -1, 1, 1), (-1, 1, -1, -1), (-1, 1, 1, 1), (1, -1, -1, -1), (1, -1, 1, 1), (1, 1, -1, -1), (1, 1, 1, 1)] Выходное значение НС: -0.9331972464137225 => -1 Выходное значение НС: 0.932163001582075 => 1 Выходное значение НС: -0.9305318078371304 => -1 Выходное значение НС: 0.9331613565722048 => 1 Выходное значение НС: -0.9331613565722048 => -1 Выходное значение НС: 0.9305318078371303 => 1 Выходное значение НС: -0.9321630015820752 => -1 Выходное значение НС: 0.9331972464137226 => 1
@СарматПересветов
@СарматПересветов 18 дней назад
Во первых, огромное вам спасибо! А так же хотел сказать, что когда мы строили нейронку, для определения того "понравится парень девушке или нет", если посмотреть обучающую выборку, то там будет два полностью противоположных варианта с одинаковыми целевыми значениями [-1,-1,-1] целевое значение => -1, и [1,1,1] целевое значение => -1. так вот при данной архитектуре нейронки, построить и обучить алгоритм данным методом просто не возможно, так как одни и те же веса для них будут выдавать противоположные занчения, Это при любом раскладе! Поэтому в данной задаче нужно обязательно вводить СМЕЩЕНИЕ, и тогда все будет корректно. Спасибо автору, что он научил нас как это делать)!!
@radacom
@radacom Год назад
Аааааааа..... Я ни хрена не понимаюююююю😭😭😭😭 Я пытаюсь, но это писец какой то!!!!! 😳 Господи, 🙏🙏🙏🙏помоги мне встретить инопланетянина(,или сожрать его мозги, )который этот гребаный ии сможет заставит на плюсах, посылать пешки " пощупать"пространство, для принятия решений"😭😭😭😢 P. S лайкните кто нить через неделю что б я удалила сей выброс эмоций.
@ShurikProg
@ShurikProg 8 месяцев назад
Любопытно, что если взять набор epoch = [(1,1,1), (0,0,0), (1,0,1), (0,1,1)] как операцию ИЛИ - нормально. Потом как И - в последних двух поменять последние единицы на нули - нормально, а XOR - никак. epoch = [(1,1,1), (0,0,1), (1,0,0), (0,1,0)] В коде предполагал, что входов 2, соответственно
@THG6196
@THG6196 4 года назад
Больше спасибо за труд.👍👍👍 Очень хочется все понять. 😞😞😞 Если можно, обученные данные где и как сохранить, и как после использовать.
@abz.8951
@abz.8951 2 года назад
Спасибо большое за урок! Всё понятно, кроме одной вещи, надеюсь кто-нибудь сможет мне объяснить. Какова роль выходного сигнала в формуле на 6:37 (вычисление нового значения веса) ? Если роль шага сходимости это именно сдвиг, а градиента ( и закравшейся внутрь него ошибки) в направлении сдвига, то что нам даёт выходной сигнал? Какая-то корректировка сдвига? После того как я застрял на этом, я посмотрел урок по градиентному спуску, в нём мы позволили себе даже нормировать градиент, тем самым показав, что значение имеет лишь его знак. Если выходной сигнал влияет лишь на сдвиг, нельзя ли избавиться от выходного сигнала в формуле и оставить всё на шаг сходимости? Ведь таким образом выходной сигнал и ненормированный градиент создают шум, который неочевидным образом может подменить значение шага сходимости. (под подменить я имею ввиду, что мы указали например 0.01, а на деле получилось 0.28, это будет мешать, например, нашему творческому подбору следующих шагов сходимости). Заранее спасибо!
@nadyamoscow2461
@nadyamoscow2461 Год назад
Если я правильно понимаю, новые веса будут использоваться на другой итерации. А полученные на ней веса - еще на одной итерации. В итоге, из множества итераций ( а у нас их четко заданное количество) будет выбрана та, чьи веса дают наименьшую ошибку. То есть, сеть научится ошибаться по минимуму.
@linping4473
@linping4473 Год назад
Хотелось бы подробный вывод формул
@selfedu_rus
@selfedu_rus Год назад
В курсе "Машинное обучение" на этом канале (в последних видео)
@linping4473
@linping4473 Год назад
@@selfedu_rus спасибо
@vdvorezlaya
@vdvorezlaya Год назад
ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-rP_k8cpsNWY.html
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov Год назад
Благодарю! Идельно!! 🔥🔥🔥 Высший пилотаж!
@victor_zimin
@victor_zimin 3 года назад
ты лучший! я наконец-то понял после 3 мучительных дней.
@n-em3gt
@n-em3gt 8 месяцев назад
У меня два вопроса 1 когда мы складываем два произведения веса и локального градиента на втором слое не получится ли слишком большой локальный градиент? Может лучше было бы найти среднее арифметическое? 2 обязательно производить коррекцию весов сразу после вычисления их локальных градиентов, или можно сначала вычислить все локальные градиенты и на всех весах сразу произвести коррекцию? Просто после коррекции веса изменится и значение локального градиента на следующем с конца слое и коррекция возможно будет неверная. Либо допускаются оба варианта?
@maxsmail1471
@maxsmail1471 2 года назад
Понимаю что зачистил, но ни у кого не было такой проблемы что нейронка при любых обстоятельствах выдает одно и тоже значение, может это какая-то ошибка в логике обучения, или в количестве невидимых слоев? Скажу сразу, делаю на С#, данный код мне не подходит немножко
@horseman3253
@horseman3253 3 года назад
я е совсем понял куда число ейлера делось из производной от функции?
@torbokovsanat
@torbokovsanat 3 года назад
потому что там x=f(x)
@ЧУППрофиТоргПлюс
@ЧУППрофиТоргПлюс 3 года назад
Отлично. Всё сжато и без лишней информации. Впервые, мне в конце видео, пришлось замедлить воспроизведение.
@АртиКалмыков
@АртиКалмыков Год назад
все очень классно, но проблема в том, что я еще ничего не знаю про производную и не понял часть видео
@ЯрославОнофрийчук
"Не буду делать математическую выкладку... " - после этих слов я свернул видео и поставил лайк. Спасибо за это видео!
@MathPTU
@MathPTU Месяц назад
сделайте за меня их сами, я так и сделал
@ВикторСороколетов
Автор спасибо тебе ты единственный кто обьяснил достаточно понятно
@NationalVerrater
@NationalVerrater 6 месяцев назад
Почему для получения локального градиента производную надо умножать на ошибку??
@selfedu_rus
@selfedu_rus 6 месяцев назад
здесь подробнее математика: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-vCL6E68v6L4.html
@alexanderkomarskiy9451
@alexanderkomarskiy9451 2 года назад
Почему 2 лайка поставить нельзя)!? Спасибо, классное объяснение!
@thatPerson0000
@thatPerson0000 8 месяцев назад
У меня чёт код об 1,1,1 и -1,-1,-1 запинается. На других всё нормально, а на этих ошибка в ~0.6-1.8 постоянно. В чём может быть причина?
@selfedu_rus
@selfedu_rus 8 месяцев назад
нужно bias добавить в схему НС
@BlackXFo
@BlackXFo 3 года назад
График функции f(x) = 1/(1+e^x) выглядит несколько иначе, чем ваш. У вас нарисован график 1/(1+e^(-x))
@selfedu_rus
@selfedu_rus 3 года назад
да, нарисован верно, там e^(-x)
@евгенийбогданов-щ1б
@@selfedu_rus здравствуйте, я не могу понять в функции e, это ошибка или что?
@selfedu_rus
@selfedu_rus 3 года назад
@@евгенийбогданов-щ1б ошибка, в степени - должна быть минус x, а не просто x
@Леонид-с5з
@Леонид-с5з 5 месяцев назад
1:31 2:58 3:58 обучение (корректировка весов) 4:17
@Dimofey
@Dimofey Год назад
Возможно я много требую, но было бы неплохо в последнем примере "в живую" показать, как там меняются числа, так было бы проще обучить нейронку, которая у меня в голове😆
@grigogiyreznichenko2033
@grigogiyreznichenko2033 2 года назад
а можно рассказать про то как векторно-матричное дифференцирование происходит для бэкпропа? Не искать же частные производные по элементам...
@СергейБелов-ф1ж7ъ
@СергейБелов-ф1ж7ъ 8 месяцев назад
На моменте 6:25, где логистическая функция, там не -x в 1/(1+e^x)?
@selfedu_rus
@selfedu_rus 8 месяцев назад
да, это ошибка
@ВасилишинОлег-с9т
@ВасилишинОлег-с9т 4 месяца назад
sigmoid is e^(-x)
@t.g.8979
@t.g.8979 Год назад
3:45 Здравствуйте! Непонятна одна вещь, почему на данном моменте ошибка равна текущий результат минус желаемый? везде пишут, что наоборот, да и в принципе так более логично. Знаю, что уже куча времени прошло, но все же.
@selfedu_rus
@selfedu_rus Год назад
Это без разницы, т.к. там квадратичная функция потерь (x_i - y_i)^2 и разность можно записать в другом порядке (y_i - x_i)^2
@t.g.8979
@t.g.8979 Год назад
@@selfedu_rus благодарю за ответ!)
@annaponomarova3472
@annaponomarova3472 3 года назад
спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@evgenykonovalov4870
@evgenykonovalov4870 Год назад
Очень хорошая подача материала, прочитал пару книг по нейронным сетям для ознакомления с предметной областью. Текущий курс обьясняет все принципы нейронки без сложных мат деталей , что помогает структурировать в голове информацию и быстрее двигаться к поставленной цели. Спасибо автору огромное !
@ALxOBR15Q
@ALxOBR15Q 3 месяца назад
А какая у Вас цель стоит?
@Ventallica
@Ventallica 8 месяцев назад
Вы даёте индивидуальные уроки?
@userqh67vey6
@userqh67vey6 Год назад
Почему-то минимум в 80% случаев при каждой новой прогонке программы, нейросеть дает как минимум 1 ошибку, и увеличение N на порядок особо не помогает. Возможно есть смысл на каждой итерации прогонки всех обучающих данных проверять верность работы сети и останавливаться, когда сеть обучилась? И наличие рандома тут не очень понятно, ведь с ростом N выборки будут выбираться поровну. В общем убрал рандом и перебираю выборки в цикле по очереди. for k in range(N): for i in range(0, count): x = current_epoch[i] При lmd=0.5 нейросеть обучается за 104(k=13) оюучения, при lmd = 0.1 нейросеть обучается за 408 (k=51) итераций обучений, при lmd = 0.01 за 8544 (k=1068) обучений. Лайк за видео!
@lackevil3730
@lackevil3730 4 года назад
С меня лайк, подписка и колокол, за все ваши уроки. Спасибо!
@kotikGGG
@kotikGGG 6 месяцев назад
прошу прощения, но расчет гиперболического тангенса у меня такой получился: -2/(1 + np.exp(2*x)) + 1
@selfedu_rus
@selfedu_rus 6 месяцев назад
одно и то же, только пологость разная, но это уже свободный параметр
@kotikGGG
@kotikGGG 6 месяцев назад
тут видимо логистическая функция
@FundLikVis
@FundLikVis 11 месяцев назад
хехе, помню где-то год назад смотрел это видео и ничего не понял. Теперь, через месяцев эдак 10 я смотрю это видео и лишь одно в голову лезет: "Боже, спасибо, как же он легко объясняет вещи"
@yurinikitin4942
@yurinikitin4942 Год назад
Огромнейшее спасибо! Очень долго не мог понять, как работает обратное распространение ошибки... голова кипела от математики.Теперь понял!
@andreibeliak9725
@andreibeliak9725 Год назад
Спасибо, очень круто сделано, всё понятно.
@horseman3253
@horseman3253 3 года назад
написал relu функцию активации, и тоже сработало, причем намного быстрее
@frostyden
@frostyden 3 месяца назад
Именно никто не мешает использовать пороговую фнкцию или ступенчатую, тут как с алгоритмами Fit так и с количеством слоев никто не знает как лучше все эмпирически подбирается... Единственно что резануло слух так как я уже видел что по активации эти подойдут в этом случае и даже лучше.
@pavel5878
@pavel5878 3 года назад
офигеть, жму руку!
@Andre-e9e9r
@Andre-e9e9r 5 месяцев назад
Скажите пожалуйста, почему ошибка, вычесляется как e = y - d, а не как e = d - y ?
@selfedu_rus
@selfedu_rus 5 месяцев назад
там без разницы, только во втором варианте получится e = -d + y
@Andre-e9e9r
@Andre-e9e9r 5 месяцев назад
@@selfedu_rus Спасибо! Быстро ответили.. или это не вы а, ваша нйросеть... 😊
@36795811
@36795811 Год назад
Вы все такие тут умные, а у меня вообще ни в один глаз даже после третьего просмотра. С чего начать? Первая лекция был прикольная, идею уловил, но дальше просто плыву. Что посмотреть? НУЖЕН СОВЕТ!
@VitalijaAlishauskaite
@VitalijaAlishauskaite Год назад
заинтересовались? дальше книги нужно читать и разбираться, иначе не получится. еще есть deep learning school, там объясняют подробно и пошагово, но все равно сложно... 🙂
@vdvorezlaya
@vdvorezlaya Год назад
если дружите с производными - то здесь ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-rP_k8cpsNWY.html будет более понятнее. Но если не дружите - то понять будет ооочень сложно
@sergo5001
@sergo5001 9 месяцев назад
Стоит посмотреть вакансию в макдональдсе
@jackpraid7710
@jackpraid7710 3 года назад
Я весь интернет перелазил, и ничего приспособленного к восприятию не нашёл, и тут я решил поискать в ютубе...
@ПавелУваров-ю2л
У меня есть вопрос. Гиперболический тангенс почему он именно такой?
@RomanRussia1981
@RomanRussia1981 7 месяцев назад
Автор ты написал ерунду! У тебя вес связей будет уходить постоянно в минус. В итоге конечная логистическая функция будет приближаться к нулю
@ihorkuznetsov8338
@ihorkuznetsov8338 3 года назад
Просьба скорее глупая, но можно юзать темную тему?) Учусь в основном ночью, сам сижу за темной, когда между видео и эдитором прыгаю глазки болят(
@selfedu_rus
@selfedu_rus 3 года назад
Надо будет опрос провести. Если большинству нужна темная, будет темная )
@mr.brownstone8201
@mr.brownstone8201 2 года назад
Очень хорошее объяснение. Спасибо. Прохожу курс по нейросетям, иногда некоторые вещи не улавливаются сразу, а это видео отлично проясняет
@NONAME-wb7fv
@NONAME-wb7fv Год назад
А что за курс?
@mr.brownstone8201
@mr.brownstone8201 Год назад
@@NONAME-wb7fv уже не прохожу) От Тинькофф был DL
@vitaliyhusti
@vitaliyhusti 2 года назад
Большое спасибо за урок! А не подскажешь, какие разделы математики учить, чтобы глубже разобраться с нейронкой?)
@selfedu_rus
@selfedu_rus 2 года назад
по сути, всю вышку, особенно теорию вероятностей и мат статистику
@vitaliyhusti
@vitaliyhusti 2 года назад
@@selfedu_rus Понял, спасибо!)
@qilp4981
@qilp4981 Год назад
ничего не понял, но очень интересно
@alexkayful
@alexkayful 3 года назад
5:49 производная посчитана неправильно. По идее производная логистической функции 1/(1+е^x) будет равна: -e^x/(1+e^x)^2 Не благодарите! :)
@selfedu_rus
@selfedu_rus 3 года назад
Здесь функция неверно записана, там степень -x
@grey111111111
@grey111111111 11 месяцев назад
14:00 А почему 0.025 - это -1? Оно по значению ближе к 1
@selfedu_rus
@selfedu_rus 11 месяцев назад
тут все, что ближе к 0 интерпретируется как -1, т.к. в этой модели нет смещения (bias). Можно добавить и будет четко 1 и -1
@grey111111111
@grey111111111 11 месяцев назад
@@selfedu_rus большое спасибо за видео!
@leomysky
@leomysky 3 года назад
Просто великолепно, спасибо огромное!
@GuNStaRia
@GuNStaRia 2 года назад
Подскажите, когда у нас на выходе не один нейрон, а несколько, то мы вычисляем дельту для каждого, как дельта = (значение - ожидаемое) * значение * (1-значение) или же как и для скрытых слоёв мы здесь должны как-то просуммировать ошибку для всего слоя типа Е = е31 + е32 + ... + е3х?
@selfedu_rus
@selfedu_rus 2 года назад
для каждого, а затем, все абсолютно также
@TimurMagerramov
@TimurMagerramov Год назад
А почему используется минус в формуле при прогонке весов?
@networkpy8352
@networkpy8352 3 года назад
Батя!
@vicentedeleon1382
@vicentedeleon1382 3 года назад
Шикарное изложение, ясное и логичное! Спасибо большое!
@Blade_Ruiner
@Blade_Ruiner 2 года назад
Все уроки по обратной ошибке поделились на два лагеря: у одних ошибка - это "Что получилось" минус "Что ожидалось", у других - наоборот. Приходится работать с двумя вариантами и долгими ночами искать верный.
@selfedu_rus
@selfedu_rus 2 года назад
математическая основа здесь: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-vCL6E68v6L4.html
@картонобзоры
@картонобзоры Год назад
почему градиент для последнего умножается на е?
@andreibeliak6216
@andreibeliak6216 Год назад
Всё круто, но непонятно, почему вы не соблюдаете pep8, это же не сложно, пайчарм вам сам подсвечивает. Просто из-за этого потом люди мучаются всю жизнь, разве не стоит вам, раз уж вы беретесь других учить, соблюдать?
@yporotxx
@yporotxx 3 года назад
Готов предоставить услуги написания субтитров, ибо я конспектирую ваши видео в печатном варианте со вставочками картинок из видео, не знаю вообще зачем я это написал, но может кто-то такой же как и я :)
@selfedu_rus
@selfedu_rus 3 года назад
На английском было бы неплохо :))
@АннаДобрыдина-ш6л
так же делаю принтскрины, чтоб не перекручивать видео, очень удобно
@Sunny-bz9wp
@Sunny-bz9wp 2 года назад
Отлично и очень наглядно объяснили! Спасибо большое, наконец поняла алгоритм!)
@dubinin_s
@dubinin_s 2 года назад
У меня вопрос. Формулу локального градиента на выходном нейроне мы получаем при дифференциировании функции ошибки? И конкретно в приведенном примере мы получаем формулу е*f'(..), где е - ошибка нейронки, выступает в качестве коэффициента. И при других функциях потерь такой красивой формулы (е*f'(..)) для локального градиента на выходном нейроне мы не получим?! Я же все правильно понял?
@selfedu_rus
@selfedu_rus 2 года назад
да, все верно, при других ФП будут другие формулы
@dubinin_s
@dubinin_s 2 года назад
@@selfedu_rus Спасибо большое за ответ.
@ИсмоилОдинаев-й2я
@ИсмоилОдинаев-й2я 3 года назад
Здравствуйте! Хорошее объяснение. Но у меня все же возник один вопрос: вычисление локального градиента следующего слоя с конца производится уже по обновленным весовым связам первого слоя с конца или по не обновлённым ?
@selfedu_rus
@selfedu_rus 3 года назад
Да, хороший вопрос. Реально, можно и так и так, на результат сильно не повлияет. Чисто математически, нужно брать исходные (не измененные веса).
@monacci
@monacci 3 года назад
@@selfedu_rus спасибо
@АннаДобрыдина-ш6л
важно знать "как правильно" и действительно, особо не на что не повлияло :)
@mrzxccxz
@mrzxccxz 3 года назад
Очень качественное и понятное преподавание.
@gerda-morozova
@gerda-morozova 3 года назад
У меня вопрос на 8:58. Сказано, что т.к. у нас два выхода - мы сначала считаем взвешенную сумму входных нейронов. Я так понимаю, взвешенная сумма считается когда количество входных нейронов меньше количества нейронов на скрытом слое? Или взвешенная сумма входных нейронов считается всегда, независимо от количества входных нейронов? Надеюсь понятно объяснил. p.s. материал дико крутой. В ру-сегменте довольно мало такого контента
@selfedu_rus
@selfedu_rus 3 года назад
Да, запутанно немного написали. Все просто, если у нейрона более одного выхода (несколько выходных связей), то у каждой связи будет свой вес. Мы суммируем локальные градиенты от следующего слоя (идем назад) с учетом весов выходных связей. В анимации это как раз и показано.
@ДмитрийМарков-м4х
Если на входе имеется смещение, веса для него так же корректируются, или нет?
@selfedu_rus
@selfedu_rus Год назад
да, все абсолютно также
@ДмитрийМарков-м4х
@@selfedu_rus я пробовал корректировать веса, сеть не обучается. Потом отказался от весов смещения и поставил небольшое значение смещения как константу и все заработало. Это как объясняется?
@selfedu_rus
@selfedu_rus Год назад
что то не так сделали, смещение не может ухудшать результаты (на bias ограничений по значениям не накладывается, в том числе и регуляризаторы, шаг изменения при обучении лучше задавать отдельно)
@ISAWER1
@ISAWER1 Год назад
лайк и комментарий в поддержку канала.
@tehtema
@tehtema 3 года назад
По моему, у 2/(1 + exp(-x)) - 1 другая производная: 2*exp(-x)/(exp(-x) + 1)^2
@selfedu_rus
@selfedu_rus 3 года назад
все верно и если, затем, все выразить через исходную функцию f(x), то получим: f'(x) = 1/2*(1+f(x))*(1-f(x)). Сам не выводил, взял из книжки :)
@klimchegg
@klimchegg 2 года назад
Очень понятный и полезный урок
@sermob112
@sermob112 Год назад
Я не понимаю, что значат выход для нейросети, вот это 0.025 => -1 что значит? Понятно что y - это результат функции активации суммы весов скрытых нейронов, но толку то мне от этого числа? Как мне его использовать? У нас же суть обучения нейросети в том, чтобы подобрать нужные веса. Далее мы должны входное число умножить на эти веса, пропустить через функцию активации и т.д. пока на выходном нейроне не получим то, что нужно, так? В чем смысл этого результата?
@selfedu_rus
@selfedu_rus Год назад
Мы сами решаем, как интерпретировать выходные значения. Например, -1 в данном случае отказ от знакомства, а +1 - согласие. Подробнее можете задать вопрос в ТГ-канал по МО (ссылка под видео).
@Dmitrii82
@Dmitrii82 3 года назад
почему то нигде не говорят что новое значение W11=старое значениеW11*.....
@sunofabeach9424
@sunofabeach9424 2 года назад
вот настолько просто все? даже не верится
@urumain-minecraft4046
@urumain-minecraft4046 2 года назад
13:40
@yourzorge
@yourzorge 3 года назад
Хороший урок. А если добавить еще один слой нейронов, т.е. чтобы было три слоя взвешенных связей, какой будет код для обновления весов этих промежуточных связей?
@selfedu_rus
@selfedu_rus 3 года назад
Ну просто добавить математику для этого нового слоя и все. Там по аналогии делается.
@maxsmail1471
@maxsmail1471 2 года назад
Имеется вопрос, уместно ли будет запустить этот алгоритм в виде рекурсии с сохранением взвешенной суммы и локального градиента внутри нейрона, или это лишняя трата ресурсов?
@selfedu_rus
@selfedu_rus 2 года назад
Не совсем понятно. Но это уже все исследовано и вряд ли вы тут Америку открываете ))
@maxsmail1471
@maxsmail1471 2 года назад
@@selfedu_rus я понимаю что мне самоучек не открыть ни чего нового, до меня было много людей которые это уже делали, но гладя на этот метод обучения сразу начинаю думать о рекурсии. Дабы изменить веса нам нужны градиенты последующих для которых нужны градиенты последующих, и так до выполнения условия завершения, последний слой или тип выходной
@maxsmail1471
@maxsmail1471 2 года назад
Ну и чем больше комментариев тем лучше, спасибо за лекцию
@selfedu_rus
@selfedu_rus 2 года назад
@@maxsmail1471 Back propagation, как раз и учитывает эту рекурсию, когда сначала проходит вперед по сети, а затем, вычисляет ошибки, проходя по ней назад.
@ОльгаЛисицына-у1ж
@ОльгаЛисицына-у1ж 3 года назад
Там в логистической функции e в степени минус икс должно быть
@selfedu_rus
@selfedu_rus 3 года назад
да, верно, об этом тут уже писали - опечатка
@АсельАртыкбаева-и1в
@АсельАртыкбаева-и1в 7 месяцев назад
Благодарю вас за вашу работу!!!!
@greenpixelman5809
@greenpixelman5809 11 месяцев назад
на 5:49 точно нет ошибки при задании логистической функции (e^{-x} вроде должно быть)?
@selfedu_rus
@selfedu_rus 11 месяцев назад
да, там степень должна фигурировать
@id-4
@id-4 Год назад
Алгоритм не работает если есть 2 входа. Причём с другой функцией активации (например, x**2) веса вручную подобрать можно. А если при 1/1 и -1/-1 нужны одинаковые значения, алгоритм вообще не меняет веса в 1 слое
@__-pq1nt
@__-pq1nt 2 года назад
Возник вопрос с математикой. Если не сложно, то могли бы вы написать, какие темы нужны. Я сам в десятом классе, интересуюсь нейронными сетями в практических задачах (занимаюсь робототехникой, но на серьёзном уровне, а там как раз хочется подключить их). Я понимаю, что нужна высшая математика, но не понимаю с чего начать разбираться, какие темы нужны для нейронных сетей. Если вас не затруднит, то не могли бы вы написать базовые темы? P.s. я примерно понимаю, какие темы нужны, но в каком порядке? Я начал с производных, там какие-то правила дифференцирования применяются, то есть точно уж не с производных надо начинать
@selfedu_rus
@selfedu_rus 2 года назад
для таких вопросов есть телеграм канал: t.me/machine_learning_selfedu там сообщество много чего порекомендует! ))
@__-pq1nt
@__-pq1nt 2 года назад
@@selfedu_rus спасибо, подписался
@ИсмоилОдинаев-й2я
Добрый вечер, уважаемый Сергей! Момент: у вас обучение сети идет по batch и для каждой обучающей пары у вас считаются свои градиенты и back pass. Вопросы: 1) нельзя ли для всех пар обучающей выборки считать один усредненный градиент и back pass? 2) если да, то правильно понимаю что при forward pass нужно как выходы активационлых функций (out1, out2 и т.д.), так и выход сети (y) усреднить, а потом начать считать градиенты по ним? 3) eсли 1 вопрос да, то как усреднить вектор входных значений, когда в качестве мини batch-а они идут скользящим окном?
@selfedu_rus
@selfedu_rus Год назад
1-2) мы подаем мини батч на вход, для каждого образа вычисляем градиент, вычисляем для него изменение весов (описанный алгоритм), а затем, в конце, усредняем все изменения весов, вычисленные для всех наблюдений их мини батча.
@ИсмоилОдинаев-й2я
@@selfedu_rus Теперь понятно. Большое вам спасибо!
@evgzhu8558
@evgzhu8558 3 года назад
5+
@vanyamba
@vanyamba 2 года назад
Минус? Лучший результат даёт плюс, если ошибку предварительно прогнать через гиперболический тангенс.
@almazik9411
@almazik9411 Месяц назад
Откуда d взять
@selfedu_rus
@selfedu_rus Месяц назад
это в обучающей выборке должно быть: набор входов и требуемых выходов
@almazik9411
@almazik9411 Месяц назад
@@selfedu_rus спасибо🙏
@romchass
@romchass 13 дней назад
Объясните, пожалуйста, как вывели формулу для локального градиента и что она означает...
@selfedu_rus
@selfedu_rus 13 дней назад
Алгоритм back propagation: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-vCL6E68v6L4.html
@romchass
@romchass 13 дней назад
@@selfedu_rus Спасибо!
@REDrodder
@REDrodder 2 года назад
объяснено нормально, но не до конца
@распределениеПуассона
6:34 рассмторим конечный слой и связть f21*w_11 = y. Если рассчитать так называемый локальный градиент для w_11, то будет y(1 - y) * f_21. То есть f_21 это часть локального градиента, а в формуле для обновления веса она указана как просто выход прошлого слоя и стоит отдельно от локального градиента, так ли должно быть? Опирался на понятие локального градиента(изменения функции y от веса w) от стэнфорского определения данного в лекции№4 от 2016 года, зима
@torbokovsanat
@torbokovsanat 3 года назад
+
@Татьяна-е6ь6т
@Татьяна-е6ь6т 2 года назад
Всем привет! Пожалуйста, подскажите, почему локальный градиент вычисляется как e*f'(v)?
@Татьяна-е6ь6т
@Татьяна-е6ь6т 2 года назад
Не досмотрела до 10:25 :) теперь все понятно.
@Татьяна-е6ь6т
@Татьяна-е6ь6т 2 года назад
Спасибо за ваш видео курс, так все четко, постепенно и понятно:)
Далее
Алгоритм Дейкстры
5:08
Просмотров 263
荧光棒的最佳玩法UP+#short #angel #clown
00:18
The Most Important Algorithm in Machine Learning
40:08
Просмотров 443 тыс.