Fondamenti di IA

Cos’è la Backpropagation?

mm
Aggiungi Unite.AI alle tue fonti preferite su Google

Cos’è la Backpropagation?

I sistemi di apprendimento profondo sono in grado di apprendere modelli estremamente complessi e ciò avviene regolando i loro pesi. Come vengono regolati esattamente i pesi di una rete neurale profonda? Vengono regolati attraverso un processo chiamato backpropagation. Senza la backpropagation, le reti neurali profonde non sarebbero in grado di eseguire compiti come il riconoscimento di immagini e l’interpretazione del linguaggio naturale. Comprendere come funziona la backpropagation è fondamentale per comprendere le reti neurali profonde in generale, quindi discutiamo della backpropagation e vediamo come il processo viene utilizzato per regolare i pesi di una rete.

La backpropagation può essere difficile da comprendere e i calcoli utilizzati per eseguire la backpropagation possono essere piuttosto complessi. Questo articolo cercherà di fornire una comprensione intuitiva della backpropagation, utilizzando poco della matematica complessa. Tuttavia, alcune discussioni sulla matematica alla base della backpropagation sono necessarie.

L’Obiettivo della Backpropagation

Iniziamo definendo l’obiettivo della backpropagation. I pesi di una rete neurale profonda rappresentano la forza delle connessioni tra le unità di una rete neurale. Quando la rete neurale viene stabilita, vengono fatte ipotesi su come le unità in un livello sono collegate ai livelli ad esso collegati. Mentre i dati attraversano la rete neurale, i pesi vengono calcolati e vengono fatte ipotesi. Quando i dati raggiungono l’ultimo livello della rete, viene fatta una previsione su come le caratteristiche sono correlate alle classi nel set di dati. La differenza tra i valori previsti e i valori effettivi è l’errore/perdita, e l’obiettivo della backpropagation è ridurre l’errore. Ciò viene realizzato regolando i pesi della rete, rendendo le ipotesi più simili alle vere relazioni tra le caratteristiche di input.

Addestramento di una Rete Neurale Profonda

Prima che la backpropagation possa essere eseguita su una rete neurale, il passo di addestramento regolare/forward di una rete neurale deve essere eseguito. Quando una rete neurale viene creata, un set di pesi viene inizializzato. Il valore dei pesi verrà alterato mentre la rete viene addestrata. Il passo di addestramento forward di una rete neurale può essere concepito come tre passaggi discreti: attivazione del neurone, trasferimento del neurone e propagazione forward.

Quando si addestra una rete neurale profonda, è necessario utilizzare molte funzioni matematiche. I neuroni in una rete neurale profonda sono composti dai dati in ingresso e da una funzione di attivazione, che determina il valore necessario per attivare il nodo. Il valore di attivazione di un neurone viene calcolato con diversi componenti, essendo una somma pesata degli input. I pesi e i valori di input dipendono dall’indice dei nodi utilizzati per calcolare l’attivazione. Un altro numero deve essere preso in considerazione quando si calcola il valore di attivazione, un valore di bias. I valori di bias non fluttuano, quindi non vengono moltiplicati insieme con il peso e gli input, vengono semplicemente aggiunti. Tutto ciò significa che l’equazione seguente potrebbe essere utilizzata per calcolare il valore di attivazione:

Attivazione = somma(peso * input) + bias

Dopo che il neurone è stato attivato, una funzione di attivazione viene utilizzata per determinare quale sarà l’output effettivo del neurone. Diverse funzioni di attivazione sono ottimali per diversi compiti di apprendimento, ma le funzioni di attivazione comunemente utilizzate includono la funzione sigmoide, la funzione Tanh e la funzione ReLU.

Una volta che gli output dei neuroni vengono calcolati eseguendo il valore di attivazione attraverso la funzione di attivazione desiderata, la propagazione forward è completata. La propagazione forward consiste semplicemente nel prendere gli output di un livello e renderli gli input del livello successivo. I nuovi input vengono quindi utilizzati per calcolare le nuove funzioni di attivazione e l’output di questa operazione viene passato al livello successivo. Questo processo continua fino alla fine della rete neurale.

Backpropagation nella Rete

Il processo di backpropagation accetta le decisioni finali del passo di addestramento di un modello e quindi determina gli errori in queste decisioni. Gli errori vengono calcolati contrastando gli output/decisioni della rete e gli output/decisioni desiderati della rete.

Una volta che gli errori nelle decisioni della rete sono stati calcolati, queste informazioni vengono retropropagate nella rete e i parametri della rete vengono alterati lungo la strada. Il metodo utilizzato per aggiornare i pesi della rete si basa sul calcolo, in particolare si basa sulla regola della catena. Tuttavia, una comprensione del calcolo non è necessaria per comprendere l’idea alla base della backpropagation. Basta sapere che quando un valore di output viene fornito da un neurone, la pendenza del valore di output viene calcolata con una funzione di trasferimento, producendo un output derivato. Quando si esegue la backpropagation, l’errore per un neurone specifico viene calcolato secondo la seguente formula:

errore = (output_atteso – output_effettivo) * pendenza del valore di output del neurone

Quando si opera sui neuroni nel livello di output, il valore di classe viene utilizzato come valore atteso. Dopo che l’errore è stato calcolato, l’errore viene utilizzato come input per i neuroni nel livello nascosto, il che significa che l’errore per questo livello nascosto è l’errore pesato dei neuroni trovati nel livello di output. I calcoli degli errori viaggiano all’indietro nella rete lungo i pesi della rete.

Dopo che gli errori per la rete sono stati calcolati, i pesi nella rete devono essere aggiornati. Come menzionato, il calcolo dell’errore coinvolge la determinazione della pendenza del valore di output. Dopo che la pendenza è stata calcolata, un processo noto come discesa del gradiente può essere utilizzato per regolare i pesi nella rete. Un gradiente è una pendenza, la cui angolazione/pendenza può essere misurata. La pendenza viene calcolata tracciando “y su” o “salita” su “corsa”. Nel caso della rete neurale e del tasso di errore, il “y” è l’errore calcolato, mentre il “x” sono i parametri della rete. I parametri della rete hanno una relazione con i valori di errore calcolati e mentre i pesi della rete vengono regolati, l’errore aumenta o diminuisce.

La “discesa del gradiente” è il processo di aggiornamento dei pesi in modo che il tasso di errore diminuisca. La backpropagation viene utilizzata per prevedere la relazione tra i parametri della rete neurale e il tasso di errore, il che prepara la rete per la discesa del gradiente. L’addestramento di una rete con la discesa del gradiente coinvolge il calcolo dei pesi attraverso la propagazione forward, la retropropagazione dell’errore e quindi l’aggiornamento dei pesi della rete.

Blogger e programmatore con specializzazioni in Machine Learning e Deep Learning argomenti. Daniel spera di aiutare gli altri a utilizzare il potere dell'AI per il bene sociale.