Sobes.tech
Middle — Senior

Quali tipi di normalizzazione esistono (Batch, Layer, Instance, Group, RMSNorm)?

sobes.tech AI

Risposta dell'AI

La normalizzazione nelle reti neurali aiuta a stabilizzare e accelerare l'addestramento, riducendo lo spostamento interno della distribuzione delle attivazioni. I principali tipi di normalizzazione:

  • Normalizzazione batch (Batch Normalization, BatchNorm) — normalizzazione per batch. Calcola la media e la varianza per ogni caratteristica su un mini-batch, quindi scala e sposta i valori. È efficace, ma dipende dalla dimensione del batch.

  • Normalizzazione a livello (Layer Normalization, LayerNorm) — normalizzazione a livello. Calcola le statistiche per tutti i neuroni di uno strato per ogni esempio singolo, indipendentemente dalla dimensione del batch. Spesso usata in RNN e trasformatori.

  • Normalizzazione per istanza (Instance Normalization, InstanceNorm) — normalizzazione per esempio e canale, comunemente usata in compiti di elaborazione delle immagini, ad esempio nel trasferimento di stile.

  • Normalizzazione di gruppo (Group Normalization, GroupNorm) — divide i canali in gruppi e normalizza all'interno di ogni gruppo. Funziona stabilmente con piccole dimensioni di batch.

  • RMSNorm (Root Mean Square Normalization) — normalizzazione per la radice quadrata della media dei quadrati dei valori, senza sottrarre la media. Alternativa semplificata a LayerNorm, a volte dà risultati migliori nei trasformatori.

Esempio di BatchNorm in PyTorch:

import torch
import torch.nn as nn

batch_norm = nn.BatchNorm1d(num_features=10)
x = torch.randn(32, 10)  # batch di 32 esempi
output = batch_norm(x)