Scopri come la retropropagazione addestra le reti neurali, riduce i tassi di errore e rende efficienti le applicazioni AI come il riconoscimento delle immagini e l'NLP.
La backpropagation, abbreviazione di "propagazione all'indietro degli errori", è un algoritmo fondamentale per l'addestramento delle reti neurali artificiali (NN), soprattutto nel campo del deep learning (DL). Si tratta di un meccanismo fondamentale che permette ai modelli di imparare dagli errori commessi durante il processo di formazione del modello. L'algoritmo calcola in modo efficiente il contributo di ogni parametro (come i pesi e i bias del modello ) all'interno della rete all'errore complessivo osservato nelle previsioni del modello. Queste informazioni sul gradiente vengono poi utilizzate dagli algoritmi di ottimizzazione per regolare i parametri in modo iterativo, migliorando progressivamente le prestazioni e l'accuratezza del modello.
Il processo di retropropagazione segue tipicamente un passaggio iniziale in avanti in cui i dati di ingresso passano attraverso la rete per generare una previsione. Dopo aver confrontato la previsione con il valore effettivo dell'obiettivo utilizzando una funzione di perdita, l'algoritmo di retropropagazione esegue due fasi principali:
Una volta calcolati i gradienti, un algoritmo di ottimizzazione, come il Gradient Descent o varianti come lo Stochastic Gradient Descent (SGD) o l'ottimizzatore Adam, utilizza questi gradienti per aggiornare i weights and biases della rete. L'obiettivo è quello di minimizzare la funzione di perdita, insegnando di fatto alla rete a fare previsioni migliori nelle epoche successive.
La retropropagazione è indispensabile per il moderno deep learning. La sua efficienza nel calcolare i gradienti rende computazionalmente fattibile l'addestramento di architetture molto profonde e complesse. Ciò include modelli come le Reti Neurali Convoluzionali (CNN), che eccellono nelle attività di computer vision (CV), e le Reti Neurali Ricorrenti (RNN), comunemente utilizzate per dati sequenziali come nell'elaborazione del linguaggio naturale (NLP). Senza la retropropagazione, la regolazione di milioni di parametri in modelli di grandi dimensioni come il GPT-4 o quelli addestrati su dataset massicci come ImageNet sarebbe impraticabile. Questa tecnologia consente ai modelli di apprendere automaticamente caratteristiche complesse e rappresentazioni gerarchiche dai dati, alla base di molti progressi nell'ambito dell'intelligenza artificiale sin dalla sua diffusione, come illustrato in dettaglio nelle risorse che coprono la storia del Deep Learning. Framework come PyTorch e TensorFlow si basano molto sui motori di differenziazione automatica che implementano la retropropagazione.
È importante distinguere la retropropagazione dagli algoritmi di ottimizzazione. La retropropagazione è il metodo utilizzato per calcolare i gradienti (il contributo all'errore di ogni parametro). Gli algoritmi di ottimizzazione, invece, sono le strategie che utilizzano i gradienti calcolati per aggiornare i parametri del modelloweights and biases) al fine di minimizzare la perdita. La retropropagazione fornisce la direzione del miglioramento, mentre l'ottimizzatore determina la dimensione del passo(tasso di apprendimento) e la modalità di aggiornamento.
La retropropagazione viene utilizzata implicitamente ogni volta che un modello di deep learning viene sottoposto ad addestramento. Ecco due esempi concreti: