Спасибо большое за такой контент. Очень долго искал информацию об обучении нейросетей,написанную/рассказанную человеческим языком. Желаю вам быстрого продвижения!
Самое лучшее видео по теме, которое я посмотрел (я в теме новичок, к тому же использую не полу-линейную, а просто линейную функцию активации). Не очень понятно только одно. Как вычислить величину изменения весов для нейрона идущего на шаг назад?
Она вычисляется, как произведение ошибки текущего нейрона, производная функции активации (1 или 0 в случае ReLU) и веса соответствующей связи. В этом смысле, вычисления передаваемой "назад" ошибки на каждом слое идентичны: нужна ошибка текущего слоя, функция активации и веса связей.
@@ittensive то есть, если на нейроне ошибка равна 3, то на предыдущем нейроне вес связи которого с текущим нейроном составляет 1, то и ошибка предыдущего нейрона будет тоже 3?
@@ezy-boshy7855 если у вас ReLu, и значение нейрона было ненулевым, то да - уйдет изменение 3. Если нейрон не был активирован (значение 0), или другая функция активации - то ошибка будет другой.
Буду рад, если ответите. Почему в некоторых источниках приводится гораздо более сложная реализация работы этого алгоритма, с вычислением производных (на вики, например)? Это какая-то упрощённая модель?
Эта та же самая модель, но объясненная простым языком :) Задача обучения в ITtensive - донести сложные вещи максимально просто, без ухода в километровые формулы и мат.модели. Все равно почти всегда нужно использовать готовые модели и отработанные функции, очень редко, когда приходится реально разрабатывать новые алгоритмы или подходы.
@@ittensive Спасибо, я уже разобрался. Но вы всё же лукавите - это не та же самая модель, это её частный случай. Если, например, в качестве cost function будет на mse, а кросс-энтропия, то и формулы будут иными. Этот момент лучше уточнять, а то человеку не будет ясно, откуда вообще эти формулы берутся
И да, и нет :) В видео рассмотрена задача регрессии, там ошибка по наименьшим квадратам считается (mse). При кросс-энтропии, очевидно, будут другие формулы, о них в следующих видео будем рассказывать.
Даже условно 4 и 1.5 не могло получиться. Изначально дельта вычислялась как разница между ожидаемым и фактическим : 0.5 - 3.5 = -3. Потом определили веса для двух ребер, ну тут все правильно. Затем эти веса умножаем на значение, например -0.9*7 = - 6.3. Далее, если исходить из логики расчета дельты, где мы получали -3, а именно отнимаем из значения скорректированное значение, то получим 7 - (-6.3)= 13.3 То есть тут явно даже условно не 4, а в целом значение увеличилось а не уменьшилось. Объяснение простое, но математически не логичное. А логика в подобных вещах должна быть.
все хорошо, только знак у дельты берется другой: это ошибка, которая вычитается из весов (т.е. берется с минусом в остальных вычислениях, чтобы уменьшить значения с 3,5 до 0,5). На каком этапе брать знак минус в данном случае - это вопрос выбора: в любом случае, нам нужно уменьшить входящие значения, что и делается по разнице получившегося и фактического значений.
Многие берут разность квадратов при вычислении дельты, то есть d = e2-y2. Ваш расчет дельты тоже часто используется. Было бы хорошо если бы вы по подробнее рассказали бы о разнице между двух подходов. Я так понимаю разность квадрата не точно отражает разницу (особенно когда e+y != 1), но отсекает возможность образования восходящей тенденции для ошибки... Но это не точно, лишь мои догадки...
@@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 Для определения весов от исп. сигналов к скрытому слою по аналогии, за исключением того, что там я вычисляю суммарную ошибку и веду расчеты уже от нее. Получается в итоге рабочий алгоритм. Может ваша концепция конечно и работает именно в таком изложении, но понял я только то, что самое главное не рассказано. + много сомнительных моментов.
@@glebkrel5526 вес изменяется не во сколько раз, а на сколько. Деля изменение веса на исходное значение вы получаете не производную, а производную со сдвигом, равным удвоенному целевому показателю, т.е. дальше все вычисления идут с большим смещением. Конечно, этот вариант может привести, при наличии верных корректировок к правильному результату, но в корне отличается от метода обратного распространения ошибки. Еще раз: вы распространяете именно ошибку по связям, а не то, во сколько раз вам эти связи нужно подкрутить. Не "во сколько" изменяется, а "на сколько". Это позволяет скорректировать как разброс, так и смещение модели. И менее подвержено проблеме раскачки градиента.
Спасибо большое за такой контент. Очень долго искал информацию об обучении нейросетей,написанную/рассказанную человеческим языком. Желаю вам быстрого продвижения!
Спосибо за инфу
Самое лучшее видео по теме, которое я посмотрел (я в теме новичок, к тому же использую не полу-линейную, а просто линейную функцию активации). Не очень понятно только одно. Как вычислить величину изменения весов для нейрона идущего на шаг назад?
Она вычисляется, как произведение ошибки текущего нейрона, производная функции активации (1 или 0 в случае ReLU) и веса соответствующей связи. В этом смысле, вычисления передаваемой "назад" ошибки на каждом слое идентичны: нужна ошибка текущего слоя, функция активации и веса связей.
@@ittensive то есть, если на нейроне ошибка равна 3, то на предыдущем нейроне вес связи которого с текущим нейроном составляет 1, то и ошибка предыдущего нейрона будет тоже 3?
@@ezy-boshy7855 если у вас ReLu, и значение нейрона было ненулевым, то да - уйдет изменение 3. Если нейрон не был активирован (значение 0), или другая функция активации - то ошибка будет другой.
Буду рад, если ответите. Почему в некоторых источниках приводится гораздо более сложная реализация работы этого алгоритма, с вычислением производных (на вики, например)? Это какая-то упрощённая модель?
Эта та же самая модель, но объясненная простым языком :) Задача обучения в ITtensive - донести сложные вещи максимально просто, без ухода в километровые формулы и мат.модели. Все равно почти всегда нужно использовать готовые модели и отработанные функции, очень редко, когда приходится реально разрабатывать новые алгоритмы или подходы.
@@ittensive Спасибо, я уже разобрался. Но вы всё же лукавите - это не та же самая модель, это её частный случай. Если, например, в качестве cost function будет на mse, а кросс-энтропия, то и формулы будут иными. Этот момент лучше уточнять, а то человеку не будет ясно, откуда вообще эти формулы берутся
И да, и нет :) В видео рассмотрена задача регрессии, там ошибка по наименьшим квадратам считается (mse). При кросс-энтропии, очевидно, будут другие формулы, о них в следующих видео будем рассказывать.
5:06 Ответ будет 3,3
3 умножить на 0,4 будет 1,2 а не 1,4 ))))
На какой минуте 1,4 ? Там вроде 1,2 получилось
@@ittensive 5:00
@@user-pn7gq3gk1m 1 и 4 это не 1,4 ;) это просто 1 и 4
@@ittensive 3*0,4+7*0,3=3,5?
@@VereskM Ошибку исправили в видео "Практика обратного распространения ошибки", там, как и положено, 3.3
Подскажите, пожалуйста, как получилось значение 2.7 на второй эпохе?
Посмотрите следующее видео - Практика обратного распространения ошибки. Там все вычисления приводятся.
Даже условно 4 и 1.5 не могло получиться. Изначально дельта вычислялась как разница между ожидаемым и фактическим : 0.5 - 3.5 = -3. Потом определили веса для двух ребер, ну тут все правильно. Затем эти веса умножаем на значение, например -0.9*7 = - 6.3. Далее, если исходить из логики расчета дельты, где мы получали -3, а именно отнимаем из значения скорректированное значение, то получим 7 - (-6.3)= 13.3 То есть тут явно даже условно не 4, а в целом значение увеличилось а не уменьшилось. Объяснение простое, но математически не логичное. А логика в подобных вещах должна быть.
все хорошо, только знак у дельты берется другой: это ошибка, которая вычитается из весов (т.е. берется с минусом в остальных вычислениях, чтобы уменьшить значения с 3,5 до 0,5). На каком этапе брать знак минус в данном случае - это вопрос выбора: в любом случае, нам нужно уменьшить входящие значения, что и делается по разнице получившегося и фактического значений.
Многие берут разность квадратов при вычислении дельты, то есть d = e2-y2. Ваш расчет дельты тоже часто используется. Было бы хорошо если бы вы по подробнее рассказали бы о разнице между двух подходов. Я так понимаю разность квадрата не точно отражает разницу (особенно когда e+y != 1), но отсекает возможность образования восходящей тенденции для ошибки... Но это не точно, лишь мои догадки...
@@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
Для определения весов от исп. сигналов к скрытому слою по аналогии, за исключением того, что там я вычисляю суммарную ошибку и веду расчеты уже от нее. Получается в итоге рабочий алгоритм.
Может ваша концепция конечно и работает именно в таком изложении, но понял я только то, что самое главное не рассказано. + много сомнительных моментов.
@@glebkrel5526 вес изменяется не во сколько раз, а на сколько. Деля изменение веса на исходное значение вы получаете не производную, а производную со сдвигом, равным удвоенному целевому показателю, т.е. дальше все вычисления идут с большим смещением. Конечно, этот вариант может привести, при наличии верных корректировок к правильному результату, но в корне отличается от метода обратного распространения ошибки. Еще раз: вы распространяете именно ошибку по связям, а не то, во сколько раз вам эти связи нужно подкрутить. Не "во сколько" изменяется, а "на сколько". Это позволяет скорректировать как разброс, так и смещение модели. И менее подвержено проблеме раскачки градиента.
@@ittensive Тогда вообще не понятно... надо лезть в книгу и смотреть. Теперь хочу сравнить способ подгонки и обратку....
ролик о том как умножать складывать вычитать и делить )))) нет чтоб формулы и алгоритм объяснить....
В видео как раз объясняются формулы и алгоритм. Максимально "на пальцах". Сложнее материал будет не воспринять в виде видео-лекции.