vuoi
o PayPal
tutte le volte che vuoi
BACKPROPAGATION ALGORITHM
Una volta definite le funzioni di costo sia per i task di regressione che di
classificazione, è necessario capire come minimizzare queste funzioni.
L’algoritmo di backpropagation è uno dei meccanismi più usati per allenare le reti
neurali. Esso permette di calcolare in modo efficiente il gradiente degli errori
rispetto ai pesi della rete, in modo da andare ad aggiornare il valore di tali pesi al
fine di minimizzare l’errore complessivo della rete.
Tale algoritmo si articola nelle seguenti fasi:
Forward propagation : i dati di input vengono fatti passare attraverso la rete,
calcolando l’output della rete
Calcolo dell’errore : si calcola l’errore usando la funzione di costo associata
Backpropagation dell’errore : si propaga l’errore all’indietro per ciascun strato
della rete, calcolando come ogni pesi contribuisce all’errore complessivo
Aggiornamento dei pesi: si aggiornano i pesi utilizzando un metodo di
ottimizzazione come la discesa del gradiente
NEURAL NETWORKS 6
Per comprendere meglio il funzionamento dell’algoritmo, consideriamo la
seguente rete neurale:
e inoltre per rendere i calcoli più semplici e facile da comprendere consideriamo
come funzione di costo la seguente funzione:
NEURAL NETWORKS 7
La prima cosa da fare è calcolare il gradiente per tutti i vari pesi. Quindi nel nostro
, ,
caso, è necessario il gradiente di
θ θ θ
1 2 3
NOTA: in questo algoritmo è necessario calcolare il gradiente dall’ultimo
parametro verso il primo. Quindi prima poi 2 e infine
θ θ θ
3 1
CALCOLO GRADIENTE
θ
3
Quindi iniziamo calcolando il gradiente per il parametro :
θ
3
(4)
=
guardato la tabella (quella tratteggiata il rosso) , quindi la derivata che
h(x) a
sarebbe:
NOTA: chatgpt suggerisce che solitamente l’algoritmo di backpropagation utilizza
la versione stochastic gradient descent e quindi per questo motivo nel passaggio
che sto per scrivere qua sotto la sommatorio sparisce
NOTA: dato che stiamo usando la stochastic gradient descent anche la funzione
di costo dovrebbe essere privo di sommatoria, ma non ho capito perché il prof
l’ha messa (4) (4)
= )
sempre dalla tabella tratteggiata in rosso si può osservare che ,
a g(z
quindi dobbiamo usare la regola della catena dato che stiamo calcolando la
derivata di una funzione composta. Quindi avremo:
NEURAL NETWORKS 8
(4)
Ora anche è una funzione (basta vedere la tabella rossa tratteggiata), quindi
z
anche in questo caso dobbiamo usare la regola della catena, ottenendo:
(4) (3)
Ora la derivata parziale di rispetto a , è semplicemente (questo è molto
z θ a
3
semplice basta vedere la solita tabella rossa).
Infine per quanto riguarda il gradiente del parametro , riscriviamo il prodotto
θ
3
(4) ′ (4) (3)
( − ) ( )
come . Quindi avremo una sitazione di questo tipo:
a y g z δ
NOTA: il motivo per cui non calcoliamo la derivata della funzione di attivazione g è
dovuta la fatto che non è stata fissata una funzione specifica. Pertanto potrebbe
variare la funzione e quindi la derivata
NEURAL NETWORKS 9
Questo è il procedimento visto tutto insieme
CALCOLO GRADIENTE
θ
2
Calcoliamo adesso il gradiente per il parametro
θ
2
Sostanzialmente bisogna fare la stessa cosa vista per il parametro , ossia
θ
3
calcolare il gradiente della funzione di costo, quindi la derivata parziale, ma in
questo caso rispetto al parametro
θ
2
NEURAL NETWORKS 10
NOTA: il modo di operare è lo stesso del parametro , perciò non specifico
θ
2
nessun passaggio (4)
NOTA: il primo passaggio parte con perché se iniziamo a calcolare la derivata
δ (4) ′ (4)
(a − (z )
ci ritroviamo sempre con il termine
y)g
CALCOLO GRADIENTE
θ
1
stesso discorso
NEURAL NETWORKS 11