Ответ
Momentum (импульс) — это метод ускорения градиентного спуска, который добавляет инерцию процессу обновления весов. Вместо того чтобы двигаться строго по текущему градиенту, оптимизатор учитывает направление предыдущих обновлений, что помогает быстрее проходить плато и сглаживает колебания в узких оврагах функции потерь.
Механизм работы: Обновление весов происходит по формуле, которая включает в себя "накопленную скорость":
# Псевдокод обновления с импульсом
v = beta * v_prev + learning_rate * gradient
weights = weights - v
Где beta — коэффициент затухания импульса (обычно 0.9 или 0.99), а v_prev — скорость с предыдущего шага.
Практическое применение: В PyTorch импульс используется по умолчанию во многих оптимизаторах. Например, в SGD:
import torch.optim as optim
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
В Adam и его вариантах импульс интегрирован в алгоритм через вычисление экспоненциально взвешенного среднего градиентов (первый момент).
Почему это работает:
- Ускорение на плато: На участках с малым, но постоянным градиентом накопленная скорость увеличивается, ускоряя движение.
- Подавление шума: Противоположные по знаку шумовые градиенты частично компенсируют друг друга в накопленной скорости.
- Прохождение оврагов: Помогает двигаться вдоль дна узкого оврага, а не осциллировать от склона к склону.