Перейти к основному содержимому

Шаг обучения (learning rate)

Важность уменьшения шага

Шаг обучения в градиентных методах η\eta (learning rate) - важнейший параметр оптимизации. Если его выбрать слишком большим, то оптимизация может расходиться, а если слишком малым - то сходимость будет слишком медленная.

Метод стохастического градиентного спуска теоретически сходится лишь в случае постепенного уменьшения шага обучения η\eta к нулю, поскольку, даже находясь в глобальном оптимуме, метод продолжает изменения весов, вызванные ошибками в оценке градиента функции потерь по мини-батчу наблюдений. На практике шаг обучения не уменьшают до совсем малых значений, поскольку нас интересует быстрое нахождение приближённого решения, а не медленное - точного.

Точное решение не имеет смысла, поскольку

  • мы все равно сходимся к локальному (не самому оптимальному), а не глобальному оптимуму в связи с тем, что функция потерь невыпукла;

  • мы оптимизируем не точную функцию потерь (теоретический риск), а её приближение на обучающей выборке (эмпирический риск) - см. настройку модели.

Но постепенное уменьшение шага обучения улучшает сходимость. Характер его уменьшения называется планом уменьшения шага обучения (learning rate schedule).

Всегда уменьшайте шаг в процессе обучения!

Это касается всех изученных методов оптимизации по мини-батчам объектов: SGD, SGD+momentum, Nesterov momentum. Уменьшение шага также используется и в более продвинутых методах, которые самостоятельно уменьшают шаг, таких как Adagrad, RMSprop, Adam, о которых будет рассказано дальше.

Планы уменьшения шага обучения

Разобъём процесс обучения сети на блоки 0,1,2,...K. Под блоком обычно понимается эпоха (epoch), т.е. полный проход по всем объектам обучающей выборки, но если выборка велика, блоки могут быть и более малые, например, проход по 10.000 объектам выборки. Обозначим текущий блок через tt, принимающий в течение всего хода обучения значения 0,1,2,...T0,1,2,...T.

Используются следующие планы уменьшения шага обучения (learning rate schedule):

  • линейный: η=η0(1t/T)+ηT(t/T)\eta = \eta_0 (1-t/T)+\eta_T (t/T), η0>ηT>0\eta_0>\eta_T>0;

  • полиномиальный: η=η0/(1+αt)β\eta = \eta_0 / (1+\alpha t)^\beta, α>0,β(0,1)\alpha>0, \beta\in (0,1); обычно η=η0/1+t\eta = \eta_0 / \sqrt{1+t}

  • экспоненциальный η=η0αt\eta = \eta_0 \alpha^t, α(0,1)\alpha\in(0,1)

  • косинусный: η=ηT+(η0ηT)(1+cos(πt/T))/2\eta = \eta_T+(\eta_0-\eta_T)(1+\cos(\pi t/T))/2

η0,ηT,α,β\eta_0,\eta_T,\alpha,\beta - гиперпараметры, подбираемые по валидационной выборке.

Косинусное уменьшение η\eta основано на предположении, что нужно некоторое время сохранять ηη0\eta\approx \eta_0 в начале обучения и η=ηT\eta=\eta_T - в конце.

Также часто используется адаптивный план уменьшения шага обучения (adaptive learning rate scheduling, Reduce Learning Rate on Plateau, RLRP), который динамически подстраивает уменьшение шага под характер сходимости. Шаг обучения уменьшается в α\alpha раз, если последние PP итераций не наблюдалось существенного уменьшения функции потерь (колебания были меньше чем на ε\varepsilon), где P,εP,\varepsilon - гиперпараметры метода.

Разогрев обучения

Не имеет смысла начинать оптимизацию с большим шагом обучения, поскольку вначале веса сети инициализированы случайно. Рекомендуется начинать обучение с некоторым промежуточным значением η\eta (не большим и не маленьким), а когда потери стабилизируются уже включать тот или иной план уменьшения шага. Такое начало обучение называется разогревом обучения (warm-up), а число разогревающих итераций называется warm-up period.