Abbiamo detto che il processo di apprendimento consiste nel:
Modificare i pesi e i bias della rete in modo da minimizzare una fissata funzione di errore E(w) sul training set
con il vincolo che anche sul validation set ci sia un errore “piccolo.
Nelle prossime slide mostreremo quale è il processo che ci permette di minimizzare la funzione di errore.
Molti algoritmi di apprendimento hanno una procedura iterativa per minimizzare la funzione di errore, con la determinazione dei valori dei pesi fatta in passi successivi.
Ad ogni passo si possono distinguere due differenti fasi:
La più semplice di tale tecniche è detta discesa del gradiente (Rumelhart, 1986).
E’ fondamentale sottolineare che le due fasi sono distinte. Si procede, cioè, ad ogni passo del processo iterativo:
Calcolo delle derivate della funzione di errore ∂E /∂wji: Back Propagation (1)
Vediamo, ora, come calcolare ∂E /∂wji utilizzando gli stessi valori di output dei nodi della rete.
Ricordo, innanzitutto, che in una rete feed-forward ciascun nodo j computa una somma pesata dei suoi input
aj= ∑iwji* zi
dove zi è l’output di un nodo il quale invia una connessione al nodo j.
Con valore di output del nodo j dato da:
zj=g(aj)
dove con g indichiamo la funzione di output.
Calcolo delle derivate della funzione di errore ∂E /∂wji: Back Propagation (2)
Per calcolare ∂E/∂wji , dato che E=∑nEn, possiamo focalizzare la nostra attenzione sul calcolo di
∂En/∂wji.
Una prima ipotesi necessaria per calcolare le derivate parziali della funzione di errore rispetto a i pesi è la seguente:
Supponiamo che En possa essere espresso come funzione differenziabile delle variabili d’output.
Calcolo delle derivate della funzione di errore ∂E /∂wji: Back Propagation (3)
Dato una coppia (xn, tn) del training set, supponiamo di dare in input alla rete xn e di calcolre le attivazioni di tutti i nodi interni e dei nodi d’output, per successive applicazioni di
aj= ∑iwji* zi e zj=g(aj) (come visto, in questo caso, si ha una forward-propagation).
Per calcolare (∂En/∂wji) osserviamo che En dipende da wji attraverso aj. Si può dimostrare allora che:
(∂En /∂wji)=δj zi dove δj=(∂ En /∂aj)
Calcolo delle derivate della funzione di errore ∂E /∂wji: Back Propagation (4)
L’equazione (∂En /∂wji)=δj zi ci dice che:
la derivata richiesta è ottenuto semplicemente moltiplicando il valore di output del nodo allo “start” della connessione associata al peso wji per un certo valore δj associato al nodo alla fine della connessione con peso wji
Osserviamo che, quindi, la derivata della funzione di errore rispetto al peso della connessione che va dal nodo i al nodo j è calcolato tramite una formula locale.
Calcolo dei delta
Come calcolare i δj?
Per le unità di output si ha:
Per le restanti unità:
Nota bene.
Si ha, quindi, una formula ricorsiva tramite la quale a partire dalle nodi “più esterni” (i nodi di output) possiamo “risalire”, in maniera inversa alla forward-propagation delle attivazioni dei nodi, al valore δj di tutti i nodi, da qui il nome di back-propagation.
Calcolo delle derivate della funzione di errore ∂E /∂wji: Riassumendo
Possiamo riassumere la back-propagation per valutare le derivate della funzione di errore En , rispetto ai pesi, in quattro fasi:
Batch e on-line learning
Le derivate rispetto all’intera funzione di errore allora sono date da
(∂E/∂wji) = ∑n (∂En/∂wji)
Su tale sommatoria, però, sono da fare alcune osservazioni legate al “tempo” in cui aggiorniamo i pesi. L’aggiornamento dei pesi può procedere in due modi:
On-line learning
I pesi vengono aggiornati dopo che ciascun pattern xn è presentato alla rete e sono calcolate le derivate di En, cioè Δwji = -ηδj zi.
In questo caso la rete “cambia” ad ogni presentazione di un pattern e l’errore totale
E=∑n En
deve essere calcolato al termine di un “ciclo” di addestramento, cioè dopo che sono stati modificati i pesi e i bias per tutti gli elementi del training set.
Batch learning
I pesi vengono aggiornati dopo che sono state calcolate le derivate della funzione di errore totale E (cioè della funzione di errore relativo a tutto il training set), si ha allora un aggiustamento di pesi dato da
Δwji = -η∑nδjn zin
Quindi il valore di (∂E/∂wji)=∑n (∂En/∂wji) cambia a seconda se operiamo un on-line learning o un batch learning.
Quale è il vantaggio di utilizzare la back-propagation per calcolare le derivate della funzione di errore?
Calcolo tempi computazionali nel caso delle derivate alle differenze finite.
In questo caso dobbiamo calcolare E(wji +Δwji) – E(wji) per tutti W pesi della rete.
Quindi per ciascun variazione di peso, wji +Δwji, dobbiamo calcolare una nuova risposta della rete.
Dato che per il calcolo della propagazione in avanti di una rete con W pesi, abbiamo un tempo di calcolo pari a O(W)
Per fare tale calcolo per tutte le variazioni dei pesi, otteniamo
O(W2)
Calcolo tempi computazionali nel caso della back-propagation.
In questo caso dobbiamo calcolare una unica propagazione in avanti, e quindi tempi di calcolo pari a: O(W)
Quindi applicare la formula δj = g’(aj)∑kwkj* δk . Quindi ancora temi di calcolo paria a: O(W)
Infine applicare la formula (∂En/∂wji)=δjzi . Quindi ancora tempi di calcolo pari a: O(W)
Allora, nel complesso abbimo tempi di calcolo pari a: O(W)
La back-propagation risulta, allora, una tecnica per il calcolo della derivata della funzione di errore rispetto ai pesi che permette un drastico guadagno da un punto di vista della complessità computazionale.
Nella prossima lezione daremo la dimostrazione di:
la formula (∂En /∂wji)=δj zi
Quelle per il calcolo dei δj.
1. Informazioni generali sul corso
3. Un modello computazionale del neurone biologico
4. Possibili problemi risolvibili con Reti Neurali
5. Problemi di Classificazione ed approccio probabilistico
7. Capacità rappresentativa delle reti neurali - parte prima
8. Capacità rappresentativa delle reti neurali - Parte seconda
9. Apprendimento e generalizzazione
10. Discesa del gradiente e backpropagation
11. Back-Propagation
13. Interpretazione output di una rete neural feed-forward
14. Complessità della rete, generalizzazione e termini di regolari...
15. Cross-entropy e variazioni sulla discesa del gradiente
16. Verso le reti neurali RBF: interpolazione esatta.
17. Reti neurali RBF
18. Addestramento di una rete RBF
19. Parametri delle funzioni a base radiale
20. Un primo modello di reti neurali ricorrenti: formalismo di Caia...