Artificial Neural Network(ANN) Dott.ssa Elisa Turricchia Alma Mater Studiorum - Università di Bologna ANN: Definizione Una rete neurale artificiale definisce un modello matematico per la simulazione di una rete di neuroni biologici (es. sistema nervoso umano) Simula i diversi aspetti legati al comportamento e alle capacità del cervello umano: Elaborazione intelligente delle informazioni Elaborazione distribuita Elevato livello di parallelismo Facoltà di apprendimento, di generalizzazione e di adattamento Alta tolleranza ad informazioni poco precise (o sbagliate) Rete neurale biologica Rete neurale artificiale 2
Applicazioni (1) Sistemi di filtraggio del segnale (es. eliminare il rumore da un segnale) Sistemi di classificazione Previsione di serie temporali (Time Series Forecasting) Riconoscimento (es. riconoscimento volti o delle espressioni facciali) 3 Applicazioni (2) Problemi di inversione (es. rete per l inversione di dati satellitari per estrarre diversi tipi di profili atmosferici) Sistemi di allarme e prevenzione (es. sistema per il monitoraggio del manto autostradale per allertare con sufficiente anticipo i mezzi di spargimento delle misture saline in caso di pericolo) Diagnosi di guasto 4
Reti neurali Contenuti Rete neurale biologica Struttura del neurone biologico Trasmissione delle informazioni Potenziale d azione Rete neurale artificiale (ANN) Modello matematico Caratteristiche Il percettrone Caratteristiche e apprendimento Il percettrone multilivello Caratteristiche e apprendimento Progettare una rete neurale Vantaggi e svantaggi delle reti neurali 5 Rete neurale biologica È costituita da un insieme di cellule nervose (i neuroni) collegati tramite fibre nervose. Neurone: trasmissione di segnali tra neuroni mediante impulsi elettrici. Soma: nucleo della cellula (patrimonio genetico + funzioni cellulari) Denitriti: ricevono le informazioni dagli altri neuroni e le trasferiscono al nucleo della cellula (input) Assone: riceve le informazioni dal nucleo cellulare e le trasferisce verso gli altri neuroni (output) Sinapsi: punto di contatto tra l assone di un neurone (neurone presinaptico) e il ramo dentritico di un altro neurone (neurone post-sinaptico). Punto in cui avviene il passaggio del segnale con un processo elettrochimico. 6
Trasmissione informazioni (1) La trasmissione delle informazioni fra i neuroni è paragonabile alla trasmissione di un segnale elettrico. All interno dell assone, la guaina mielinica consente una veloce propagazione del segnale, mentre i nodi di Ranvier ne consentono la rigenerazione. Quando il segnale arriva alle sinapsi viene rilasciata una particolare sostanza chimica, i neurotrasmettitori (eccitatori o inibitori), che consentono il passaggio dell informazione ai denitriti dei neuroni vicini. http://it.wikipedia.org/wiki/file:sinapsi.gif 7 Trasmissione informazioni (2) La quantità di segnale (informazione) trasmessa verso il neurone postsinaptico dipende da diversi fattori: Intensità del segnale in entrata (anche ricezione di più segnali da neuroni diversi) Forza delle sinapsi dei neuroni in entrata (rilascio dei neurotrasmettitori) Soglia di attivazione del neurone ricevente (superata una certa soglia di potenziale elettrico, il neurone postsinaptico si attiva e genera a sua volta una segnale che può essere propagato verso gli altri neuroni) 8
Comportamento neurone postsinaptico Comportamento passivo Segnali ricevuti di piccola intensità (variazione di potenziale di pochi mv) impulso non generato Comportamento attivo Segnali ricevuti di elevata intensità (variaizone di potenziale >= soglia) generazione di un impulso elettrico (spike). 9 Rete neurale biologica vs artificiale n: neuroni in entrata; xi: intensità del segnale; wi: forza sinapsi; b: soglia del neurone postsinaptico ξ: combinazione segnali in entrata σ: funzione di attivazione y: output 10
Modello matematico y y = σ(σwi xi) σ(ξ) Funzione di attivazione ξ=σwi xi Combinazione feature in ingresso w1 w2 wn Vettore dei pesi x1 x2 xn Vettore feature in ingresso 11 Caratteristiche Vettore pesi: funzione di memoria della conoscenza accumulata dal singolo neurone. Combinazione feature in ingresso: trasformazione matematica applicata al vettore delle feature in ingresso per determinare l intensità del segnale in input. Funzione di attivazione: funzione che simula il comportamento del neurone postsinaptico. A gradino Segno (o Hard Limiter) Sigmoide 12
Funzionamento di una rete neurale artificiale Le reti neurali funzionano come un sistema black box Il sistema è una scatola nera: ciò che contiene è inaccessibile o non è noto Si utilizzano dati sperimentali per derivare il modello del sistema Dati sperimentali Algoritmo di apprendimento Modello matematico Vantaggi: Non servono leggi costitutive Adatte a descrivere il comportamento di un sistema sulla base di dati empirici Svantaggi: Vengono creati modelli atti a risolvere problemi specifici 13 Il percettrone (1) Il percettrone è la ANN più semplice, introdotta agli inizi degli anni 50 Classificatore binario Funzione di attivazione: funzione segno. σ(ξ) 1 b ξ -1 Combinazione feature in ingresso: combinazione lineare delle feature in ingresso (xi), con i pesi (wi) come coefficienti. 14
Il percettrone (2) Funzione di attivazione: 1, se y = {-1, se 1, se y = {-1, se n =1 n =1 n = 1 n = 1 w x > w x b < b w x b > 0 w x b < 0 Usiamo la soglia come input y 1 b -1 Funzione segno ξ 15 Il percettrone (3) Funzione di attivazione: 1, se y = {-1, se n = 1 n = 1 w x b > 0 w x b < 0 1, se y = {-1, se n = 0 n = 0 Si considera la soglia b come un nuovo input, tale che w0 = b x 0 = 1 w x > 0 w x < 0 FORMA VETTORIALE w y ' = sign ( x ) 16
Esempio Training set x1 x2 x3 y 1 0 0-1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1-1 0 1 0-1 0 1 1 1 0 0 0-1 output training set y -1 Training set y assume valore 1 se almeno due input sono maggiori di 0, altrimenti assume valore -1 1 1 1-1 -1 1-1 output percettrone y = Percettrone Classificatore binario x1 x2 x3 w2= 0.3 w1= 0.3 w3=0.3 1, se 0.3x1 + 0.3x2 + 0.3x3-0.4 > 0 { -1, se 0.3x1 + 0.3x2 + 0.3x3-0.4 < 0 Σ b=0.4 y 17 Apprendimento Concetto generale: processo di aggiornamento della struttura interna di un sistema in risposta a stimoli esterni, al fine di eseguire una specifica attività. Reti neurali: Aggiustare i pesi delle sinapsi al fine di ridurre l errore fra il valore di output generato dalla rete neurale e l output corretto (training set) È un processo iterativo: analogamente all apprendimento per esperienza Proprietà di una rete neurale addestrata: È in grado di memorizzare informazioni imprecise o che contengono rumore, senza che venga alterata la qualità della risposta della rete neurale È in grado di generalizzare da concetti appresi a concetti sconosciuti 18
Tipi di apprendimento Supervisionato: Training set: i valori per gli ingressi e relative uscite La rete impara ad inferire il legame fra gli ingressi e le uscite I pesi delle sinapsi vengono modificati sulla base dei valori del training set, per minimizzare l errore fra l uscita prodotta dalla rete neurale e l uscita reale (es. Algoritmo di Backpropagation) Per rinforzo (particolare tipo di apprendimento supervisionato): Il supervisore (es. utente esperto) interpreta l output della rete solo come corretto o sbagliato Adatto per l apprendimento di sequenze temporali o per programmi per il riconoscimento del parlato Non supervisionato: Training set: solo valori per gli ingressi Cluster dei valori in ingresso, l idea è quella di: Raggruppare i dati d'ingresso e individuare degli opportuni cluster rappresentativi dei dati stessi, facendo uso tipicamente di metodi topologici o probabilistici. Adatto per problemi di compressione dati 19 Modello di Apprendimento del percettrone Processo iterativo Apprendimento supervisionato: Training set: valori degli ingressi e relative uscite Il vettore dei pesi (W) viene modificato finché l output del percettrone risulta consistente con l output reale (uscite del training set). Formula di aggiornamento dei pesi ( k+ 1) ( k ) ( k ) w = w + λ( y y' ) x i i i x i i-esimo esempio del training set x -esimo attributo dell esempio i x i λ ( k ) w learning rate λ 0 Il nuovo peso è influenzato prevalentemente dai pesi attribuiti nelle precedenti iterazioni λ 1 i: indice per iterare sugli esempi del training set : indice per iterare sulle feature (attributi) di ciascun esempio del training set k: indice delle iterazioni Il nuovo peso è influenzato dall aggiustamento eseguito all iterazione corrente peso associato all i-esimo esempio del training set dopo la k-esima ( k ) k k k iterazione w = { w 1,.., w,.., w } n 20
Algoritmo di apprendimento percettrone 1: Let D ={(xi,yi) i=1,2,,n} be the set of training examples. 2: Initialize the weight vector with random values, 3: repeat //incremento di k (0) w 4: for each training example (xi,yi) D do ( k ) 5: Compute the predited output y' i 6: for each weight w do ( k+ 1) ( k ) ( k ) 7: Update the weight, w = w + λ ( y y' ) x i i i 8: end for 9: end for 10: until stopping condition is met //tutti i campioni sono stati classificati correttamente i pesi non sono stati alterati 21 Aggiornamento del peso ( k+ 1) ( k ) i ( k ) w = w + λ ( y y' ) x i i Errore y = y, errore nullo y = 1 e y = -1, errore 2 y = -1 e y = 1, errore -2 Aggiornamento peso Il peso rimane invariato Occorre incrementare il valore di y : Si incrementano i pesi degli input positivi Si decrementano i pesi degli input negativi Occorre decrementare il valore di y : Si decrementano i pesi degli input positivi Si incrementano i pesi degli input negativi 22
Limiti del percettrone (1) L algoritmo di apprendimento del percettrone converge (quindi si raggiunge la soluzione ottima) se il problema è linearmente separabile 23 Limiti del percettrone (2) Non esiste una retta in grado di suddividere lo spazio in due semispazi in modo che gli oggetti della classe cerchio siano in un semi-spazio e gli oggetti di classe triangolo nell altro XOR: problema non linearmente separabile Il problema dello XOR non è risolvibile con un percettrone 24
Reti neurali complesse Percettrone multilivello Funzione di attivazione Pattern di connessione Feed-forward Recurrent Recurrent Feed-forward 25 Percettrone multilivello (1) La rete è caratterizzata da uno o più livelli intermedi (livelli nascosti) fra il livello di input e quello di output. Gli output dei nodi di un livello diventano gli input per i nodi del livello successivo. Ogni nodo nascosto si comporta come un singolo percettrone 26
Percettrone multilivello (2) Supera i limiti del percettrone usando strati di neuroni nascosti che realizzano una rappresentazione interna dell input più complessa, perché individua regioni arbitrarie intersecando iperpiani diversi. Es. Problema dello XOR Input layer Hidden layer Output layer x1 n1 w31 n3 w32 w53 n5 y w41 w54 x2 n2 w42 n4 Decision boundary Topologia della rete 27 Percettrone multilivello (3) Aumentando il numero di livelli e dei nodi nascosti e a seconda delle funzioni di attivazione scelte, è possibile risolvere problemi di classificazione sempre più complessi. Percettrone 1 livello nascosto 2 livelli nascosti Decision boundary sempre più complessi Gli esempi fanno riferimento ad una funzione di attivazione a gradino (analoga alla funzione segno, in cui però i valori di uscita sono 0 o 1). 28
Percettrone multilivello (4) Quanti livelli nascosti? 1 livello: universal approximator (vedi Teorema Cybenko) Può approssimare in modo arbitrariamente preciso ogni funzione continua (avendo un numero sufficiente di neuroni nascosti) 2 livelli: per approssimare funzioni con discontinuità Quanti nodi? Non esiste un numero preciso, è necessario eseguire diverse prove! Quali funzioni di attivazione? Funzione segno Funzione a gradino Funzione sigmoide 29 Funzioni di attivazione (1) Segno Permette di simulare solo il comportamento attivo/passivo del neurone biologico (2 soli stati) Funzione semplice Diversi ambiti applicativi (es. problema di classificazione di documenti, in cui è rilevante il numero di volte in cui una parola compare all interno del documento) 30
Funzioni di attivazione (2) A gradino Simile alla funzione segno Utile per rappresentare funzioni logiche (es. AND, OR) 31 Funzioni di attivazione (3) Sigmoide Dal punto di vista biologico, approssima meglio il comportamento del neurone postsinaptico Preferibile per i neuroni nascosti perché facilità l apprendimento con backpropagation Differenziabile (metodo di discesa del gradiente) Nelle funzioni segno o a gradino il gradiente è nullo o non esiste Generalmente, anche piccoli cambiamenti nei pesi, producono un cambiamento dell output è possibile valutare se l aggiornamento porta ad un miglioramento dell output della rete. 32
Apprendimento di un percettrone multilivello (1) Metodo di discesa del gradiente: determinare il vettore dei pesi (W) che minimizza la somma degli errori quadratici. Viene utilizzato per aggiornare i pesi dei nodi nascosti e dei nodi di output. N 1 2 E( w) = ( yi y' i) y' = w x 2 i= 1 E( w) w w λ w N: numero di neuroni i: indice per iterare sui nodi della rete w: vettore dei pesi in entrata sul neurone i-esimo : indice per iterare sui pesi in entrata sull i-esimo neurone yi: output del training set per l i-esimo neurone y i : output della rete neurale per l i-esimo neurone λ : learning rate Funzione di errore Derivata parziale della funzione di errore rispetto ai pesi 33 Apprendimento di un percettrone multilivello (2) 1. L insieme corrente di pesi individua un punto sulla superficie di errore. 2. In quel punto si calcola la pendenza della superficie lungo gli assi formati da ciascun peso (derivata parziale); 3. Si modificano i pesi di una quantità proporzionale alla pendenza in ciascuna delle direzioni. 4. La rete si sposta nella direzione della discesa più ripida lungo la superficie di errore (direzione negativa del gradiente) 5. L algoritmo termina quando l errore è minore di una certa soglia fissata 34
Limiti del metodo di discesa del gradiente Convergenza a minimi locali E(w) Possibile soluzione: provare con diverse inizializzazione dei parametri Convergenza lenta w E(w) Se la derivata è piccola l algoritmo si muove a piccoli passi w 35 Backpropagation (1) Il metodo di backpropagation viene utilizzato per permettere l aggiornamento dei pesi nei nodi nascosti (nel training set è presente solo il valore di output della rete complessivamente, ma non per ciascun nodo nascosto) Forward-phase: i pesi ottenuti dalla iterazione precedente vengono utilizzati per calcolare gli output dei neuroni della rete. Gli output dei neuroni a livello k sono calcolati prima di quelli a livello k+1. Backward-phase: i pesi a livello k+1 sono aggiornati prima dei pesi a livello k. Gli errori dei neuroni a livello k+1 vengono utilizzati per stimare gli errori per i neuroni a livello k. 36
Esempio backpropagation (1) Rete di partenza Combinazione feature in ingresso Funzione di attivazione (Vedi modello matematico di slide 11) 37 Esempio backpropagation (2) Forward-phase Calcolo della funzione di uscita per il primo strato Propagazione del calcolo delle uscite in avanti, fino al livello di output Calcolo della funzione di uscita per il livello di output 38
Esempio backpropagation (3) Calcolo dell errore per il livello di output calcolo errore z: output training set y: output della rete Backward-phase Propagazione dell errore all indietro. L errore ad un livello viene calcolato sfruttando gli errori calcolati al livello successivo Aggiornamento dei pesi con metodo del gradiente 39 Epoche di apprendimento La rete neurale viene addestrata su di un training set Ogni esempio viene passato attraverso la rete calcolando l errore che verrà usato per modificare i pesi Il training set viene passato più volte (epoca di apprendimento) L errore tende a diminuire durante la fase di addestramento, all aumentare del numero di nodi nascosti e di numero di epoche di apprendimento (cicli di training) Problema OVERTRAINING L errore risulta essere sempre più vicino a 0 per gli esempi del training set, ma la rete perde la capacità di generalizzare sugli esempi del test set. 40
Pattern di connessione Feed-forward: i nodi di un livello sono collegati solamente ai nodi del livello successivo. Si associa un pattern di uscita a pattern di ingresso ad un certo istante di tempo t: y ( t) = F( x( t)) Recurrent: possono esistere connessioni fra nodi dello stesso livello e fra nodi di un livello e i nodi di livelli precedenti. Si associa un pattern di uscita a pattern di ingresso ad un certo istante di tempo t, con una dipendenza da uno stato interno z(t) che evolve a sua volta nel tempo con gli ingressi presentati : z( t + 1) = F( z( t), x( t)) y( t) = G( z( t), x( t)) 41 Sviluppare una rete neurale (1) 42
Sviluppare una rete neurale (2) 1. Definizione e formulazione del problema 1. Analisi e comprensione del problema e delle relazioni causaeffetto che caratterizzano il fenomeno 2. Progettazione del sistema 1. Scelta del tipo di rete neurale 2. Scelta dell algoritmo di apprendimento 3. Raccolta e pre-processing dei dati 4. Partizionamento dei dati (training, test, validation set) 3. Realizzazione del sistema: 1. Training della rete neurale 2. Valutazione delle performance 3. Modifica dei parametri della rete per migliorare l accuratezza della rete 43 Sviluppare una rete neurale (3) 4. Verifica del sistema 1. Validazione del sistema sul validation set, per verificare la capacità della rete di rispondere correttamente a input mai utilizzati. 2. Eventuale comparazione delle performance della rete rispetto ad altri metodi (es. regressione lineare, sistemi esperti) 5. Implementazione del sistema 1. Installare la rete neurale all interno del sistema che ne fa utilizzo 2. Collaudo dell intero sistema, prima del rilascio al cliente 6. Manutenzione del sistema 1. Adeguamento del sistema in risposta a cambiamenti dell ambiente in cui il sistema è collocato (es. nuovi dati) 44
Partizionamento dei dati Si partiziona il data set in 3 parti Training set: comprende i dati appartenenti al dominio del problema e vengono utilizzati durante la fase di addestramento per modificare i pesi della rete. Test set: viene utilizzato per testare le performance delle rete su dati sconosciuti. In base ai risultati ottenuti si modifica la topologia della rete (es. numero nodi). Validation set: viene utilizzato per testare le performance della rete (avendo individuato la configurazione ottima della rete a seguito della fase di training), su dati sconosciuti. Possibile partizionamento (Looney 1996) 65% training set, 25% testing set, 10% validation set 45 Data balancing Per le reti neurali usate come classificatori è importante che i dati del training set siano uniformemente distribuiti fra le classi per evitare che la rete sia performante solo per particolari classi. Possibili soluzioni: Eliminare alcune esempi relativi alle classi over-represented. Aggiungere esempi relativi alle classi under-represented. Duplicare gli esempi relativi alle classi under-represented, inserendo del rumore (modificando gli input e mantenendo invariato l output degli esempi) 46
Dimensione del data set Data set molto piccoli non permettono l individuazione di adeguate porzioni di dati per training, test e validation: Inserire nuovi dati (se possibile) Inserire nuovi esempi, partendo da esempi esistenti e aggiungendo rumore. Leave-k-out method: Supponendo di avere M esempi, (M-k) vengono usati per il training set e k per il test set La procedura è ripetuta M volte, ogni volta con inizializzazione random dei pesi. 47 Pesi, soglie e learning rate L inizializzazione dei pesi può influenzare la convergenza della rete neurale (es. convergenza lenta nell individuazione del minimo della funzione di errore) Si consiglia di utilizzare piccoli valori, per ridurre la probabilità di saturazione dei nodi (es. pesi e soglie compresi fra -0.30 e +0.30) (ASCE, 2000) Learning rate: Learning rate alto: può accelerare la fase di training, modificando significativamente i pesi nelle varie iterazioni. Si rischia però di ottenere dei minimi locali Learning rate basso: può portare al raggiungimento del minimo globale ma in maniera lenta. È possibile utilizzare learning rate costanti o variabili durante la fase di training Esempio: learning rate nel range [0.0, 1.0] (Fu, 1995) 48
Effetti degli strati nascosti sulla rete neurale Livelli nascosti 1 livello: universal approximator (vedi Teorema Cybenko) Può approssimare in modo arbitrariamente preciso ogni funzione continua (avendo un numero sufficiente di neuroni) 2 livelli: possono essere necessari per approssimare funzioni con discontinuità Nodi nascosti Non esiste un numero preciso, è necessario eseguire diverse prove 49 Costruire un classificatore con una rete neurale Numero di nodi del livello di input: Per attributi numerici o binari un nodo per ogni attributo Per attributi categorici un nodo per ogni valore dell attributo categorico Numero di nodi del livello di output: Per problemi con 2 classi 1 solo nodo Per problemi con k classi k nodi Topologia della rete (es. numero di livelli nascosti, pattern di connessione) Iniziare da una rete completamente connessa, con un sufficiente numero di nodi e livelli nascosti. Successivamente eseguire il modello dopo aver rimosso alcuni nodi Inizializzazione dei pesi e del valore di soglia: Inizializzazione random Training set Eliminare o sostituire i valori mancanti 50
Vantaggi di una rete neurale (1) Capacità di generalizzazione Utile in problemi di riconoscimento di caratteri digitalizzati Comportamento dinamico Capacità di rispondere a stimoli esterni in maniera diversa rispetto a ciò che inizialmente è stato definito all interno del sistema Capacità di riprodurre o modellare comportamenti non lineari di un sistema 51 Vantaggi di una rete neurale (2) Capacità di classificare pattern complessi Tolleranza agli errori scostamenti non significativi dei valori di input vengono assorbiti dalla rete, diminuendo così il rumore e risultando tolleranti agli errori o al decadimento del segnale Tolleranza ai guasti Il mal funzionamento di una unità di elaborazione può essere ovviato dalla presenza di molteplici neuroni che operano in parallelo 52
Svantaggi di una rete neurale Ai fini dell apprendimento è necessario fornire alla rete neurale tanti più esempi quanto più fortemente non lineare è il sistema da modellare. Il processo di apprendimento potrebbe risultare lungo Il processo di apprendimento potrebbe portare a soluzione subottime Non è possibile sapere a priori quale sia la miglior topologia della rete (numero di nodi, di strati, collegamenti fra nodi e tipo di funzioni che devono implementare i nodi di ciascun strato) da assegnare alla rete neurale affinché modelli al meglio il nostro sistema. La rete neurale è come una scatola nera, quindi non fornisce spiegazioni sul funzionamento del sistema in esame. 53 Riferimenti I.A., Basheera, M. Hameerb 2000. Artificial neural networks: fundamentals, computing, design, and application. Journal of Microbiological Methods 43, 3 31 ASCE, 2000. Artificial neural networks in hydrology. I. Preliminary concepts. J. Hydro. Eng. ASCE 5, 115 123. Fu, L., 1995. Neural Networks in Computer Intelligence. McGraw-Hill, New York. Looney, C.G., 1996. Advances in feedforward neural networks: demystifying knowledge acquiring black boxes. IEEE Trans. Knowledge Data Eng. 8 (2), 211 226. http://en.wikipedia.org/wiki/neural_network 54