Эндрю Ын о Batch Norm: почему смещение «b» становится лишним?

DeepLearning.AI 91,3 тыс. 12 мин 3 мин 25.08.2017
Главное

Внедрение пакетной нормализации (Batch Normalization, BN) в архитектуру глубоких нейронных сетей кардинально меняет процесс обучения, делая его более стабильным и быстрым. В данном материале на основе туториала от DeepLearning.AI разбирается механика интеграции BN между вычислительными этапами внутри слоя, а также объясняется, почему классический параметр смещения (bias) становится избыточным при использовании этой техники.

🏗️ Анатомия слоя: куда вставить Batch Norm 0:00

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

При внедрении Batch Normalization алгоритм претерпевает изменения:

Таким образом, пакетная нормализация происходит «между» вычислением линейной части и применением нелинейности . Вместо ненормированных значений сеть оперирует средним и дисперсией, которые жестко контролируются алгоритмом.

⚙️ Параметры и путаница в терминологии 2:52

Внедрение BN добавляет в нейронную сеть новые обучаемые параметры для каждого слоя: $\beta^{[l]}$ и $\gamma^{[l]}$. Важно не путать параметр $\beta$ из Batch Norm с гиперпараметром $\beta$, который используется в алгоритмах Momentum или Adam для расчета экспоненциально взвешенного среднего .

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

Несмотря на одинаковое название, это абсолютно разные величины, и в контексте пакетной нормализации $\beta$ — это обучаемый параметр, который обновляется с помощью градиентного спуска .

❌ Почему параметр b (bias) больше не нужен 7:34

Одним из самых интересных последствий внедрения Batch Norm является исключение традиционного параметра смещения $b^{[l]}$ из расчетов. В классическом слое уравнение выглядит как $Z = WA + b$. Однако Batch Norm на первом этапе нормализации вычитает среднее значение из всех примеров в мини-батче .

Любая константа (которой и является $b$), добавленная к вектору $Z$, будет просто аннулирована при вычитании среднего . Если вы добавите 100 к каждому значению, среднее тоже увеличится на 100, и после вычитания результат останется прежним.

Следовательно:

  1. Параметр $b$ можно исключить или навсегда зафиксировать на нуле .
  2. Роль управления «сдвигом» (bias) полностью переходит к параметру $\beta^{[l]}$.
  3. Размерность параметров $\beta^{[l]}$ и $\gamma^{[l]}$ соответствует количеству скрытых юнитов в слое ($n^{[l]} \times 1$) .

📦 Работа с мини-батчами и программная реализация 5:47

В реальных задачах Batch Norm применяется не ко всему тренировочному набору сразу, а к отдельным мини-батчам. Для каждого мини-батча $X^{{t}}$ вычисляются собственные среднее и дисперсия, на основе которых происходит масштабирование .

С точки зрения программирования, современные фреймворки значительно упрощают жизнь разработчикам:

🔄 Обновленный алгоритм обучения 10:23

Полный цикл итерации mini-batch gradient descent с использованием Batch Norm выглядит следующим образом:

  1. Forward Prop: Для каждого слоя вычисляется $Z$, затем применяется Batch Norm для получения $\tilde{Z}$, и только потом — функция активации .
  2. Backprop: Вычисляются градиенты для весов $dW$, а также для новых параметров $d\beta$ и $d\gamma$. Градиент $db$ больше не вычисляется, так как $b$ исключен .
  3. Параметры: Обновление происходит привычным образом:
    • $\beta = \beta - \alpha \cdot d\beta$
    • $\gamma = \gamma - \alpha \cdot d\gamma$ .

Этот процесс отлично сочетается не только с обычным градиентным спуском, но и с более продвинутыми оптимизаторами, такими как Momentum, RMSprop или Adam .

💬 Цитаты

«Если вы используете Batch Norm, вы можете фактически исключить параметр b или считать его равным нулю.»

«Batch Norm происходит между вычислением Z и вычислением A.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Batch Normalization
Техника нормализации промежуточных значений в слоях нейросети для ускорения обучения.
Мини-батч (Mini-batch)
Подмножество тренировочных данных, на основе которого вычисляются градиенты и обновляются веса.
Параметр сдвига (Beta)
Обучаемый параметр в Batch Norm, определяющий среднее значение нормализованного распределения.
Параметр масштаба (Gamma)
Обучаемый параметр в Batch Norm, определяющий стандартное отклонение нормализованного распределения.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Batch Normalization DeepLearning.AI Deep Learning TensorFlow Оптимизация нейросетей