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()
)