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

На самом деле математика обнаруживает еще одно преимущество SGD: она сильно сглаживает любую непрерывно дифференцируемую комплексную функцию стоимости, имеющую несколько локальных минимумов.

Хотя доказательства выпуклой оптимизации относятся к математической части более строго, здесь мы получим интуитивное представление о том, почему и где это происходит.

Современные нейронные сети по своей сути работают над более абстрактной сложностью, в результате чего функции потерь сильно невыпуклы и имеют все типы неудобных вариаций: пики, седловые точки и локальные минимумы. Поиск глобальных минимумов является здесь более важной задачей, поскольку это приблизит нас к оптимальным гиперпараметрам.

Истинный градиентный спуск следует этому алгоритму обновления: x (t + 1) = x (t) - η ∇ f (x, θ)

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

В SGD спуск действительно не по градиенту (поэтому вы увидите, что слово «Gradient» в SGD здесь звучит неправильно), а в отклоненном направлении: x (t + 1) = x (t) - η (∇ f (x, θ) + w (t)), где w (t) ~ W (x), который равен случайное распределение выборок.

Дополнительный член w (t) заставляет алгоритм идти по другому пути, чем градиент функции потерь.

Здесь -η (v (t)) = -η (∇ f (x, θ) + w (t)). Таким образом, красная линия, проходящая вдоль градиента f (x, θ), приближает вас к локальному минимуму x0. Интуиция, лежащая в основе w (t), заключается в добавлении некоторой формы шума, то есть полностью случайном распределении выборок W (x).

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

Итак, мы видим, что серая линия в направлении -η (v (t)) вообще уходит от локальных минимумов. Таким образом, шум в SGD действительно помогает ему уйти от проблемных зон в функции потерь.

Итак, вот несколько правил правой руки, когда использовать SGD, а когда избегать:

  1. Если набор данных огромен: как по образцам, так и по функциям, сразу используйте SGD.
  2. Если функций не так много: тогда выберите полный градиентный спуск, так как тогда у нас будет больше шансов получить оптимальные гиперпараметры.
  3. Если набор данных недостаточно велик: используйте что-нибудь, кроме SGD, так как это будет ужасно соответствовать модели.

Итак, я надеюсь, что вы лучше понимаете динамику знаменитого стохастического градиентного спуска и его полезность: как с точки зрения вычислительной эффективности, так и с гарантированными глобальными минимумами при обучении нейронных сетей.