Обратное распространение ошибки

Sdílet
Vložit

Komentáře • 31

  • @Nickola_United
    @Nickola_United Před 3 lety +9

    Спасибо большое за такой контент. Очень долго искал информацию об обучении нейросетей,написанную/рассказанную человеческим языком. Желаю вам быстрого продвижения!

  • @davyedigaryan7610
    @davyedigaryan7610 Před 3 lety

    Спосибо за инфу

  • @ezy-boshy7855
    @ezy-boshy7855 Před 3 lety +4

    Самое лучшее видео по теме, которое я посмотрел (я в теме новичок, к тому же использую не полу-линейную, а просто линейную функцию активации). Не очень понятно только одно. Как вычислить величину изменения весов для нейрона идущего на шаг назад?

    • @ittensive
      @ittensive  Před 3 lety

      Она вычисляется, как произведение ошибки текущего нейрона, производная функции активации (1 или 0 в случае ReLU) и веса соответствующей связи. В этом смысле, вычисления передаваемой "назад" ошибки на каждом слое идентичны: нужна ошибка текущего слоя, функция активации и веса связей.

    • @ezy-boshy7855
      @ezy-boshy7855 Před 3 lety +1

      @@ittensive то есть, если на нейроне ошибка равна 3, то на предыдущем нейроне вес связи которого с текущим нейроном составляет 1, то и ошибка предыдущего нейрона будет тоже 3?

    • @ittensive
      @ittensive  Před 3 lety

      @@ezy-boshy7855 если у вас ReLu, и значение нейрона было ненулевым, то да - уйдет изменение 3. Если нейрон не был активирован (значение 0), или другая функция активации - то ошибка будет другой.

  • @_BOEGOLOVKA_
    @_BOEGOLOVKA_ Před 4 lety

    Буду рад, если ответите. Почему в некоторых источниках приводится гораздо более сложная реализация работы этого алгоритма, с вычислением производных (на вики, например)? Это какая-то упрощённая модель?

    • @ittensive
      @ittensive  Před 3 lety +1

      Эта та же самая модель, но объясненная простым языком :) Задача обучения в ITtensive - донести сложные вещи максимально просто, без ухода в километровые формулы и мат.модели. Все равно почти всегда нужно использовать готовые модели и отработанные функции, очень редко, когда приходится реально разрабатывать новые алгоритмы или подходы.

    • @_BOEGOLOVKA_
      @_BOEGOLOVKA_ Před 3 lety

      @@ittensive Спасибо, я уже разобрался. Но вы всё же лукавите - это не та же самая модель, это её частный случай. Если, например, в качестве cost function будет на mse, а кросс-энтропия, то и формулы будут иными. Этот момент лучше уточнять, а то человеку не будет ясно, откуда вообще эти формулы берутся

    • @ittensive
      @ittensive  Před 3 lety

      И да, и нет :) В видео рассмотрена задача регрессии, там ошибка по наименьшим квадратам считается (mse). При кросс-энтропии, очевидно, будут другие формулы, о них в следующих видео будем рассказывать.

  • @spaiktv3885
    @spaiktv3885 Před 3 lety +1

    5:06 Ответ будет 3,3

  • @user-pn7gq3gk1m
    @user-pn7gq3gk1m Před 3 lety +6

    3 умножить на 0,4 будет 1,2 а не 1,4 ))))

    • @ittensive
      @ittensive  Před 3 lety

      На какой минуте 1,4 ? Там вроде 1,2 получилось

    • @user-pn7gq3gk1m
      @user-pn7gq3gk1m Před 3 lety

      @@ittensive 5:00

    • @ittensive
      @ittensive  Před 3 lety +1

      @@user-pn7gq3gk1m 1 и 4 это не 1,4 ;) это просто 1 и 4

    • @VereskM
      @VereskM Před 3 lety +2

      @@ittensive 3*0,4+7*0,3=3,5?

    • @ruslanzakharov4218
      @ruslanzakharov4218 Před 3 lety +1

      @@VereskM Ошибку исправили в видео "Практика обратного распространения ошибки", там, как и положено, 3.3

  • @evgeniimaltsev5379
    @evgeniimaltsev5379 Před 3 lety

    Подскажите, пожалуйста, как получилось значение 2.7 на второй эпохе?

    • @ittensive
      @ittensive  Před 3 lety

      Посмотрите следующее видео - Практика обратного распространения ошибки. Там все вычисления приводятся.

  • @glebkrel5526
    @glebkrel5526 Před 3 lety

    Даже условно 4 и 1.5 не могло получиться. Изначально дельта вычислялась как разница между ожидаемым и фактическим : 0.5 - 3.5 = -3. Потом определили веса для двух ребер, ну тут все правильно. Затем эти веса умножаем на значение, например -0.9*7 = - 6.3. Далее, если исходить из логики расчета дельты, где мы получали -3, а именно отнимаем из значения скорректированное значение, то получим 7 - (-6.3)= 13.3 То есть тут явно даже условно не 4, а в целом значение увеличилось а не уменьшилось. Объяснение простое, но математически не логичное. А логика в подобных вещах должна быть.

    • @ittensive
      @ittensive  Před 3 lety +1

      все хорошо, только знак у дельты берется другой: это ошибка, которая вычитается из весов (т.е. берется с минусом в остальных вычислениях, чтобы уменьшить значения с 3,5 до 0,5). На каком этапе брать знак минус в данном случае - это вопрос выбора: в любом случае, нам нужно уменьшить входящие значения, что и делается по разнице получившегося и фактического значений.

    • @glebkrel5526
      @glebkrel5526 Před 3 lety

      Многие берут разность квадратов при вычислении дельты, то есть d = e2-y2. Ваш расчет дельты тоже часто используется. Было бы хорошо если бы вы по подробнее рассказали бы о разнице между двух подходов. Я так понимаю разность квадрата не точно отражает разницу (особенно когда e+y != 1), но отсекает возможность образования восходящей тенденции для ошибки... Но это не точно, лишь мои догадки...

    • @glebkrel5526
      @glebkrel5526 Před 3 lety

      ​@@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
      Для определения весов от исп. сигналов к скрытому слою по аналогии, за исключением того, что там я вычисляю суммарную ошибку и веду расчеты уже от нее. Получается в итоге рабочий алгоритм.
      Может ваша концепция конечно и работает именно в таком изложении, но понял я только то, что самое главное не рассказано. + много сомнительных моментов.

    • @ittensive
      @ittensive  Před 3 lety

      @@glebkrel5526 вес изменяется не во сколько раз, а на сколько. Деля изменение веса на исходное значение вы получаете не производную, а производную со сдвигом, равным удвоенному целевому показателю, т.е. дальше все вычисления идут с большим смещением. Конечно, этот вариант может привести, при наличии верных корректировок к правильному результату, но в корне отличается от метода обратного распространения ошибки. Еще раз: вы распространяете именно ошибку по связям, а не то, во сколько раз вам эти связи нужно подкрутить. Не "во сколько" изменяется, а "на сколько". Это позволяет скорректировать как разброс, так и смещение модели. И менее подвержено проблеме раскачки градиента.

    • @glebkrel5526
      @glebkrel5526 Před 3 lety

      @@ittensive Тогда вообще не понятно... надо лезть в книгу и смотреть. Теперь хочу сравнить способ подгонки и обратку....

  • @andreyr7461
    @andreyr7461 Před 3 lety

    ролик о том как умножать складывать вычитать и делить )))) нет чтоб формулы и алгоритм объяснить....

    • @ittensive
      @ittensive  Před 3 lety +2

      В видео как раз объясняются формулы и алгоритм. Максимально "на пальцах". Сложнее материал будет не воспринять в виде видео-лекции.