Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Roberto Prevete » 11.Back-Propagation


Introduzione

Nella presente Lezione dimostreremo la formula (∂En /∂wji)=δj zi e quelle per il calcolo dei δj.

Backpropagation: dimostrazione

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).

Backpropagation: dimostrazione (segue)

Più precisamente per il calcolo dei delta, abbiamo:

  • Per le unità di output si ha:

δk=(∂ En /∂ak)= g’(ak) (∂ En /∂yk)

  • Per le restanti unità

δj=(∂ En /∂aj)=g’(aj) ∑kwkj* ∂k

Backpropagation: dimostrazione (segue)

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)

Backpropagation: dimostrazione (segue)

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

Backpropagation: dimostrazione (segue)

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)

Backpropagation: dimostrazione (segue)

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

Backpropagation: dimostrazione (segue)

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.

Backpropagation: Riassumendo

Ancora una volta, allora, riassumiamo che la back-propagation si può suddividere in quattro fasi:

  • Applicare un vettore di input xn alla rete provocando una propagazione in avanti (forward propagation)
  • Valutare δk= (∂ En /∂yk) g’k(ak) per i nodi di output
  • Valutare tutti gli altri delta utilizzando δj= g’j(aj)∑k wkjδk, cioè propagando all’indietro il valore dei δ.
  • Valutare le derivate richieste, cioè (∂En/∂wji)=δjzi

Backpropagation: Un esempio

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

Backpropagation: Un esempio (segue)

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, è

  • g2(x)=x lineare e quindi g2‘(ak)=1
  • En =1/2∑k (ynk – tnk)2 o più semplicemente En =1/2∑k (yk – tk)2, e quindi
  • ∂En /∂yk=(yk – tk)

Si ottiene

δk=(yk – tk)

Backpropagation: Un esempio (segue)

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

Backpropagation: Un esempio (segue)

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

Backpropagation: Un esempio (segue)

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

On-line learning: Un algoritmo

Mostriamo ora un algoritmo di on-line learning (valido per una singola coppia del training set)

Propagazione in avanti.

Propagazione in avanti.


On-line learning: Un algoritmo (segue)

Mostriamo ora un algoritmo di on-line learning (valido per una singola coppia del training set)

Calcolo dei delta.

Calcolo dei delta.


On-line learning: Un algoritmo (segue)

Mostriamo ora un algoritmo di on-line learning (valido per una singola coppia del training set)

Calcolo dei pesi.

Calcolo dei pesi.


On-line learning: Un algoritmo (segue)

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.


On-line learning: Alcune osservazioni finali

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 !

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93