Какие модификации алгоритма градиентного спуска вы знаете?

«Какие модификации алгоритма градиентного спуска вы знаете?» — вопрос из категории Нейронные сети и Deep Learning, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Классический градиентный спуск имеет несколько ключевых модификаций, которые решают проблемы сходимости, шумом и выбором learning rate.

По размеру батча:

  • Batch Gradient Descent: Использует весь набор данных для вычисления градиента. Точен, но медленен и требователен к памяти для больших данных.
  • Stochastic Gradient Descent (SGD): Вычисляет градиент и обновляет веса для одного случайного примера. Очень шумный, но быстрый и позволяет выходить из локальных минимумов.
  • Mini-batch SGD: Компромиссный вариант. Градиент вычисляется на небольшой случайной подвыборке (батче). Это наиболее распространенный на практике подход, сочетающий устойчивость и скорость.

Алгоритмы с адаптивным learning rate (наиболее популярные сегодня): Эти методы автоматически адаптируют шаг обучения для каждого параметра.

  • AdaGrad: Накопливает квадраты градиентов за все время, сильно уменьшая шаг для часто меняющихся параметров. Может преждевременно остановить обучение.
  • RMSprop: Решает проблему AdaGrad, используя скользящее среднее квадратов градиентов, что позволяет learning rate не стремиться к нулю.
  • Adam (Adaptive Moment Estimation): Комбинирует идеи Momentum (инерция) и RMSprop (адаптивный шаг). На практике часто является выбором по умолчанию из-за хорошей скорости сходимости.
    # Пример использования Adam в PyTorch
    import torch.optim as optim
    optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999))

Методы с импульсом (Momentum):

  • Классический Momentum: Помогает ускорить сходимость в нужном направлении и сгладить колебания, добавляя долю предыдущего обновления к текущему градиенту.
  • Nesterov Accelerated Gradient (NAG): «Умный» вариант Momentum, который сначала делает большой шаг в направлении накопленной скорости, а затем вычисляет градиент и корректирует. Часто сходится быстрее.

Для большинства задач Adam или AdamW (с исправлением весового затухания) являются хорошей отправной точкой, а SGD с Momentum может дать лучший результат при тщательной настройке, особенно для компьютерного зрения.