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 и регуляризацией обеспечивает
баланс между скоростью сходимости и точностью модели, предотвращая как
медленное обучение, так и нестабильность обновлений.