Вопрос или проблема
Вопрос
Можно ли внедрить нормировку пакетом (BN
) в RNN после $x_t@W_{xh}$, и после $h_{t-1}@W_{hh}$, чтобы убрать $f=tanh$ и смещение $b_h$? Если возможно, устранит ли это проблемы взрыва и исчезновения градиента?
Я считаю, что эффект tanh
по приведению значений из [-inf, +inf]
в (-1, 1)
может быть заменен стандартизацией в BN
, и это делает лишним смещение в $x_t@W_{xh}$ и $h_{t-1}@W_{hh}$.
Автоматическое дифференцирование tanh также должно быть заменено на BN.
Предыстория
Говорят, что tanh решает проблему взрыва градиента в RNN, поэтому он используется.
Проблемой рекуррентных нейронных сетей является потенциальный взрыв градиентов из-за повторяющегося механизма обратного распространения.
После оператора сложения абсолютное значение c(t) потенциально больше 1. Прохождение через оператор tanh гарантирует, что значения снова отмасштабированы между -1 и 1, что увеличивает стабильность во время обратного распространения на протяжении многих временных шагов.
Проблема исчезновения градиента является основной проблемой в RNN. Кроме того, чтобы удержать градиент в линейной области активационной функции, нам нужна функция, вторая производная которой может сохраняться на длительном интервале перед уходом в нуль. Tanh обладает хорошими свойствами для этого.
Нормировка пакетом может решить оба вопроса — как взрыв, так и исчезновение градиента.
Решение проблемы исчезновения градиента. Хотя внутренний ковариационный сдвиг может и не улучшать точность, он в некоторой степени связан с проблемой исчезновения градиента. Когда распределение входов смещается, это приводит к изначально меньшим обновлениям градиента из-за активационных функций (например, сигмоиды, которая уменьшает значения вплоть до ±2.5, или ReLU, которая присваивает любому x < 0 значение 0). Нормировка пакетом помогает обеспечить, чтобы сигнал был услышан и не ослаблялся смещением распределений от конца до начала сети во время обратного распространения.
Решение проблемы взрыва градиента. Поскольку нормировка пакетом сглаживает ландшафт оптимизации, она избавляется от экстремальных градиентов, которые накапливаются, что приводит к устранению основных колебаний веса, возникающих из-за накопления градиента. Это значительно стабилизирует обучение.
Исследование
Существует несколько статей и работ, которые предполагают, что это возможно, но не удалось найти простую схему реализации или пример кода.
Для RNN это означает вычисление соответствующих статистик по мини-пакету и по временной/шаговой размерности, так что нормализация применяется только по глубинам векторов. Это также означает, что вы нормализуете только преобразованный вход (по вертикальным направлениям, например, BN(W_x * x)), поскольку горизонтальные (по времени) связи зависят от времени и не должны просто усредняться.
Мы предлагаем перепараметризацию LSTM, которая приносит пользу нормировки пакетом для рекуррентных нейронных сетей. В то время как предыдущие работы применяют нормировку пакетом только к преобразованию “вход в скрытое состояние” RNN, мы демонстрируем, что нормализация перехода “скрытое в скрытое” также возможна и полезна, снижая внутренний ковариационный сдвиг между временными шагами.
Хотя нормировка пакетом показала значительные ускорения обучения и улучшение обобщающей способности в прямых сетях, было трудно применить ее в рекуррентной архитектуре (Laurent et al., 2016; Amodei et al., 2015). Ее использование было ограничено в сложенных RNN, где нормировка применяется “вертикально”, то есть ко входу каждого RNN, но не “горизонтально” между временными шагами. RNN глубже во временном направлении, и такая нормировка была бы наиболее полезна при горизонтальном применении. Однако Laurent et al. (2016) предположили, что такое применение нормировки пакетом вредно для обучения из-за взрыва градиентов из-за повторного масштабирования. Наши результаты противоречат этой гипотезе. Мы показываем, что это и возможно, и крайне полезно – применять нормировку пакетом в переходах “скрытое в скрытое” рекуррентных моделей.
Вертикальная BN приемлема, но горизонтально после вектора скрытого состояния нам нужна нормировка слоя вместо tanh, и это то, что я попробую сегодня. Затем вероятно 0,2 dropout для скрытого состояния.
Ответ или решение
Вопрос, который вы подняли, связан с оценкой возможности использования нормализации батча (Batch Normalization, BN) в рекуррентных нейронных сетях (RNN) как замену функции активации tanh. Давайте разберем теоретическую основу, пример использования и применение, чтобы глубже понять данную проблему.
Теория
Рекуррентные нейронные сети (RNN) часто сталкиваются с проблемами градиентов: взрыва и исчезновения градиента. Эти проблемы могут затруднять обучение сети и ухудшать её производительность. Введение функции активации, такой как tanh, помогает стабилизировать процесс обучения за счет ограничения значений активации в интервале ((-1, 1)). Это помогает бороться с взрывом градиента, однако не решает проблему исчезновения градиента полностью.
Нормализация батча была предложена для ускорения обучения нейронных сетей и улучшения стабильности градиентов. Она достигает этого путем стандартизации активаций слоев, что помогает уменьшить "внутренние изменения ковариации" (internal covariate shift). На уровне теории предполагается, что BN может помочь в решении обеих проблем — как исчезновения, так и взрыва градиента — путем изменения распределения активаций.
Пример
Существует несколько подходов к применению BN к RNN. Одним из них является вертикальная нормализация, где BN применяется к входным трансформациям, например, после первого слоя (xt \cdot W{xh}). Однако этот метод не учитывает временной аспект RNN, где нормализация может быть необходима между временными шагами.
В статье "Recurrent Batch Normalization" предложено применение BN как к входным, так и к скрытым слоям RNN, что включает применения между временными шагами (горизонтальная нормализация). Это позволяет уменьшить внутренние изменения ковариации между разными временными шагами, что способствует более стабильному обучению сети.
Применение
Теперь, применим полученные теоретические знания в контексте вашего вопроса.
Можете ли вы использовать нормализацию батча вместо tanh и смещения ( b_h )? Во-первых, важно учесть, что tanh и нормализация батча выполняют разные функции. Tanh ограничивает значения активаций, что полезно для некоторых рекуррентных архитектур, в то время как BN нормализует активированные значения, чтобы стабилизировать входные данные следующих слоев.
-
Замена tanh на BN: Если вы замените tanh на BN, вы измените способ обработки активаций. BN нормализует данные, но не приводит величины к интервалу (-1, 1). Это может не полностью заменять эффект tanh в стабилизации градиентов. Более того, использование BN без функции активации может допустить значения активаций вне интервала, что снова может привести к взрыву градиента.
-
Удаление смещения ( b_h ): Одним из эффектов BN является устранение необходимости в смещении на уровне слоя, так как нормализация приводит среднее в ноль. Это может сделать ( b_h ) не нужным. Однако стоит помнить, что каждая сеть требует специальной настройки и тестирования на соответствующих задачах.
-
Решение проблем градиента: BN может помочь ослабить обе проблемы градиентов, однако, для эффективного применения в рекуррентных сетях может быть необходима дополнительная настройка, как то c использованием других нормализаций (например, нормализация слоя). Применение BN не гарантирует полное устранение проблем градиентов без синергии с другими методами, такими как оптимизаторы и обучающие параметры.
Существует ограниченное количество простых реализаций и диаграмм на эту тему, поскольку интеграция BN в RNN сложна и требует индивидуального подхода для каждой архитектуры нейронной сети. Более того, такие изменения нужно использовать с осторожностью и тщательно тестировать на практике, чтобы убедиться, что они приносят улучшения.
В заключение, нормализация батча имеет значительный потенциал по улучшению обучения RNN, однако её использование вместо tanh и смещения в чистом виде может не дать желаемых результатов из-за различия в задачах, которые они решают. Тщательное тестирование и настройка остаются ключевыми аспектами успешного применения данных изменений в реальных проектах.