Scopri come la normalizzazione batch stabilizza i modelli di deep learning. Scopri come Ultralytics utilizza BatchNorm per accelerare l'addestramento e migliorare la precisione dell'IA.
La normalizzazione batch, spesso denominata BatchNorm, è una tecnica utilizzata nel deep learning (DL) per stabilizzare e accelerare l' addestramento delle reti neurali artificiali. Introdotta per risolvere il problema dello spostamento interno delle covariate, in cui la distribuzione degli input a un livello cambia continuamente man mano che i parametri dei livelli precedenti vengono aggiornati, BatchNorm standardizza gli input a un livello per ogni mini-batch. Normalizzando gli input del livello in modo che abbiano una media pari a zero e una deviazione standard pari a uno, e quindi ridimensionandoli e spostandoli con parametri apprendibili, questo metodo consente alle reti di utilizzare tassi di apprendimento più elevati e riduce la sensibilità all' inizializzazione.
In una rete neurale convoluzionale (CNN) standard , i dati fluiscono attraverso livelli in cui ogni livello esegue una trasformazione. Senza normalizzazione, la scala dei valori di output può variare notevolmente, rendendo difficile per l'algoritmo di ottimizzazione trovare i pesi migliori . La normalizzazione batch viene tipicamente applicata immediatamente prima della funzione di attivazione (come ReLU o SiLU).
Il processo prevede due fasi principali durante la formazione:
Questo meccanismo agisce come una forma di regolarizzazione, riducendo leggermente la necessità di altre tecniche come i livelli di dropout aggiungendo una piccola quantità di rumore alle attivazioni durante l'addestramento.
L'integrazione della normalizzazione batch in architetture come ResNet o nei moderni rilevatori di oggetti offre diversi vantaggi distintivi:
La normalizzazione batch è un elemento fondamentale in quasi tutti i moderni sistemi di visione artificiale (CV).
È utile distinguere la normalizzazione batch dalla normalizzazione standard dei dati.
Framework di deep learning come PyTorch includono implementazioni ottimizzate della normalizzazione batch. NelleYOLO Ultralytics , questi livelli vengono automaticamente integrati nei blocchi di convoluzione.
Il seguente Python Il frammento di codice mostra come ispezionare un modello per vedere
dove BatchNorm2d i livelli si trovano all'interno dell'architettura.
from ultralytics import YOLO
# Load the YOLO26n model (nano version)
model = YOLO("yolo26n.pt")
# Print the model structure to view layers
# You will see 'BatchNorm2d' listed after 'Conv2d' layers
print(model.model)
Comprendere come questi livelli interagiscono aiuta gli sviluppatori quando utilizzano la Ultralytics per mettere a punto modelli su set di dati personalizzati, garantendo che l'addestramento rimanga stabile anche con dati limitati.