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

Зачем нам корректировать скорость обучения?

Гиперпараметр скорость обучения определяет скорость или скорость, с которой модель обучается.

Советы по повышению скорости обучения:

  • Начните со значения вроде 0,1 и постепенно уменьшайте до 0,01, 0,001,….
  • Если модель работает хорошо при таком значении, как 0,01, проверьте также такие значения, как 0,02, 0,03,….
  • Используйте регуляторы скорости обучения.
  • Подобные действия могут привести к хорошей скорости обучения вашей модели.

Настройка скорости обучения в PyTorch

У нас есть несколько функций в PyTorch для настройки скорости обучения:

  • ЛямбдаLR
  • МультипликативныйLR
  • СтепЛР
  • MultiStepLR
  • ЭкспоненциальныйLR
  • УменьшитьLROnPlateau
  • и многое другое…

Теперь мы увидим каждый метод,

ЛямбдаLR

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

Здесь мы используем лямбда-функции для установки скорости обучения.

Код описан четко, наблюдайте, как скорость обучения увеличивается с каждой эпохой.

МультипликативныйLR

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

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

Итак, когда начальная скорость обучения = 0,1 (кэш = 0,1)

тогда для первой эпохи lr = 0,1 * 0,9 = 0,09 (кэш = кеш * фактор (0,9))

то для второй эпохи lr = 0,09*0,9 = 0,081 …….

СтепЛР

Снижает скорость обучения каждой группы параметров по гамме каждые эпохи step_size.

Итак, Learning_rate приспосабливается к Learning_rate*gamma после каждого шага.

Если step_size = 20, gamma = 0,1, initial_lr = 0,1, то

lr = 0,1, если эпохи‹20

lr = 0,1*0,1 = 0,01, если эпохи ≥20 и эпохи ‹40

lr = 0,01*0,1 = 0,001, если эпохи ≥ 40 и эпохи ‹60 ……

MultiStepLR

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

Итак, если эпохи‹2 lr = 0,1

если эпохи ≥2 и эпохи ‹ 5 lr = 0,1*gamma = 0,1*0,1 = 0,01

если эпохи ≥5 и эпохи ‹ 9 lr = 0,01*gamma = 0,01*0,1 = 0,001

если эпохи ≥ 9 lr = 0,001*гамма = 0,001*0,1 = 0,0001

ЭкспоненциальныйLR

Снижает скорость обучения каждой группы параметров по гамме каждую эпоху.

Это похоже на StepLR, когда step_size = 1, для каждой эпохи скорость обучения уменьшается.

УменьшитьLROnPlateau

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

После 5 эпохи потери начинают расти, поэтому после 5 эпох (терпение = 5) без уменьшения потерь скорость обучения автоматически снижается до 0,001.

Существуют более сложные планировщики скорости обучения, например,

  • Косинусный отжигLR.
  • ЦиклическийLR.
  • OneCycleLR.
  • Косинусный отжиг теплых перезапусков.

Но самые важные и популярные объясняются.

Ссылки:

  1. Официальная документация PyTorch.
  2. Канал Python Engineer на YouTube.
  3. Переполнение стека……..

Празднуйте свои маленькие победы.