Циклическое обучение (Cyclical Learning Rates)

Что такое Циклическое обучение (Cyclical Learning Rates)?

Метод настройки гиперпараметров в машинном обучении, при котором скорость обучения (learning rate) изменяется по циклическому закону в ходе тренировки нейронной сети.

Суть циклического обучения заключается в том, что вместо фиксированной скорости обучения или её монотонного убывания (как в традиционных схемах затухания) алгоритм систематически повышает и понижает этот параметр в заданных пределах. Это позволяет модели эффективнее «проходить» сложные участки ландшафта функции потерь — например, выходить из локальных минимумов или плоских областей, где градиент мал.
Представьте, что вы ищете самую низкую точку в холмистой местности с завязанными глазами, ориентируясь только на наклон поверхности под ногами. Если вы всегда делаете шаги одинаковой длины, вы можете застрять в небольшой впадине (локальный минимум). А если будете чередовать короткие и длинные шаги — то с большей вероятностью найдёте действительно самое глубокое место (глобальный минимум). Циклическое изменение скорости обучения работает похоже: «длинные шаги» помогают вырваться из локальных ловушек, а «короткие» — точнее настроиться в районе хорошего решения.

Исторический контекст

Метод был предложен в 2015 году Лесли Н. Смит (Leslie N. Smith) в работе «Cyclical Learning Rates for Training Neural Networks». Смит экспериментально показал, что циклические скорости обучения позволяют достичь сопоставимой или лучшей точности по сравнению с традиционными методами настройки learning rate, при этом сокращая время подбора оптимальных гиперпараметров. Идея быстро получила признание в сообществе: уже в 2016–2017 годах циклическое обучение стали активно использовать в соревнованиях по машинному обучению (например, на Kaggle) и в практических проектах.

Смежные понятия и отличия

  • Затухание скорости обучения (learning rate decay) — постепенное уменьшение learning rate по фиксированной схеме (например, экспоненциальное или ступенчатое). В отличие от циклического обучения, здесь нет возвратов к более высоким значениям, что может замедлить выход из локальных минимумов.
  • Адаптивные оптимизаторы (Adam, RMSprop и др.) — автоматически подстраивают скорость обучения для каждого параметра. Они частично решают ту же задачу (адаптация шага), но делают это на уровне отдельных весов, а не глобально для всей сети. Циклическое обучение может комбинироваться с адаптивными оптимизаторами.

Примеры использования

  • Классификация изображений — в свёрточных сетях (CNN) типа ResNet, VGG, где циклическое изменение learning rate помогает быстрее сойтись к хорошему решению.
  • Обработка текста — в рекуррентных сетях (RNN, LSTM) и трансформерах при обучении языковых моделей.
  • Соревнования по ML — на платформах типа Kaggle циклическое обучение часто входит в «стандартный набор» приёмов для быстрого прототипирования и настройки моделей.
  • Популярные реализации — в библиотеках PyTorch и TensorFlow есть встроенные планировщики (schedulers) для циклического learning rate (например, torch.optim.lr_scheduler.CyclicLR в PyTorch).

Авторизация