В чем разница между градиентным спуском и стохастическим градиентным спуском?

24

В чем разница между градиентным спуском и стохастическим градиентным спуском?

Я не очень знаком с ними, можете ли вы описать разницу с помощью короткого примера?

разработчик
источник

Ответы:

28

Для быстрого простого объяснения:

Как в градиентном спуске (GD), так и в стохастическом градиентном спуске (SGD) вы обновляете набор параметров итеративным образом, чтобы минимизировать функцию ошибок.

Находясь в GD, вы должны пройти ВСЕ образцы в вашем обучающем наборе, чтобы выполнить одно обновление для параметра в определенной итерации, а в SGD, с другой стороны, вы используете ТОЛЬКО ОДИН или ВСПОМОГАТЕЛЬНЫЙ обучающий образец из своего обучающего набора сделать обновление для параметра в конкретной итерации. Если вы используете SUBSET, он называется Minibatch Stochastic Gracent Descent.

Таким образом, если количество обучающих выборок велико, а на самом деле очень велико, то использование градиентного спуска может занять слишком много времени, потому что на каждой итерации, когда вы обновляете значения параметров, вы проходите полный обучающий набор. С другой стороны, использование SGD будет быстрее, потому что вы используете только один обучающий образец, и он начинает улучшаться сразу же после первого образца.

SGD часто сходится намного быстрее по сравнению с GD, но функция ошибок не так минимизирована, как в случае GD. Часто в большинстве случаев близкого приближения, которое вы получаете в SGD для значений параметров, достаточно, потому что они достигают оптимальных значений и продолжают колебаться там.

Если вам нужен пример этого с практическим кейсом, посмотрите примечания Эндрю Н.Г., где он ясно показывает вам шаги, вовлеченные в оба случая. cs229 струны

Источник: Quora Thread

AkshayNevrekar
источник
спасибо, вкратце как это? Существует три варианта градиентного спуска: партия, стохастик и мини-партия: партия обновляет веса после оценки всех обучающих образцов. Стохастик, веса обновляются после каждого образца обучения. Мини-пакет сочетает в себе лучшее из обоих миров. Мы не используем полный набор данных, но мы не используем одну точку данных. Мы используем случайно выбранный набор данных из нашего набора данных. Таким образом, мы уменьшаем стоимость вычислений и получаем меньшую дисперсию, чем стохастическая версия.
Разработчик
5

Включение слова стохастик просто означает, что случайные выборки из обучающих данных выбираются в каждом прогоне для обновления параметра во время оптимизации в рамках градиентного спуска .

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

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

кривая шумовых потерь

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

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

n1k31t4
источник
спасибо, вкратце как это? Существует три варианта градиентного спуска: партия, стохастик и мини-партия: партия обновляет веса после оценки всех обучающих образцов. Стохастик, веса обновляются после каждого образца обучения. Мини-пакет сочетает в себе лучшее из обоих миров. Мы не используем полный набор данных, но мы не используем одну точку данных. Мы используем случайно выбранный набор данных из нашего набора данных. Таким образом, мы уменьшаем стоимость вычислений и получаем меньшую дисперсию, чем стохастическая версия.
Разработчик
Nn=1
ТКС, это понятно!
19
5

В градиентном спуске или пакетном градиентном спуске мы используем полные тренировочные данные за эпоху, тогда как в стохастическом градиентном спуске мы используем только один тренировочный пример на эпоху, а мини-пакетный градиентный спуск лежит между этими двумя крайностями, в которых мы можем использовать мини-партия (небольшая часть) обучающих данных за эпоху, правило большого пальца для выбора размера мини-партии имеет степень 2, например 32, 64, 128 и т. д.
Для получения более подробной информации: cs231n лекционные заметки

Раджат Гупта
источник
спасибо, вкратце как это? Существует три варианта градиентного спуска: партия, стохастик и мини-партия: партия обновляет веса после оценки всех обучающих образцов. Стохастик, веса обновляются после каждого образца обучения. Мини-пакет сочетает в себе лучшее из обоих миров. Мы не используем полный набор данных, но мы не используем одну точку данных. Мы используем случайно выбранный набор данных из нашего набора данных. Таким образом, мы уменьшаем стоимость вычислений и получаем меньшую дисперсию, чем стохастическая версия.
Разработчик