Sobes.tech
Middle — Senior

Jakie rodzaje normalizacji istnieją (Batch, Layer, Instance, Group, RMSNorm)?

sobes.tech AI

Odpowiedź od AI

Normalizacja w sieciach neuronowych pomaga stabilizować i przyspieszać trening, zmniejszając wewnętrzne przesunięcie rozkładu aktywacji. Główne rodzaje normalizacji:

  • Normalizacja partii (Batch Normalization, BatchNorm) — normalizacja na partii. Oblicza średnią i odchylenie standardowe dla każdego cechy na mini-partii, a następnie skaluje i przesuwa wartości. Jest skuteczna, ale zależy od rozmiaru partii.

  • Normalizacja warstwy (Layer Normalization, LayerNorm) — normalizacja na warstwie. Oblicza statystyki dla wszystkich neuronów warstwy dla każdego pojedynczego przykładu, niezależnie od rozmiaru partii. Często używana w RNN i transformatorach.

  • Normalizacja instancji (Instance Normalization, InstanceNorm) — normalizacja na pojedynczym przykładzie i kanale, często stosowana w zadaniach przetwarzania obrazów, np. w transferze stylu.

  • Normalizacja grupowa (Group Normalization, GroupNorm) — dzieli kanały na grupy i normalizuje w obrębie każdej grupy. Stabilnie działa przy małych rozmiarach partii.

  • RMSNorm (Root Mean Square Normalization) — normalizacja przez pierwiastek z średniej kwadratów wartości, bez odejmowania średniej. Uproszczona alternatywa dla LayerNorm, czasami daje lepsze wyniki w transformatorach.

Przykład BatchNorm w PyTorch:

import torch
import torch.nn as nn

batch_norm = nn.BatchNorm1d(num_features=10)
x = torch.randn(32, 10)  # partia z 32 przykładami
output = batch_norm(x)