Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
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/momentum | 0.9-0.99 | Коэффициент, насколько мы сохраняем историю |
| learning_rate | 0.001-0.1 | Шаг оптимизации |
| nesterov | True/False | Использовать ли Nesterov вариант |
Momentum vs Adam vs RMSprop
- Momentum: простой, эффективен, требует подбора learning rate
- Adam: адаптивный learning rate, обычно лучше по умолчанию
- RMSprop: адаптивный, хорош для RNN
Когда использовать
- При обучении CNN и RNN с большим датасетом
- Когда нужна быстрая сходимость
- На негладких функциях потерь
- Когда другие оптимизаторы работают медленнее
Momentum — это фундаментальная техника в глубоком обучении, которая часто используется как часть более сложных оптимизаторов вроде Adam или RMSprop.