Sobes.tech
Middle — Senior
102

Как работают BatchNorm и LayerNorm? Преимущества и недостатки каждой и где применяются?

Answer from AI

sobes.tech AI

BatchNorm (Batch Normalization) и LayerNorm (Layer Normalization) — методы нормализации активаций в нейронных сетях, которые помогают ускорить обучение и стабилизировать градиенты.

BatchNorm:

  • Нормализует входы слоя по батчу: для каждого признака вычисляет среднее и дисперсию по всем примерам в батче.
  • Формула: ( \hat{x} = \frac{x - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} ), где (\mu_B) и (\sigma_B^2) — среднее и дисперсия по батчу.
  • После нормализации применяется масштабирование и сдвиг с обучаемыми параметрами (\gamma) и (\beta).

Преимущества BatchNorm:

  • Ускоряет сходимость.
  • Позволяет использовать большие learning rate.
  • Часто улучшает обобщающую способность.

Недостатки BatchNorm:

  • Зависит от размера батча, при маленьких батчах работает хуже.
  • Не подходит для рекуррентных сетей и онлайн-обучения.

LayerNorm:

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

Преимущества LayerNorm:

  • Хорошо работает с рекуррентными сетями (RNN, LSTM).
  • Независима от размера батча.

Недостатки LayerNorm:

  • Может быть менее эффективна в сверточных сетях по сравнению с BatchNorm.

Применение:

  • BatchNorm широко используется в сверточных нейронных сетях (CNN).
  • LayerNorm часто применяется в трансформерах и рекуррентных сетях.

Пример использования BatchNorm в PyTorch:

import torch.nn as nn

model = nn.Sequential(
    nn.Linear(100, 50),
    nn.BatchNorm1d(50),
    nn.ReLU()
)

Пример LayerNorm:

model = nn.Sequential(
    nn.Linear(100, 50),
    nn.LayerNorm(50),
    nn.ReLU()
)