Циклическое обучение (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).
