Lezione 5 Reti Neurali Mercoledì, 10 Novembre 2004 Giuseppe Manco References: Chapter 4, Mitchell Chapter 1-2,4, Haykin Chapter 1-4, Bishop Reti Neurali Outline • Perceptron Learning – Unità neurale – Gradiente Discendente • Reti Multi-Layer – Funzioni nonlineari – Reti di funzioni nonlineari • Backpropagation dell’errore – L’algoritmo backpropagation – problematiche • Ottimi locali • Overfitting Reti Neurali Modelli Connezionisti • Il cervello umano – Tempo di switch di un neurone: ~ 0.001 (10-3) secondi – Numero di neuroni: ~10-100 miliardi (1010 – 1011) – connessioni per neurone: ~10-100.000 (104 – 105) – Tempo di classificazione: ~0.1 secondi • Reti Neurali artificiali – “… a system composed of many simple processing elements operating in parallel whose function is determined by network structure, connection strengths, and the processing performed at computing elements or nodes.” - DARPA (1988) • Proprietà – Molti neuroni – Molte interconnessioni pesate – Computazione distribuita – I pesi si costituiscono automaticamente Reti Neurali Reti Neurali • Input: dati numerici di alta dimensionalità – Esempio: input da sensori – Rumore • Output: nominale/Numerico/vettoriale – Funzione di forma ignota • Risultato: leggibilità meno importante delle performances – Performance misurata in termini di accuratezza – Leggibilità: capacità di spiegare l’inferenza • Esempi – Classificazione di immagini – Predizione finanziaria Reti Neurali Rete neurale – http://www.cs.cmu.edu/afs/cs/project/alv/member/www/projects/ALVINN.html Reti Neurali Riconoscimento di caratteri (Progetto scorso anno) •Dimensionalità Reti Neurali Le regioni di decisione x2 + + - + x1 - • Dato x, vogliamo trovare h(x) consistente con c(x) – h(x) può essere approssimata con una funzione lineare y – y = 1: h(x) = + – y = 0: h(x) = - y f ( x ; w) – Qual è una possibile istanziazione di y? – generalizzazione? Reti Neurali Il Perceptron x1 w1 x2 w2 xn wn x0 = 1 w0 n 1 se w i x i 0 n ox1 , x 2 , x n i 0 wi xi - 1 altrimenti i 0 1 se w x 0 ox sgn x, w - 1 altrimenti • Perceptron: modello neuronale singolo – Input definito come una combinazione lineare net n w x i i 0 i – Output: funzione di attivazione basata su una soglia sull’input (threshold = w0) Reti Neurali Le regioni di decisione x2 + x2 + - + + - x1 - x1 - + - Esempio A • Esempio B Il perceptron può rappresentare alcune funzioni – Emulazione di porte logiche – ESERCIZIO: Quali pesi rappresentano g(x1, x2) = AND(x1, x2)? NOT(x)? • Alcune funzioni non sono rappresentabili – Non linearmente separabili Reti Neurali OR(x1, x2)? Perceptron Learning • Regola di learning del Perceptron (Rosenblatt, 1959) – Idea: un target può aggiornare I pesi in modo tale da produrre l’output desiderato w i w i Δw i Δw i (t o)xi – dove t = c(x) è il valore di output atteso, o è il valore di output calcolato – è il tasso di learning Reti Neurali Algoritmo Perceptron learning • Algorithm Train-Perceptron (D {<x, t(x) c(x)>}) – inizializza tutti I pesi wi a valori random – WHILE non tutti i valori sono predetti correttamente DO FOR EACH istanza x D Calcola l’output o(x) FOR i = 1 to n wi wi + (t - o)xi Reti Neurali Convergenza dell’algoritmo • Teorema di convergenza – Se esiste un insieme di pesi consistente con i dati (cioè: I dati sono linearmente separabili), l’algoritmo converge – Complessità computazionale – Regioni non linearmente separabili – Se le regioni non sono linearmente separabili, l’algorimo entra in un loop infinito – Cicla sugli stessi pesi Reti Neurali Gradiente Discendente: Idea • Unità lineari – Consideriamo l’unità più semplice: ox net x n w x i i i 0 – Obiettivo: trovare il “migliore adattamento” a D • Algoritmo di approssimazione – Minimizzare l’errore sul training set D – Funzione dell’errore: Somma dei quadrati (SSE) 1 t x ox 2 E w errorD w 2 xD • Come si minimizza? – Ottimizzazione semplice – Ci muoviamo in direzione del più ripido gradiente nello spazio pesi-errore Reti Neurali Idea di fondo • Vogliamo trovare una sequenza di pesi w(1), w(2), …, w(t) tali che Ew(t 1) E w(t) • Metodo: w(t 1) w(t) - E • Giustificazione: – Sviluppo in serie di Taylor al primo ordine E w E w(t) T E w(t) w - w(t) – Sostituendo, T E w(t 1) E w(t) E w(t) w(t 1) - w(t) 2 E w(t) T E w(t) – Quando è positivo, il secondo addendo è sempre negativo Reti Neurali Gradiente discendente: delta rule • Il gradiente E E E E w , ,, w n w 0 w1 • Regola di learning Δw E w E Δw i w i E w i w i 1 2 1 2 t x ox 2 2 xD w i 1 2 t x o x x D 2 t x o x t x o x t x o x t x w x w w x D i i xD E t x o x x i w i xD Reti Neurali Algoritmo del Gradiente Discendente • Algorithm Gradient-Descent (D, r) – Ogni istanza ha la forma <x, t(x)>, dove x è il vettore di input e t(x) è il valore di output. r è il tasso di learning (ad esempio, 0.05) – Inizializza i pesi wi a valori random – WHILE la condizione di terminazione non è soddisfatta, DO Inizializza ogni wi a 0 FOR each <x, t(x)> in D, DO Calcola o(x) FOR each wi, DO wi wi + r(t - o)xi FOR each wi, DO wi wi + wi – RETURN w Reti Neurali Delta e Perceptron Rules x2 + x2 + x2 + - + + - x1 - x1 - + - Esempio A • + + + - + + + -+ + - - -x1 + + + - + - Esempio B Esempio C Concetti Linearmente Separabili: classificazione ottimale – esempio A: Convergenza • Concetti Non-LS: approssimazione – esempio B: non LS; la delta rule converge, ma non è ottimale – esempio C: non LS; buona generalizzazione • Vettore w = somma dei x D misclassificati – Perceptron: minimizza w – Delta Rule: minimizza errore distanca dal separatore Reti Neurali Sommario: Perceptron Learning • Funzione di base: y sgn( a) n a wi xi w0 i 1 1 se z 0 sgn( z ) 1 se z 0 – Classificazione binaria – Separabilità lineare • Due estensioini: – K classi – Relazioni nonlineari Reti Neurali Estensioni • K classi yk g (ak ) n ak wki xi wk 0 i 1 a Wx w 0 • Relazioni nonlineari yk g (ak ) n ak wki ( xi ) wk 0 i 1 a Wφ(x) w 0 Reti Neurali Reti Multi-Layer • Unità nonlineari Output Layer o1 – Funzione d’attivazione (originaria): sgn (w x) – Attivazione nonlinare: generalizzazione di sgn • Reti Multi-Layer Hidden Layer h1 o2 h2 h3 h4 u 11 Input Layer – Multi-Layer Perceptrons (MLPs) x1 x2 x3 – Una rete multi-layer feedforward è composta da uno strato di input, uno strato intermedio (nascosto) e uno strato di output – Gli strati di output è intermedi sono perceptrons (unità nonlineari) • MLPs in teoria – Le reti (di 2 or o più strati) possono rappresentare qualsiasi funzione • MLPs in pratica – Trovare la topologia “giusta” è difficoltoso – La fase di training è molto dispendiosa Reti Neurali v42 Funzioni di attivazione nonlineari x1 w1 x2 w2 xn x0 = 1 wn w0 ox σx w σnet net w i x i w x n i 0 • Funzione sigmoidale – Funzione di attivazione a threshold: sgn (w x) – Funzione nonlineare: generalizzazione di sgn – è la funzione sigmoidale σnet – utile per ottenere l’update dal gradiente per 1 1 e net • Una unità • Reti Multi-layer • Funzione iperbolica Reti Neurali sinhnet e net e net σnet net coshnet e e net Reti Feed-Forward W y k g ( ak ) V 1 g (a) 1 e a m ak vkj z j vk 0 j 1 z j g (b j ) n b j w ji xi wk 0 i 1 Reti Neurali z x y Addestramento di FFNNs: Backpropagation • Obiettivo: minimizzazione dell’errore 1 c c 1 2 E (t k yk ) 2 ek 2 k 1 2 k 1 • Utilizzando E[w ] E , E ,..., E wu w1 w2 u c m m n • Dobbiamo calcolare Reti Neurali E wh Backpropagation (2) • Per un peso di output, E E e j y j a j v ji e j y j a j v ji • otteniamo: E ej e j a j e j a j y j 1 Reti Neurali y j v ji g (a j ) g (a j )(1 g (a j )) zi Backpropagation (3) E j zi v ji • riassumendo: j e j g (a j ) • Regola di aggiustamento: v ji j zi Reti Neurali Backpropagation (4) • Su un peso interno, • otteniamo: ek g ( ak ) ak ak vkj z j Reti Neurali E E z j b j w ji z j b j w ji c c ek ek ak E ek ek z j k 1 z j k 1 ak z j z j b j b j w ji g (b j ) g (b j )(1 g (b j )) xi Backpropagation (5) • riassumendo: E j xi w ji c j g (b j ) k vkj k 1 • Regola di aggiustamento: w ji j xi Reti Neurali Algoritmo Backpropagation • Idea: Riportiamo l’effetto dell’errore ai layers successivi • Algorithm Train-by-Backprop (D, r) – Ogni istanza ha la forma <x, t(x)>, dove x è il vettore di input e t(x) è il valore di output. r è il tasso di learning (ad esempio, 0.05) – Inizializza tutti i wi a valori random – UNTIL la condizione di terminazione non è ottenuta, DO FOR EACH <x, t(x)> in D, DO calcola o(x) = (net(x)) FOR EACH unità k di output, DO j e j g (a j ) FOR EACH unità j interna, DO c j g (b j ) k vkj k 1 Aggiorna ogni w = wi,j (a = xj) o w = vj,k (a = zk) Output Layer Hidden Layer h1 – RETURN w, v Reti Neurali o2 h2 h3 Input Layer x1 x2 v42 h4 w 11 wstart-layer, end-layer wstart-layer, end-layer + wstart-layer, end-layer wstart-layer, end-layer end-layer aend-layer o1 x3 Proprietà • Gradiente Discendente – Trova un ottimo locale • Backprop in pratica – Tipicamente, si tende ad includere il momento Δw start - layer, end - layer n δend - layer aend - layer αΔw start - layer, end - layer n 1 – Quanto generalizza su altri esempi? – La fase di training è molto lenta: migliaia di iterazioni (epoche) – Inferenza (applicazione della rete) estremamente veloce Reti Neurali Potere di rappresentazione x1 x2 x1 x2 x1 Reti Neurali x2 Potere di rappresentazione • Representational (i.e., Expressive) Power – 2-layer feedforward ANN • Funzioni booleane • Ogni funzione continua limitata – 3-layer feedforward ANN: Qualsiasi funzione • Inductive Bias – Spazio delle ipotesi continuo – Spazio euclideo n-dimensionale (spazio dei pesi) – Preference bias: “interpolazione” tra gli esempi positivi – Non ancora compreso a fondo Reti Neurali Learning Hidden Layer Representations • Unità interne e Feature Extraction – I valori interni rappresentano le proprietà essenziali dell’input • esempio Input 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 Hidden Values 0 0 0 0 0 1 0 0 Reti Neurali 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0.89 0.04 0.08 0.01 0.11 0.88 0.01 0.97 0.27 0.99 0.97 0.71 0.03 0.05 0.02 0.22 0.99 0.99 0.80 0.01 0.98 0.60 0.94 0.01 Output 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 Evoluzione dell’errore e dei nodi interni errorD(ok) zj(01000000), 1 j 3 Reti Neurali Evoluzione dei pesi ui1, 1 i 8 – w0 converge a 0 – Cambiamneti dopo le prime 1000 epoche Reti Neurali Overfitting • Overfitting – h’peggio di h su Dtrain, meglio su Dtest • Overtraining – Overfitting dovuto a troppe iterazioni Reti Neurali Overfitting • Altre possibili cause – Il numero di nodi interni è fissato – Troppo pochi (“underfitting”) – • • La rete non riesce a riassumere • Analogia: sistemi di equazioni non determinati (troppe variabili rispetto alle equazioni) Troppi • La rete non generalizza • analogia: approssimare una parabola con un polinomio di grado >> 2 Approcci – Prevenzione: selezione degli attributi – aggiramento – • Hold out o k-fold cross-validation • Weight decay: decrementiamo ogni peso di un certo fattore ad ogni epoca recovery: aggiunta o cancellazione di unità interne Reti Neurali Progetto: Reti per il riconoscimento facciale sinistra fronte destra su 30 x 32 Inputs Reti Neurali