Il Multi-layer Perceptron
Roberto Tagliaferri
Dipartimento di Matematica ed Informatica
Università di Salerno
84081 Baronissi (Sa)
e-mail [email protected]
Corso di dottorato: Apprendimento automatico e
Pattern Recognition statistico
Il percettrone multi-strato
"
Reti feed-forward
"
Reti con unità a soglia
"
Reti con unità sigmoidali
"
Il teorema di Kolmogorov
"
Error back-propagation
"
La matrice Jacobiana
"
La matrice Hessiana
Il percettrone multi-strato
"
Reti neurali feed-forward: flusso unidirezionale dei
dati
"
Una rete neurale feed-forward con 2 strati è illustrata
in figura
Il percettrone multi-strato
"
L'attivazione dell'unità hidden j = 1, ..., M è
d
1
a j =∑ w 1
x
w
ji
i
j0
i=1
1
dove w 1
rappresentano i pesi dall'unità i
e
w
ji
j0
( i = 1, ..., d) dell'input all'unità j hidden ed il bias
"
Il corrispondente output dell'unità hidden è zj = g(aj),
dove g() è una funzione non-lineare (per esempio:
sigmoide logistica o la tanh)
L'attivazione di ciascuna unità di output k è
M
2
a k =∑ w 2
z
w
kj
j
k0
j=1
2
k0
dove w 2
rappresentano i pesi dall'unità hidden
kj e w
j ( j = 1, ..., M) all'unità k dell'output ed il bias
rispettivamente
"
L'output corrispondente è y= g  a k  dove g  è la
funzione di attivazione delle unità output
Il percettrone multi-strato
"
La differenza principale con il percettrone è che tutti i
parametri sono adattivi
"
Una rete con L livelli adattivi si chiama rete a L
livelli (per esempio, nel caso visto, abbiamo una rete a
2 livelli)
"
Se le funzioni di attivazione degli output sono lineari,
cioè g  a =a , questa forma funzionale diventa un caso
specifico di discriminante lineare generalizzato con
particolari funzioni zj
Il percettrone multi-strato
"
Un modo di rappresentare una rete è con il
diagramma di Hinton, in figura
Il percettrone multi-strato
Funzioni di attivazione a soglia
1. Input binari
"
In questo caso, abbiamo d input binari ed un output
binario
"
Si può dimostrare, usando il teorema fondamentale
dell'algebra di Boole, che una rete con un livello
hidden può computare una qualunque funzione
booleana
"
La dimostrazione segue dal fatto che qualunque
funzione booleana può essere messa in forma SOP
(somma di prodotti): ciascun neurone del primo strato
computa un and e quello del secondo un or, tutte
funzioni linearmente separabili
"
Nel caso peggiore abbiamo 2d neuroni hidden
Il percettrone multi-strato
Funzioni di attivazione a soglia
2. Input reali
"
In figura abbiamo un esempio di confini di decisione
generati da queste reti
Il percettrone multi-strato
Funzioni di attivazione a soglia
2. Input reali (continua)
"
In figura abbiamo un esempio di confine di decisione
che non può essere prodotto da una rete a 2 livelli
Il percettrone multi-strato
Funzioni di attivazione sigmoidali
"
Una prima funzione di attivazione sigmoidale è la
funzione sigmoide logistica con output in (0, 1)
g a≡
"
1
1exp−a
Una seconda funzione che ha qualche piccolo
vantaggio pratico è la tanh
e a −e−a
g a≡tanh a≡ a −a
e e
"
Quest'ultima differisce dalla funzione logistica solo
attraverso una trasformazione lineare dell'input e
dell'output
g  a =tanh  a  con a =a / 2
"
e g =2 g−1
Useremo funzioni non-lineari di attivazione per gli
output solo in problemi di classificazione
Il percettrone multi-strato
Approssimazione universale con funzioni di
attivazione sigmoidali
1. Reti a 3 livelli
"
In figura consideriamo per il caso di input 2-d come
una rete neurale a 3 livelli può approssimare con
arbitraria accuratezza una funzione multivariata
smooth
Il percettrone multi-strato
Approssimazione universale con funzioni di
attivazione sigmoidali
1. Reti a 3 livelli
Error back-propagation
"
Un metodo generale efficiente per calcolare le
derivate per reti multi-strato, basate sulla propagazione
dell'errore indietro nella rete
"
Back-propagation è molto efficiente poiché richiede
O(W) operazioni per una singola valutazione della
funzione di errore, con W il numero totale di pesi e bias
"
Le funzioni di errore possono essere scritte come
E = n E n e le E n sono funzioni differenziabili delle
variabili output della rete E n = E n ( y1, ..., yc)
"
Si valutano le derivate di E n rispetto ai pesi wji
∂ En ∂ En ∂ a j
=
∂ w ji ∂ a j ∂ w ji
"
"
Se abbiamo
e introduciamo
a j =∑ w ji z i
i
n
∂E
 j≡
∂aj
con
z j =g  a j 
Error back-propagation
"
Le derivate esplicite diventano (come nelle reti a
singolo livello)
"
∂aj
=z i
∂ w ji
n
e
Per le unità di output abbiamo
∂ En
∂ En
k ≡
=g '  a k 
∂ ak
∂ yk
"
mentre per le unità hidden
∂ En
∂ En ∂ ak
 j≡
=∑
∂aj
k ∂ ak ∂ a j
"
e quindi
 j =g '  a j  ∑ w kj  k
k
∂E
= j z i
∂ w ji
Error back-propagation
"
Tutte le operazioni sono "locali", come si vede in
figura
Error back-propagation
Un esempio semplice e concreto
"
Una funzione di attivazione logistica con output in
(0, 1) per i neuroni hidden
1
g a≡
1exp −a
"
La derivata è
g ' a=g a1−g a
"
Analogamente si può usare la tanh
"
Una funzione di attivazione lineare per i neuroni
output
"
La più semplice funzione di errore, utile soprattutto
per problemi di regressione, è la somma-di-quadrati
c
E n=
2
1
y
−t

∑
k
k
2 k =1
Error back-propagation
Un esempio semplice e concreto
"
Per le unità di output abbiamo
∂ En
∂ En
k ≡
= g ' ak 
= y k −t k
∂aj
∂ yk
"
mentre per le unità hidden
∂ En
∂ En ∂ ak
 j≡
=∑
=g '  a j  ∑ w kj  k
∂ a j k ∂ ak ∂ a j
k
=z j  1−z j  ∑ w kj  k
k
"
e quindi
∂ En
= k z j
2
∂ w kj
e
∂ En
= j x i
1
∂ w ji
Error back-propagation
Algoritmo di apprendimento per un esempio semplice
e concreto
"
Inizializza pesi e bias con piccoli valori casuali
"
Presenta in input il pattern xn = (x1n, ..., xdn) ed il
relativo target t n = ( t1n, ..., tcn)
"
Calcola
z nj =g
e

1 n
w
∑ ji x i
i

n
y nk =∑ w 2
z
kj
j
j
"
Adatta i pesi:
n n
 w 1
=−
ji
j xi
a. on-line
b. batch
n n
 w 1
=−

∑ j xi
ji
n
"
"
dove
n
k
n
k
 = y −t
n
k
n n
 w 2
=−

kj
kzj
n n
 w 2
=−

∑ kzj
kj
n
nj =z nj  1−z nj  ∑ w kj nk
Ripeti fino a rendere minimo l'errore
k
Error back-propagation
Valutazione numerica delle derivate
"
Un approccio alternativo alla valutazione delle
derivate è quello dei metodi numerici, cioè il metodo di
Eulero o il metodo delle differenze centrali:
n
n
E
w
−E
w ji −
∂E
ji
=
O  2 
∂ w ji
2
n
"
Questo metodo richiede O(W 2) operazioni per
valutazione delle derivate rispetto ad un singolo
pattern, con W il numero totale di pesi e bias
"
Le differenze centrali sono usate per verificare la
consistenza di una funzione e del suo gradiente
Il Jacobiano
"
Lo Jacobiano è la derivata degli output della rete
rispetto agli input della rete
∂ yk
J ki ≡
∂ xi
"
È usato nell'analisi di sensitività e per computare le
barre di errore bayesiano ("Bayesian error bars")
"
Può essere calcolato usando una procedura molto
simile all'error back propagation
"
Si propagano gli input in avanti e si computano le
attivazioni
"
Per la riga Jk si retro-propaga l'informazione a tutte le
unità hidden e alle unità input
La matrice Hessiana
"
L'Hessiana è la matrice (W x W) delle derivate
seconde dell'errore rispetto ai pesi
2
∂ E
∂ w ji ∂ w lk
"
Questo metodo è molto costoso perché richiede
richiede il computo dei W 2 pesi e bias
"
È utile per
•
algoritmi di ottimizzazione
•
procedure veloci di re-training di reti dopo piccole
variazioni dei dati
•
l'inversa è usata nel pruning di reti
•
l'inversa è usata per computare le barre di errore
bayesiano
•
gli autovalori sono usati per calcolare i coefficienti di
regolarizzazione
•
il determinante è usato per comparare modelli