Wprowadzenie
Batch Normalization (BatchNorm) to technika normalizacji aktywacji w sieciach neuronowych, wprowadzona w 2015 roku przez zespół Google (Ioffe & Szegedy). Jedna z najważniejszych innowacji w deep learningu, która pozwoliła na trenowanie znacznie głębszych sieci i przyspieszyła cały proces uczenia.
Jak działa Batch Normalization?
Dla każdego mini-batcha w danej warstwie oblicza się średnią i wariancję aktywacji, a następnie normalizuje dane:
μ_B = (1/m) ∑ x_i
σ²_B = (1/m) ∑ (x_i − μ_B)²
x̂_i = (x_i − μ_B) / √(σ²_B + ε)
y_i = γ x̂_i + β
Parametry γ i β są uczone – pozwalają modelowi zdecydować, czy chce przywrócić poprzedni rozkład.
Zalety Batch Normalization
- Znacznie przyspiesza trening (pozwala na wyższe learning rate)
- Zmniejsza problem vanishing/exploding gradient
- Działa jak regularizacja (efekt podobny do Dropout)
- Zmniejsza wewnętrzną zmianę rozkładu aktywacji (Internal Covariate Shift)
- Umożliwia trenowanie bardzo głębokich sieci
Ograniczenia
- Zależność od rozmiaru batcha – przy małych batchach statystyki są niestabilne
- Problemy w Recurrent Neural Networks i Transformerach (dlatego tam częściej LayerNorm)
- Podczas inferencji wymaga zapamiętania średnich i wariancji z treningu
- Nie działa dobrze w przypadku sekwencyjnych lub dynamicznych danych
BatchNorm vs inne normalizacje
- Layer Normalization – normalizuje po cechach każdej próbki (popularna w Transformerach)
- Instance Normalization – normalizuje po każdej próbce i kanale osobno
- Group Normalization – kompromis między BatchNorm a LayerNorm
Aktualny status (2026)
Batch Normalization nadal jest szeroko stosowana, szczególnie w klasycznych architekturach CNN (ResNet, EfficientNet). W modelach Transformerów została w dużej mierze zastąpiona przez Layer Normalization lub RMSNorm. Nowoczesne warianty (BatchNorm z adaptacją, Ghost BatchNorm) rozwiązują problemy z małymi batchami. Mimo pojawienia się nowszych technik normalizacji, BatchNorm pozostaje jedną z kluczowych innowacji, które umożliwiły boom deep learningu w latach 2015–2020.