Propagazione All'Indietro
La propagazione all'indietro, o backpropagation, è il processo di determinazione di come la funzione di perdita varia rispetto a ciascun parametro della rete neurale. L'obiettivo è regolare questi parametri in modo da ridurre la perdita complessiva.
Questo processo si basa sull'algoritmo di discesa del gradiente, che utilizza le derivate della perdita rispetto ai valori di pre-attivazione di ciascun livello (gli output grezzi prima dell'applicazione della funzione di attivazione) e li propaga all'indietro attraverso la rete.
Poiché ogni livello contribuisce alla previsione finale, i gradienti vengono calcolati passo dopo passo:
- Eseguire la propagazione in avanti per ottenere gli output;
- Calcolare la derivata della perdita rispetto alla pre-attivazione dell'output;
- Propagare questa derivata all'indietro attraverso i livelli utilizzando la regola della catena;
- Calcolare e utilizzare i gradienti per pesi e bias per aggiornarli durante l'addestramento.
I gradienti rappresentano il tasso di variazione di una funzione rispetto ai suoi input, ovvero sono le sue derivate. Indicano quanto una piccola variazione di pesi, bias o attivazioni influisce sulla funzione di perdita, guidando il processo di apprendimento del modello tramite la discesa del gradiente.
Notazione
Per rendere la spiegazione più chiara, utilizziamo la seguente notazione:
- Wl è la matrice dei pesi del livello l;
- bl è il vettore dei bias del livello l;
- zl è il vettore delle pre-attivazioni del livello l;
- al è il vettore delle attivazioni del livello l;
Pertanto, ponendo a0 uguale a x (gli input), la propagazione in avanti in un percettrone con n livelli può essere descritta dalla seguente sequenza di operazioni:
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.Per descrivere matematicamente la retropropagazione, si introducono le seguenti notazioni:
- dal: derivata della funzione di perdita rispetto alle attivazioni al livello l;
- dzl: derivata della funzione di perdita rispetto alle pre-attivazioni al livello l (prima di applicare la funzione di attivazione);
- dWl: derivata della funzione di perdita rispetto ai pesi al livello l;
- dbl: derivata della funzione di perdita rispetto ai bias al livello l.
Calcolo dei Gradienti per il Livello di Output
All'ultimo livello n, il primo passo consiste nel calcolare il gradiente della funzione di perdita rispetto alle attivazioni del livello di output, indicato come dan.
Successivamente, utilizzando la regola della catena, il gradiente della funzione di perdita rispetto alle pre-attivazioni del livello di output viene calcolato come:
dzn=dan⊙f′n(zn)Qui, f′n(zn) rappresenta la derivata della funzione di attivazione al livello n, e il simbolo ⊙ indica la moltiplicazione elemento per elemento.
Il simbolo ⊙ indica la moltiplicazione elemento per elemento, ovvero ogni elemento di un vettore viene moltiplicato per il corrispondente elemento di un altro vettore. Al contrario, il simbolo ⋅ rappresenta il prodotto scalare, utilizzato per la moltiplicazione standard di matrici o vettori. Il termine f′n si riferisce alla derivata della funzione di attivazione al livello di output.
Questo valore indica quanto la funzione di perdita sia sensibile alle variazioni dei valori di pre-attivazione dello strato di output.
Dopo aver calcolato dzn, il passo successivo è determinare i gradienti per i pesi e i bias:
dWndbn=dzn⋅(an−1)T,=dznQuesti gradienti descrivono di quanto ciascun peso e bias nello strato di output debba essere modificato per ridurre la perdita.
Qui, (an−1)T è il vettore di attivazione trasposto proveniente dallo strato precedente. Se il vettore originale ha dimensione nneurons×1, la sua trasposizione avrà dimensione 1×nneurons.
Per continuare la retropropagazione, si calcola la derivata della perdita rispetto alle attivazioni dello strato precedente come:
dan−1=(Wn)T⋅dznQuesta espressione consente al segnale di errore di essere trasmesso all'indietro attraverso la rete, permettendo la regolazione degli strati precedenti durante l'addestramento.
Propagazione dei gradienti agli strati nascosti
Per ogni strato nascosto l la procedura è la stessa. Dato dal:
- Calcolare la derivata della perdita rispetto alle pre-attivazioni;
- Calcolare i gradienti per i pesi e i bias;
- Calcolare dal−1 per propagare la derivata all'indietro.
Questo processo viene ripetuto per ciascun livello precedente, passo dopo passo, fino a raggiungere il livello di input.
Aggiornamento di pesi e bias
Dopo aver calcolato i gradienti per tutti i livelli, i pesi e i bias vengono aggiornati utilizzando l'algoritmo di discesa del gradiente:
Wlbl=Wl−α⋅dWl,=bl−α⋅dbl.Qui, α rappresenta il tasso di apprendimento, che controlla quanto vengono modificati i parametri durante ogni fase di addestramento.
Qui, α è il tasso di apprendimento, un iperparametro che determina l'entità della modifica applicata a pesi e bias durante ogni fase di aggiornamento.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain how the chain rule is applied in backpropagation?
What is the difference between pre-activations and activations in a neural network?
Can you provide an example of calculating gradients for a simple neural network?
Awesome!
Completion rate improved to 4
Propagazione All'Indietro
Scorri per mostrare il menu
La propagazione all'indietro, o backpropagation, è il processo di determinazione di come la funzione di perdita varia rispetto a ciascun parametro della rete neurale. L'obiettivo è regolare questi parametri in modo da ridurre la perdita complessiva.
Questo processo si basa sull'algoritmo di discesa del gradiente, che utilizza le derivate della perdita rispetto ai valori di pre-attivazione di ciascun livello (gli output grezzi prima dell'applicazione della funzione di attivazione) e li propaga all'indietro attraverso la rete.
Poiché ogni livello contribuisce alla previsione finale, i gradienti vengono calcolati passo dopo passo:
- Eseguire la propagazione in avanti per ottenere gli output;
- Calcolare la derivata della perdita rispetto alla pre-attivazione dell'output;
- Propagare questa derivata all'indietro attraverso i livelli utilizzando la regola della catena;
- Calcolare e utilizzare i gradienti per pesi e bias per aggiornarli durante l'addestramento.
I gradienti rappresentano il tasso di variazione di una funzione rispetto ai suoi input, ovvero sono le sue derivate. Indicano quanto una piccola variazione di pesi, bias o attivazioni influisce sulla funzione di perdita, guidando il processo di apprendimento del modello tramite la discesa del gradiente.
Notazione
Per rendere la spiegazione più chiara, utilizziamo la seguente notazione:
- Wl è la matrice dei pesi del livello l;
- bl è il vettore dei bias del livello l;
- zl è il vettore delle pre-attivazioni del livello l;
- al è il vettore delle attivazioni del livello l;
Pertanto, ponendo a0 uguale a x (gli input), la propagazione in avanti in un percettrone con n livelli può essere descritta dalla seguente sequenza di operazioni:
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.Per descrivere matematicamente la retropropagazione, si introducono le seguenti notazioni:
- dal: derivata della funzione di perdita rispetto alle attivazioni al livello l;
- dzl: derivata della funzione di perdita rispetto alle pre-attivazioni al livello l (prima di applicare la funzione di attivazione);
- dWl: derivata della funzione di perdita rispetto ai pesi al livello l;
- dbl: derivata della funzione di perdita rispetto ai bias al livello l.
Calcolo dei Gradienti per il Livello di Output
All'ultimo livello n, il primo passo consiste nel calcolare il gradiente della funzione di perdita rispetto alle attivazioni del livello di output, indicato come dan.
Successivamente, utilizzando la regola della catena, il gradiente della funzione di perdita rispetto alle pre-attivazioni del livello di output viene calcolato come:
dzn=dan⊙f′n(zn)Qui, f′n(zn) rappresenta la derivata della funzione di attivazione al livello n, e il simbolo ⊙ indica la moltiplicazione elemento per elemento.
Il simbolo ⊙ indica la moltiplicazione elemento per elemento, ovvero ogni elemento di un vettore viene moltiplicato per il corrispondente elemento di un altro vettore. Al contrario, il simbolo ⋅ rappresenta il prodotto scalare, utilizzato per la moltiplicazione standard di matrici o vettori. Il termine f′n si riferisce alla derivata della funzione di attivazione al livello di output.
Questo valore indica quanto la funzione di perdita sia sensibile alle variazioni dei valori di pre-attivazione dello strato di output.
Dopo aver calcolato dzn, il passo successivo è determinare i gradienti per i pesi e i bias:
dWndbn=dzn⋅(an−1)T,=dznQuesti gradienti descrivono di quanto ciascun peso e bias nello strato di output debba essere modificato per ridurre la perdita.
Qui, (an−1)T è il vettore di attivazione trasposto proveniente dallo strato precedente. Se il vettore originale ha dimensione nneurons×1, la sua trasposizione avrà dimensione 1×nneurons.
Per continuare la retropropagazione, si calcola la derivata della perdita rispetto alle attivazioni dello strato precedente come:
dan−1=(Wn)T⋅dznQuesta espressione consente al segnale di errore di essere trasmesso all'indietro attraverso la rete, permettendo la regolazione degli strati precedenti durante l'addestramento.
Propagazione dei gradienti agli strati nascosti
Per ogni strato nascosto l la procedura è la stessa. Dato dal:
- Calcolare la derivata della perdita rispetto alle pre-attivazioni;
- Calcolare i gradienti per i pesi e i bias;
- Calcolare dal−1 per propagare la derivata all'indietro.
Questo processo viene ripetuto per ciascun livello precedente, passo dopo passo, fino a raggiungere il livello di input.
Aggiornamento di pesi e bias
Dopo aver calcolato i gradienti per tutti i livelli, i pesi e i bias vengono aggiornati utilizzando l'algoritmo di discesa del gradiente:
Wlbl=Wl−α⋅dWl,=bl−α⋅dbl.Qui, α rappresenta il tasso di apprendimento, che controlla quanto vengono modificati i parametri durante ogni fase di addestramento.
Qui, α è il tasso di apprendimento, un iperparametro che determina l'entità della modifica applicata a pesi e bias durante ogni fase di aggiornamento.
Grazie per i tuoi commenti!