Проблема взрыва градиентов
Материал из 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.

