Nella presente Lezione dimostreremo la formula (∂En /∂wji)=δj zi e quelle per il calcolo dei δj.
Nell’ambito dell’algoritmo di discesa del gradiente abbiamo visto come è fondamentale calcolare le derivate della funzione di errore rispetto ai pesi.
Per fare ciò abbiamo introdotto le seguenti formule:
(∂En /∂wji)=δj zi dove δj=(∂ En /∂aj)
L’equazione ci dice che la deriva richiesta è ottenuto semplicemente moltiplicando il valore di output del nodo allo start della connessione associata al peso wji per il valore di δ del nodo alla fine della connessione associata al peso wji (cioè abbiamo una formula locale).
Più precisamente per il calcolo dei delta, abbiamo:
δk=(∂ En /∂ak)= g’(ak) (∂ En /∂yk)
δj=(∂ En /∂aj)=g’(aj) ∑kwkj* ∂k
Dimostriamo le equazioni precedenti.
La funzione di errore En dipende da un peso wji solo attraverso l’input al nodo j, cioè aj.
Allora possiamo scrivere:
(∂En /∂wji)=(∂ En /∂aj) (∂ aj /∂wji)
Dimostriamo le equazioni precedenti.
Dato che aj =∑hwjhzh risulta ∂ aj /∂wji)= zi
Quindi (∂En /∂wji)=(∂ En /∂aj) zi
Ponendo allora δj=(∂ En /∂aj), si ottiene:
(∂En /∂wji)=δj zi
Dimostriamo le equazioni precedenti.
Restano da dimostrare le formule per i δj.
Per un generico nodo della rete, En dipende da aj tramite gli ak dei nodi che ricevono connessioni dal nodo j, cioè
En /∂aj=∑k(∂ En /∂ak ) (∂ak /∂aj )
dato che
ak =∑hwkhzh=∑hwkhgh(ah)
si ha
∂ak /∂aj = wkjg’j(aj)
Dimostriamo le equazioni precedenti.
Quindi
∂En /∂aj=∑k(∂ En /∂ak ) wkjg’j(aj)
∂En /∂aj = g’j(aj)∑k wkj (∂ En /∂ak )
e dato che per definizione δj =(∂ En /∂aj ), si ottiene
δj= g’j(aj)∑k wkjδk
dove l’indice k corre su i nodi che ricevono connessione dal nodo j.
Osservo che questa formula vale solo per i nodi interni di una rete neurale feed-forward
Dimostriamo le equazioni precedenti.
Per quanto riguarda i nodi di output, se consideriamo un generico nodo di output k dato che En=E(y1,y2, …,ym) e yk= gk(ak) si ha
δk=(∂ En /∂ak)= (∂ En /∂yk) g’k(ak)
Osservo che questa formula vale solo per i nodi di output di una rete neurale feed-forward.
Ancora una volta, allora, riassumiamo che la back-propagation si può suddividere in quattro fasi:
Supponiamo di avere:
Una rete neurale a due strati di pesi con funzione di output g2 dei neuroni di output lineare e funzione di output g1 dei neuroni interni non lineare
g1 (x)=1/(1+exp(-x))
Funzione di errore somma dei quadrati:
E=(∑n[y(xn;w) - tn]2)/2= ∑nEn
Facciamo un esempio di applicazione della backpropagation
Per ciascuna coppia (xn,tn) inviamo in input xn alla rete e calcoliamo tramite propagazione feed-forward il vettore di uscita yn.
Come prima cosa, allora, dobbiamo calcolare i δk dei nodi di output, cioè
δk= g2‘(ak) (∂En /∂yk)
dato che, nel nostro caso, è
Si ottiene
δk=(yk – tk)
Facciamo un esempio di applicazione della backpropagation
Mentre per i nodi interni si ha:
δj=(∂ En /∂aj)= g1‘(aj)∑kwkj* δk
Dato che g1‘(x)=( 1/(1+exp(-x)) )’=( exp(-x))/ (1+exp(-x))2=
= ( 1+exp(-x))/ (1+exp(-x))2-1/(1+exp(-x))2=
= 1/(1+exp(-x)) -1/(1+exp(-x))2= g1(x) – (g1(x))2= g1(x)(1- g1 (x))
si ottiene
δj= g1(aj)(1- g1 (aj))∑kwkj* δk
ricordando che, per definizione, zj=g1(aj) si ha:
δj= zj(1- zj)∑kwkj* δk
Facciamo un esempio di applicazione della backpropagation
Allora le derivate della funzione di errore rispetto al secondo (e in questo caso ultimo) e al primo layer di pesi sono date, rispettivamente, da:
(∂ En /∂w”kj)=δk zj=(yk – tk) zj
(∂ En /∂w’ji)=δj xi, con δj= zj(1- zj)∑kwkj* δk
Facciamo un esempio di applicazione della backpropagation
E i pesi sono aggiornati in una dei seguenti due modi:
(on-line learning) w”kj= w”kj-η(yk – tk)zj e w’ji= w’ji-ηδj xi
(batch learning) w”kj= w”kj-η∑n(ynk – tnk)znj e w’ji= w’ji-η∑nδnj xni
Dove abbiamo indicato con w” i pesi del secondo strato e w’ i pesi del primo strato
Mostriamo ora un algoritmo di on-line learning (valido per una singola coppia del training set)
Mostriamo ora un algoritmo di on-line learning (valido per una singola coppia del training set)
Mostriamo ora un algoritmo di on-line learning (valido per una singola coppia del training set)
Ovviamente l’algoritmo precedentemente visto, deve essere richiamato su tutte le coppie del training set.
Se, ad esempio, lo chiamiamo learningOnLine, allora il processo di apprendimento completo sarà dato da: vedi immagine a lato.
Due osservazioni sono importanti:
La prima riguarda il fatto che per ora non abbiamo ancora parlato di validation set, ma l’algoritmo precedentemente visto dovrà essere modificato per sfruttare anche il validation set.
Nell’algoritmo mostrato c’e’ un ciclo esterno pari a MAX.
Ma come si determina questo valore? Vedremo che tale valore può essere legato proprio al validation set.
Ma di tutto questo, ne parleremo nella prossima lezione !
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...