Intro

La Batch Normalization è sia un metodo che un layer: viene considerata un layer perché possiede parametri apprendibili. In generale, tutto ciò che ha parametri che possono essere appresi durante l’addestramento viene chiamato modulo nella nostra architettura, ovvero un componente che può imparare autonomamente i propri parametri.

La Batch Normalization (BN) è una tecnica che normalizza l’output di un layer di rete neurale per ogni mini-batch durante l’addestramento.

Batch Normalization (BN) is a widely adopted technique designed to normalize the inputs of each layer in a neural network. While it’s a normalization method, it’s implemented as a distinct layer within the network’s architecture. This is because it possesses its own set of learnable parameters, making it an active module that can learn its own optimal parameters during training. The core function of the Batch Normalization layer, placed just before the activation function, is to stabilize and control the distribution of layer inputs. This process helps to mitigate a problem known as internal covariate shift—the change in the distribution of a layer’s inputs caused by updates to the parameters of preceding layers during training.

Mechanism

For each mini-batch during training, the BN layer performs the following operations:

  1. Calculate Batch Statistics: It first computes the mean and standard deviation of the activations over the current mini-batch.
  2. Normalize: It then normalizes the activations by subtracting the batch mean and dividing by the batch standard deviation, resulting in a distribution with a mean of 0 and a variance of 1.
  3. Scale and Shift: Finally, the normalized activations are scaled and shifted using two learnable parameters per feature: a scaling factor (gamma, ) and a shifting factor (beta, ). This allows the network to learn the optimal distribution for the inputs to the next layer, rather than being constrained to a standard normal distribution.

Objectives and Effects

  • Primary Benefits: The main objective of Batch Normalization is to create a more stable and predictable learning environment. By ensuring that the distribution of inputs to each layer remains more consistent, BN accelerates convergence and reduces the network’s dependence on careful weight initialization.
  • Secondary Effects and Drawbacks: BN also introduces a slight regularization effect due to the noise from the mini-batch statistics. The primary drawback is a marginal increase in training time per epoch due to the additional computations.

Preliminaries

Si supponga che un layer riceva un mini-batch di input con:

  • batch size = m (e.g. esempi)
  • k = numero di neuroni del layer (e.g. )

Allora l’output del layer è una matrice:

  • Ogni riga rappresenta l’output del layer per il campione -esimo del mini-batch
  • Ogni colonna rappresenta l’output del neurone -esimo per tutti gli esempi

Cosa si intende per "campione del mini-batch"

Quando si parla di campione del mini-batch, si intende una singola istanza di input (cioè un esempio) che viene processata dalla rete durante il forward pass ed è parte del mini-batch corrente.

Ad esempio, se si utilizza un mini-batch di dimensione 4 ognuno di questi esempi è un campione del mini-batch e viene processato indipendentemente attraverso la rete.


BN Pipeline for MLPs

Per ogni neurone (cioè per ogni colonna di ) del layer :

  1. Calcola la media sul mini-batch:
  1. Calcola la varianza sul mini-batch:
  1. Normalizza ciascun valore del neurone (cioè tutti i per ):
  • La stessa e vengono usate per tutti i campioni nella colonna .
Campione Neurone Operazione
Normalizza con
Normalizza con
Normalizza con

  1. Applica scalatura e shift con parametri apprendibili , . Si procede con tale trasformazione affine con parametri apprendibili e , perché, in linea di principio, la standardizzazione a media zero e varianza unitaria degli step precedenti potrebbe non essere ottimale.
    Tale operazione viene effettuata a valle della normalizzazione, lasciando che sia la rete a determinare quale sia la trasformazione più adatta da applicare. sono la versione normalizzata () e trasformata, mediante trasformazione affine, degli

Nei suddetti 4 step è fissato

Questo processo viene applicato separatamente per ciascuna colonna di , cioè per ciascun neurone del layer , applicando la stessa media e varianza a tutti gli esempi per il neurone -esimo. Il risultato è una matrice normalizzata , con ogni feature centrata e scalata nel batch.

Note

Nella trasformazione affine vista in precedenza, non è un caso che il termine additivo sia indicato con , richiamando la nomenclatura del termine di bias .
Infatti, quando si usano i layer di Batch Normalization intertwined con i fully connected linear layers (ovvero sequenze del tipo fully connected linear layer → batch normalization layer, e così via), se si delega alla rete l’apprendimento dei parametri e (cioè di ciò che deve essere rispettivamente moltiplicato e sommato agli output intermedi normalizzati), il termine di bias nei layer lineari diventa ridondante.

Nelle reti neurali moderne, è prassi comune (anche nei layer convoluzionali delle CNN, poiché anch’essi prevedono un termine di bias) ignorare il bias nei layer lineari, proprio perché il Batch Normalization layer effettua già uno shift dei dati, rendendo superfluo l’uso del bias.

Ad esempio, nei framework come PyTorch, si può impostare bias=False nei Linear layer proprio per contemplare lo scenario in cui si utilizza un BatchNorm layer subito dopo.

Important

I parametri e sono apprendibili e sono parametri associati ad ogni neurone in un MLP (o per ogni canale in una CNN):

  • (gamma): parametro di scala (scaling)
  • (beta): parametro di traslazione (shifting)

Ad esempio, in un layer con 100 neuroni, ci saranno 100 coppie di tali parametri da apprendere.

Trade-off: più parametri apprendibili/normalizzazione

Utilizzare un layer di Batch Normalization per ogni layer della rete introduce un trade-off: da un lato si ottiene una normalizzazione utile e una trasformazione affine che può accelerare e stabilizzare l’addestramento, dall’altro si introducono più parametri apprendibili (scale e shift), il che può aumentare la complessità del modello.