Спасибо большое за такой контент. Очень долго искал информацию об обучении нейросетей,написанную/рассказанную человеческим языком. Желаю вам быстрого продвижения!
@ezy-boshy78554 жыл бұрын
Самое лучшее видео по теме, которое я посмотрел (я в теме новичок, к тому же использую не полу-линейную, а просто линейную функцию активации). Не очень понятно только одно. Как вычислить величину изменения весов для нейрона идущего на шаг назад?
@ittensive4 жыл бұрын
Она вычисляется, как произведение ошибки текущего нейрона, производная функции активации (1 или 0 в случае ReLU) и веса соответствующей связи. В этом смысле, вычисления передаваемой "назад" ошибки на каждом слое идентичны: нужна ошибка текущего слоя, функция активации и веса связей.
@ezy-boshy78554 жыл бұрын
@@ittensive то есть, если на нейроне ошибка равна 3, то на предыдущем нейроне вес связи которого с текущим нейроном составляет 1, то и ошибка предыдущего нейрона будет тоже 3?
@ittensive4 жыл бұрын
@@ezy-boshy7855 если у вас ReLu, и значение нейрона было ненулевым, то да - уйдет изменение 3. Если нейрон не был активирован (значение 0), или другая функция активации - то ошибка будет другой.
@_BOEGOLOVKA_4 жыл бұрын
Буду рад, если ответите. Почему в некоторых источниках приводится гораздо более сложная реализация работы этого алгоритма, с вычислением производных (на вики, например)? Это какая-то упрощённая модель?
@ittensive4 жыл бұрын
Эта та же самая модель, но объясненная простым языком :) Задача обучения в ITtensive - донести сложные вещи максимально просто, без ухода в километровые формулы и мат.модели. Все равно почти всегда нужно использовать готовые модели и отработанные функции, очень редко, когда приходится реально разрабатывать новые алгоритмы или подходы.
@_BOEGOLOVKA_4 жыл бұрын
@@ittensive Спасибо, я уже разобрался. Но вы всё же лукавите - это не та же самая модель, это её частный случай. Если, например, в качестве cost function будет на mse, а кросс-энтропия, то и формулы будут иными. Этот момент лучше уточнять, а то человеку не будет ясно, откуда вообще эти формулы берутся
@ittensive4 жыл бұрын
И да, и нет :) В видео рассмотрена задача регрессии, там ошибка по наименьшим квадратам считается (mse). При кросс-энтропии, очевидно, будут другие формулы, о них в следующих видео будем рассказывать.
@evgeniimaltsev53793 жыл бұрын
Подскажите, пожалуйста, как получилось значение 2.7 на второй эпохе?
@ittensive3 жыл бұрын
Посмотрите следующее видео - Практика обратного распространения ошибки. Там все вычисления приводятся.
@NazarTropanets4 жыл бұрын
3 умножить на 0,4 будет 1,2 а не 1,4 ))))
@ittensive4 жыл бұрын
На какой минуте 1,4 ? Там вроде 1,2 получилось
@NazarTropanets4 жыл бұрын
@@ittensive 5:00
@ittensive4 жыл бұрын
@@NazarTropanets 1 и 4 это не 1,4 ;) это просто 1 и 4
@VereskM3 жыл бұрын
@@ittensive 3*0,4+7*0,3=3,5?
@ruslanzakharov42183 жыл бұрын
@@VereskM Ошибку исправили в видео "Практика обратного распространения ошибки", там, как и положено, 3.3
@davyedigaryan76104 жыл бұрын
Спосибо за инфу
@spaiktv38853 жыл бұрын
5:06 Ответ будет 3,3
@andreyr74613 жыл бұрын
ролик о том как умножать складывать вычитать и делить )))) нет чтоб формулы и алгоритм объяснить....
@ittensive3 жыл бұрын
В видео как раз объясняются формулы и алгоритм. Максимально "на пальцах". Сложнее материал будет не воспринять в виде видео-лекции.
@glebkrel55264 жыл бұрын
Даже условно 4 и 1.5 не могло получиться. Изначально дельта вычислялась как разница между ожидаемым и фактическим : 0.5 - 3.5 = -3. Потом определили веса для двух ребер, ну тут все правильно. Затем эти веса умножаем на значение, например -0.9*7 = - 6.3. Далее, если исходить из логики расчета дельты, где мы получали -3, а именно отнимаем из значения скорректированное значение, то получим 7 - (-6.3)= 13.3 То есть тут явно даже условно не 4, а в целом значение увеличилось а не уменьшилось. Объяснение простое, но математически не логичное. А логика в подобных вещах должна быть.
@ittensive4 жыл бұрын
все хорошо, только знак у дельты берется другой: это ошибка, которая вычитается из весов (т.е. берется с минусом в остальных вычислениях, чтобы уменьшить значения с 3,5 до 0,5). На каком этапе брать знак минус в данном случае - это вопрос выбора: в любом случае, нам нужно уменьшить входящие значения, что и делается по разнице получившегося и фактического значений.
@glebkrel55264 жыл бұрын
Многие берут разность квадратов при вычислении дельты, то есть d = e2-y2. Ваш расчет дельты тоже часто используется. Было бы хорошо если бы вы по подробнее рассказали бы о разнице между двух подходов. Я так понимаю разность квадрата не точно отражает разницу (особенно когда e+y != 1), но отсекает возможность образования восходящей тенденции для ошибки... Но это не точно, лишь мои догадки...
@glebkrel55264 жыл бұрын
@@ittensive Я тут разбирался со всем этим. И пришел к тому что никак нельзя умножать разницу на вес, так как это не характеризует размер на который нужно уменьшить вес. Я же сделал вот так вот: Ну для начало я никак не смог получить 3.5 на выходе сети. У меня получилась 7*0.3+3*0.4+0=3.3 Ошибка нейрона (Дельта) составила 0.5 - 3.3 = -2.8 Далее я измеряю то во сколько раз надо уменьшить(увеличить) вес: -2.8/0.5=-5.6 Это значение я умножаю на 0.3, получаю вес -1.68 Потом корректирую значение нейрона в скрытом слое на основании имеющегося веса и правильного ответа: 0.5/-1.68 = -0.297 (Это значение становится заместо 7 для расчета следующих весов). Для нижнего ребра по аналогии: вес будет равен 0.4*(-5.6)= -2.24, а значение 0.5/-2.24=-0.223 Для определения весов от исп. сигналов к скрытому слою по аналогии, за исключением того, что там я вычисляю суммарную ошибку и веду расчеты уже от нее. Получается в итоге рабочий алгоритм. Может ваша концепция конечно и работает именно в таком изложении, но понял я только то, что самое главное не рассказано. + много сомнительных моментов.
@ittensive4 жыл бұрын
@@glebkrel5526 вес изменяется не во сколько раз, а на сколько. Деля изменение веса на исходное значение вы получаете не производную, а производную со сдвигом, равным удвоенному целевому показателю, т.е. дальше все вычисления идут с большим смещением. Конечно, этот вариант может привести, при наличии верных корректировок к правильному результату, но в корне отличается от метода обратного распространения ошибки. Еще раз: вы распространяете именно ошибку по связям, а не то, во сколько раз вам эти связи нужно подкрутить. Не "во сколько" изменяется, а "на сколько". Это позволяет скорректировать как разброс, так и смещение модели. И менее подвержено проблеме раскачки градиента.
@glebkrel55264 жыл бұрын
@@ittensive Тогда вообще не понятно... надо лезть в книгу и смотреть. Теперь хочу сравнить способ подгонки и обратку....