Visualizzare cos’è la normalizzazione batch e i suoi vantaggi |  di Peng Qian |  Febbraio 2024

 | Intelligenza-Artificiale

Ottimizzazione dell’addestramento della rete neurale con la normalizzazione batch

Visualizzare cos'è la normalizzazione batch e i suoi vantaggi.
Visualizzare cos’è la normalizzazione batch e i suoi vantaggi. Immagine dell’autore

Durante la conduzione di progetti di deep learning, ti sei mai imbattuto in una situazione in cui più strati ha la tua rete neurale, più lento diventa l’addestramento?

Se la tua risposta è SÌ, allora congratulazioni, è giunto il momento di prendere in considerazione l’utilizzo della normalizzazione batch adesso.

Come suggerisce il nome, la normalizzazione batch è una tecnica in cui i dati di training batch, dopo l’attivazione nel livello corrente e prima di passare al livello successivo, vengono standardizzati. Ecco come funziona:

  1. L’intero set di dati viene suddiviso casualmente in N batch senza sostituzione, ciascuno con una dimensione mini_batch, per l’addestramento.
  2. Per l’i-esimo batch, standardizzare la distribuzione dei dati all’interno del batch utilizzando la formula: (Xi - Xmean) / Xstd.
  3. Ridimensiona e sposta i dati standardizzati con γXi + β per consentire alla rete neurale di annullare gli effetti della standardizzazione, se necessario.

I passaggi sembrano semplici, vero? Quindi, quali sono i vantaggi della normalizzazione batch?

Le reti neurali regolano comunemente i parametri utilizzando la discesa del gradiente. Se la funzione di costo è regolare e ha un solo punto minimo, i parametri convergeranno rapidamente lungo il gradiente.

Ma se c’è una variazione significativa nella distribuzione dei dati tra i nodi, la funzione di costo diventa meno simile al fondo di un pozzo e più simile a una valle, rendendo la convergenza del gradiente eccezionalmente lenta.

Confuso? Nessun problema, spieghiamo questa situazione con un’immagine:

Innanzitutto, prepara un set di dati virtuale con solo due funzionalità, in cui la distribuzione delle funzionalità è molto diversa, insieme a una funzione di destinazione:

rng = np.random.default_rng(42)

A = rng.uniform(1, 10, 100)
B = rng.uniform(1, 200, 100)

y = 2*A + 3*B + rng.normal(size=100) * 0.1 # with a little bias

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *