Проблема затухающего градиента

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

Перейти к: навигация, поиск
Статья написана с использованием LLM Claude Sonnet 5 и проверена участником Daria Makeeva 00:30, 17 июля 2026 (MSD)


Содержание

Проблема затухающего градиента (англ. vanishing gradient problem) — трудность обучения глубоких нейронных сетей методом обратного распространения ошибки, состоящая в том, что при передаче сигнала об ошибке от выходного слоя к входным градиент функции потерь по параметрам ранних слоёв становится экспоненциально малым по мере увеличения глубины сети. В результате веса первых слоёв обновляются крайне медленно или практически не обновляются, что делает обучение глубоких архитектур неэффективным без специальных приёмов[1]. Симметричным явлением является проблема взрывающегося градиента (exploding gradient problem), при которой градиент, напротив, экспоненциально растёт, приводя к численной неустойчивости обучения.

Интуитивное объяснение

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

Рассмотрим простейший численный пример. Пусть на каждом из 20 слоёв множитель, на который умножается градиент при переходе на один слой назад, равен в среднем 0,5 (типичное значение производной сигмоидной функции активации). Тогда итоговый множитель для градиента, дошедшего до первого слоя, составит 0{,}5^{20} \approx 9{,}5 \times 10^{-7} — то есть градиент уменьшится почти в миллион раз по сравнению с последним слоем. При такой величине обновления весов первых слоёв становятся ничтожными, и эти слои фактически перестают обучаться, даже если продолжают вносить вклад в итоговый результат сети.

Зеркальная ситуация возникает, если типичный множитель превышает единицу: например, при множителе 1,5 после 20 слоёв градиент увеличится в 1{,}5^{20} \approx 3325 раза, что приводит к слишком большим и нестабильным обновлениям весов, а на практике часто — к переполнению численных значений (NaN) и разрушению обучения.

Формальный вывод через цепное правило

Рассмотрим глубокую сеть с L слоями, в которой скрытое представление на слое l вычисляется как

h_l = \sigma(W_l h_{l-1} + b_l)

где W_l — матрица весов, b_l — вектор смещения, \sigma — функция активации. По правилу обратного распространения ошибки градиент функции потерь L по скрытому состоянию первого слоя выражается через цепное правило как произведение якобианов всех промежуточных преобразований:

\frac{\partial L}{\partial h_1} = \frac{\partial L}{\partial h_L} \prod_{l=2}^{L} \frac{\partial h_l}{\partial h_{l-1}} = \frac{\partial L}{\partial h_L} \prod_{l=2}^{L} \operatorname{diag}\big(\sigma'(z_l)\big) W_l

где z_l = W_l h_{l-1} + b_l. Норма этого произведения ограничена произведением норм отдельных множителей:

\left\| \frac{\partial L}{\partial h_1} \right\| \le \left\| \frac{\partial L}{\partial h_L} \right\| \prod_{l=2}^{L} \|\sigma'(z_l)\| \, \|W_l\|

Если на каждом шаге \|\sigma'(z_l)\| \, \|W_l\| < 1, произведение экспоненциально убывает с ростом L (затухающий градиент); если типичное значение этого множителя больше 1 — экспоненциально растёт (взрывающийся градиент)[1].

Ограничения, накладываемые функциями активации

Производная логистической сигмоиды \sigma(x) = \frac{1}{1+e^{-x}} равна \sigma'(x) = \sigma(x)(1-\sigma(x)) и достигает максимума 0{,}25 при x=0, монотонно убывая до нуля при насыщении (при больших по модулю x). Производная гиперболического тангенса \tanh'(x) = 1 - \tanh^2(x) достигает максимума 1 при x=0, но также стремится к нулю при насыщении. Поскольку в реальных сетях большая часть нейронов работает не в точке максимума производной, а в области, близкой к насыщению, типичное значение множителя \sigma'(z_l) оказывается существенно меньше единицы, что в сочетании с матрицами весов W_l систематически приводит к затуханию градиента при использовании сигмоиды и тангенса в глубоких сетях[1].

Связь с собственными числами матрицы Якоби

Для рекуррентных нейронных сетей (recurrent neural networks, RNN), где одна и та же матрица весов W применяется многократно на каждом временном шаге, произведение якобианов принимает вид степени одной и той же матрицы:

\prod_{t=2}^{T} \frac{\partial h_t}{\partial h_{t-1}} \approx \left(\operatorname{diag}(\sigma') \, W\right)^{T-1}

Асимптотическое поведение такой степени определяется собственными числами матрицы \operatorname{diag}(\sigma') W: если по модулю наибольшее собственное число (спектральный радиус) меньше единицы, норма произведения экспоненциально убывает с ростом T, если больше единицы — экспоненциально растёт[1]. Именно поэтому проблема затухающего и взрывающегося градиента особенно остро проявляется в RNN при обучении на длинных последовательностях: чем больше шагов по времени T, тем сильнее выражен эффект.

Затухающий и взрывающийся градиент: сходства и различия

Обе проблемы имеют общий математический механизм — произведение большого числа множителей при обратном распространении ошибки, — но различаются по типичным причинам возникновения и по методам борьбы.

Сравнение затухающего и взрывающегося градиента
Признак Затухающий градиент Взрывающийся градиент
Условие возникновения Типичный множитель \|\sigma'(z)\|\,\|W\| < 1 Типичный множитель \|\sigma'(z)\|\,\|W\| > 1
Типичная причина Насыщающиеся активации (сигмоида, tanh), малая инициализация весов Большие веса, отсутствие насыщения активации, длинные рекуррентные цепочки
Проявление на практике Обучение первых слоёв останавливается, потери перестают убывать Численное переполнение (NaN/Inf), скачки функции потерь, расхождение обучения
Типичные решения ReLU и её модификации, LSTM/GRU, инициализация Xavier/He, батч-нормализация, остаточные связи Gradient clipping (обрезка нормы градиента), уменьшение learning rate, нормализация активаций

Взрывающийся градиент, в отличие от затухающего, относительно легко диагностировать (по внезапному появлению NaN в весах или потерях) и устранить простым техническим приёмом — обрезкой нормы градиента; затухающий градиент, напротив, требует более глубокого архитектурного вмешательства, поскольку симптом (медленное обучение) не столь очевиден и может маскироваться под другие причины плохой сходимости[1].

История

Проблему систематически описал Зепп Хохрайтер в своей дипломной работе 1991 года (на немецком языке), показав, что при обучении рекуррентных сетей методом обратного распространения ошибки во времени (backpropagation through time) сигнал ошибки либо экспоненциально затухает, либо экспоненциально растёт при прохождении через много временных шагов[1]; более подробное изложение того же анализа на английском языке Хохрайтер опубликовал позднее в отдельной статье[1]. Независимо и в более широком контексте эта же трудность была формально проанализирована Йошуа Бенджио, Патрисом Симаром и Паоло Фраскони, которые показали, что способность рекуррентных сетей обучать долгосрочные зависимости и устойчивость градиента при обратном распространении оказываются противоречащими друг другу требованиями[1]. Спустя почти два десятилетия Ксавье Глоро и Йошуа Бенджио количественно исследовали ту же проблему для глубоких полносвязных сетей прямого распространения, продемонстрировав насыщение сигмоидных активаций и предложив новую схему инициализации весов[1]. Разван Паскану, Томаш Миколов и Йошуа Бенджио в 2013 году систематизировали анализ обеих проблем — затухающего и взрывающегося градиента — с точки зрения теории динамических систем и предложили обрезку нормы градиента (gradient clipping) как эффективное решение для взрывающегося градиента[1].

Архитектурные и технические решения

Функции активации без насыщения

Замена сигмоиды и гиперболического тангенса на ReLU (rectified linear unit) и её модификации (Leaky ReLU, ELU, GELU) устраняет систематическое насыщение производной: производная ReLU равна ровно 1 для положительных входов и не создаёт множителя, меньшего единицы, что существенно ослабляет затухание градиента в глубоких сетях прямого распространения[1].

Вентильные рекуррентные архитектуры: LSTM и GRU

Для рекуррентных сетей радикальным решением стала архитектура LSTM (long short-term memory), предложенная Хохрайтером и Шмидхубером в 1997 году[1]. Ключевая идея LSTM — введение явной ячейки памяти с линейным, не проходящим через насыщающуюся нелинейность путём распространения сигнала («constant error carousel»), доступ к которой регулируется мультипликативными вентилями (gates): вентилем забывания, входным и выходным вентилями. Поскольку обновление состояния ячейки памяти по времени близко к тождественному преобразованию, градиент может распространяться назад через сотни шагов без экспоненциального затухания[1]. Упрощённый вариант этой идеи — GRU (gated recurrent unit), объединяющий вентиль забывания и входной вентиль в единый вентиль обновления и тем самым сокращающий число параметров при сохранении устойчивости градиента[1].

Инициализация весов Xavier и He

Глоро и Бенджио предложили инициализировать веса так, чтобы дисперсия сигнала сохранялась приблизительно постоянной при прохождении как вперёд, так и назад через слой, что для симметричных активаций (сигмоида, tanh) даёт дисперсию весов, обратно пропорциональную сумме числа входов и выходов слоя («инициализация Xavier»)[1]. Каймин Хэ и соавторы адаптировали эту идею для ReLU-подобных активаций, учтя, что ReLU обнуляет отрицательную половину сигнала, и предложили инициализацию с дисперсией, обратно пропорциональной только числу входов слоя («инициализация He»)[1].

Нормализация активаций

Батч-нормализация (batch normalization) явно нормализует распределение активаций внутри каждого мини-батча на входе каждого слоя, поддерживая их в области, где производная функции активации далека от насыщения, и тем самым стабилизирует величину градиента на протяжении всего обучения[1].

Остаточные связи

Остаточные связи (residual connections), предложенные в архитектуре ResNet, добавляют к выходу слоя тождественный путь от его входа: h_{l} = h_{l-1} + f(h_{l-1}). При обратном распространении ошибки якобиан такого преобразования содержит единичную матрицу как слагаемое, поэтому градиент имеет прямой путь распространения через сколь угодно много слоёв без обязательного умножения на потенциально малые множители, что позволяет успешно обучать сети из сотен слоёв[1].

Обрезка градиента для борьбы со взрывающимся градиентом

Обрезка нормы градиента (gradient clipping) — простой технический приём, применяемый преимущественно против взрывающегося градиента: если норма вектора градиента превышает заданный порог \theta, вектор масштабируется так, чтобы его норма стала равной порогу:

g \leftarrow g \cdot \min\left(1, \frac{\theta}{\|g\|}\right)

Такой приём сохраняет направление градиента, но ограничивает величину шага обновления весов, устраняя численную неустойчивость без изменения архитектуры сети[1].

См. также

Примечания

Литература

  • Hochreiter S. Untersuchungen zu dynamischen neuronalen Netzen // Diplomarbeit, Technische Universität München. — 1991.
  • Bengio Y., Simard P., Frasconi P. Learning long-term dependencies with gradient descent is difficult // IEEE Transactions on Neural Networks. — 1994. — Т. 5. — № 2. — С. 157–166.
  • Hochreiter S., Schmidhuber J. Long Short-Term Memory // Neural Computation. — 1997. — Т. 9. — № 8. — С. 1735–1780.
  • Hochreiter S. The Vanishing Gradient Problem during Learning Recurrent Neural Nets and Problem Solutions // International Journal of Uncertainty, Fuzziness and Knowledge-Based Systems. — 1998. — Т. 6. — № 2. — С. 107–116.
  • Glorot X., Bengio Y. Understanding the difficulty of training deep feedforward neural networks // Proceedings of the 13th International Conference on Artificial Intelligence and Statistics (AISTATS). — 2010. — Т. 9. — С. 249–256.
  • Pascanu R., Mikolov T., Bengio Y. On the difficulty of training recurrent neural networks // Proceedings of the 30th International Conference on Machine Learning (ICML). — 2013. — Т. 28. — № 3. — С. 1310–1318.
  • Cho K., van Merrienboer B., Gulcehre C., Bahdanau D., Bougares F., Schwenk H., Bengio Y. Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation // Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP). — 2014. — С. 1724–1734.
  • He K., Zhang X., Ren S., Sun J. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification // Proceedings of the IEEE International Conference on Computer Vision (ICCV). — 2015. — С. 1026–1034.
  • Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // Proceedings of the 32nd International Conference on Machine Learning (ICML). — 2015. — Т. 37. — С. 448–456.
  • He K., Zhang X., Ren S., Sun J. Deep Residual Learning for Image Recognition // Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). — 2016. — С. 770–778.