Различия между методами обратного распространения

17

Ради интереса я пытаюсь разработать нейронную сеть.

Теперь для обратного распространения я увидел две техники.

Первый используется здесь и во многих других местах.

Что это делает:

  • Он вычисляет ошибку для каждого выходного нейрона.
  • Он распространяет его обратно в сеть (вычисляя ошибку для каждого внутреннего нейрона).
  • Он обновляет веса по формуле: (где изменение веса, скорость обучения, ошибка нейрона, получающего входные данные из синапса и являющиеся выходными данными, передаваемыми в синапсе).
  • Он повторяется для каждой записи набора данных столько раз, сколько требуется.

Тем не менее, нейронная сеть, предложенная в этом руководстве (также доступна на GitHub), использует другую технику:

  • Он использует функцию ошибки (другой метод имеет функцию ошибки, но он не использует ее для обучения).
  • У него есть другая функция, которая может вычислить окончательную ошибку, начиная с весов.
  • Это минимизирует эту функцию (посредством градиентного спуска).

Теперь какой метод следует использовать?

Я думаю, что первый является наиболее используемым (потому что я видел различные примеры, использующие его), но работает ли он также?

В частности, я не знаю:

  • Разве это больше не подчиняется локальным минимумам (поскольку не использует квадратичные функции)?
  • Так как на изменение каждого веса влияет выходное значение его выходного нейрона, не влияют ли записи набора данных, которые просто дают более высокие значения в нейронах (а не только выходные), на веса больше, чем другие записи?

Теперь я предпочитаю первый метод, потому что я считаю, что его проще реализовать и легче думать.

Хотя, если у него есть проблемы, о которых я упоминал (которые, я надеюсь, нет), есть ли реальная причина использовать его по сравнению со вторым методом?

Aspie96
источник

Ответы:

6

Два примера представляют по существу одну и ту же операцию:

  • В обоих случаях сеть обучается с градиентным спуском с использованием квадратной ошибки с обратным распространением, вычисленной на выходе.
  • Оба примера используют логистическую функцию для активации узла (производная от логистической функции sесть s(1 - s). Эта производная, очевидно, очень легко вычисляется, и это одна из причин того, почему она так широко использовалась (в наши дни функция активации ReLU более популярна) особенно с сверточными сетями).
  • Первый метод также использует импульс .

Основное отличие, которое я вижу, состоит в том, что в первом случае обратное распространение является итеративным, а во втором примере оно выполняется в пакетном режиме.

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

cantordust
источник