Структурированный блокнот   
 Машинное обучение (Machine Learning, обучающиеся алгоритмы) →  Оптимизация скорости обучения →  

Гибкий подбор шага обучения

Большой шаг обучения приводит к полной неработоспособности градиентного спуска -- мы можем прийти к росту функции ошибки. Маленький шаг обучения приводит к медленному обучению. Гибкий подбор шага обучения позволяет иметь достаточно большой шаг, чтобы обучение шло быстро, но не срывалось в неработоспособную зону алгоритма. В идеальном случае шаг подбирается динамически, уменьшаясь по мере приближения к искомому минимуму.
AdaGrad
Размер шага делится на корень из константы + суммы квадратов предыдущих градиентов (причём по каждой оси градиент считается независимо и шаг тоже получатся независимым). Таким образом, чем дальше мы уже прошли, тем меньше будет каждый следующий шаг. Проблема метода в том, что мы можем ещё недостаточно близко подойти к минимуму, а размер шага уже становится слишком маленьким.
RMSprop
Аналогичная идея, но мы считаем не сумму, а экспоненциальное среднее предыдущих шагов (с типичным весом накопленных даныных в 0.9). Здесь нет проблемы с уменьшением шага, но по логике вещей может быть обратная проблема: около минимума (где градиенты маленькие) ему захочется делать большие шаги.
Ещё больше здесь https://habr.com/post/318970/ (AdaGrad и далее)
Momentum
Идея в том, что на следующем шаге использовать усреднённый старый градиент и новый градиент с определённым весом. Такой подход позволяет убрать осцилляции (когда на каждом следующем шаге градиент противоположного знака по сравнению с предыдущим), что происходит, когда шаг достаточно большой и он перекидывает нас с одной ветки параболы около минимума на другую ветку.
Adam (ADAptive Momentum estimation)
Это объединение RMSprop и Momentum. Параметры alpha -- это learning rate, beta1 отвечает за Momentum и обычно ровняется 0.9 (т.е. усредняет примерно 10 последних значений градиента), а параметр beta2 отвечает за RMSprop и обычно ровняется 0.99 (т.е. считаем средний модуль градиента по каждой оси примерно за 100 шагов).

Так же может быть полезно использовать Learning rate decay
Идея в том, что в начале обучения, мы далеко от минимума, поэтому шаг обучения может быть большим. А когда мы приближаемся к минимуму, может быть полезно уменьшать шаг. Бывают разные подходы: делить на корень из числа шагов, брать степенную функцию 0.95 в степени номер шага или какие-то другие вариации. Здесь нет хорошего универсального совета.
Поиск по записям: только в текущем разделе.