Градиентный спуск Г

Итеративный алгоритм оптимизации, который находит минимум функции потерь, делая шаги в направлении, противоположном градиенту.

English Gradient descent
Синонимы Метод градиентного спуска, метод наискорейшего спуска, GD

Градиентный спуск — это итеративный алгоритм оптимизации, который используется для поиска минимума функции потерь в задачах машинного обучения. Представьте, что вы стоите на склоне холма в густом тумане и хотите спуститься в самую низкую точку долины. Градиент — это вектор, указывающий направление наискорейшего подъёма. Алгоритм градиентного спуска делает шаги в противоположном направлении, постепенно приближаясь к минимуму. Этот метод лежит в основе обучения практически всех современных нейронных сетей.

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

Процесс начинается с инициализации параметров модели (весов и смещений) случайными или нулевыми значениями. На каждом шаге алгоритм вычисляет градиент функции потерь по отношению к каждому параметру. Градиент показывает, как изменится ошибка при небольшом изменении параметра. Затем параметры обновляются в направлении, противоположном градиенту, с определённым шагом, который называется скоростью обучения.

Математически обновление параметра выглядит так: новое значение = старое значение − скорость обучения × градиент. Этот процесс повторяется до тех пор, пока градиент не станет близким к нулю или пока не будет достигнут заданный критерий остановки. В нейронных сетях градиент вычисляется с помощью алгоритма обратного распространения ошибки, который эффективно применяет правило цепочки дифференцирования.

Зачем это нужно

Градиентный спуск — это основной инструмент обучения моделей. Без него нейросеть не сможет подобрать веса, которые минимизируют ошибку на тренировочных данных. Алгоритм применяется везде, где есть задача оптимизации: от линейной регрессии до глубоких свёрточных и трансформерных архитектур. Понимание градиентного спуска необходимо для настройки гиперпараметров, диагностики проблем обучения и выбора правильной стратегии оптимизации.

Примеры

  • Линейная регрессия: модель предсказывает цену квартиры по площади. Функция потерь — среднеквадратичная ошибка. Градиентный спуск подбирает коэффициенты прямой, минимизируя разницу между предсказаниями и реальными ценами.
  • Классификация изображений: свёрточная нейросеть распознаёт кошек и собак. Градиентный спуск настраивает миллионы весов свёрточных ядер, чтобы сеть выдавала правильные вероятности классов.
  • Обработка естественного языка: трансформер генерирует текст. Градиентный спуск обновляет веса внимания и полносвязных слоёв, снижая функцию потерь на предсказании следующего токена.
  • Обучение с подкреплением: агент учится играть в игру. Градиентный спуск корректирует параметры политики, увеличивая ожидаемую награду.

Формула или метрика

Базовое правило обновления параметров:

θ_new = θ_old − η × ∇L(θ_old)

где θ — вектор параметров, η — скорость обучения (learning rate), ∇L — градиент функции потерь. Для стохастического градиентного спуска (SGD) градиент вычисляется на одном примере или мини-батче, а не на всём датасете.

Типичные ошибки

  • Слишком большая скорость обучения: параметры «перепрыгивают» минимум, функция потерь колеблется или расходится.
  • Слишком маленькая скорость обучения: обучение идёт крайне медленно, модель застревает в плато.
  • Игнорирование нормализации данных: признаки с разными масштабами создают вытянутые овраги, градиентный спуск начинает зигзагообразно петлять.
  • Отсутствие мониторинга сходимости: без графиков потерь и градиентов легко пропустить взрыв градиентов или затухание.

Как улучшить

  • Используйте адаптивные оптимизаторы: Adam, RMSprop, Adagrad автоматически подстраивают скорость обучения для каждого параметра.
  • Применяйте мини-батчи: batch size от 32 до 512 даёт стабильный градиент и эффективно использует GPU.
  • Добавьте momentum: накопление «инерции» сглаживает колебания и ускоряет проход узких оврагов.
  • Регуляризация и dropout: уменьшают переобучение, которое часто маскируется под медленную сходимость.
  • Learning rate scheduling: постепенное снижение скорости обучения на поздних эпохах помогает точнее попасть в минимум.

Источники

Google for Developers — Reducing Loss: Gradient Descent (https://developers.google.com/machine-learning/crash-course/reducing-loss/video-lecture)

MachineLearning.ru — Метод градиентного спуска (http://www.machinelearning.ru/wiki/index.php?title=Метод_градиентного_спуска)

Nocedal, J., & Wright, S. J. — Numerical Optimization, Springer (ISBN 978-0-387-30303-1)

КиберЛенинка — Оптимизация обучения нейронных сетей: функции потерь, градиентный спуск и обратное распространение ошибки (https://cyberleninka.ru/article/n/optimizatsiya-obucheniya-neyronnyh-setey-funktsii-poter-gradientnyy-spusk-i-obratnoe-rasprostranenie-oshibki)