В чем разница между SGD и обратным распространением?

можете ли вы сказать мне разницу между стохастическим градиентным спуском (SGD) и обратным перемещением?

4 ответов


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

SGD является одним из многих методов оптимизации, а именно оптимизатор первого порядка, что означает, что он основан на анализе градиент цели. Следовательно, с точки зрения нейронных сетей он часто применяется вместе с backprop для эффективного обновления. Вы также можете применить SGD к градиентам, полученным другим способом(от выборки, численных аппроксиматоров и т. д.). Симметрично вы можете использовать другие методы оптимизации с backprop, а также все, что может использовать градиент/якобиан.

Это распространенное заблуждение исходит из того, что для простоты люди иногда говорят "обученный с backprop", что на самом деле означает (если они не указывают оптимизатор) "обученный с SGD, используя backprop в качестве градиентной вычислительной техники". Кроме того, в старых учебниках вы можете найти такие вещи, как" правило дельты " и другие немного запутанные термины, которые точно описывают то же самое (поскольку сообщество нейронных сетей долгое время было немного независимым от общего сообщества оптимизации).

таким образом, у вас есть два слоя абстракции:

  • градиентное вычисление-где backprop приходит играть
  • уровень оптимизации - где методы, такие как SGD, Adam, Rprop, BFGS и т. д. вступают в игру, которые (если они первого порядка или выше) используют градиент, вычисленный выше

Градиентного Спуска метод optimization и minimizing на функции потерь.

на Стохастический Градиентный Спуск (SGD) вы используете Пример 1 в каждом шаг для обновления весов вашей модели зависит от ошибки из этого примера, вместо того, чтобы использовать среднее значение ошибок все примеры на каждом шаг.

и чтобы вычислить Стохастический Градиентный Спуск нужно вычислить градиент вашей модели.

и здесь Backpropagation является эффективным методом для вычисления gradient.

так, это часто применяется Backpropagation С SGD чтобы сделать вашу модель эффективного.

резюме

Backpropagation для получения gradient (которые дают вам направление в который вы свернуть ошибки), но не даст вам, как использовать эти градиенты.

Градиентного Спуска использовать эти gradients обновить весом модели (Эл.г умножение градиент с константой и добавьте их в весом)


много отличных ответов, BackProp - это просто трюк для вычисления производной с несколькими переменными, тогда как SGD-это метод определения минимума вашей функции потерь/затрат.


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

Backpropogation-это метод изменения веса в нейронной сети. Вычисляется термин ошибки для вывода NN, а затем веса корректируются в обратном порядке.

эти два метода используются совместно для обучения стандартной многослойной нейронной сети.