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

for k in [1, number_iterations]:
    X(k+1) = X(k) - α ▽L(X(k))

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

Но подождите, действительно ли вы ищете глобальные минимумы в глубоком обучении?

Мы оптимизируем функцию потерь или затрат, которые в большинстве случаев представляют некоторое расстояние между фактическим результатом и прогнозом. Мы хотим минимизировать функцию потерь, но в то же время не хотим, чтобы она была слишком близка к нулю, так как это часто приводило бы к переобучению. Мы хотим, чтобы он хорошо работал с невидимыми данными и, следовательно, нуждается в обобщении. Здесь мы ищем плоскостность.

Хорошие локальные минимумы и плохие локальные минимумы
Вместо того, чтобы стремиться к глобальным минимумам, мы ищем «хорошие локальные минимумы», а не «плохие локальные минимумы». Хорошие локальные минимумы часто относятся к минимумам с большей плоскостностью.

Как вы определяете плоскостность?
Что ж, может быть очень интуитивно понятно, что такое 2D или 3D, просто взглянув на кривые. Обычно плоскостность связана с меньшими собственными значениями гессиана функции. Чем больше собственные значения, тем больше кривизна и больше шансов, что критическая точка будет резким минимумом.

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

for k in [1, number_iterations]:
    pick a random datapoint di;
    calculate loss Li
    X(k+1) = X(k) - α ▽Li(X(k))

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

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

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

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

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

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

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

Есть и другие преимущества использования SGD:

  • SGD быстро сходится, когда примеры похожи. Если есть повторяющиеся или похожие точки данных, SGD может сходиться намного быстрее, поскольку через некоторое время он оптимизирует точки, которые он уже видел.
  • SGD может тренироваться на лету. Если ваши данные недоступны и не поступают в поток, можно использовать SGD.
  • Одним из важных преимуществ SGD является то, что вы обрабатываете одну точку данных на каждой итерации. Это действительно полезно, когда у вас есть большие наборы данных, которые не могут хранить все данные в ОЗУ(Я не работал ни с одним таким набором данных. Возможно, я еще не работал с достаточно большими наборами данных).

Ссылки:

  1. Хуанг, Эмам, Голдблюм, Фаул, Терри, Хуанг и Гольдштейн. Понимание обобщения через визуализацию. 2019
  2. Хинтон и Ван Кэмп (1993)
  3. Хохрайтер, Шмидхубер. Плоские минимумы 1997 г.