Градиентный спуск с импульсом всегда будет работать намного быстрее, чем алгоритм Standard Gradient Descent. Основная идея градиентного спуска с импульсом состоит в том, чтобы вычислить экспоненциально взвешенное среднее ваших градиентов, а затем использовать этот градиент для обновления ваших весов. Он работает быстрее, чем обычный алгоритм градиентного спуска.

Как это работает?

Рассмотрим пример, в котором мы пытаемся оптимизировать функцию стоимости, которая имеет контуры, подобные приведенному ниже, а красная точка обозначает локальное оптимальное (минимальное) местоположение.

Мы начинаем градиентный спуск из точки «A» и заканчиваем в точке «B» после одной итерации градиентного спуска, на другой стороне эллипса. Затем другая фаза нисходящего градиента может закончиться на уровне «C». С помощью сквозной итерации градиентного спуска с колебаниями вверх и вниз мы шагаем к локальным оптимумам. Если мы будем использовать более высокую скорость обучения, тогда частота вертикальных колебаний будет больше. Таким образом, эти вертикальные колебания замедляют наш градиентный спуск и не позволяют нам использовать гораздо более высокую скорость обучения.

Используя экспоненциально взвешенные средние значения dW и db, мы стремимся усреднить колебания в вертикальном направлении ближе к нулю, поскольку они находятся в обоих направлениях (положительном и отрицательном). В то время как все производные указывают вправо от горизонтального направления в горизонтальном направлении, среднее значение в горизонтальном направлении все равно будет довольно большим. Это позволяет нашему алгоритму выбирать более прямой путь к локальным оптимумам и гасить вертикальные колебания. Из-за этого алгоритм завершит несколько итераций на локальных оптимумах.

Реализация

Мы используем dW и db для обновления наших параметров W и b во время обратного распространения следующим образом:

W = W - скорость обучения * dW

b = b - скорость обучения * db

В импульсе мы берем экспоненциально взвешенные средние значения dW и db вместо того, чтобы использовать dW и db независимо для каждой эпохи.

VdW = β * VdW + (1 - β) * dW

Vdb = β * Vdb + (1 - β) * дБ

Где бета ‘β’ - это другой гиперпараметр, называемый импульсом, в диапазоне от 0 до 1. Для вычисления нового средневзвешенного значения он устанавливает вес между средним значением предыдущих значений и текущим значением.

Мы обновим наши параметры после вычисления экспоненциально взвешенных средних.

W = W - скорость обучения * VdW

b = b - скорость обучения * Vдб

Как выбрать бета-версию?

  • Импульс (бета) должен быть выше, чтобы сгладить обновление, потому что мы придаем больший вес прошлым градиентам.
  • Рекомендуется использовать значение по умолчанию для β = 0,9, но при необходимости его можно настроить в диапазоне от 0,8 до 0,999.
  • Momentum учитывает прошлые градиенты, чтобы сгладить меры градиента. Это может быть реализовано со спуском с помощью пакетного градиента, спуском с помощью мини-пакетного градиента или спуском по стохастическому градиенту.

Ссылки:

Специализация глубокого обучения Эндрю Нг