Исчезающие градиенты — это проблема, с которой вы можете столкнуться при обучении нейронной сети. Чаще всего это наблюдается в глубокой нейронной сети, а также в рекуррентной нейронной сети (RNN).

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

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

Что означает исчезновение градиентов?

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

Почему исчезают градиенты?

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

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

Как мы можем решить проблему с VG?

Инициализация веса

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

Мы видели, что если веса слишком велики или слишком малы, производные некоторых нелинейных функций активации (таких как сигмовидные) становятся очень маленькими, почти равными 0. Нам нужно убедиться, что веса находятся в разумном диапазоне, прежде чем мы начнем. обучение сети. Инициализация Xavier — это попытка сделать именно это. Веса сети выбираются для определенных промежуточных значений таким образом, чтобы дисперсия не была огромной, когда мы проходим через разные слои сети. Этот процесс инициализации известен как инициализация Xavier.

Ненасыщающие функции активации

Сигмовидная функция является популярной функцией активации, потому что ее производную легко вычислить, но мы видели, что у нее есть проблемы с насыщением, когда входные данные слишком велики или малы. У нас есть лучшие функции активации. Функция активации выпрямленных линейных единиц (ReLU) не насыщается для положительных значений. Эта активация насыщает только в одном направлении и, таким образом, более устойчива к исчезновению градиентов. Функция активации ReLU не идеальна. Он страдает от проблемы, известной как умирающие ReLU: во время обучения некоторые нейроны фактически умирают, а это означает, что они перестают выводить что-либо, кроме 0. Leaky ReLU помогает решить эту проблему.

Пакетная нормализация

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

Другая архитектура

Долгосрочная кратковременная память (LSTM) — это другая архитектура RNN, которая может помочь решить некоторые проблемы, вызванные исчезновением градиентов. LSTM помогает сохранять информацию в течение многих временных интервалов, используя состояние ячеек памяти. LSTM не гарантирует, что проблема исчезающего градиента не возникнет, но предоставляет модели возможность изучить зависимости на большом расстоянии (зависимости на большом расстоянии — это проблема, вызванная VG).

Остаточные сети

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