Проблема взрыва градиентов

Материал из MachineLearning.

Перейти к: навигация, поиск
Статья написана с использованием LLM Gemini 1.5 Pro и проверена участником Said Mavletov 20:24, 12 июля 2026 (MSD)


Проблема взрыва градиентов (англ. exploding gradient problem) — это феномен численной нестабильности, возникающий при обучении глубоких нейронных сетей (особенно рекуррентных), при котором ошибки, распространяющиеся в обратном направлении по сети, экспоненциально накапливаются и принимают аномально большие значения. Это приводит к гигантским обновлениям весов, из-за чего алгоритм оптимизации не может сойтись к минимуму, а значения параметров часто переполняются, превращаясь в `NaN` (Not a Number).

Вместе с противоположным феноменом — затуханием градиентов (vanishing gradient) — эта проблема является одной из классических сложностей оптимизации глубоких архитектур.

Содержание

Интуитивное понимание и симптомы

Механику взрыва градиентов проще всего понять через аналогию с игрой в «испорченный телефон» с усилителем.

Метод обратного распространения ошибки работает по правилу цепного дифференцирования (chain rule): чтобы вычислить изменение весов в первом слое, алгоритм перемножает производные всех последующих слоев. Если локальные градиенты (или элементы матрицы весов) на каждом слое систематически превышают единицу по модулю, то в сети из 50 слоев итоговый сигнал будет усиливаться экспоненциально. В рекуррентных сетях, разворачивающихся на тысячи шагов во времени, этот множитель стремится к бесконечности.

В результате алгоритм делает слишком большой шаг в пространстве параметров и «перепрыгивает» оптимальное решение.

Типичные симптомы в процессе обучения

Взрыв градиентов легко диагностировать по логам обучения:

  • Модель демонстрирует резкие скачки значения функции потерь (loss) после периода стабильного снижения.
  • Функция потерь принимает значение `NaN` или `Inf`.
  • Веса модели становятся слишком большими, что приводит к численному переполнению (overflow) в типах данных (например, float16).

Математические основания

В рекуррентной нейронной сети скрытое состояние на шаге t вычисляется как ht = f(W ht-1 + U xt), где W — матрица рекуррентных весов.

При использовании алгоритма обратного распространения ошибки сквозь время (BPTT), градиент функции потерь L по весам W требует вычисления производной скрытого состояния на шаге T по состоянию на более раннем шаге k. Это выражается через произведение матриц Якоби:

∂hT / ∂hk = ∏i=k+1...T (∂hi / ∂hi-1) = ∏i=k+1...T WT diag(f'(...))

Если наибольшее сингулярное число матрицы весов W строго больше 1, а производная функции активации недостаточно мала для компенсации этого роста, спектральная норма произведения матриц будет расти экспоненциально с увеличением расстояния T - k.

Инженерные решения

В современном машинном обучении проблема контролируется стандартными практиками проектирования и оптимизации.

1. Усечение градиентов (Gradient Clipping)

Наиболее надежный метод, предложенный Р. Паскану. Если норма вектора градиента ||g|| превышает заданный порог c, градиент масштабируется:

g ← c · (g / ||g||)

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

2. Архитектурные инновации

  • Остаточные связи (Residual Connections): Создают «короткие пути» (тождественные отображения) для распространения сигнала в глубоких сетях, снижая риск нестабильности градиентов при прохождении через множество слоев.
  • Нормализация (Normalization): Применение Batch Normalization в сетях прямого распространения или Layer Normalization в архитектурах Трансформер сглаживает поверхность потерь и стабилизирует дисперсию активаций.
  • Вентильные механизмы: Популярные архитектуры LSTM и GRU исторически создавались для борьбы с затуханием градиентов, однако их внутренние механизмы гейтирования обеспечивают более стабильное прохождение градиентов в обе стороны.

В современных архитектурах (таких как Трансформер) проблема взрыва градиентов обычно менее выражена благодаря комплексному использованию Layer Normalization, остаточных связей и специфических расписаний скорости обучения (learning rate warmup).

3. Инициализация весов

Использование методов Хаймина (He) или Ксавье (Xavier) позволяет сохранить дисперсию активаций и градиентов примерно одинаковой на всех слоях. Для рекуррентных сетей применяется ортогональная инициализация (Orthogonal Initialization), при которой матрица весов изначально имеет сингулярные числа, равные единице.

Литература

  • Pascanu R., Mikolov T., Bengio Y. On the difficulty of training recurrent neural networks. — 2013. — С. 1310-1318.
  • Glorot X., Bengio Y. Understanding the difficulty of training deep feedforward neural networks. — 2010. — С. 249-256.
  • Goodfellow I., Bengio Y., Courville A. Deep Learning. — MIT Press, 2016.
Личные инструменты