Learning rate и его влияние

Learning rate (скорость обучения) — один из ключевых гиперпараметров при обучении нейронной сети. В библиотеке ConvNetJS этот параметр задается в объекте оптимизатора (Trainer) и определяет величину шагов, которые весовые коэффициенты сети делают в направлении градиента функции потерь.

Настройка learning rate

В ConvNetJS обучение сети происходит через объект Trainer, который принимает нейронную сеть и набор параметров. Пример создания тренера с указанием learning rate:

var trainer = new convnetjs.SGDTrainer(net, {
  learning_rate: 0.01,
  l2_decay: 0.001,
  momentum: 0.9
});
  • learning_rate — основной параметр, определяющий скорость изменения весов.
  • l2_decay — регуляризация, предотвращающая переобучение.
  • momentum — ускорение спуска, смягчающее колебания в направлении градиента.

Влияние величины learning rate

Слишком маленький learning rate (например, 0.0001):

  • Обучение сети становится медленным.
  • Сеть может застрять в локальных минимумах функции потерь.
  • Результаты становятся нестабильными при долгом обучении, так как шаги слишком малы для эффективного преодоления плоскостей функции потерь.

Оптимальный learning rate (например, 0.01 — 0.1 для простых задач):

  • Обеспечивает баланс между скоростью сходимости и стабильностью.
  • Позволяет сети быстро находить глобальный минимум или близкое к нему решение.
  • В сочетании с momentum повышает эффективность обучения и уменьшает колебания.

Слишком большой learning rate (например, 1 или выше):

  • Обучение становится нестабильным.
  • Весовые коэффициенты могут «скакать» через минимумы, не сходясь к оптимальному решению.
  • Возможен взрыв градиентов, особенно в глубоких сетях.

Динамическая настройка learning rate

ConvNetJS позволяет изменять скорость обучения во время тренировки. Это реализуется через постепенное уменьшение learning rate по мере увеличения числа итераций:

trainer.learning_rate *= 0.95;

Такой подход помогает:

  • Сначала быстро продвигаться к области глобального минимума.
  • Постепенно «тонко настраивать» веса при приближении к оптимальному решению.
  • Снизить вероятность осцилляций на последних этапах обучения.

Практические советы

  • Начинать с moderate learning rate (0.01–0.05) для небольших сетей.
  • Использовать momentum в диапазоне 0.8–0.95 для сглаживания траектории обновлений.
  • Если наблюдаются резкие скачки функции потерь — уменьшить learning rate.
  • Для сложных или глубоких сетей часто применяют адаптивные стратегии уменьшения learning rate: экспоненциальное снижение, step decay или методы на основе мониторинга функции потерь.

Взаимодействие learning rate с другими параметрами

  • Momentum: Высокий momentum с небольшим learning rate может ускорять обучение без риска скачков.
  • Regularization (L2 decay): Слишком высокий learning rate вместе с сильной L2 регуляризацией может замедлить обучение, так как веса уменьшаются слишком быстро.
  • Batch size: Малый batch size повышает шум градиентов, что делает важным аккуратный выбор learning rate; большой batch size позволяет использовать чуть более высокий learning rate без потери стабильности.

Визуализация влияния learning rate

Практически в ConvNetJS часто строят график функции потерь (loss) по эпохам:

console.log('Loss:', trainer.train(x, y));
  • При оптимальном learning rate график плавно убывает.
  • При слишком большом — наблюдаются резкие колебания.
  • При слишком малом — кривая убывает очень медленно.

Эта визуальная проверка позволяет быстро подобрать рабочее значение параметра.


Эффективная настройка learning rate — основа стабильного и быстрого обучения сетей в ConvNetJS. Правильный выбор скорости обучения совместно с momentum и регуляризацией обеспечивает баланс между скоростью сходимости и точностью модели, предотвращая как медленное обучение, так и нестабильность обновлений.