Sieci neuronowe od podstaw do nowoczesnej AI · Regularyzacja — jak uniknąć przeuczenia
Batch Normalization: problem internal covariate shift i rozwiązanie
Regularyzacja — jak uniknąć przeuczenia
Wprowadzenie
Batch Normalization (Ioffe & Szegedy 2015) zmieniło sposób trenowania sieci głębokich. Pod hasłem „rozwiązaliśmy internal covariate shift" autorzy zaproponowali warstwę, która normalizuje aktywacje wzdłuż wymiaru batcha — odejmuje średnią batchową, dzieli przez odchylenie standardowe batchowe, a potem dodaje uczone γ i β do skali i przesunięcia. W praktyce BN dał głębszym sieciom możliwość treningu z większym learning rate, mniejszą wrażliwość na inicjalizację oraz delikatny efekt regularyzacyjny od szumu batchowych statystyk. Dziesięć lat później wciąż jest standardem w CNN (ResNet, EfficientNet, RegNet), choć diagnoza „internal covariate shift" została zakwestionowana (Santurkar et al. 2018, „How Does Batch Normalization Help Optimization?") na rzecz interpretacji geometrycznej: BN wygładza loss surface. Lekcja przechodzi przez dokładny algorytm BN w trybie train i eval (running statistics), problem zależności od batch size, kompatybilność z ResNetem przez residual connections oraz słabe punkty (mały batch = niestabilne statystyki, sekwencje o zmiennej długości, distributed training).