Layer Normalization(LayerNorm)

[lèier normalizèiscion]

Tecnica che normalizza le attivazioni dentro ogni layer. Fa convergere meglio i Transformer e li rende stabili durante il training.

La layer normalization normalizza le attivazioni dentro un singolo esempio, attraverso le feature di un layer. Sottrae la media, divide per la deviazione standard, riscala con parametri imparati.

A differenza della batch normalization (che normalizza attraverso il batch), la layer norm lavora indipendente per esempio. Vantaggio: funziona anche con batch di dimensione 1, e funziona benissimo per Transformer e RNN, dove la batch norm fa schifo.

Perché è cruciale nei Transformer:

  • Stabilizza il training: senza layer norm, i Transformer profondi divergono spesso.
  • Permette layer profondi: combinata con residual connection, ti dà reti da 100+ strati che funzionano.
  • Permette learning rate più alto: training più rapido.

Posizionamento: nei Transformer originali (post-norm) la layer norm sta DOPO la sottosezione (attention o feed-forward) e il residual. Nei modelli moderni (Llama, GPT-3+) si usa pre-norm: layer norm PRIMA della sottosezione. Pre-norm è più stabile.

Varianti:

  • RMSNorm: variante semplificata, divide solo per la radice della media dei quadrati. Usata in Llama 2/3, Mistral. Più veloce, qualità simile.
  • GroupNorm: normalizza per gruppi di feature. Usata in alcune CNN.

Verdetto pratico: se costruisci un Transformer e non metti la layer norm (o RMSNorm), il training non parte. È come provare a guidare un'auto senza ruote.