Regola delta

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:S

La regola delta (delta rule) è una regola di discesa del gradiente per aggiornare i pesi dei segnali di input che giungono ad un percettrone.[1] Si tratta di un caso particolare del più generale algoritmo di retropropagazione.

Enunciato

Per un neurone j con una funzione d'attivazione g(x), la regola delta per l'i-esimo peso wji è data da

Δwji=α(tjyj)g(hj)xi,

dove

α è una costante piccola chiamata tasso di apprendimento (learning rate)
g(x) è la funzione d'attivazione del neurone e g la sua derivata
tj è l'output desiderato
hj è la somma pesata degli input al neurone
yj è l'output vero
xi è l'i-esimo input.

Valgono: hj=xiwji e yj=g(hj).

La regola delta è spesso semplificata se la funzione d'attivazione è lineare come

Δwji=α(tjyj)xi

mentre la regola delta è simile alla regola di aggiornamento del percettrone, come si ricava la regola è diverso. Il percettrone usa la funzione gradino di Heaviside come funzione d'attivazione g(h), il che significa che g(h) non esiste in zero, e che è uguale a zero altrove, e ciò rende l'applicazione diretta della regola impossibile.

Derivazione della regola delta

La regola delta si ricava a partire dalla minimizzazione dell'errore sull'output della rete neurale tramite la discesa del gradiente. L'errore per una rete neurale con j output può essere misurato come

E=j12(tjyj)2.

In questo caso, occorre muoversi nello "spazio dei pesi" del neurone (lo spazio di tutti i valori che possono assumere i pesi) in proporzione al gradiente della funzione d'errore rispetto a ogni peso. Per fare ciò, si calcola la derivata parziale dell'errore rispetto a ogni peso. Per l'i-esimo peso, la derivata è

Ewji=(12(tjyj)2)wji.

dove è stata omessa la sommatoria siccome la derivata è relativa al j-esimo neurone.

Il calcolo procede con l'applicazione della regola della catena:

=(12(tjyj)2)yjyjwji=(tjyj)yjwji

mentre la derivata rimanente si calcola ancora con la regola della catena, ma derivando rispetto all'intero input di j, ovvero hj:

=(tjyj)yjhjhjwji

Si noti che l'output del j-esimo neurone, yj, è semplicemente la funzione d'attivazione g del neurone applicata al suo input hj. Si può quindi scrivere la derivata di yj rispetto a hj semplicemente come la derivata prima di g:

=(tjyj)g(hj)hjwji

A questo punto, si riscrive hj nell'ultimo termine come la somma su tutti i k pesi di ogni peso wjk moltiplicati per il loro input corrispondente xk:

=(tjyj)g(hj)(ixiwji)wji

Poiché interessa solamente l'i-esimo peso, l'unico termine della sommatoria che è rilevante è xiwji. Chiaramente,

xiwjiwji=xi,

portando all'equazione finale per il gradiente:

Ewji=(tjyj)g(hj)xi

Come evidenziato sopra, la discesa del gradiente dice che la variazione di ciascun peso deve essere proporzionale al gradiente La scelta di una costante di proporzionalità α e l'eliminazione del segno meno (siccome si cerca la direzione che diminuisce il gradiente), permettono di arrivare all'equazione cercata:

Δwji=α(tjyj)g(hj)xi.

Note

Bibliografia

  • Tom Mitchell, Machine Learning, McGraw Hill, 1997.
  • Ben Krose, Patrick van der Smagt, An Introduction to Neural Networks, The University of Amsterdam

Voci correlate

Template:Portale