COMRAD404 / GLOSSARY

Learning rate (скорость обучения)

learning rate

Скорость обучения (learning rate) — гиперпараметр, который задаёт размер шага при обновлении весов модели. Ниже — простое объяснение, схема работы, примеры из PyTorch, Keras и scikit-learn, отличия от optimizer и schedule.

TL;DR

Скорость обучения — это гиперпараметр, который задаёт размер шага обновления параметров модели во время оптимизации.

Скорость обучения (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 задаёт размер шага.

  1. На очередном батче или эпохе модель считает ошибку.
  2. Алгоритм получает градиенты этой ошибки по параметрам.
  3. Оптимизатор формирует обновление параметров.
  4. Learning rate масштабирует это обновление.
  5. Если используется расписание, значение 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)

Что здесь важно на практике:

  1. INITIAL_LR, DECAY_STEPS и DECAY_RATE здесь оставлены как placeholders, потому что универсального «правильного» значения документация не обещает.
  2. Если вы используете Adam, базовый learning_rate всё равно важен, хотя фактический шаг может дополнительно адаптироваться по параметрам.
  3. Если вам нужно понять текущее значение 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: его подбирают под задачу, оптимизатор, архитектуру и точную версию фреймворка.

Связанные термины и где копать дальше

Источники

Вопросы и ответы

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().

Источники

SOURCES

Вопросы и ответы

FAQ
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().

Читайте также

LINKS