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

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

Обратное распространение ошибки впервые позволило обучать глубокие искусственные нейронные сети для задач обучения с учителем, однако изначально данная техника была малоуспешной. Формальное объяснение недостаточной эффективности впервые дал Зепп Хохрайтер в своей дипломной работе 1991 года, в которой была определена «проблема исчезающего градиента»[2][3], которая затрагивает не только многоуровневые прямые нейронные сети[4], но и рекуррентные нейронные сети[5][6]. Для рекуррентных сетей типовая процедура обучения включает разворачивание их в очень глубокие прямые сети, в которых на каждый временной шаг входной последовательности добавляется новый слой (эта комбинация называется обратное распространение ошибки во времени).

Типовые модели

В этом разделе излагаются результаты работы Паскану, Миколова и Бенжио On the difficulty of training Recurrent Neural Networks[6].

Рекуррентная модель

Обобщённая рекуррентная сеть имеет скрытые состояния , входы и выходы . Пусть сеть параметризуется и эволюционирует согласно:

Проблема исчезающего/взрывающегося градиента связана с многократными перемножениями вида:

Пример: рекуррентная сеть с сигмоидальной активацией

Рассмотрим типовую рекуррентную сеть:

сигмоидальная функция

Тогда: Произведение матриц вида:

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

Если , анализ усложняется: в случае спектрального радиуса больше 1 можно наблюдать взрыв градиента. Для иллюстрации см. работу Паскану и др[6]..

Динамическая система

Следуя Дойе (Doya, 1993)[7], рассмотрим однонейронную рекуррентную сеть с сигмоидальной активацией:

Значения производной и (при большом T) резко возрастают при приближении к неустойчивой точке — взрыв градиента; вдалеке от неустойчивости — производная обращается в нуль — исчезновение градиента.

Для , величина градиента остаётся ограниченной. Это объясняет, почему ранние исследования были сосредоточены на построении архитектур с особым распределением устойчивых состояний для обучения долгосрочным зависимостям[8].

Аналогичная интуиция справедлива и для общего случая[6].

Геометрическая модель

Рассмотрим вышеописанную однонейронную сеть с параметрами: , функция потерь . При приближении к −2,5 сверху функция потерь стремится к нулю, однако стоит пересечь этот порог, как область притяжения меняется и потери скачкообразно возрастают до 0,5.

При обучении по градиенту это приводит к резкой смене значения градиента и возникновению взрывов; см. подробнее в работе Паскану и др[6].

Методы решения

Для преодоления проблемы исчезающего градиента были предложены различные методы.

Рекуррентные нейронные сети

В случае рекуррентных сетей специально для решения проблемы исчезающего градиента была предложена архитектура LSTM (long short-term memory), разработанная Хохрайтером и Шмидхубером в 1997 году[9]..

Для решения проблемы взрывного градиента рекомендуется использовать обрезку градиентов (gradient clipping) — деление градиента на , если , что ограничивает модуль вектора градиента[6].

Батч-нормализация

Батч-нормализация (batch normalization) — стандартный метод, применяемый для борьбы с исчезающим и взрывным градиентом[10][11].

Многоуровневая иерархия

В многоуровневых сетях (Шмидхубер, 1992) обучение проводится поэтапно: сначала нелинейная автокодировка или другое обучение без учителя применяется для каждого уровня, затем осуществляется тонкая настройка по алгоритму обратного распространения ошибки[12]. Каждый уровень сжимает представление и передаёт его дальше.

Глубокая вера (Deep Belief Network)

Аналогичные стратегии применяются для глубоких прямых сетей, где предварительное обучение без учителя подготавливает эффективные детекторы признаков, а последующая работа с учителем строит классификацию. Модель deep belief network (Хинтон и др., 2006) поочерёдно обучает представления разных уровней с помощью ограниченных машин Больцмана, что стабилизирует обучение[13]. Такие модели оказываются эффективными выделителями признаков на сложных данных[14].

Аппаратное ускорение

Рост производительности оборудования (особенно GPU) с 1991 по 2015 год сделал возможным обучение стандартным backpropagation даже очень глубоких сетей. Шмидхубер отмечает, что это «и обеспечивает текущие успехи в задачах компьютерного зрения», однако принципиально проблему исчезающего градиента не устраняет[15][13].

Резидуальные связи

Резидуальные (skip) связи реализуют архитектурный приём , где f — любая подсеть. Тогда градиент передачи представляет собой сумму дифференциала f и тождественного оператора, что предотвращает исчезновение/взрыв градиента. При обучении часть градиента напрямую проходит по резидуальным путям[16].

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

Альтернативные функции активации

Rectifier-функции активации, такие как ReLU, менее подвержены исчезающему градиенту, поскольку насыщаются только в одну сторону[18].

Начальная инициализация весов

Для борьбы с исчезающим градиентом предлагаются специальные методы начальной инициализации весов. Кумар (2017) предложил использовать нормальное распределение с нулевым средним и стандартным отклонением , где N — число нейронов в слое, для сетей с логистической активацией[19].

Йылмаз и Поли[20] показали, что если среднее начальных весов установить по формуле , то даже очень глубокие сети могут успешно обучаться с помощью backpropagation.

Другие методы

Свен Бенке использовал только знак градиента (метод Rprop) при обучении нейронной абстракционной пирамиды[21] для решения задач восстановления изображений и локализации лиц.

Кроме того, оптимизация может проводиться методом универсального поиска по пространству весов сети, например с помощью случайного поиска или генетических алгоритмов, что устраняет зависимость от градиента[22].

Примечания

Литература

  • Паскану Р., Миколов Т., Бенжио Й. On the difficulty of training recurrent neural networks // arXiv:1211.5063.
  • Hochreiter S., Schmidhuber J. Long Short-Term Memory // Neural Computation, 1997, 9(8), 1735—1780.
  • 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.