Проблема исчезающего и взрывающегося градиента Нейронные сети 101

Раскрытие проблемы исчезающего и взрывающегося градиента в нейронных сетях мастеркласс 101

Как обеспечить стабильность нейронной сети и предотвратить её “смерть” или “взрыв”

https://www.flaticon.com/free-icons/neural-network. title=“neural network icons.” Neural network icons created by Paul J. — Flaticon.

Что такое затухающие и взрывающиеся градиенты?

В одном из моих предыдущих постов мы объяснили, что нейронные сети учатся с помощью алгоритма обратного распространения ошибки. Основная идея заключается в том, что мы начинаем с выходного слоя и движемся или “пропагируем” ошибку до входного слоя, обновляя веса с учетом функции потерь. Если вы не знакомы с этим, то я настоятельно рекомендую вам ознакомиться с этим постом:

Прямой проход и обратное распространение: Нейронные сети 101

Объяснение того, как нейронные сети “учатся” и “обучаются” шаблонам в данных вручную и с помощью кода с использованием PyTorch

towardsdatascience.com

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

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

Тем не менее, статья, опубликованная Ксавье Глоро и Ёшуа Бенджио в 2010 году, определила несколько причин, по которым это происходит с градиентами. Основными “виновниками” были функция активации сигмоиды и инициализация весов (обычно случайно распределенные по стандартному нормальному закону). Эта комбинация приводит к изменению дисперсии между слоями до их насыщения на крайних значениях функции сигмоиды.

Ниже приведено математическое уравнение и график функции сигмоиды. Обратите внимание, что на крайних значениях градиент становится равным нулю. Следовательно, в этих насыщенных точках нет “обучения”.

Sigmoid function. Plot generated by author in Python.

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