Темп обучения
Темп обучения (англ. learning rate) — это гиперпараметр алгоритмов машинного обучения и оптимизации, определяющий величину шага, с которым параметры модели (например, веса нейронной сети) корректируются в направлении минимизации функции потерь. Он задаёт, насколько сильно обновляются веса на каждой итерации градиентного спуска или его модификаций. Выбор темпа обучения критически влияет на скорость сходимости алгоритма и качество итоговой модели.
Определение и математическая основа
В процессе обучения модели с использованием градиентного спуска веса \( w \) обновляются по правилу:
\[ w_{t+1} = w_t — \eta \cdot \nabla J(w_t) \]
где:
- \( w_t \) — текущее значение параметра (веса) на итерации \( t \);
- \( \eta \) — темп обучения (положительная скалярная величина);
- \( \nabla J(w_t) \) — градиент функции потерь \( J \) по параметрам \( w \) на итерации \( t \).
Темп обучения \( \eta \) масштабирует градиент, определяя, насколько далеко от текущей точки сместится параметр. Если \( \eta \) слишком велико, шаги могут перескакивать через минимум, вызывая расходимость или колебания. Если \( \eta \) слишком мало, процесс сходится медленно, требуя большего числа итераций и вычислительных ресурсов.
Виды темпа обучения
Постоянный темп обучения
Наиболее простой вариант, при котором \( \eta \) фиксировано на протяжении всего обучения. Подходит для задач с гладким ландшафтом функции потерь, но часто приводит к субоптимальной сходимости, особенно при наличии локальных минимумов или плато.
Переменный (адаптивный) темп обучения
Включает стратегии, изменяющие \( \eta \) в процессе обучения:
- Пошаговое уменьшение (step decay): темп снижается через заданное число эпох (например, каждые 10 эпох на 10%).
- Экспоненциальное затухание: \( \eta_t = \eta_0 \cdot e^{-kt} \), где \( k \) — константа затухания.
- Косинусное затухание: темп изменяется по косинусоидальному закону, популярно в современных архитектурах (например, в обучении трансформеров).
- Плато-обнаружение: темп уменьшается, когда функция потерь перестаёт уменьшаться в течение заданного числа итераций.
Адаптивные методы оптимизации
Некоторые алгоритмы автоматически подбирают темп обучения для каждого параметра:
- AdaGrad: уменьшает темп для часто обновляемых параметров, увеличивая для редких.
- RMSProp: использует скользящее среднее квадратов градиентов для нормализации темпа.
- Adam: комбинирует идеи RMSProp и импульса, адаптируя темп как по величине градиента, так и по его моменту.
Влияние на процесс обучения
Слишком высокий темп обучения
- Приводит к нестабильности: градиентный спуск может «перепрыгивать» через оптимум, вызывая осцилляции или расходимость.
- Функция потерь может расти или колебаться на графике обучения.
- Модель может не сойтись к минимуму, оставаясь в области высоких значений ошибки.
Слишком низкий темп обучения
- Замедляет сходимость: требуется больше итераций для достижения минимума.
- Увеличивает риск застревания в локальных минимумах или на плато.
- Приводит к избыточным вычислительным затратам, особенно на больших наборах данных.
Оптимальный темп обучения
- Обеспечивает быструю и стабильную сходимость.
- Позволяет модели достигать низких значений функции потерь за разумное число эпох.
- На практике часто выбирается эмпирически с помощью методов, таких как поиск по сетке (grid search) или логарифмическое сканирование.
Методы выбора темпа обучения
Эмпирический подбор
Наиболее распространённый подход: тестирование нескольких значений (например, 0.1, 0.01, 0.001, 0.0001) на небольшой части данных и выбор наилучшего по метрикам валидации.
Поиск по сетке (grid search)
Полный перебор заданного диапазона значений темпа с оценкой производительности на валидационном наборе. Требует значительных вычислительных ресурсов.
Метод «циклического темпа» (cyclic learning rate)
Предложен Лесли Смитом в 2015 году. Темп циклически изменяется между минимальным и максимальным значениями, что позволяет исследовать различные области ландшафта и ускорять сходимость.
Метод «одного цикла» (one-cycle policy)
Разработан Сильвеном Гийоном и др. для быстрого обучения. Включает три фазы: рост темпа, снижение и финальное уменьшение. Показывает высокую эффективность в задачах компьютерного зрения.
Автоматический подбор с помощью теста на скорость сходимости
Используется в библиотеках (например, в PyTorch Lightning) — алгоритм запускает несколько коротких обучающих сессий с разными темпами и выбирает оптимальный.
Связь с другими гиперпараметрами
Темп обучения взаимодействует с другими параметрами обучения:
- Размер батча (batch size): меньший размер батча обычно требует меньшего темпа из-за большей дисперсии градиентов. С ростом батча темп можно увеличивать.
- Количество эпох: при малом числе эпох высокий темп может позволить быстрее достичь приемлемого результата, но риск расходимости возрастает.
- Импульс (momentum): добавление импульса позволяет использовать более высокий темп, сглаживая колебания градиента.
- Регуляризация: сильная регуляризация (например, L2) может потребовать корректировки темпа, чтобы избежать чрезмерного сглаживания весов.
Применение в различных областях
Нейронные сети
В глубоком обучении темп обучения — один из ключевых гиперпараметров. Для сверточных сетей (CNN) часто используют значения от 0.01 до 0.0001, для рекуррентных (RNN) — обычно меньше (0.001–0.0001) из-за проблем с затуханием градиентов. В трансформерах (например, BERT, GPT) применяют косинусное затухание с предварительным разогревом (warm-up).
Линейная регрессия и логистическая регрессия
Для простых моделей темп обучения обычно выбирают из диапазона 0.1–0.001. При использовании стохастического градиентного спуска (SGD) часто применяют уменьшение темпа со временем.
Градиентный бустинг
В алгоритмах, таких как XGBoost или LightGBM, темп обучения (часто называемый «скоростью обучения» или «shrinkage») регулирует вклад каждого нового дерева. Типичные значения — 0.3, 0.1, 0.01; меньший темп требует большего числа деревьев, но улучшает обобщение.
Инструменты и библиотеки
Большинство фреймворков машинного обучения предоставляют встроенные средства для управления темпом обучения:
- TensorFlow / Keras: колбэки
LearningRateScheduler,ReduceLROnPlateau,ExponentialDecay. - PyTorch: планировщики в
torch.optim.lr_scheduler(например,StepLR,CosineAnnealingLR,OneCycleLR). - Scikit-learn: для SGD-регрессоров и классификаторов параметр
learning_rateс вариантамиconstant,optimal,invscaling.
Историческая справка
Понятие темпа обучения восходит к работам по градиентному спуску, предложенным Огюстеном Луи Коши в 1847 году. В машинном обучении гиперпараметр стал систематически изучаться с развитием нейронных сетей в 1980-х годах. Значительный вклад в понимание его роли внесли работы Джеффри Хинтона, Яна ЛеКуна и Йошуа Бенжио. В 2010-х годах с появлением глубокого обучения и больших моделей разработка адаптивных методов (Adam, RMSProp) стала стандартной практикой.
Источники
- Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016.
- Smith L. N. Cyclical Learning Rates for Training Neural Networks // IEEE Winter Conference on Applications of Computer Vision (WACV), 2017.
- Kingma D. P., Ba J. Adam: A Method for Stochastic Optimization // ICLR, 2015.
- Ruder S. An overview of gradient descent optimization algorithms // arXiv:1609.04747, 2016.
- Документация PyTorch: torch.optim.lr_scheduler.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →