Скорость обучения (learning rate) — это гиперпараметр оптимизации, который задаёт размер шага, с которым обновляются параметры модели во время обучения. В официальных документациях PyTorch, TensorFlow/Keras и scikit-learn она рассматривается как настраиваемый параметр оптимизатора; в современных API это может быть фиксированное значение, расписание или вызываемая функция.
Если сказать коротко: learning rate отвечает не за архитектуру модели и не за качество «само по себе», а за то, насколько сильно оптимизатор меняет веса на каждом шаге обучения. Поэтому один и тот же оптимизатор может вести себя по-разному при разных значениях learning rate.
Английский термин: learning rate. В русских текстах обычно используют перевод «скорость обучения». В документации разных библиотек точная форма API зависит от фреймворка и версии: где-то это просто число, где-то — объект расписания или функция.
Простыми словами
Грубо говоря, learning rate можно представить как длину шага, с которым вы спускаетесь с горы в тумане. Цель — найти низкую точку, то есть уменьшить ошибку модели.
- Слишком маленький шаг — вы идёте осторожно, но очень медленно.
- Слишком большой шаг — можно перескакивать через хорошую точку и двигаться нестабильно.
- Подходящий шаг — модель заметно улучшается, но без грубых скачков.
Это аналогия, а не техническое определение, но она хорошо передаёт суть: learning rate управляет масштабом обновления параметров.
Как это работает
В упрощённом виде цикл обучения выглядит так: модель считает ошибку, затем вычисляются градиенты, после чего оптимизатор обновляет параметры. Именно learning rate масштабирует это обновление — то есть определяет, насколько сильно сдвинуть веса на текущем шаге.
данные -> предсказание -> ошибка (loss) -> градиенты
|
v
оптимизатор + learning rate
|
v
обновление параметров модели
Упрощённая схема обновления выглядит как «новые параметры = старые параметры – learning rate × градиент». В реальных оптимизаторах формула может быть сложнее, но смысл тот же: learning rate задаёт размер шага.
- На очередном батче или эпохе модель считает ошибку.
- Алгоритм получает градиенты этой ошибки по параметрам.
- Оптимизатор формирует обновление параметров.
- Learning rate масштабирует это обновление.
- Если используется расписание, значение learning rate может меняться по ходу обучения.
В Keras/TensorFlow для tf.keras.optimizers.Adam параметр learning_rate может быть числом, объектом LearningRateSchedule или вызываемой функцией, которая возвращает фактически используемое значение. Keras отдельно документирует и сценарий, когда расписание вроде ExponentialDecay передаётся прямо в оптимизатор.
Важно не путать базовую скорость обучения и эффективный шаг в адаптивных оптимизаторах. В статье про Adam сказано, что метод вычисляет индивидуальные адаптивные learning rates для разных параметров на основе оценок первого и второго моментов градиентов. В статье про AdaGrad показано, что адаптивные субградиентные методы могут упрощать настройку learning rate и подстраивать шаг по отдельным признакам. Иначе говоря, «одна цифра» снаружи может внутри превратиться в разные по координатам обновления.
Где применяется
- Обычное обучение нейросети. В учебном цикле PyTorch learning rate участвует в обновлении параметров на каждом шаге оптимизации. Это один из базовых рычагов в тренировочном лупе.
- Обучение с расписанием. В Keras/TensorFlow learning rate можно задавать не только фиксированным значением, но и расписанием. Это полезно, когда вы хотите менять размер шага по мере обучения, а не держать его постоянным.
- Итеративные модели в scikit-learn. У
SGDClassifierдокументированы несколько режимов learning rate, включаяconstant,optimal,invscalingиadaptive. Это уже не «глубокое обучение ради глубокого обучения», а вполне прикладной инструмент для стохастической оптимизации. - Дообучение и постобучение. Когда вы используете Transfer learning (перенос обучения), Prompt tuning (мягкий промпт) или настройки, связанные с Alignment (согласование ИИ), learning rate всё равно остаётся ключевым параметром оптимизации: меняется не смысл термина, а набор параметров, которые вы обновляете.
Практический пример
Ниже — минимальный сценарий из Keras: вместо фиксированного числа вы передаёте расписание прямо в оптимизатор. Это соответствует официальной документации Keras по optimizers.
import keras
schedule = keras.optimizers.schedules.ExponentialDecay(
initial_learning_rate=INITIAL_LR,
decay_steps=DECAY_STEPS,
decay_rate=DECAY_RATE,
)
optimizer = keras.optimizers.Adam(learning_rate=schedule)
Что здесь важно на практике:
INITIAL_LR,DECAY_STEPSиDECAY_RATEздесь оставлены как placeholders, потому что универсального «правильного» значения документация не обещает.- Если вы используете Adam, базовый
learning_rateвсё равно важен, хотя фактический шаг может дополнительно адаптироваться по параметрам. - Если вам нужно понять текущее значение learning rate в PyTorch, проверяйте API вашей версии. В release notes PyTorch указано, что в 2.7.0 были удалены
LRScheduler.print_lrи аргументverbose, а для просмотра текущего learning rate предлагаетсяLRScheduler.get_last_lr().
# PyTorch: способ проверки текущего learning rate зависит от версии,
# но в release notes для 2.7.0 рекомендуют использовать:
current_lr = scheduler.get_last_lr()
Практический вывод: сначала зафиксируйте, где именно в вашем стекe задаётся learning rate — в самом оптимизаторе, в scheduler или в callable. Только после этого имеет смысл сравнивать результаты и отлаживать обучение.
Чем отличается от других терминов
| Термин | Что это | Когда действует | Главное отличие |
|---|---|---|---|
| Learning rate | Размер шага обновления параметров | Во время оптимизации | Отвечает именно за масштаб обновления |
| Optimizer | Алгоритм, который вычисляет, как обновлять параметры | Во время оптимизации | Learning rate — это параметр оптимизатора, а не его синоним |
| Learning-rate schedule | Правило изменения learning rate по ходу обучения | Во время оптимизации | Schedule не заменяет learning rate, а меняет его во времени |
| Temperature (параметр генерации) | Параметр управления распределением токенов при генерации | Во время инференса | Temperature влияет на вывод модели, а learning rate — на обучение модели |
Ещё одно полезное разграничение: learning rate не описывает архитектуру. Он не равен механизмам вроде Self-attention; это параметр процесса обучения, а не устройство слоя.
Ограничения и заблуждения
- Заблуждение: «learning rate = скорость обучения по времени». На самом деле это не метрика секунд или эпох, а размер шага обновления параметров.
- Заблуждение: «если взять Adam, learning rate почти не важен». Adam действительно использует адаптивные learning rates по параметрам, но базовый
learning_rateв API остаётся настраиваемым и влияет на оптимизацию. - Заблуждение: «learning rate — это всегда одно фиксированное число». В TensorFlow/Keras он может быть числом, объектом расписания или callable; в scikit-learn у SGDClassifier документированы разные режимы изменения learning rate.
- Ограничение версий. Документация оптимизаторов и scheduler-ов версионна. Даже способ посмотреть текущий learning rate может меняться между релизами, как это видно по release notes PyTorch 2.7.0.
- Ограничение интерпретации. В адаптивных методах вроде Adam и AdaGrad внешний параметр learning rate не всегда равен эффективному шагу для каждого отдельного веса или признака.
Редакционное ограничение и практический вердикт. Эта статья опирается на официальную документацию PyTorch, TensorFlow/Keras, scikit-learn и базовые работы по Adam/AdaGrad по состоянию на 2026-08-14. Она объясняет термин и его типовые реализации, но не даёт универсального «правильного» значения learning rate: его подбирают под задачу, оптимизатор, архитектуру и точную версию фреймворка.
Связанные термины и где копать дальше
- Если вы дообучаете готовую модель, начните с Transfer learning (перенос обучения).
- Если обновляете не все веса, а только специальные векторы или подсказки, смотрите Prompt tuning (мягкий промпт).
- Если термин встретился вам в обсуждении постобучения и поведения модели, полезен контекст Alignment (согласование ИИ).
Источники
- Optimizing Model Parameters — PyTorch Tutorials 2.13.0+cu130 documentation
- tf.keras.optimizers.Adam | TensorFlow v2.16.1
- Optimizers — Keras
- SGDClassifier — scikit-learn 1.9.0 documentation
- Adam: A Method for Stochastic Optimization
- Adaptive Subgradient Methods for Online Learning and Stochastic Optimization
- Releases · pytorch/pytorch · GitHub
Вопросы и ответы
Learning rate и optimizer — это одно и то же?
Нет. Optimizer — это алгоритм обновления параметров, а learning rate — один из его ключевых настраиваемых параметров.
Можно ли задать learning rate не числом, а правилом?
Да. В TensorFlow/Keras для Adam документация допускает число, объект LearningRateSchedule или callable.
Если я использую Adam, нужно ли всё равно следить за learning rate?
Да. Adam адаптирует шаг по параметрам, но базовый learning_rate остаётся важной частью настройки оптимизатора.
Как посмотреть текущий learning rate в PyTorch?
Это зависит от версии. В release notes PyTorch 2.7.0 указано, что для просмотра текущего learning rate следует использовать LRScheduler.get_last_lr().