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 1exp−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≡ 1exp −a " La derivata è g ' a=g a1−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