← Назад к вопросам

Что такое momentum?

1.8 Middle🔥 111 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Momentum в оптимизации машинного обучения

Momentum (момент) — это метод оптимизации градиентного спуска, который ускоряет сходимость и помогает преодолеть локальные минимумы, используя накопленный импульс движения в направлении минимизации функции потерь.

Основная идея

Вместо того, чтобы делать шаги только в направлении текущего градиента, мы накапливаем историю движения. Представьте, что мяч скатывается вниз по холму — он не делает резкие повороты, а движется в направлении, которое уже набрало инерцию.

Математическое определение

# Обновление с momentum
v = beta * v + (1 - beta) * grad(w)  # накопленный импульс
w = w - learning_rate * v             # обновление весов

Где:

  • v — вектор скорости (накопленный градиент)
  • beta (или α) — коэффициент трения (обычно 0.9)
  • grad(w) — текущий градиент
  • learning_rate — скорость обучения

Практический пример

import numpy as np
from tensorflow.keras.optimizers import SGD
from tensorflow.keras.optimizers import Momentum

# SGD с momentum
optimizer = SGD(learning_rate=0.01, momentum=0.9, nesterov=False)

# Или напрямую с Momentum
optimizer = Momentum(learning_rate=0.01, momentum=0.9)

# В Keras
model.compile(
    optimizer=SGD(learning_rate=0.01, momentum=0.9),
    loss=categorical_crossentropy,
    metrics=[accuracy]
)
model.fit(X_train, y_train, epochs=100)

Виды momentum

1. Vanilla Momentum

Стандартный метод, описанный выше:

v = beta * v + grad(w)
w = w - learning_rate * v

2. Nesterov Momentum

Посмотреть на градиент не в текущей точке, а в предполагаемой следующей:

v = beta * v + grad(w - learning_rate * beta * v)
w = w - learning_rate * v

Это помогает быстрее сходиться, так как мы смотрим вперёд.

Преимущества

  • Ускорение сходимости: особенно в направлении с постоянным градиентом
  • Преодоление плато: помогает не застрять в плоских областях
  • Устойчивость: более стабильная траектория оптимизации
  • Лучше работает на сложных поверхностях: где градиент часто меняется

Недостатки

  • Перескок оптимума: если momentum слишком большой, можно перепрыгнуть минимум
  • Дополнительный параметр: нужно подбирать коэффициент трения
  • Не всегда лучше: на простых функциях может быть медленнее

Параметры

ПараметрТипичное значениеОписание
beta/momentum0.9-0.99Коэффициент, насколько мы сохраняем историю
learning_rate0.001-0.1Шаг оптимизации
nesterovTrue/FalseИспользовать ли Nesterov вариант

Momentum vs Adam vs RMSprop

  • Momentum: простой, эффективен, требует подбора learning rate
  • Adam: адаптивный learning rate, обычно лучше по умолчанию
  • RMSprop: адаптивный, хорош для RNN

Когда использовать

  • При обучении CNN и RNN с большим датасетом
  • Когда нужна быстрая сходимость
  • На негладких функциях потерь
  • Когда другие оптимизаторы работают медленнее

Momentum — это фундаментальная техника в глубоком обучении, которая часто используется как часть более сложных оптимизаторов вроде Adam или RMSprop.