Ответ
Классический градиентный спуск имеет несколько ключевых модификаций, которые решают проблемы сходимости, шумом и выбором 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 может дать лучший результат при тщательной настройке, особенно для компьютерного зрения.