Utilizzo di reti neurali per il riconoscimento di volti da foto
by user
Comments
Transcript
Utilizzo di reti neurali per il riconoscimento di volti da foto
Università Politecnica delle Marche FACOLTA‘ DI INGEGNERIA Corso di Laurea in Ingegneria Informatica e dell‘Automazione Utilizzo di reti neurali per il riconoscimento di volti da foto Relatore: Prof. Aldo Franco Dragoni Tesi di Laurea di: Marco Favi Borgognoni Anno accademico 2009/2010 INDICE 1 INTRODUZIONE......................................................................................................................... 1 1.1 ANALISI PROBLEMA ......................................................................................................................... 2 1.2 STRUTTURA TESI ............................................................................................................................. 3 2 TECNICHE DI RICONOSCIMENTO DEL VOLTO ............................................................................ 5 2. 1 RAPPRESENTAZIONE E CONFRONTO ................................................................................................. 5 2.2 PRINCIPAL COMPONENT ANALYSIS PCA .......................................................................................... 6 2.3 HIDDEN MARKOV MODEL (HMM) ................................................................................................ 10 2.4 RICONOSCIMENTO ATTRAVERSO RETI NEURALI .............................................................................. 13 3 RETI NEURALI ........................................................................................................................14 3.1 STORIA DELLE RETI NEURALI........................................................................................................... 15 3.2 STRUTTURA DI UN NODO, FUNZIONI DI ATTIVAZIONE...................................................................... 18 3.3 TIPI DI ARCHITETTURA ................................................................................................................... 19 3.4 TIPI DI APPRENDIMENTO................................................................................................................. 23 3.5 BACKPROPAGATION ........................................................................................................................ 24 3.6 TIPI DI RETE .................................................................................................................................... 27 3.6.1 Percettrone .................................................................................................................................... 27 3.6.2 SOM ................................................................................................................................................... 28 3.6.3 Growing Neural Gas (GNG) ...................................................................................................... 30 3.6.4 LVQ ..................................................................................................................................................... 32 3.7 RETI NEURALI MODULARI ................................................................................................................ 36 4 LOGICA FUZZY E SISTEMI NEURO-FUZZY ...............................................................................39 4.1 STORIA DELLA LOGICA FUZZY.......................................................................................................... 39 4.2 CONCETTI FONDAMENTALI .............................................................................................................. 40 4.3 FUNZIONI DI APPARTENENZA .......................................................................................................... 42 4.4 OPERAZIONI SUGLI INSIEMI ............................................................................................................. 42 4.4.1 Negazione ...................................................................................................................................... 43 4.4.2 Unione (OR) .................................................................................................................................. 43 4.4.3 Intersezione (AND) .................................................................................................................... 44 4.5 SISTEMI FUZZY ................................................................................................................................ 44 4.5.1 Fuzzificazione .............................................................................................................................. 45 4.5.2 Defuzzificazione.......................................................................................................................... 46 4.6 SISTEMI IBRIDI ................................................................................................................................ 47 5 FACE RECOGNITION SYSTEM ..................................................................................................51 5.1 ARCHITETTURA SISTEMA................................................................................................................. 52 5.2 ESTRAZIONE FEATURE ..................................................................................................................... 53 5.3 RETI NEURALI .................................................................................................................................. 53 5.4 CONDIZIONAMENTO BAYESIANO ..................................................................................................... 55 5.5 FUNZIONI DI SINTESI........................................................................................................................ 56 5.5.1 Inclusion based e ottimizzazioni .......................................................................................... 56 5.5.3 Algoritmo pesato ........................................................................................................................ 57 5.6 MODULO PER LA RETROAZIONE ....................................................................................................... 58 6 DATABASE DI FOTO ................................................................................................................60 6.1 CREAZIONE DATABASE .................................................................................................................... 61 6.2 PROBLEMATICHE RISCONTRATE ...................................................................................................... 62 7 CONCLUSIONI E SVILUPPI FUTURI ...........................................................................................64 CONCLUSIONI....................................................................................................................................................... 64 SVILUPPI FUTURI ................................................................................................................................................. 64 RINGRAZIAMENTI ......................................................................................................................66 BIBLIOGRAFIA ...........................................................................................................................67 1 Capitolo 1 Introduzione Sistemi sofisticati di sicurezza sono divenuti molto importanti nella vita di tutti i giorni, specialmente per quanto riguarda l‘identificazione di una persona. Esistono diverse tecniche per identificare un individuo, che possono essere classificate in due categorie: tecniche biometriche, e tecniche non biometriche [1]. Esistono invece molti sistemi biometrici, che utilizzano caratteristiche proprie di ogni individuo, come ad esempio l‘iride, l‘impronta digitale, la voce, la firma e il volto per l‘identificazione, e alcuni di questi hanno raggiunto un alto livello di precisione [2]. Alcuni sistemi come ad esempio il riconoscimento dell‘iride o dell‘impronta digitale, sono molto intrusivi, e richiedono la cooperazione dell‘utente oltre che equipaggiamenti costosi (scanner particolari) [2]. I sistemi di riconoscimento del volto invece, hanno bisogno di attrezzature poco costose (ad esempio una telecamera di video sorveglianza) e sono in grado di catturare le caratteristiche del soggetto senza nessuna cooperazione di quest‘ultimo. Per questo motivo hanno recentemente ricevuto notevole attenzione e le ricerche in questo settore sono aumentate notevolmente in questi ultimi anni. Le modalità di riconoscimento utilizzate nelle tecnologie biometriche possono essere distinte in: autenticazione (one-to-one matching) e identificazione (one-to-many matching). Da notare che allo stato attuale, oltre ai volti, solo le impronte digitali e l‘analisi dell‘iride consentono un efficace riconoscimento one-to-many. Alcuni esempi di utilizzo possono essere [3]: Login su computer Autenticazione dell‘accesso ai siti web Verifica di tessere personali: carte di credito, passaporti, patenti di guida, carta d‘identità CAPITOLO 1: INTRODUZIONE 2 Identificazione in ambienti (affollati) da proteggere, e sorveglianza notturna: negozi, banche, stazioni, aeroporti, ecc. Accesso ad aree riservate: ospedali, uffici governativi o militari Accesso a sportelli bancari automatici ATM (Automatic Teller Machine) Sistemi di apprendimento a distanza. Ad esempio nei corsi di laurea on-line, oltre al reperimento di appunti e lezioni in Internet, sarebbe anche possibile sostenere gli esami senza necessariamente raggiungere la sede universitaria. In ambito finanziario, sia per le operazioni di borsa sia per le vendite di prodotti via Internet, la possibilità di riconoscere con certezza l‘utente collegato in un dato momento assume una importanza vitale. Fino ad ora, questo tipo di servizi si limitava a verificare che l‘utente collegato fosse in possesso di una data informazione (password) o di un determinato oggetto (tesserino magnetico) e di una informazioni ad esso associata (codice pin). Il livello di sicurezza offerto da questo tipo di autenticazione si è dimostrato in più occasioni inadeguato. Identificazione rapida di segnalazioni fotografiche (es.: criminali) Interfacciamento uomo-macchina per le più svariate applicazioni interattive Sono state svolte nei campi del riconoscimento e del rilevamento del volto, moltissime ricerche negli ultimi anni. Molte ricerche però si basano su precise precondizioni, e solo pochi sistemi sono stati utilizzati su ambienti reali per testare le loro reali capacità [2]. 1.1 Analisi problema Il problema del riconoscimento del volto consiste nella verifica dell‘identità di un individuo attraverso l‘analisi delle caratteristiche del suo viso. Il riconoscimento per l‘uomo è un processo mentale istintivo, che avviene senza il minimo sforzo apparente. Biologicamente ogni memorizzazione visiva consiste nell‘eccitazione di una ―traccia‖ di neuroni della corteccia cerebrale. Ogni percezione visiva genera una nuova ―traccia‖ o ne rafforza una esistente. Al ripresentarsi di uno stimolo visivo già memorizzato nel passato il CAPITOLO 1: INTRODUZIONE 3 cervello recupera le informazioni (associazione immagine-entità) in maniera tanto più rapida quanto più la traccia è rimasta impressionata sulla corteccia. Il cervello umano, durante il riconoscimento, lavora per schemi associativi ed è proprio su questo che l‘intelligenza artificiale si basa per tentare di riprodurre tale comportamento nelle macchine. Per un sistema automatico il problema può essere schematizzato come segue: data un‘immagine o una sequenza video, identificare uno o più soggetti presenti nella scena utilizzando un database di volti [3]. Anche se per un uomo il problema sembra banale non vale lo stesso per un sistema di riconoscimento. Innanzi tutto le immagini o i video contengono numerosi fattori interferenti, quali: ampie variazioni cromatiche, angoli di vista differenti e risoluzioni diverse [1]. Nella fattispecie del riconoscimento di un volto le cose si complicano ulteriormente: il volto deve essere riconosciuto anche se l‘individuo presenta una diversa pettinatura, porta gli occhiali, cambia espressioni, è voltato, non ha più la barba, è illuminato diversamente, ecc. Da un punto di vista tecnico il riconoscimento facciale non è altro che un particolare problema di ―object recognition‖ nel quale gli oggetti da riconoscere presentano particolari proprietà che li accomunano (es. posizione di occhi, bocca e naso) ed altre, più sottili, che permettono di distinguerli (es. lineamenti e forma del viso). 1.2 Struttura tesi Nel capitolo due viene analizzato il problema del riconoscimento del volto e vengono discussi alcuni possibili approcci con i quali risolvere il problema. Il capitolo tre offre una descrizione dettagliata delle reti neurali. Prima viene introdotta un po‘ di storia delle reti neurali, successivamente vengono descritti i parametri fondamentali delle reti, come le funzioni di attivazione, il tipo di apprendimento e il tipo di architettura (ricorsiva e non). Infine vengono brevemente presentati alcuni tipi di reti neurali. Il capitolo quattro offre una panoramica sulla logica fuzzy, con i concetti fondamentali, il concetto di FIT, e il procedimento per trattare questo tipo di dati (fuzzificazione, defuzzificazione). Viene inoltre presentata una veloce panoramica sui vantaggi e gli svantaggi dei sistemi ibridi neuro-fuzzy. CAPITOLO 1: INTRODUZIONE 4 Il capitolo cinque parla del sistema usato per il riconoscimento dei volti, con la struttura di base e un approfondimento per ogni singolo passaggio. Nel capitolo sei troviamo la parte relativa alla creazione del database di foto da usare per il sistema descritto nel capitolo precedente. Infine nel capitolo sette si riportano le conclusioni ed una discussione degli sviluppi futuri. 5 Capitolo 2 Tecniche di riconoscimento del volto L‘uomo riesce a riconoscere un volto senza nessuno sforzo apparente, ma i calcoli eseguiti dal sistema nervoso visivo sono enormemente complessi. Il problema apparentemente banale di trovare e identificare un volto è il risultato di milioni di anni di evoluzione e noi siamo ancora lontani dal comprendere appieno come il nostro cervello realizza questo compito. Ancora oggi non è stata trovata una soluzione completa che permetta un riconoscimento automatico di un volto in un‘immagine. In questo capitolo verranno mostrati i più comuni approcci utilizzati per risolvere questo problema. 2. 1 Rappresentazione e confronto Il successo nel riconoscimento del volto dipende dalla soluzione di due problemi: rappresentazione e confronto. A livello elementare, l‘immagine di un volto è un array bidimensionale di numeri che può essere espresso in tre modi alternativi: 1. x = {xi, i S} dove S una griglia quadrata. 2. x = [x1,….xk]T dove x è un vettore colonna costituito da righe di pixel concatenate, n è il numero totale di pixel nell‘immagine e quindi x è un punto nello spazio euclideo n-dimensionale. 3. f(x) = [f1(x),….fm(x)]T dove f(x) è detto vettore di features e dove fm(x) sono funzioni lineari o non lineari. CAPITOLO 2: TENICHE DI RICONOSCIMENTO DEL VOLTO 6 Per una data rappresentazione sono importanti il potere discriminante, e l‘efficienza. Il potere discriminante rappresenta la distanza tra rappresentazioni di volti diversi, mentre l‘efficienza indica quanto è compatta la rappresentazione. E‘ importante notare che un‘efficiente rappresentazione non ha necessariamente un buon potere discriminante. La fase del confronto si occupa di rintracciare un volto candidato x nell‘insieme dei K campioni ci . Ci sono molti metodi per comparare il nuovo volto con i campioni: calcolo della distanza euclidea, calcolo della distanza di Mahalanobis, confronto basato su misure di correlazione o di covarianza. A causa di molti fattori, come ad esempio l‘illuminazione o l‘espressione del soggetto, l‘immagine del volto di una persona può avere delle variazioni casuali e quindi può essere modellata in maniera più corretta come un vettore random. In questo caso viene spesso usato il confronto per somiglianza massima (ML maximum likelihood). 2.2 Principal Component Analysis PCA PCA (Principal Component Analysis) è una delle tecniche maggiormente utili nei campi del riconoscimento e della compressioni delle immagini. PCA è un metodo statistico il cui scopo è la riduzione di un numero più o meno elevato di variabili in alcune variabili latenti, che possiamo utilizzare per descrivere tutti i dati. Una generica immagine I(x,y), può essere rappresentata sia da una matrice a due dimensioni NxN, sia da un vettore monodimensionale di grandezza N 2 o in egual modo da un punto in uno spaio di N2 dimensioni. Un insieme di immagini quindi può essere mappato in un insieme di punti di questo enorme spazio. Tutte le immagini che contengono un volto sono simili e quindi non sono distribuite casualmente in questo enorme spazio. Sfruttando questa proprietà possiamo rappresentarle con una bassa percentuale di errore adoperando un sub spazio con molte meno dimensioni. Questa è la principale idea dell‘analisi delle componenti principali, che intende trovare dei vettori che rappresentano nel miglior modo possibile le immagini dei volti all‘interno dell‘intero spazio delle immagini. Questi vettori quindi definiranno un sottospazio chiamato ―spazio dei volti‖. CAPITOLO 2: TENICHE DI RICONOSCIMENTO DEL VOLTO 7 Prendiamo in considerazione un insieme di immagini di volti x1, x2,…..xM di dimensione N (N = larghezza x altezza immagine originale). Se indichiamo con pj il valore di un pixel dell‘immagine, avremo che: xi = [p1,…pN]T i=1,….M Definiamo ora il volto medio come: Ogni volto differisce dal volto medio di una quantità pari a wi = xi – m. L‘obbiettivo di PCA è quello di trovare un insieme di M vettori ei che esprimano al meglio la distribuzione delle immagini iniziali. Questi vettori devono essere ortonormali e devono essere scelti in modo tale che la quantità ortogonalità: i 1 M è massimizzata tenendo conto del vincolo di M (eiT wn )2 i 1 i I vettori ei e gli scalari i 1 M M (eiT wn )2 i 1 sono gli autovettori e autovalori della matrice di covarianza C = WWT dove W è una matrice in cui le colonne sono i vettori wi. La grandezza di C è N x N che potrebbe essere enorme. Anche per immagini estremamente piccole ad esempio 64x64 la matrice di covarianza avrebbe dimensioni 4096 x 4096, rendendo il problema del calcolo degli autovettori intrattabile computazionalmente. Pertanto è necessario trovare un modo più efficiente per trovare questi autovettori. Se il numero di immagini è molto più basso delle dimensioni dello spazio delle immagini (M < N2) , ci saranno soltanto M-1 autovettori. I restanti autovettori saranno associati ad autovalori nulli. Fortunatamente è possibile ottenere ei e i utilizzando gli autovalori e gli autovettori della matrice MTM che ha grandezza M x M. Indicando con di e μi gli autovettori e gli autovalori della matrice WTW sappiamo che: WTWdi = μidi. Moltiplicando entrambe le parti della precedente equazione per W WWT (Wdi) = μi(Wdi) I primi M-1 autovettori ei e i relativi autovalori i di WWT possono essere calcolati quindi rispettivamente da Wdi e μi. Wdi devono essere normalizzati per essere uguali a ei. In questo modo abbiamo ridotto la quantità di calcoli, che prima era dell‘ordine di N (numero di pixel dell‘immagine), all‘ordine del numero di immagini del training set. Gli autovettori CAPITOLO 2: TENICHE DI RICONOSCIMENTO DEL VOLTO 8 trovati possono essere ordinati in modo decrescente a seconda gli autovalori ad essi associati [4]. Gli autovettori ai quali sono associati gli autovalori più grandi sono quelli più utili nella caratterizzazione delle immagini ed è possibile farne uso come base per descrivere le varie immagini dei volti. Inoltre per avere una descrizione accurata delle immagini, che permetta di attuare il riconoscimento, è sufficiente sfruttare un numero più basso di autovalori M‘, utilizzando soltanto gli autovettori ai quali sono associati gli autovalori più grandi [4]. Ogni immagine viene trasformata nelle sue componenti, chiamate eigenface, attraverso una semplice operazione: vi Il vettore dei pesi eiT wi i con i = 1,.....,M‘. = [v1,v2...vM‘ ]T descrive il contributo di ogni eigenface nella rappresentazione dell‘immagine originale. Questo vettore viene utilizzato come pattern, nell‘algoritmo di riconoscimento, per trovare a quale classe di volti appartiene l‘immagine in ingresso. Il metodo più semplice per trovare a quale classe di volti appartiene l‘immagine è quello di trovare la classe k che minimizza la distanza euclidea k dove k || ( k ) || è il vettore che descrive il k-esima volto. Se k è minore di una certa soglia prefissata allora il volto in ingresso è classificato con la k-esima classe. Se per nessuna lasse la distanza scende al di sotto della soglia allora il volto è classificato come sconosciuto, e opzionalmente si può creare una nuova classe. Distanze molto grandi indicano invece che l‘immagine presentata in input non è un‘immagine di un volto. Riassumendo, l‘approccio PCA per il riconoscimento del volto, è composto da due fasi [5]: • Inizializzazione del sistema: 1. Acquisire l‘insieme di immagini caratteristiche dei volti di individui conosciuti. Questo insieme di deve includere un adeguato numero di immagini per persone, con qualche variazione di luce e espressione. CAPITOLO 2: TENICHE DI RICONOSCIMENTO DEL VOLTO 9 2. Calcolare a partire dalla matrice di WTW gli autovalori e autovettori della matrice di covarianza. Scegliere M‘ autovettori ai quali sono associati gli autovalori più grandi. 3. Per ogni individuo conosciuto calcolare il vettore di classe k. Scegliere inoltre la soglia al disotto della quale un pattern è considerato della classe, e la soglia con quale considerare un immagine non di un volto. • Funzionamento del sistema: 1. Calcolare il vettore dei pattern. 2. Determinare se l‘immagine è un volto (conosciuto o no) controllando se l‘immagine è sufficientemente chiusa nello spazio dei volti. 3. Se l‘immagine è un volto confrontare i pesi con quelli dei volti salvati per trovare se la persona è conosciuta o no. Il metodo più famoso il letteratura che applica gli eigenface è quello proposto da Turk and Pendland [6], che si basa sull‘espansione di Karhunenmain. Successivamente sono state proposte numerose ottimizzazioni del metodo, utilizzabili in diverse applicazioni [7,8]. CAPITOLO 2: TENICHE DI RICONOSCIMENTO DEL VOLTO 10 Figura 2.1: Metodo PCA 2.3 Hidden Markov Model (HMM) Questo modello, inizialmente usato per l‘analisi ed il riconoscimento di segnali vocali e di testo, è stato applicato al dominio dei volti umani in [9]. I modelli HMM sono usati per caratterizzare le proprietà statistiche di un segnale; per fare questo il modello HMM è costituito da due processi indipendenti: una catena di Markov a stati finiti, un insieme di densità di probabilità associate ad ogni stato della catena. Con l‘uso delle catene di Markov per il processing delle immagini come fatto in [10], si è visto che le stesse possono essere utili per processare anche immagini di volti umani, il tutto abbastanza velocemente. Ogni catena di Markov è costituita da una serie di elementi: N numero degli stati del modello, S è l‘insieme degli stati, S = {S1,S2,….SN}, M è il numero di simboli osservati. CAPITOLO 2: TENICHE DI RICONOSCIMENTO DEL VOLTO 11 Se V è l‘insieme di tutti i possibili simboli (il codebook) allora V = {v1,v2,….vm}. Possiamo esprimere una catena di Markov attraverso un tripla: ( A, B, ) dove A = (aij) è la matrice delle probabilità di transizione ed ogni suo elemento aij indica la probabilità, per un certo istante, di passare dallo stato i, nell‘istante successivo, nello stato j. aij con il vincolo che 0 ai , j P[qt S j | qt N 1 e che Si ],1 i, j 1 a j 1 ij 1,1 i N N. B = {bj(k)} è la matrice delle probabilità dei simboli osservati, in cui b j (k ) con vincoli 1 j N ,1 k P | [Ot vk | qt Sj] M , dove Ot è il simbolo osservato al tempo t. è la distribuzione iniziale degli stati, i ={ i } dove P[q1 Si ],1 i N Per le immagini frontali possiamo individuare cinque regioni facciali che sono significative: i capelli, la fronte, gli occhi il naso e la bocca. Esse appaiono in quest‗ordine analizzando un‘immagine dall‘alto in basso, ma appaiono sempre in quest‘ordine anche se l‘immagine è ruotata. Ognuna di queste regioni è assegnata ad uno stato di una catena di Markov monodimensionale. La struttura di questa catena è visibile nella successiva immagine. Estrazione feature In considerazione del fatto che ogni immagine ha una larghezza Q e un‘altezza H, per l‘estrazione delle feature si divide l‘intera immagine in blocchi di altezza L e larghezza W. I blocchi saranno sovrapposti di una grandezza P. il numero di blocchi estratti da ogni singola immagine è pari a T H L L P 1 CAPITOLO 2: TENICHE DI RICONOSCIMENTO DEL VOLTO 12 e la scelta di parametri P e L va fatta con molta attenzione perché influiscono pesantemente sulla velocità di estrazione. Figura 2.2: HMM per il riconoscimento facciale Figura 2.3: Estrazione feature per il riconoscimento facciale con HMM Training del modello Ogni elemento nel database iniziale di immagini è rappresentato da un modello HMM associato ( ( A, B, )) ed è inizializzato opportunamente. Si cercano i coefficienti della catena massimizzando P(O | ) finché un certo valore di soglia C risulta accettabile, | P(O | ( k 1) ) P(O | (k ) )| C Test riconoscimento con HMM Per associare un‘identità ad una nuova immagine, su cui non è stato addestrato il sistema in precedenza, si deve valutare l‘equazione P (O ( t )| k ) max n P(O ( t ) | Dove t è la nuova immagine, e k è la faccia identificata. n CAPITOLO 2: TENICHE DI RICONOSCIMENTO DEL VOLTO 13 2.4 Riconoscimento attraverso reti neurali Una rete neurale è formata da una serie di unità parallele di elaborazione, detti neuroni (o nodi). Questi nodi sono interconnessi con dei rami che mutuano il funzionamento del cervello degli esseri viventi, infatti i neuroni biologici sono interconnessi attraverso le sinapsi. Nel caso dei neuroni artificiali, ad ogni connessione è associato un coefficiente, un peso, per il quale viene moltiplicato il valore che attraversa quella connessione. Il riconoscimento facciale attraverso reti neurali è stata una delle prime dimostrazioni dell‘impiego pratico di reti neurali in [11] si dimostra come una semplice rete neurale poteva essere addestrata a riconoscere un volto contenuto in un‘immagine normalizzata ed allineata. Il tipo di rete adoperata in quell‘esempio ha analizzato una faccia a partire da una sua rappresentazione compressa, attraverso cioè l‘uso degli auto vettori della matrice di autocorrelazione dell‘immagine. Tale modalità di rappresentare un‘immagine in forma sintetizzata è stata adoperata in altre analisi, che non coinvolgevano per forza le reti neurali. Questi auto vettori, infatti, sono conosciuti col nome di ―eigenface‖ o auto facce, nella versione italiana del termine, e sono usati da algoritmi come il PCA. Il sistema di Kohonen, applicato a questo dominio, non ha avuto un successo pratico immediato, a causa della necessità di quella implementazione di dover allineare un‘immagine per normalizzarla. Nel capitolo successivo si analizzeranno varie tipologia di reti neurali, e per questo, se ne rinvia a quelle pagine una descrizione più approfondita. 14 Capitolo 3 Reti Neurali I sistemi di elaborazione dell‘informazione anno portato l‘automazione nei processi che sono stati per molti anni di esclusiva pertinenza degli umani, ad esempio la conservazione di documenti o il calcolo matematico. Con l‘intelligenza artificiale si tende a spingere oltre i limiti delle sole operazioni ripetitive, rendendo possibile l‘automazione del ragionamento simbolico e la creazione di sistemi esperti, che sono in grado, cioè, di sostituirsi a provati esperti del settore nel caso in cui si debba risolvere un problema. Nonostante queste interessanti applicazioni, ancora molto deve essere fatto affinché le macchine esprimano un comportamento paragonabile a quello di un umano. La mente umana è infatti il frutto di un processo evolutivo durato migliaia di secoli e replicare l‘esatto funzionamento del cervello, usando modelli matematici di calcolo simbolico, è abbastanza difficile. Ci sono una serie di casi in cui l‘uso di algoritmi classici, basati sull‘elaborazione simbolica, risultano poco adatti. Pensiamo, ad esempio, al riconoscimento del testo o all‘estrazione automatica di semantica da un documento. Per questi ed altri problemi non è facile associare, attraverso un algoritmo, un significato e, quindi, una caratterizzazione simbolica ad un particolare ingresso. Per questo, sono stati introdotti modelli di calcolo che non sono necessariamente basati sul concetto di algoritmo, come sequenza di elaborazione simbolica degli ingressi. Per alcuni compiti specifici questo approccio classico risulta complicato da realizzare, se non impossibile. Per l‘architettura delle reti neurali artificiali si è preso spunto dalla natura, dove l‘unità base che costituisce il sistema nervoso centrale di un essere vivente è il neurone. Sebbene il funzionamento del cervello nel suo insieme ancora sia oggetto di studi, anatomicamente si conosce già la struttura dell‘encefalo. Il componente fondamentale è appunto il neurone che, attraverso dei processi elettrochimici è in grado di generare segnali elettrici. Il neurone è composto da un corpo principale, detto soma, e due rami, i dendriti e l‘assone. In un cervello umano ci sono più di100 miliardi di neuroni, ciascuno connesso a circa altri CAPITOLO 3: RETI NEURALI 15 10.000. Nelle interconnessioni che ogni cellula neuronale ha avviene la sinapsi, che è un processo elettrochimico che rinforza o inibisce l‘interazione cellulare tra i due neuroni che la condividono. Questi segnali elettrici sono perfettamente rilevabili e misurabili attraverso l‘uso di opportune strumentazioni e. secondo molti studiosi di scienze cognitive, sarebbero proprio questi segnali il segreto della capacità cognitiva. Inoltre, vari esperimenti hanno evidenziato come le strutture cerebrali e le sinapsi siano influenzate dalle esperienze del soggetto e dell‘ambiente in cui vive: è quindi la particolare architettura dei legami e delle interconnessioni tra le cellule cerebrali che definisce le capacità funzionali di porzioni di cervello. 3.1 Storia delle reti neurali La ricerca sulle reti neurali artificiali cominciò negli anni ’40, ispirata da considerazioni sulla fisiologia del cervello umano [12]. Nel 1943 Warren Mc-Culloch e Walter Pitts introdussero il primo modello per il neurone artificiale, basato su assunzioni che permettevano di costruire elementi propri dei circuiti logici quali AND e OR. Le assunzioni di Mc-Culloch e Pitts si possono riassumere in una serie di semplici proposizioni: Un neurone è un circuito a scatto che può essere o attivo o inattivo; Ciascun neurone ha una determinata tensione di soglia; Un neurone riceve input da sinapsi eccitatrici dello stesso peso; Un neurone riceve input addizionale da sinapsi inibitrici con un effetto "tutto nulla": una sola sinapsi può inibire l'attivazione del neurone; Vi è un intervallo di tempo finito per il processing del segnale d'ingresso; se non vi è alcuna sinapsi inibitrice attiva, gli ingressi eccitatori sono sommati fra loro e il neurone diventa attivo se la somma eccede la tensione di soglia. CAPITOLO 3: RETI NEURALI 16 In realtà il neurone di Mc-Culloch e Pitts corrisponde ad un neurone naturale in maniera molto limitata. Vi sono vari aspetti fisiologici che non sono presi in considerazione. Il neurone è una piccola stazione elettrochimica: nello stato di riposo mantiene sulla sua membrana una tensione di –70mV. Ciò è causato dalla concentrazione degli ioni sodio che è 10 volte più alta fuori dal neurone che dentro di esso. Se il neurone è attivato cresce la permeabilità della membrana cellulare agli ioni sodio, che fluiscono dentro la cellula. Allo steso tempo ioni potassio fluiscono fuori dalla cellula. Per un millisecondo l‘interno della cellula diviene positivo (raggiunge una tensione di +40mV) rispetto all‘ambiente circostante. Dopo che l'energia è stata consumata gli ioni sodio sono rimossi dall‘interno della cellula. Nell‘assone avviene un processo simile. Inoltre il neurone di Mc-Culloch e Pitts non è in grado di spiegare il meccanismo grazie al quale il sistema nervoso umano è in grado di apprendere e ragionare. Fig. 3.1: Il neurone di McCulloch e Pitts Le prime idee a questo riguardo furono formulate nel 1949 da Donald O. Hebb, il quale postulò che il processo d'apprendimento rafforza le connessioni fra due neuroni se il neurone pre-sinaptico e quello post-sinaptico sono attivi contemporaneamente. Questo meccanismo è noto con il nome di "plasticità sinaptica" e, nell‘ambito delle moderne teorie sulla natura neurofisiologica dell‘apprendimento, è un modello universalmente accettato. Negli anni ‘50 e ‘60 si arrivò allo sviluppo delle prime reti neurali artificiali con la capacità di apprendere nel senso indicato da Hebb. Il modello di neurone usato era il "percettrone", introdotto da Frank Rosemblatt nel 1958. Le unità di processing erano simili al neurone di Mc-Culloch e Pitts, mentre le sinapsi erano costituite da connessioni di diverso peso, che poteva essere cambiato durante il processo d'apprendimento. Per questo tipo di reti si può provare che il processo d'apprendimento conduce ad un successo se la soluzione del CAPITOLO 3: RETI NEURALI 17 relativo problema sussiste in una ben determinata forma (teorema di convergenza per il percettrone) Nel 1960 Bernard Widrow e Marcian Hopf svilupparono il modello ADALINE (Adaptive Linear Neuron). Come il percettrone questo è in grado di imparare ad eseguire classificazioni su insiemi di dati omogenei sulla base di una regola d'apprendimento denominata "delta rule". In realtà i due modelli citati consistono di un singolo strato di neuroni con ingressi multipli pesati e un solo output. Il neurone computa le somme pesate degli input e sulla base di questo calcola il suo valore di attivazione. E‘ poi semplice estendere il modello ad un modello a due strati, nel quale il primo strato ha l‘unico scopo di raccogliere una serie di valori e di propagarla verso lo strato di uscita. Fu nel 1969 che Marvin Minsky e Seymour Papert mostrarono che il modello ad uno strato non è capace di risolvere problemi che appartengono alla classe dei problemi "non separabili", della quale è un esempio significativo il problema di implementare la funzione XOR. Furono questi due autori che mostrarono che a questo scopo è necessario almeno uno strato nascosto di neuroni. Inoltre essi mostrarono che il percettrone è formalmente equivalente al calcolo di un predicato logico e svilupparono un'analisi esauriente relativa ai problemi delle reti neurali su questa base. Fu grazie a loro che si fece un grosso passo avanti nello stabilire quali problemi sono solubili da parte di una rete neurale e quali no. Allo stato attuale delle ricerche gli studi più attuali e significativi sono dovuti a David E. Rumelhart, Geoffrey E. Hinton e Ronald J. Williams che (1986) estesero la "delta rule" di Widrow e Hopf ai percettroni multistrato con funzioni di attivazione continue e differenziabili, sviluppando il metodo di apprendimento detto della "backpropagation". Questo consiste nel propagare l‘errore relativo ad un certo target che la rete produce in output a ritroso, usandolo per aggiustare i pesi della rete neurale. CAPITOLO 3: RETI NEURALI 18 3.2 Struttura di un nodo, funzioni di attivazione Il neurone Artificiale è il modello matematico semplificato del neurone biologico. La sua struttura base (detta nodo) è l‘unita di calcolo elementare nelle reti neurali. Il funzionamento è piuttosto semplice, e viene descritto dalla seguente figura. Fig. 3.2: Struttura di un nodo base Come si evince, ciascuna unità esegue una computazione semplice: riceve i segnali dai suoi collegamenti di ingresso e calcola un nuovo livello di attivazione che invia lungo tutti i suoi collegamenti di uscita. Il calcolo del livello di attivazione è basato sul valore di ciascuno dei segnali di ingresso ricevuti dai nodi vicini e sui pesi (indicati con la lettera w) di ciascuno dei collegamenti di ingresso. Il calcolo è suddiviso tra due componenti. In primo luogo una componente lineare, chiamata funzione di ingresso calcola la somma pesata dei valori d'ingresso del nodo. In secondo luogo una componente non lineare chiamata funzione di attivazione (indicata spesso con la lettera g), trasforma la somma pesata nel valore finale che funge da valore di attivazione per l'unità (indicato con a). In genere tutti i nodi di una rete utilizzano la stessa funzione di attivazione. L‘ingresso pesato totale è dato dalla somma dei prodotti delle attivazioni in ingresso (indicate con la lettera x) per i rispettivi pesi (indicati con w): n I wi xi i 1 Ad ogni passo elementare di calcolo, ciascuna unità calcola il suo nuovo valore di attivazione applicando la funzione di attivazione g al risultato ottenuto per la funzione di ingresso. CAPITOLO 3: RETI NEURALI 19 Usando funzioni diverse come g si possono ottenere modelli differenti. Tre scelte comuni sono la funzione a gradino, la funzione di segno e la sigmoide. La funzione a gradino ha una soglia t tale che il risultato è 1 quando l‘ingresso supera questa soglia ed è 0 altrimenti. La motivazione biologica è che 1 rappresenta l‘emissione di un impulso lungo l‘assone mentre uno 0 rappresenta l‘assenza di una tale emissione. La soglia individua l‘ingresso pesato minimo che fa in modo che il neurone invii l‘impulso. Si possono definire versioni dotate di soglia anche per le funzioni di segno e sigmoidale. In molti casi risulta più conveniente sostituire la soglia con un peso d‘ingresso extra. Questo consente di avere un elemento di apprendimento più semplice in quanto ci si deve preoccupare solo di modificare dei pesi piuttosto che modificare anche le soglie. Quindi invece di avere una soglia t, si considera per ciascun nodo un ingresso aggiuntivo, la cui attivazione è fissata a -1. Il peso extra associato ricopre il ruolo della soglia t; in questo modo tutte le unità possono avere una soglia fissata a 0. Fig 3.3: funzioni di attivazione classiche 3.3 Tipi di architettura Esiste una notevole varietà di strutture possibili per le reti, ciascuna delle quali conduce a proprietà computazionali molto diverse. La prima distinzione da fare è quella tra reti alimentate in avanti e ricorrenti. In una rete alimentata in avanti i collegamenti sono unidirezionali e non ci sono cicli. In una rete ricorrente i collegamenti possono formare CAPITOLO 3: RETI NEURALI 20 configurazioni arbitrarie. Da un punto di vista tecnico una rete alimentata in avanti è un grafo diretto aciclico. In genere avremo a che fare con reti organizzate in strati. In una rete alimentata in avanti stratificata ciascuna unità è connessa unicamente a unità dello strato successivo: non ci sono collegamenti tra unità di uno stesso strato né all'indietro verso uno strato precedente, e inoltre non ci sono collegamenti che saltano uno strato. Fig. 3.4: Esempio di rete a 3 strati La figura mostra un esempio molto semplice di rete alimentata in avanti stratificata. Questa rete ha due strati. Poiché le unità di ingresso (nodi in) servono semplicemente a passare le attivazioni allo strato successivo, essi non sono considerati nel conto (anche se alcuni autori attribuirebbero a questa rete tre strati). L'assenza di cicli e significativa perché implica che la computazione può procedere uniformemente dalle unità di ingresso alle unità di uscita. Le attivazioni in intervalli di tempo precedenti non svolgono alcun ruolo nel calcolo in quanto non vengono inviate all'indietro. Una rete alimentata in avanti, quindi, si limita semplicemente a calcolare una funzione dei valori di ingresso che dipende dalla distribuzione dei pesi — non ha alcuno stato interno diverso dai pesi stessi. Tali reti possono implementare versioni adattive di semplici agenti con riflessi o possono servire come componenti in agenti più complessi. Ovviamente il cervello non può essere una rete alimentata in avanti in quanto in questo caso non avremmo memoria a breve termine. Alcune regioni del cervello sono largamente CAPITOLO 3: RETI NEURALI 21 alimentate in avanti e in qualche modo stratificate, ma ci sono anche delle evidenti connessioni all'indietro. Nella nostra terminologia, il cervello è una rete ricorrente. Poiché l'attivazione viene ripassata indietro alle unità che l'hanno provocata, le reti ricorrenti hanno uno stato interno immagazzinato sotto forma di livelli di attivazione delle unità. Questo significa che la computazione tende ad essere molto meno ordinata che nelle reti alimentate in avanti. Le reti ricorrenti possono diventare instabili, oscillare o comportarsi in modo caotico. Dati dei valori di ingresso può servire molto tempo per calcolare un'uscita stabile e l'apprendimento e reso molto più difficile. D'altro canto le reti ricorrenti possono implementare agenti più complessi e possono modellare sistemi dotati di stato. Riguardo alle reti alimentate in avanti, c'è un'altra importante distinzione da fare. Si esamini la figura 1, che mostra la topologia di una rete neurale molto semplice. In basso ci sono le unità di input. Il valore di attivazione di ciascuna di esse è determinato dall'ambiente. In alto nella rete c'e un'unità di output. Tra di esse i nodi nel livello centrale non hanno connessioni dirette con l'esterno. Questi sono chiamati unità nascoste, perché non possono essere osservati direttamente tenendo sotto controllo il comportamento di input/output della rete. Alcune reti, per esempio i percettroni, non hanno unità nascoste. Questo significa da un lato che l'apprendimento diventa un problema molto più semplice e dall'altro che i percettroni sono molto limitati in ciò che possono rappresentare. Le reti con uno o più strati di unità nascoste sono chiamate reti multistrato. Con uno strato sufficientemente grande di unità nascoste si può rappresentare qualsiasi funzione continua degli ingressi. Con due strati si possono rappresentare anche funzioni discontinue. Con una struttura fissa e funzioni di attivazione g fissate le funzioni rappresentabili da una rete alimentata in avanti sono limitate ad avere una specifica struttura parametrizzata. I pesi scelti per la rete definiscono quale di queste funzioni è effettivamente rappresentata. Si osservi che poiché le funzioni di attivazione g sono non lineari, l'intera rete rappresenta una complessa funzione non lineare. Se si pensa ai pesi come a parametri o coefficienti di questa funzione allora l'apprendimento diventa semplicemente un processo di aggiustamento dei parametri in modo da farli corrispondere ai dati nell'insieme di addestramento — un procedimento che gli statistici chiamano regressione non lineare. Da un punto di vista statistico questo è quello che le reti neurali fanno. In base alla configurazione delle connessioni di rete, le diverse architetture possono essere raggruppate in due classi: CAPITOLO 3: RETI NEURALI 22 le reti ad alimentazione in avanti (feed-forward) in cui il grafo non contiene spire formate con rami di ritorno all‘indietro; le reti ricorrenti con reazione (recurrent or feedback) in cui si formano spire di reazione a causa di connessioni orientate all‘indietro. Diversi modi di collegare a rete i neuroni, cioè connettività diverse, corrispondono comportamenti di rete diversi. In generale si può dire che le reti feed-forward sono statiche nel senso che esse forniscono solo un insieme di valori di uscita piuttosto che una sequenza di valori per un dato ingresso. Queste reti danno una risposta che è indipendente dallo stato precedente all‘applicazione del segnale di ingresso, in un certo senso si può quindi dire che non hanno memoria del loro stato (non però del loro approfondimento, come si vedrà). Viceversa le reti feedback sono sistemi dinamici. Quando si presenta una nuova configurazione del segnale di ingresso, le uscite dei neuroni vengono calcolate tenendo conto dei cammini di reazione. Questi contribuiscono a modificare gli ingressi dei neuroni il che conduce la rete ad assumere un nuovo stato. Non necessariamente il progettista di una rete neurale deve diventare un teoricomatematico di queste reti, perché la conoscenza sperimentale operativa dei pro e dei contro relativi alle differenti architetture, può aiutare a scegliere quella più adatta a risolvere lo specifico problema che interessa. Il modo in cui i neuroni vengono connessi a rete è però strettamente correlato all‘algoritmo di apprendimento da usare per addestrare la rete. Differenti architetture richiedono algoritmi di apprendimento differenti perché gli insiemi dei pesi che risolvono un dato problema sono generati seguendo l‘algoritmo di apprendimento. Il modello di rete ad alimentazione in avanti più famoso è senz'altro il percettrone (o Perceptron) I modelli più noti di reti ricorrenti con reazione sono le Reti di Hopfield e le macchine di Boltzmann. CAPITOLO 3: RETI NEURALI 23 3.4 Tipi di apprendimento Vi sono tre grandi paradigmi di apprendimento, ciascuno corrispondente ad un particolare compito astratto di apprendimento. Si tratta dell'apprendimento supervisionato, apprendimento non supervisionato e l'apprendimento per rinforzo. Di solito un tipo di architettura di rete può essere impiegato in uno qualsiasi di tali compiti. Apprendimento Supervisionato (supervised learning): qualora si disponga di un insieme di dati per l'addestramento (o training set) comprendente esempi tipici d'ingressi con le relative uscite loro corrispondenti: in tal modo la rete può imparare ad inferire la relazione che li lega. Successivamente, la rete è addestrata mediante un opportuno algoritmo (tipicamente, la backpropagation che è appunto un algoritmo d'apprendimento supervisionato), il quale usa tali dati allo scopo di modificare i pesi ed altri parametri della rete stessa in modo tale da minimizzare l'errore di previsione relativo all'insieme d'addestramento. Se l'addestramento ha successo, la rete impara a riconoscere la relazione incognita che lega le variabili d'ingresso a quelle d'uscita, ed è quindi in grado di fare previsioni anche laddove l'uscita non è nota a priori; in altri termini, l'obiettivo finale dell'apprendimento supervisionato è la previsione del valore dell'uscita per ogni valore valido dell'ingresso, basandosi soltanto su un numero limitato di esempi di corrispondenza (vale a dire, coppie di valori input-output). Per fare ciò, la rete deve essere infine dotata di un'adeguata capacità di generalizzazione, con riferimento a casi ad essa ignoti. Ciò consente di risolvere problemi di regressione o classificazione. Apprendimento non Supervisionato (unsupervised learning): basato su algoritmi d'addestramento che modificano i pesi della rete facendo esclusivamente riferimento ad un insieme di dati che include le sole variabili d'ingresso. Tali algoritmi tentano di raggruppare i dati d'ingresso e di individuare pertanto degli opportuni cluster rappresentativi dei dati stessi, facendo uso tipicamente di metodi topologici o probabilistici. L'apprendimento non supervisionato è anche impiegato per sviluppare tecniche di compressione dei dati. Apprendimento per rinforzo (reinforcement learning): Un opportuno algoritmo si prefigge lo scopo di individuare un certo modus operandi, a partire da un processo d'osservazione dell'ambiente esterno; ogni azione ha un impatto sull'ambiente, e CAPITOLO 3: RETI NEURALI 24 l'ambiente produce una retroazione che guida l'algoritmo stesso nel processo d'apprendimento. Tale classe di problemi postula un agente, dotato di capacità di percezione, che esplora un ambiente nel quale intraprende una serie di azioni. L'ambiente stesso fornisce in risposta un incentivo o un disincentivo, secondo i casi. Gli algoritmi per il reinforcement learning tentano in definitiva di determinare una politica tesa a massimizzare gli incentivi cumulati ricevuti dall'agente nel corso della sua esplorazione del problema. L'apprendimento con rinforzo differisce da quello supervisionato poiché non sono mai presentate delle coppie input-output di esempi noti, né si procede alla correzione esplicita di azioni sub-ottimali. Inoltre, l'algoritmo è focalizzato sulla prestazione in linea, la quale implica un bilanciamento tra esplorazione di situazioni ignote e sfruttamento della conoscenza corrente. Il sistema di reti neurali che verrà presentato nel capitolo cinque usa l’apprendimento supervisionato, quindi riteniamo opportuno approfondire ulteriormente la tecnica di backpropagation nel paragrafo successivo. 3.5 Backpropagation Questa tecnica si basa sulla valutazione dell‘errore commesso dalla rete neurale in funzione dei parametri della rete stessa e sulla sua diminuzione tramite una modifica dei parametri operata nella direzione del gradiente della funzione errore. Per via della necessità di calcolare il gradiente della funzione calcolata dalla rete neurale, tale tecnica può essere utilizzata solo se la funzione di attivazione dei neuroni è derivabile rispetto ai parametri da configurare [13]. L‘algoritmo modifica i parametri di configurazione in base al contributo che essi danno alla diminuzione dell‘errore. A ogni passo di apprendimento, si presenta un esempio agli ingressi della rete neurale, si calcola la relativa uscita prodotta dalla rete, e la si confronta con il valore di uscita atteso. La differenza tra il valore di uscita dell‘esempio e il valore di risposta della rete neurale costituisce l‘errore commesso dalla rete stessa. Procedendo a ritroso dall‘uscita della rete verso i neuroni più interni, si calcola il gradiente dell‘errore CAPITOLO 3: RETI NEURALI 25 rispetto ai parametri dei neuroni considerati e lo si utilizza per modificare i parametri stessi in modo da far diminuire l‘errore. Per esempio, si consideri una rete feed-forward multistrato a due strati nascosti per l‘approssimazione di una funzione reale definita sull‘insieme dei numeri reali (quindi, con un neurone di ingresso ed uno di uscita). L‘insieme di addestramento sarà composto da un insieme di coppie di numeri reali, (xi, yi) , quale descrizione del comportamento di tale funzione. Il neurone dello strato di ingresso funge da distributore del valore presentato in ( 0) ingresso e ha funzione di attivazione lineare ( S1 x ). L‘uscita dei neuroni del primo strato sarà: S (1) j f (1) wk(1) x (1) j k Tali valori costituiscono l‘ingresso del secondo strato nascosto, che fornirà in uscita: Si(2) f (2) (1) wi(2) ,j Sj (2) i j Infine, lo strato finale (per semplicità un neurone lineare) produrrà l’uscita della rete neurale: wi(3) Si(2) y i La presentazione alla rete dell‘esempio (x,y) comporta un errore di approssimazione E pari a E y ~ y 2 L‘errore viene usualmente calcolato utilizzando il quadrato della distanza tra l‘uscita attesa e l‘uscita reale in modo da ottenere un valore indipendente dal segno e facilmente derivabile. L‘algoritmo di backpropagation, sfruttando la proprietà della derivata di funzioni composte, aggiorna i pesi sinaptici con le seguenti regole: wi(3) E wi(3) E y y wi(3) CAPITOLO 3: RETI NEURALI wi(2) ,j w(1) j 26 E y Si(2) y Si(2) wi(2) ,j E wi(2) ,j E w(1) j (1) E y Si(2) S j y Si(2) S (1) w(1) j j Dove η è il fattore di adattamento (o tasso di apprendimento) che controlla la velocità con cui si cerca di discendere verso il minimo dell‘errore. Analoghe formule possono essere derivate per gli altri parametri della rete (per esempio per le soglie) [14]. L‘algoritmo di backpropagation soffre di alcuni problemi. Il più grave è l‘incapacità di riuscire a evitare i minimi locali della funzione errore. Quando si verifica questa situazione, si ha che piccole variazioni dei parametri fanno aumentare l‘errore, mentre una variazione dei parametri di ampia entità consentirebbe di diminuirlo, ma il valore di η adottato non consente di spostarsi a sufficienza. Inoltre, l‘algoritmo di backpropagation non dà garanzie sul numero di iterazioni necessarie per giungere nel minimo dell‘errore. Per questi motivi, sono generalmente adottate alcune varianti dell‘algoritmo di backpropagation, quali il simulated annealing e l‘uso dei momenti. Il simulated annealing prende il nome da una tecnica utilizzata in metallurgia, che consiste nel riscaldare un metallo e poi raffreddarlo seguendo una ben determinata curva di raffreddamento che consente di orientare i cristalli in maniera ottimale. Nell‘algoritmo di backpropagation, il simulated annealing consiste nell‘aggiungere nella funzione errore un termine casuale che la renda priva di minimi locali all‘inizio dell‘addestramento. Il valore di questo termine si riduce progressivamente con il procedere dell‘addestramento, facendo emergere pian piano la vera forma dell‘errore. L‘ipotesi su cui si fonda questa tecnica è che il minimo globale emerga prima degli altri minimi e che la rete riesca a individuarlo prima che emergano gli altri minimi locali. Lo svantaggio principale è il notevole incremento del costo computazionale. La tecnica dei momenti consiste nell‘aggiungere un termine moltiplicativo al tasso di apprendimento, η, in modo che quest‘ultimo aumenti se si sta seguendo un percorso che riduce l‘errore, ma che diminuisca se invece l‘errore tende a crescere. CAPITOLO 3: RETI NEURALI 27 3.6 Tipi di rete Nei prossimi paragrafi verranno ora presentati alcuni tipi fondamentali di reti neurali: il percettrone (modello base), la SOM, la GNG e la LVQ (il tipo di rete utilizzata nel nostro sistema, in una delle sue varianti). Infine verrà presentato un paragrafo relativo alle reti neurali modulari. 3.6.1 Percettrone Il percettrone è un caso particolare di rete neurale, in cui una qualsiasi uscita della rete è completamente indipendente dalle altre perché ciascun peso influenza solo uno degli output. Questa caratteristica rende una rete neurale basata sui percettroni di ―semplice‖ analisi. Nella figura successiva viene mostrato un esempio di rete a singolo strato; si può osservare come ogni uscita sia calcolata indipendentemente dalle altre, infatti non esistono archi (e dunque pesi) che legano la computazione di un‘uscita ad un‘altra. Fig. 3.5: reti di percettroni Le funzioni di trasferimento dei vari nodi sono funzioni a gradino, di conseguenza ogni singolo percettrone può produrre in uscita solo due valori: 0 e 1. Le unità elementari possono facilmente rappresentare le funzioni booleane semplici AND, OR e NOT. Per poter rappresentare funzioni più complesse, per esempio lo XOR, un singolo percettrone CAPITOLO 3: RETI NEURALI 28 non è sufficiente, ma bisogna affidarsi ad una rete multistrato ottenuta mettendo in cascata più percettroni. L‘addestramento di queste reti è un addestramento supervisionato. Esiste un algoritmo per percettrone in grado di apprendere qualsiasi funzione linearmente separabile a condizione che gli vengano forniti abbastanza esempi di prova. Inizialmente la rete ha dei pesi assegnati; essa viene quindi aggiornata nel tentativo di renderla consistente con gli esempi attraverso piccole modifiche dei pesi, in modo da ridurre la differenza tra i valori previsti e quelli effettivamente misurati, finché non si ottiene la convergenza alla soluzione corretta. Generalmente il processo d‘apprendimento (quindi l‘aggiornamento dei pesi) viene suddiviso in epoche, nelle quali si aggiornano tutti i pesi tenendo conto di tutti gli esempi forniti all‘algoritmo d‘apprendimento. Per i percettroni la regola d‘apprendimento è abbastanza semplice: viene di fatto calcolato l‘errore come differenza tra il valore auspicato per il singolo esempio e il valore realmente calcolato dal percettrone e riportato in output: Errore (E) = Valore corretto (T) – Output percettrone (Y) Se l‘errore E è positivo, l‘algoritmo di apprendimento deve far crescere Y, viceversa se E è negativo. Esiste un teorema che ci assicura che se il problema è risolvibile da un percettrone allora questo algoritmo condurrà alla soluzione in un numero finito di passi. 3.6.2 SOM La rete SOM (Self Organizing Maps) è un tipo di rete sviluppata da Teuvo Kohonen nel 1982 [15]. In questo tipo di rete l‘apprendimento non è supervisionato, quindi non bisogna conoscere a priori le classi in uscita (sarà la rete, dopo essere stata addestrata, a dirci a quale cluster appartiene l‘input). Topologicamente questa rete si caratterizza per uno schema a due strati, uno di input ed uno di output (quest‘ultimo comunemente chiamate strato di Kohonen). I neuroni dei due strati sono completamente connessi fra loro, mentre i neuroni dello strato di output sono connessi ciascuno con un ―vicinato‖ di neuroni, secondo un sistema di inibizione laterale definito a ―cappello messicano‖. CAPITOLO 3: RETI NEURALI 29 Fig. 3.6: cappello messicano Le interazioni laterali intorno al neurone vincitore sono funzioni della distanza: si eccitano i neuroni più vicini, si inibiscono quelli più lontani. Anche se esistono versioni più complesse, nella versione più semplice c‘è un solo vincitore e l‘apprendimento è di tipo competitivo. Il vincitore è il nodo che risulta avere il suo vettore dei pesi più simile al vettore in ingresso; questa modalità di scegliere il nodo vincitore è nota con il nome di winner takes all. Nella fase di addestramento, una volta scelto il vincitore, si regolano i pesi per avvicinarli ancora di più al vettore in ingresso. Le SOM a differenza delle altre reti adottano una funzione di contorno per preservare le proprietà topologiche dello spazio dei dati input. La SOM definisce un mapping dallo spazio dei dati di input x1…xn ad un array monodimensionale o bidimensionale di nodi. Il mapping è eseguito in modo che la relazione topologica nello spazio n-dimensionale di ingresso si mantiene constante quando associata alla SOM. Inoltre, la densità locale dei dati in ingresso si riflette anche sulla mappa: le zone dello spazio dei dati in input che sono rappresentati da più informazioni vengono mappati su una maggiore superficie della SOM. CAPITOLO 3: RETI NEURALI 30 Fig. 3.7: Architettura SOM Ogni nodo sulla mappa è definito da un vettore di pesi wij che è modificato durante la fase di training, che è molto semplice e si riduce ai seguenti passi: 1. Si selezione un oggetto dal training-set 2. Si trova il nodo che è più vicino ai dati, ad esempio usando la distanza tra il wij e il vettore in ingresso 3. Si regolano i vettori dei pesi del nodo vincitore e dei nodi che rientrano nel suo vicinato, in modo che il suo wij si muova verso il dato in ingresso 4. Si ripete dal passo 1 per un numero prefissato di passi. In ogni passo però si riduce sia il tasso di apprendimento sia la dimensione del vicinato (bolla). 3.6.3 Growing Neural Gas (GNG) L‘algoritmo GNG, pubblicato da Bern Fritzke nel 1994 [16], è un algoritmo di clustering non supervisionato competitivo. Dati in input una serie di dati distribuiti in Rn, GNG in modo incrementale crea un grafo, o rete di nodi, distribuiti anch‘essi in R n. GNG può essere utilizzato oltre che per la clusterizzazione dei dati, anche per trovare la struttura topologica dei dati presentati in ingresso. E‘ anche capace di adattarsi a piccoli cambiamenti nella distribuzione dei dati che possono verificarsi nel tempo, muovendo i suoi nodi in modo da rappresentare la nuova distribuzione. CAPITOLO 3: RETI NEURALI 31 L‘algoritmo è suddiviso in tre fasi principali, l’addestramento (o inizializzazione), la fase di presentazione e la fase di valutazione. Fase di inizializzazione: In questa fase viene inizializzata la rete e vengono settati i parametri dell‘addestramento. Costruzione di un elenco che contiene i nomi (indici) delle unità di categorizzazione presenti nella rete in ogni dato istante. Inizialmente ci sono due unità. Assegnazione casuale a queste unità di vettori di pesi delle connessioni. Questi vettori contengono tanti elementi quanti sono gli elementi contenuti nei vettori di ingresso che verranno mostrati alla rete nella fase di addestramento. Ad ogni unità di categorizzazione viene assegnato un valore numerico chiamato errore locale inizialmente posto a 0. Scelta della durata dell‘apprendimento T e di un sottomultiplo n di T. Dopo n presentazioni si controlleranno gli errori locali delle varie unità di categorizzazione e si deciderà se incrementare il loro numero. Scelta del fattore di apprendimento dei pesi che fanno capo all‘unità vincitrice in corrispondenza di un particolare esempio di addestramento. Scelta del fattore di apprendimento dei pesi che fanno capo alle unità che sono in relazione di vicinato con l‘unità vincitrice in corrispondenza di un particolare esempio di addestramento. Scelta di un parametro amax, ovvero della massima età di una relazione di vicinato, oltre la quale tale relazione viene cancellata. Scelta del tasso di diminuzione dell‘errore locale accumulato dalle unità di categorizzazione quando la relazione di vicinato tra loro viene modificata inserendo una nuova unità. Scelta del tasso di diminuzione dell‘errore locale accumulato da tutte le unità presenti al termine di ogni singolo passo di apprendimento. Fase di funzionamento: inizialmente si calcola il numero totale di epoche di apprendimento e per ognuna di queste epoche si hanno due sotto fasi [16]: CAPITOLO 3: RETI NEURALI 32 Fase di presentazione: vengono presentati gli elementi che fanno parte del training set e per ognuno di questi elementi si calcolano le distanze euclidee tra il vettore v (pattern in ingresso) e i singoli vettori dei pesi delle varie unità di categorizzazione presenti i quel momento. Successivamente si ordineranno in modo crescente queste unità a seconda della rispettiva distanza euclidea calcolata. Se esiste una relazione di vicinato tra le prime due unità si assegna ad essa un‘età pari a 0 mentre se non esiste si crea aggiungendola alla tabella. Si aggiungerà poi all‘errore locale accumulato dall‘unità vincente una quantità pari al quadrato dalla distanza euclidea tra il vettore v e il vettore dei pesi. Verranno poi modificati sia i pesi dell‘unità vincitrice che delle unità che hanno relazioni di vicinato con essa. Infine si aumenta di uno l‘età di ciascuna delle relazioni di vicinato che coinvolgono l‘unità vincitrice e si elimineranno quindi quelle relazioni che hanno un‘età superiore ad amax. Unità rimaste isolate vengono rimosse. Fase di valutazione: in questa fase vengono esaminati gli errori locali accumulati dalle singole unità di categorizzazione. Si determina quale unità ha il massimo valore dell‘errore locale accumulato che indichiamo con q (Eq errore di q e Wq i pesi). Tra le unità che hanno relazioni di vicinato con q si determina quale di esse ha il massimo errore locale e la indichiamo con f. Si aggiungerà alle unità di categorizzazione una nuova unità r che avrà come pesi la media dei pesi di f e q. Si toglierà dalle relazioni di vicinato la relazione fra f e q e si aggiungeranno le relazioni fra r e f e r e q. Si decrementeranno infine gli errori delle unità q e f. L‘errore locale di r sarà pari alla media dell‘errore di q e f. 3.6.4 LVQ Le reti Learnig Vector Quantization (LVQ), ideate da Teuvo Kohonen nel 1989 [17], sono dei classificatori multinomiali di tipo probabilistico con algoritmo di apprendimento competitivo e supervisionato. In quanto classificatori multinomiali, sono reti supervisionate sottoposte ad una fase di training durante la quale devono visionare vettori di input allo scopo di classificarli correttamente. I vettori di input del set di training sono articolati in classi; per ogni vettore di input la classe di appartenenza costituisce il target della rete. In quanto reti di tipo probabilistico, funzionano come classificatori decisionali CAPITOLO 3: RETI NEURALI 33 Bayesiani e, inoltre, definiscono i bordi delle classi di regioni nello spazio dei dati in input. A tal fine ogni regione viene sotto articolata per permettere che si costituiscano delle sotto classificazioni dei vettori di input. Ad ogni classe vengono quindi assegnati alcuni vettori chiamati codebook e tramite il metodo della Quantizzazione Vettoriale (VQ) si permette la approssimazione dei vettori più vicini nello spazio degli input secondo la regola KNearest-neighbor. In quanto reti competitive le LVQ si basano sul principio ―Winner takes all‖, che si traduce nella possibilità di limitare a correzione al solo codebook più simile all‘input. L‘operatività delle LVQ è espressa nelle due fasi di training e di testing; laddove la prima è utilizzata per addestrare la rete a classificare un campione di pattern secondo target prestabiliti, la seconda è utilizzata per far classificare alla rete pattern nuovi sprovvisti di target nelle classi precedentemente impostate. Il principio base sul quale è stata formulata la LVQ è il metodo della quantizzazione vettoriale (VQ) per la codifica dei segnali. La VQ determina una approssimazione alla funzione di densità di probabilità p(x) di una variabile continua stocastica x uso di un numero finito di vettori mi Rn , facendo R n , i=1,2,…k, denominati ―codebook‖. Nel metodo classico il segnale x in arrivo è confrontato con tutti i codebook presenti per misurarne la distanza vettoriale ed è quindi mappato nel codebook mc più simile tra gli mi. In sintesi nelle LVQ tale metodo è articolato nel modo seguente: i segnali di input del training set, in generale una distribuzione di vettori X=(x 1,x2,…xn) di variabili continue in uno spazio Rn sono associati ad un numero finito di classi; ad ogni classe sono assegnati un numero finito di codebook delle stesse dimensioni dei vettori X di input. Mediante un processo iterativo, in cui vengono a turno presentati in pattern di input, sono minimizzate le distanze tra i codebook e i vettori di input. L‘architettura base delle LVQ prevede tre strati unidimensionali di nodi: uno strato di input (I), uno strato intermedio chiamato ―di Kohonen‖ (K) e uno strato di Output (O). CAPITOLO 3: RETI NEURALI 34 Fig. 3.8: Architettura base di una rete LVQ Il numero N di nodi di Input è relativo al numero dei tratti con cui sono stati codificati i pattern, X=(x1 , x2 , ..., xN ). Lo strato di input non compie alcuna funzione di preprocessamento dei dati in ingresso, ma li registra su vettore. Il numero di nodi che vengono assegnati allo strato intermedio K fa parte della progettazione dell‘architettura della rete. Questo è un compito particolarmente delicato in quanto ogni nodo dello strato K rappresenta un codebook i cui valori sono le connessioni che ogni nodo K intrattiene con i nodi di input. Il generico nodo dello strato K verrà indicato come Kj , con j = (1,2,. . . ,M). Lo strato K è lo strato effettivo della rete. L‘attivazione di ogni suo nodo è calcolata, ad ogni ciclo, come distanza vettoriale di tipo euclideo, nella formulazione più comune, tra il vettore dei pesi connessi a quel nodo e il vettore del pattern di input. Lo strato O di output ha un numero C di nodi di output equivalente al numero di classi. Il generico nodo dello strato O verrà indicato come O z , con z = (1,2,...,C). Secondo la formulazione base, ad ogni ciclo viene attivato solo il nodo di output connesso con il nodo Kj la cui attivazione è minore, cioè il cui codebook è più simile al vettore di input. Esistono unicamente connessioni verticali tra strati adiacenti. Le connessioni sono totali tra gli n nodi dello strato I e gli m nodi dello strato K e quindi la matrice dei pesi W sarà composta da n × m valori, mentre le connessioni sono dedicate tra i p × c nodi dello strato K e i c nodi dello strato O. Nella logica del funzionamento di questa rete, il vettore in W j che CAPITOLO 3: RETI NEURALI 35 contiene i pesi delle connessioni tra il j-esimo nodo dello strato K e l‘input rappresenta il ―codebook‖ dell‘input. In quanto reti competitive le LVQ hanno un addestramento che si basa sul principio ―Winner Take All‖ (WTA), che si traduce nella possibilità di limitare la correzione dei pesi, al solo nodo più simile all‘input [58]. Quando viene mostrato alla rete un nuovo pattern, il nodo che viene attivato nello strato output sarà quello connesso al codebook più vicino al pattern in input. Se la classe a cui appartiene il nodo è la stessa del pattern in ingresso allora viene premiato muovendo il codebook verso il pattern. Nel caso contrario il nodo viene punito allontanando il codebook dal pattern in ingresso. Fig. 3.10: modifiche pesi neurone vincente Oltre alla versione ―base‖, esistono varianti della LVQ che si basano sull‘idea che il vettore in ingresso è approssimativamente alla stessa distanza sia dal vincitore che dal secondo vincitore, e quindi entrambi i vettori dei pesi dovrebbero essere aggiornati. LVQ 2 La principale di idea di questa variazione è che quando il nodo vincitore non rappresenta la categoria corretta, mentre il secondo vincitore la rappresenta, si addestrano entrambi. Questo avviene soltanto se la distanza dc tra il nodo vincitore e l‘input e la distanza dr tra il secondo vincitore e l‘input sono simili. Quindi se dc dr 1 dr dc costante che dipende dal numero dei campioni dell‘addestramento. Se questa condizione è verificata allora: 1 dove è una CAPITOLO 3: RETI NEURALI 36 wrnew wrold (x p wrold ) nodo vincitore wcnew wcold (x p wcold ) secondo vincitore Quindi praticamente viene avvicinato al vettore input il codebook del secondo vincitore, e allontanato dal vettore input il codebook del nodo vincitore. LVQ 2.1 In una ulteriore procedura di ottimizzazione del LVQ la condizione per cui il nodo vincitore non deve appartenere alla stessa classe del pattern mostrato in input viene abbandonata. Quindi vengono addestrati in ogni caso sia il vincitore sia il secondo vincitore, con le medesime regole utilizzate in LVQ LVQ 3 In quest‘ottimizzazione si considerano i due codebook più vicini presi dal pattern in ingresso. Prima di modificare i vettori di questi due nodi deve verificarsi che: min[ dc1 dc 2 , ] dc 2 dc1 (1 )(1 ) Se uno dei due vettori appartiene alla stesa classe del vettore di ingresso, e l‘altro vettore appartiene ad un‘altra classe si ritorna a LVQ 2.1. Se entrambi i vettori appartengono alla stessa classe, i pesi si aggiornano come segue: wcnew wcold (x p wcold ) dove m . La costante m solitamente è settata tra i valori 0.1 e 0.5. 3.7 Reti neurali modulari L‘ispirazione per i modelli modulari di reti neurali è dovuta a ragioni che sono principalmente biologiche e fisiologiche. Si è scoperto, oramai da molti anni, che la chiave del funzionamento efficiente di un sistema nervoso risiede anche nella sua modularità. All‘inizio del capitolo abbiamo scritto che il cervello lavora come una black box: elabora gli stimoli ambientali e fornisce le risposte adatte per raggiungere un obiettivo o una CAPITOLO 3: RETI NEURALI 37 risposta; inoltre la conoscenza dell‘ambiente è integrata nel sistema nervoso grazie ai collegamenti neurali che si formano nel processo di sviluppo. Se da un lato possiamo considerar, quindi, un cervello come un‘entità elaborativa centralizzata, sappiamo che in realtà non è proprio così: molti esperimenti in neuropsicologia indicano che un cervello con lesioni circoscritte può portare ad avere specifici problemi (es. una disfunzione del linguaggio) ma lasciare intatte le altre funzioni cognitive. Ciò ci suggerisce che il cervello è organizzato in moduli funzionali, in cui ogni regione svolge compiti specifici. In generale si può definire come ―modulare‖ un sistema che può essere separato in due o più parti, nelle quali possono essere identificati gli input e gli output che sono relativi solo a quel sottosistema. La risposta complessiva del sistema modulare dipende da come le risposte dei singoli sottosistemi sono combinate. Un sistema modulare offre vari vantaggi rispetto ad un sistema centralizzato: una maggiore semplicità progettuale, una più elevata efficienza computazionale, una certa tolleranza agli errori ed una maggiore possibilità di espansione. Un altro grande vantaggio dei sistemi modulari è che permettono di risolvere problemi complessi, dividendoli in diversi sottoproblemi di ù facile soluzione. I sotto-problemi sono elaborati da moduli diversi, specializzati ognuno su quello specifico ambito e, quindi, ogni modello computazionale locale risulta di molto semplificato rispetto al modello globale e centralizzato. Grazie a queste sue caratteristiche il paradigma della modularità di reti neurali è adatto al problema del riconoscimento biometrico [18]. In ogni caso i singoli moduli presentano sempre una lista di caratteristiche: I moduli hanno un loro dominio specifico, che ne detta l‘architettura per rispondere ad un dato compito, che è solo una parte di quello generale Ogni modulo è indipendente dagli altri per il suo funzionamento e non è influenzato dagli altri L‘architettura dei singoli moduli è in genere più semplice di quella del sistema globale ed anche grazie a questa caratteristica, la risposta di un singolo modulo è più veloce rispetto a quella di un singolo sistema monolitico CAPITOLO 3: RETI NEURALI 38 Le risposte dei singoli moduli sono semplici ma devono essere combinate da un qualche meccanismo di coordinamento, per formulare una risposta del sistema nel suo insieme I vantaggi che rendono uno schema modulare di reti neurali più apprezzato rispetto ad un tradizionale sistema monolitico sono tanti, e di ovvia comprensione; alcuni di questi sono la robustezza, la scalabilità, la riduzione della complessità, l‘efficienza computazionale e l‘economia dell‘apprendimento. 39 Capitolo 4 Logica Fuzzy e sistemi Neuro-Fuzzy In questo capitolo verranno introdotti i fondamenti della logica fuzzy, un tipo di logica polifunzionale che estende la logica booleana. Anche definita ―logica sfumata‖, viene spesso utilizzata parallelamente alle reti neurali, per creare dei sistemi ibridi che cercano di unire i vantaggi di tutte e due le strutture, minimizzando gli svantaggi. Prima verrà fatta una panoramica sulla storia della logica fuzzy, dalla sua introduzione a metà degli anni 60 fino ai tempi recenti; successivamente vengono spiegate le regole base, e i processi di trattazione dei dati; infine, verranno elencati vantaggi e svantaggi dei sistemi neuro fuzzy. 4.1 Storia della logica Fuzzy Nei primi anni sessanta, Lofti A. Zadeh, professore all‘università di Berkeley, cominciò ad avvertire che le tecniche tradizionali di analisi dei sistemi erano eccessivamente ed inutilmente accurate per molti dei problemi tipici del mondo reale. L‘idea di grado d‘appartenenza, il concetto divenuto poi la spina dorsale della teoria degli insiemi sfumati, fu da lui introdotta nel 1964, e ciò portò in seguito (nel 1965) alla pubblicazione di un primo articolo, ed alla nascita della logica fuzzy [19,20]. Il concetto di logica sfumata attirò le aspre critiche della comunità accademica; ciononostante, studiosi e scienziati di tutto il mondo (dai campi più diversi) cominciarono a compiere ricerche su questo argomento. In particolare in Giappone la ricerca sulla logica fuzzy cominciò con 2 piccoli gruppi universitari fondati sul finire degli anni settanta: uno a Tokyo e uno a Kanasai. Al pari dei ricercatori americani, questi studiosi si scontrarono nei primi tempi con un‘atmosfera fortemente avversa alla logica sfumata; alla fine i più importanti contributi alla ricerca vennero proprio da questi due gruppi di studio. CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 40 Nel 1974, in Gran Bretagna, venne sviluppato il primo sistema di controllo di un generatore di vapore, basato sulla logica fuzzy. Nel 1976 si ebbe la prima applicazione industriale di questa logica, per il controllo di una fornace per la produzione di cemento. Nel corso degli anni 80, diverse importanti applicazioni industriali della logica fuzzy furono lanciate con pieno successo. La logica sfumata ha avuto anche importanti applicazioni in campo finanziario, come la compravendita azionaria (sempre in Giappone), rivelandosi molto efficiente; infine dal 1994 è disponibile il Toolbox per la logica fuzzy nel programma MATLAB, che permette a tutti di comprendere meglio e utilizzare la logica sfumata [21]. 4.2 Concetti fondamentali Il concetto alla base della logica introdotta da Zadeh è il concetto relativo agli ―insiemi fuzzy‖. Infatti nei fuzzy set, che sono oggi la base della moderna fuzzy logic, la veridicità di una proposizione può assume valori compresi nell'intervallo tra 0 e 1 e non solo nei suoi estremi. Tale logica può essere definita in contrapposizione alla logica tradizionale. Quest‘ultima si basa su concetti quali il principio di non contraddizione, o il principio del terzo escluso. Nella logica classica degli insiemi dati due insiemi A e !A (non-A) il principio di non contraddizione stabilisce che ogni elemento appartenente all‘insieme A non può contemporaneamente appartenere anche a !A; secondo il principio del terzo escluso, d‘altro canto, l‘unione di un insieme A e del suo complementare costituisce l‘universo del discorso. La logica sfumata invece, prevede il concetto di ―grado di appartenenza‖ di una funzione ad un insieme; in‘altre parole, la veridicità di una proposizione può assumere valori compresi nell‘intervallo tra 0 e 1 e non solo nei suoi insiemi. Prendiamo ad esempio una serie di 3 classi di temperature: Bassa, Media e Alta. La classificazione della temperatura può essere allora espressa "classicamente" da una stringa di tre bit ognuno dei quali esprime la verità; con la quale la temperatura appartiene alla corrispondente classe: ad esempio una temperatura T sotto la prima soglia di bassa sarà associata alla stringa [1 0 0]; viceversa per una temperatura media si avrà [0 1 0] e per una alta [0 0 1]. CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 41 Nel caso fuzzy i bit vengono rimpiazzati da valori (detti Fit=Fuzzy digit) che variano con continuità da zero a uno perché così; viene espressa la misura di verità degli enunciati, ovvero il grado di appartenenza dei valori di temperatura alle varie classi. La stessa temperatura T può quindi appartenere contemporaneamente a varie classi, con gradi di verità differenti: ad esempio [0.4 0.6 0] per una temperatura medio bassa o [0 0.6 0.4] per una temperatura medio alta. Si intuisce subito come la descrizione della realtà sia migliore; Quello che era un paradosso se descritto in modo binario viene quindi risolto da una descrizione fuzzy nella quale esso costituisce un enunciato "vero a metà". Più in generale l'opposto di una stringa di verità fuzzy è costituita dalla stringa dei complementi ad uno di tali valori di verità. [21] Se rappresentiamo i valori di veridicità tra 0 e 1 come nel grafico nella figura seguente, si vede subito che con la logica classica possiamo rappresentare solo i vertici del cubo, mentre con la logica sfumata possiamo rappresentare l‘intero volume della figura. Fig. 4.1: Logica Fuzzy CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 42 4.3 Funzioni di appartenenza Un insieme o classe fuzzy A in X è; un insieme di coppie ordinate della forma (μ A(x),x) dove il secondo termine è un elemento appartenente a X, mentre il primo rappresenta l'appartenenza di tale elemento con l'insieme A. L'appartenenza di x in A può quindi non essere totale, e variare in modo continuo tra appartenenza nulla e appartenenza al 100%. Per convenzione si considera l'appartenenza come una funzione che associa ad ogni elemento del dominio un valore compreso in [0,1]. La notazione per indicare che A è un insieme fuzzy su un dominio non fuzzy X (o equivalentemente A è sottoinsieme fuzzy di X) è A if X. L'appartenenza di un generico elemento x con un insieme fuzzy A può quindi essere formalizzata mediante la nozione di funzione di appartenenza (membership function) μA(x) dell'insieme fuzzy A così definita: A ( x) : X [0,1] cioè μA associa ad ogni punto x in X un valore compreso tra 0 e 1 che rappresenta il grado di appartenenza di x in A. Più questo valore si avvicinerà ad uno, e più sarà alto il grado di appartenenza di x in A. I casi limite di zero e uno rappresentano i valori assunti dalla funzione caratteristica per insiemi nel senso ordinario. Questi ultimi vengono detti insiemi crisp e conseguentemente la logica classica su di essi fondata diventerà logica crisp. L'idea che segue da queste prime definizioni è che questi ultimi insiemi (e, come si vedrà, con essi la logica) rappresentino un caso particolare della più generale logica fuzzy. 4.4 Operazioni sugli insiemi Dato che i valori di verità degli enunciati non sono più binari, risulta necessario ridefinire gli operatori logici elementari (AND, OR, NOT) [22]; di seguito verranno presentati le funzioni ridefinite CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 43 4.4.1 Negazione La negazione si può definire intuitivamente come il complementare della funzione di appartenenza: nonA ( x) 1 A ( x) Di cui si può avere una interpretazione geometrica nella figura seguente Fig. 4.2: Fuzzy NOT 4.4.2 Unione (OR) La formula per effettuare l‘unione è la seguente AorB ( x) max( A ( x); B ( x)) Alternativamente si possono usare anche le seguenti formule AorB ( x) A ( x) AorB ( x) min( B A ( x) ( x) A B ( x) B ( x) ( x);1) Fig. 4.3: Fuzzy OR CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 44 4.4.3 Intersezione (AND) Infine l‘intersezione si può rappresentare con AandB ( x) min( A ( x); B ( x)) Anche per l‘AND, come per l‘unione, esistono formule alternative che possono essere usate nei vari casi, e sono AandB ( x) A ( x) AandB ( x) max( B A ( x) ( x) B ( x) 1;0) Fig. 4.4: Fuzzy AND 4.5 Sistemi Fuzzy Le idee ispirate della logica fuzzy hanno trovato vasto impiego nell'ambito dei sistemi di regolazione e controllo dei processi industriali nonché nel campo degli algoritmi dell'intelligenza artificiale per la simulazione di processi decisionali umani. Inoltre i cosiddetti sistemi di inferenza fuzzy, ovvero sistemi di controllo basati sulla logica fuzzy, sono stati applicati con successo in campi quali il controllo automatico, la classificazione dei dati, l'analisi decisionale, sistemi esperti, e computer vision. In questo capitolo vediamo come funziona un generico sistema di inferenza fuzzy, avvalendoci dell'esempio di una semplice regolazione di temperatura. Generalmente lo schema tipico di un sistema fuzzy è quello riportato nella figura seguente CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 45 Fig. 4.5: Schema base sistema fuzzy Generalmente lo schema tipico di un sistema fuzzy è quello riportato nella figura precedente. Le grandezze fisiche misurate vengono "fuzzificate" in base a certe predefinite funzioni di appartenenza allo scopo di derivarne una rappresentazione fuzzy. Queste vengono poi elaborate in base ad una serie di regole del tipo IF ... THEN allo scopo di determinare la forma fuzzy della variabile d'uscita del ragionamento. Infine questa viene defuzzificata allo scopo di ricavare un valore numerico deterministico ("crisp") da assegnare alla variabile d'uscita (y). Vediamo ora più in dettaglio i processi di fuzzificazione e defuzzificazione. 4.5.1 Fuzzificazione Parlando di fuzzificazione si intende l procedimento attraverso il quale le variabili di ingresso vengono convertite in misure fuzzy della loro appartenenza a determinate classi come ad esempio Nulla, Bassa, Media, Alta, Molto Alta. Tale conversione da grandezze deterministiche a fuzzy viene effettuata attraverso le funzioni di appartenenza predefinite per quelle classi. Data una membership function μ A e rilevato un valore x° la conversione di x° in un insieme fuzzy consiste nel complemento dell'alpha-cut dell'insiema A alla quota alpha=μA(x°) ovvero nell'insieme: A ' {x | A' ( x) min( A ( x ), A ( x))} CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 46 Dato che il valore x° può "intercettare" più di una funzione di appartenenza esso genera più insiemi fuzzy ciascuno rappresentato dalla associata membership function decapitata alla quota corrispondente proprio all'intercetta. Fig. 4.6: Fuzzificazione 4.5.2 Defuzzificazione La forma fuzzy dell'uscita non costituisce però un valore molto utile, specialmente per un attuatore come un'elettrovalvola. Occorre pertanto riconvertirlo in valore deterministico attraverso un'operazione detta di "defuzzificazione". Per ottenere questo risultato sono stati proposte diverse metodologie di calcolo, le più utilizzate delle quali sono le seguenti: Media dei massimi: Il valore dell‘uscita viene ottenuto come media aritmetica dei valori di y in corrispondenza dei quali è massima l‘altezza del fuzzy set inferito dalle regole. Sia cioè B‘ il fuzzy set e hgt ( B ') { y | B' ( y) sup B ' ( y)} l‘insieme dei valor di y per i quali y B' è massima l‘altezza mB‘(y). Si ha allora che: ydy Yout hgt ( B ') dy hgt ( B ') CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 47 Fig. 4.7: significato geometrico della media dei massimi Media pesata dei centri: Il valore dell'uscita viene ottenuto come rapporto tra la somma dei centri dei fuzzy set d'uscita pesati con i corrispondenti valori inferiti per essi dalle regole e la somma di tali pesi. Siano cioè b i i valori inferiti dalle regole per i diversi fuzzy set relativi alla variabile di uscita e siano yi i centri dei diversi fuzzy set; matematicamente si può allora scrivere: yi bi Yout i bi i Fig. 4.8: Significato geometrico della media pesata dei centri I diversi calcoli di defuzzificazione devono essere plausibili, nel senso che il risultato deve essere conforme a quanto desiderato in fase di sintesi dell‘algoritmo; essi possono essere considerati in base alla valutazione di differenti criteri: Continuità: un piccolo cambiamento di valore degli ingressi non deve portare ad un enorme mutamento nel valore dell‘uscita Complessità computazionale Accuratezza 4.6 Sistemi Ibridi I sistemi basati sulla logica fuzzy si fondano sull'osservazione delle modalità con cui il cervello tratta l' informazione "incerta" o approssimata. Laddove invece le reti neurali rappresentano una modellizzazione della tipica architettura fisica del cervello. Sebbene, CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 48 dunque, l'ispirazione originale sia essenzialmente differente, vi sono in realtà molte potenzialità accomunabili fra i due modelli. Sin dalla prima apparizione ufficiale della logica fuzzy, la sua efficacia dipese dalla scelta cruciale delle sue funzioni di appartenenza, dalle regole di controllo e dal meccanismo dell'inferenza fuzzy. L'uso delle reti neurali per automatizzare e sintetizzare la progettazione di un sistema decisionale, basato sulla logica fuzzy, rappresenta allora un approccio innovativo ed una soluzione alle principali difficoltà insite nel processo di ottimizzazione del sistema. Principalmente, il concetto di reti neurali addestrabili sintetizza l'idea di impiegare le loro capacità di apprendimento per imparare ad estrapolare in maniera automatica i principali parametri che caratterizzano un sistema basato su logica fuzzy, dalle funzioni di appartenenza, alle regole del controllo fuzzy. Fondamentalmente, la logica fuzzy, come abbiamo visto, nasce come strumento per rappresentare e manipolare l'informazione incerta e per provvedere alla gestione ed utilizzo dell'incertezza ed imprecisione nelle applicazioni legate al mondo reale. Viceversa le reti neurali nascono come strumento per formalizzare ed implementare in sistemi artificiali le capacità computazionali, il principio di autoriparazione, e le capacità di apprendimento dei sistemi biologici. L'unione in un unico modello artificiale delle due tecniche rafforza ed amplifica queste loro peculiarità. Infatti le reti neurali forniscono la struttura connessionista, mentre la logica fuzzy fornisce le regole semantiche con cui dirigere il flusso delle informazioni all'interno della struttura, dotando le reti neurali di potenti e flessibili regole decisionali del tipo IF ... ELSE con cui codificare ed interpretare i "mattoni" del ragionamento e del pensiero dell'intero modello artificiale. Questa fusione fra i due modelli identifica dunque la soluzione al tentativo di unificare le capacità di apprendimento a basso livello con le capacità di pensiero e ragionamento a più alto livello, che, nel modello biologico, rappresentano l'essenza del concetto di intelligenza. In questo senso essi condividono la comune abilità nel potenziare l'intelligenza di sistemi interagenti in un ambiente incerto, impreciso e rumoroso. Entrambi i modelli hanno mostrato elevate capacità di modellizzazione di processi complessi reali con arbitrari livelli di accuratezza. Di conseguenza, le due tecnologie possono essere reciprocamente complementari, con le reti neurali poste a garantire la necessaria potenza di calcolo per interpretare grandi quantità di dati sensoriali e la logica fuzzy adibita al ruolo di amplificatore delle capacità di CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 49 interpretazione dell'informazione preselezionata a più basso livello. Dunque la maggior parte dei modelli neuro-fuzzy esistenti sono essenzialmente identificabili come sistemi basati su regole fuzzy, in cui le reti neurali sono utilizzate per l'apprendimento e l'adattamento. Logica fuzzy e reti neurali sono entrambi approcci alla modellizzazione dei sistemi che si possono fare rientrare nella vasta categoria dei metodi propri del soft computing. Sia le reti neurali sia gli algoritmi fuzzy risolvono problemi propri del loro dominio sfruttando una loro caratteristica capacità di approssimazione di funzioni. In tutti questi casi manca un modello matematico del problema in esame e non e' necessaria una forma di conoscenza "a priori". La rete neurale è una "black box", cioè non si sa cosa succeda all'interno del modello, e non si possono trovare regole logiche per descrivere i suoi stati finali. Inoltre non è possibile insegnare alla rete nulla anche nel caso si abbia un bagaglio di conoscenza preesistente. Un ulteriore svantaggio è il fatto che il processo di apprendimento può essere lungo e non convergere. Un aspetto che va annoverato fra i vantaggi delle reti neurali e' la tolleranza ai cambiamenti di input e di struttura. Tuttavia, se questi cambiamenti sono sensibili, a volte è necessario rieseguire l'addestramento, con conseguente ulteriore perdita di tempo e risorse. Un sistema fuzzy può essere usato per risolvere un problema se si possiede una conoscenza della soluzione in termini di regole "if-then": dopo avere definito fuzzy set adatti, si può creare un sistema fuzzy da queste regole. Non si necessita quindi di un modello formale del sistema e nemmeno di dati di training. Tuttavia, se non si e' in grado di esprimere l'algoritmo in termini di regole "if-then", l'algoritmo fuzzy non può essere programmato. Per quanto riguarda la robustezza del sistema, può accadere che un "tuning" non preciso per un solo fuzzy set abbia conseguenze gravi su tutto il processo. Come detto nella sezione introduttiva, quindi, la ragione più importante che porta a combinare reti neurali e sistemi fuzzy è la possibilità di realizzare sistemi che "apprendono". Dalla tabella si vede peraltro che una combinazione dei due metodi può portare a soluzioni che uniscono, per quanto possibile, i vantaggi dei due metodi, evitandone gli svantaggi. CAPITOLO 4: LOGICA FUZZY E SISTEMI NEURO FUZZY 50 VANTAGGI RETI NEURALI Non è richiesto alcun modello matematico del processo SISTEMI FUZZY Non è richiesto alcun modello matematico del processo Sono disponibili diversi algoritmi per il training Può essere usata conoscenza "a priori" Semplicità di realizzazione SVANTAGGI RETI NEURALI Scatola nera Non si possono estrarre le regole alla fine dell'apprendimento Può essere difficile l'adattamento a diverse situazioni e necessario un nuovo training Il processo di apprendimento può non convergere SISTEMI FUZZY Devono essere disponibili regole del tipo "if-then" Non possono apprendere Non esistono metodi formali per il tuning dei fuzzy set L'adattamento a diverse situazioni può essere difficile Il tuning può non avere successo 51 Capitolo 5 Face Recognition System In questo capitolo viene brevemente descritto il sistema di riconoscimento facciale usato nel nostro sistema e progettato dallo studente Pasquale Sconciafurno; per un dettaglio migliore, si rimanda alla sua tesi [23]. Il sistema di riconoscimento facciale (FRS) qui proposto è un sistema ibrido, basato sull‘analisi delle feature del volto con un criterio olistico, che usa un insieme di reti neurali per l‘analisi delle caratteristiche delle immagini dei volti, unito ad un sistema di condizionamento Bayesiano. Le reti neurali sono addestrate a riconoscere le feature del volto e, ad ognuna di esse, è associata un‘affidabilità a priori, a seconda del tipo di zona del volto da analizzare. In base alle performance che la rete dimostra di avere ed ai conflitti che la sua risposta causa con quelle delle altre reti, vengono ricalcolati i valori di affidabilità, usando la regola di Bayes. Le nuove affidabilità, con gli insiemi massimamente consistenti delle risposte delle singole reti, sono poi usate per il calcolo della risposta complessiva del gruppo di reti neurali attraverso l‘uso di un algoritmo di sintesi. Se un soggetto evolve nel tempo per una sua caratteristica il sistema si auto aggiorna, attraverso il modulo della retroazione, per continuare a riconoscere quella caratteristica nonostante sia cambiata. Si pongono come vincoli di progettazione alcune limitazioni sul tipo di immagini dei volti e sulle condizioni di luminosità delle immagini da riconoscere, in quanto si immagina che, una volta a regime, il sistema sia installato su di una postazione fissa e che le condizione di illuminazione siano costanti nella fase di cattura delle immagini. CAPITOLO 5: FACE RECOGNITION SYSTEM 52 5.1 Architettura sistema Il sistema è caratterizzato da una struttura modulare, questa caratteristica ne garantisce da un lato l‘espandibilità e dall‘altro permette un maggiore controllo sul funzionamento dei singoli blocchi. I blocchi principali del sistema sono i seguenti: Estrazione feature: Questo blocco si occupa di estrarre le immagini delle caratteristiche del volto da una immagine complessiva dello stesso, che va ad essere analizzato. Reti Neurali: In questa sezione le varie immagini delle feature del volto sono passate alle reti neurali che svolgono il compito del riconoscimento delle caratteristiche. Ogni rete fornirà come risposta una lista di soggetti ordinata in base al grado di confidenza di quel soggetto con l‘immagine in input. Il primo soggetto sarà quello che per la rete è il più simile, l‘ultimo quello meno probabile. Condizionamento Bayesiano: In questo blocco sono analizzate le risposte delle reti per costruire gli insiemi massimamente consistenti ed aggiornare così le affidabilità a posteriori delle reti. Funzione di sintesi: E‘ in questa fase che sono combinati i risultati delle reti e delle loro affidabilità, per stabilire qual è il soggetto finale identificato dal sistema. Sono stati usati due algoritmi diversi, l‘Inclusion Based (nelle due versioni, quella pesata e quella non pesata) e l‘Algoritmo Pesato. Retroazione: Se un soggetto cambia stabilmente una sua caratteristica il sistema deve essere in grado di aggiornare la sua conoscenza, il compito è svolto da questo modulo. CAPITOLO 5: FACE RECOGNITION SYSTEM 53 Fig. 5.1: Schema a blocchi del sistema di riconoscimento facciale 5.2 Estrazione feature Il primo blocco si occupa di estrarre dalle immagini complete del volto i frammenti che rappresentano le feature. Usiamo per l‘analisi le sole feature, perché in questo modo si riduce la quantità dei dati da analizzare, mantenendo solo quella parte che risulta utile ai fini dell‘identificazione dei soggetti: i passi successivi, così facendo, sono eseguiti più velocemente ed il sistema risulta più snello. Nel nostro caso si è deciso di estrarre cinque caratteristiche dai volti: la fronte, l‘occhio sinistro, l‘occhio destro, il naso e la bocca. Ad ogni frammento del volto corrisponderà una rete neurale addestrata a riconoscere i soggetti, analizzando quella specifica feature. La scelta del numero di feature è un parametro di progettazione importante perché, aumentare il numero di feature, consente di aumentare anche gli esperti che pronunciano sul problema dell‘identificazione. In generale più alto sarà il numero, minore sarà la sensibilità al rumore del sistema, dovuto alle variazioni locali dell‘immagine del soggetto. 5.3 Reti neurali Per la classificazione delle immagini delle feature si è ricorso alle reti LVQ. Le Learning Vector Quantization sono spesso usate in quei problemi di classificazione in cui si conosce il numero di classi che fanno parte del sistema. Nel nostro caso una classe è rappresentata dall‘identità di un soggetto. CAPITOLO 5: FACE RECOGNITION SYSTEM 54 Le reti LVQ hanno un‘architettura basata su tre strati: uno di input, uno intermedio nascosto e uno di output. Lo strato di ingresso è totalmente connesso con quello intermedio (detto di Kohonen) e la sua dimensione dipende dalla grandezza del pattern in ingresso; quello intermedio ha un numero variabile di collegamenti con lo strato di uscita e dipende dal numero di vettori codebook associati ad ogni classe, classi che sono poi rappresentate dal numero di nodi di uscita. Nel nostro caso i pattern in ingresso sono le immagini del volto, da una immagine di dimensioni n x m si passa ad un vettore con la stessa lunghezza ottenuto dalla concatenazione delle colonne dell‘immagine. Il numero di elementi di input sarà diverso per ogni rete, visto che è pari alla grandezza dell‘immagine che deve classificare e le varie reti hanno immagini di grandezze diverse. Il numero di neuroni dello strato di uscita, invece, è costante per tutte le reti ed è pari al numero di soggetti da riconoscere. Ad ogni neurone nello stato intermedio è associato un vettore chiamato ―codebook‖, composto dai valori dei pesi delle connessioni tra il neurone e gli elementi dello strato di input. Visto che, nel nostro caso, ogni codebook è associato univocamente ad una sola classe, il numero dei nodi dello strato intermedio coincide con quello dello strato di uscita. La classificazione di nuovi vettori in ingresso avviene confrontandoli con il vettore codebook associato ad ogni classe. In questo modo si ottiene una lista ordinata in base alla distanza euclidea tra vettore in ingresso i-esimo codebook della classe i. Il primo nodo nella lista corrisponde al soggetto che la rete identifica come quello più probabile, l‘ultimo della lista è il soggetto meno simile. L‘addestramento della rete LVQ, come descritto in precedenza nel paragrafo 3.6.4, è di tipo supervisionato e competitivo; consiste nel presentare alla rete le coppie ―immaginisoggetto‖, regolando i pesi della rete in modo che il nodo vincitore sia quello che rappresenta la classe del soggetto. I pesi sono regolati in modo che, se la classe associata a quell‘input è la stessa del pattern di ingresso, allora viene premiato il nodo vincitore, muovendo il codebook verso il pattern; nel caso contrario, il nodo viene punito allontanando il codebook dal pattern. Per l‘addestramento delle reti è stato usato l‘algoritmo LVQ 2.1 che consente di aggiornare i codebook del primo e del secondo nodo vincitore, diminuendo i tempi di addestramento. CAPITOLO 5: FACE RECOGNITION SYSTEM 55 5.4 Condizionamento Bayesiano Il condizionamento Bayesiano è usato per risolvere i conflitti tra gli esperti assegnando un nuovo valore di affidabilità sulla base dei soggetti identificati da ogni rete neurale. Dal momento che ognuna di esse analizza una caratteristica facciale diversa, è possibile che le risposte non convergano su di un unico soggetto: è sufficiente, infatti, che due soggetti si assomiglino per una loro caratteristica per indurre in errore una rete. Ad esempio, due soggetti che indossino lo stesso paio di occhiali possono essere confusi dalle reti deputate al riconoscimento degli occhi. Un primo passo da fare è quello di stabilire il numero massimo di soggetti da prendere in considerazione dalla lista di ogni LV. In base a questo parametro si generano, infatti, più o meno conflitti. Il limite massimo dei conflitti si ha quando si prende tutta la lista dei soggetti: in questo caso abbiamo un numero di conflitti pari al numero dei soggetti; se invece decidessimo di selezionare solo il primo soggetto nella lista di ogni rete, allora il numero massimo di conflitti sarebbe pari al numero delle reti, nel caso ogni rete identificasse un soggetto diverso. Il numero dei soggetti per ogni rete è, quindi, un fondamentale parametro di progettazione. Una volta stabilito il numero dei livelli di soggetti per ogni rete si usa il condizionamento Bayesiano: 1. Si trovano tutti i sottoinsiemi minimali delle fonti in contraddizione; 2. Si trovano tutti i super insiemi che li contengono; 3. Vengono sommate in Rcontraddizione le affidabilità di tali insiemi; 4. Viene posta a zero l‘affidabilità di tali insiemi; 5. Si divide l‘affidabilità di ogni insieme delle fonti non contraddittorie per1Rcontraddizione; 6. Per ottenere l‘affidabilità a posteriori delle singole reti si sommano tutte le affidabilità revisionate di ogni sottoinsieme delle massime consistenze in cui quella specifica sorgente informativa è contenuta. CAPITOLO 5: FACE RECOGNITION SYSTEM 56 5.5 Funzioni di sintesi una funzione di sintesi è necessaria per stabilire quale insieme dei Good sia più credibile per il sistema, sulla base delle affidabilità a posteriori delle reti, ricalcolate grazie al condizionamento Bayesiano. Esistono due algoritmi per effettuare questa operazione: L‘inclusion Based (nella sua versione non pesata e in quella pesata) e l‘Algoritmo Pesato. 5.5.1 Inclusion based e ottimizzazioni Questo algoritmo di sintesi utilizza le nuove affidabilità delle reti in base al condizionamento bayesiano e gli insiemi delle massime consistenze per stabilire un vincitore univoco per tutto il sistema. I passi che seguono questo algoritmo sono i seguenti [24]: 1. Vengono selezionati tutti li insiemi massimamente consistenti che contengono la rete con l‘affidabilità più alta; 2. Se l‘insieme è unico, allora l‘algoritmo si arresta e si seleziona il soggetto associato a quell‘insieme come risultato per il sistema; 3. Altrimenti, se esistono più insiemi, vengono selezionati tutti quelli in cui è presente la seconda rete in ordine di maggiore affidabilità e si ripete il passo 2; Un problema che può presentare l‘Inclusion Based è la dipendenza della soluzione finale dall‘ordinamento usato per le reti. Per eliminare questa dipendenza, esiste una ottimizzazione dell‘algoritmo, chiamato Inclusion Based pesato. Questa versione calcola la distanza euclidea tra i codebook dei nodi delle reti ed i pattern in ingresso, usando questa informazione aggiuntiva per ordinare le reti in base a un peso che gli viene associato. Il metodo funziona come segue: 1. Viene associato un peso P(st) ad ogni insieme Good trovato st S P( st ) N i 1 diC ( st ) CAPITOLO 5: FACE RECOGNITION SYSTEM 57 2. Vengono ordinate le reti secondo la loro affidabilità a posteriori. Nel caso più reti avessero la stessa affidabilità, allora per ognuna di esse viene calcolato un peso: min{ P( st ) con st : niC ( st ) pi st 3. Si applica l‘Inclusion Based con il nuovo ordinamento delle reti. 5.5.2 Algoritmo pesato una caratteristica negativa dell‘Inclusion Based è che nel calcolo degli insiemi massimamente consistenti non viene considerata solo l‘affidabilità delle sorgenti. In questo modo non si usa una parte molto importante delle convinzioni delle reti, ovvero le preferenze tra i soggetti selezionati nelle prime posizioni. Un metodo che cerca di usare anche questa informazione è l‘Algoritmo pesato che assegna un punteggio che è inversamente proporzionale alla distanza del codebook della classe del vettore in ingresso. Sia il sistema composto da N reti neurali e si debbano identificare NC soggetti: indichiamo con dik la distanza euclidea tra il nodo della i-esima rete associato alla k-esima classe e con S l‘insieme dei Good trovati con le risposte. C(st) indica la classe associata all‘t-esimo insieme Good trovato. Inoltre indichiamo con Ri il vettore dei nodi della rete i-esima, ordinato secondo la distanza euclidea tra i suoi nodi ed il pattern mostrato in ingresso, un suo elemento, ri0, conterrà la prima risposta della rete: la classe che ha il codebook più vicino al pattern in input. Con Ai indichiamo l‘affidabilità a posteriori dell‘i-esima rete. Il metodo consiste nei seguenti passi: 1. A tutte le risposte delle reti ri0 (risposta dell‘i-esima rete nella posizione o-esima) viene associato un peso così calcolato: rio (1 i n, 1 o NC ) pio 1 o Il peso di ogni risposta è inversamente proporzionale alla posizione occupata nel vettore delle risposte Ri. Più lontana dalla cima della lista sarà la posizione della risposta e minore sarà il peso associato a quella risposta. 2. Viene associata una coppia di pesi anche ad ogni insieme Good: st S Pa ( st ) rio st Ai pio N CAPITOLO 5: FACE RECOGNITION SYSTEM st S 58 Pa ( st ) N i 1 diC ( st ) Pa è pari alla somma dei prodotti tra i pesi delle risposte e l‘affidabilità della rete che ha dato quella risposta presenti nell‘insieme Good. Il secondo peso Pd è lo stesso usato nel metodo Inclusion Based ottimizzato. 3. Il Good più credibile secondo questo algoritmo è quello associato al peso Pa maggiore. Nel caso in cui più insiemi Good hanno lo stesso valore Pa allora la scelta del Good ricade in quello a cui è associato il peso Pd minore. 5.6 Modulo per la retroazione Questo componente si occupa di aggiornare la conoscenza delle singole reti sulla base dell‘output generato dalla funzione di sintesi utilizzata. Come abbiamo visto fino ad ora, l‘FRS qui proposto usa i contributi di diverse reti neurali per formulare una risposta di sintesi sull‘identità di un soggetto. Per la sua architettura il sistema è poco sensibile ai cambiamenti limitati ad una sola caratteristica del soggetto. Infatti grazie al condizionamento Bayesiano una rete che sbaglia nel riconoscimento vedrà man mano diminuire la sua affidabilità. Dato che poi l‘affidabilità delle reti è usata negli algoritmi di sinesi per la risposta, il contributo della rete che sta sbagliando sarà sempre minore e tenderà, con il passare del tempo, a zero. Ciò se da un lato consente al sistema di riconoscere soggetti che cambiano una loro caratteristica, rende lo stesso poco incline a gestire un ambiente in evoluzione. Se ad esempio un soggetto, in fase di training della rete deputata al riconoscimento della bocca, ha la barba corta e, successivamente, decide di farla crescere, si arriverà ad un punto in cui l‘immagine della sua bocca non sarà più associata a lui, ma ad un altro soggetto, precisamente a colui che ha il codebook, associato al nodo di uscita più vicino a quella nuova immagine. Se le altre reti continuassero ad associare il soggetto alla giusta identità, nonostante il cambiamento sulla zona bocca, allora non ci sarebbero più problemi di identificazione. Per questo sarebbe più utile aggiornare il sistema con la nuova conoscenza rappresentata dall‘immagine che assunto il soggetto. Allo stesso tempo si deve, però escludere la CAPITOLO 5: FACE RECOGNITION SYSTEM 59 possibilità che il sistema aggiorni la sua conoscenza con troppa frequenza. Una eccessiva attenzione su di una caratteristica, che risulta molto mutabile nel tempo, potrebbe causare un numero esagerato di riaddestramenti, e questo non sempre è un fatto positivo; pensiamo, ad esempio, ad un soggetto che a giorni alterni indossi occhiali da vista e lenti a contatto. In questo caso non si dovrebbe aggiornare la conoscenza, perché la caratteristica non cambia stabilmente nel tempo, ma ha una semplice variabilità. Riaddestrare in questo caso sarebbe poco utile o addirittura deleterio: non riaddestrando si avrebbe un riconoscimento nel 50% delle volte; riaddestrando ad ogni cambiamento, invece, non si identificherebbe mai la feature di quel soggetto, visto che si aggiorna la conoscenza che la riguarda ma essa è già cambiata nel frattempo. Per tenere conto dei soli cambiamenti ―stabili‖ si è usato un approccio basato sul concetto di finestra temporale: si tiene traccia di ogni cambiamento per ogni feature e, contemporaneamente, si controlla se, nelle successive analisi dello stesso soggetto, quella caratteristica mantiene la sua modifica, si riaddestra solo nel caso in cui la modifica duri per un tempo maggiore o uguale all‘ampiezza della finestra temporale stabilita. In questo modo evitiamo il caso dell‘esempio precedente, con il soggetto in possesso di una caratteristica molto variabile, limitando il numero di riaddestramenti, che sono comunque abbastanza onerosi in termini di tempo di calcolo e di sforzo computazionale. 60 Capitolo 6 Database di foto Nel capitolo precedente è stato descritto in poche parole il sistema utilizzato per il riconoscimento facciale; per le prime versioni sono stati utilizzati due database, il database ORL e il database FERET. L‘ORL è stato creato dall‘ Olivetti Research Laboratory dell‘università di Cambridge e contiene le immagini di volti scattate tra l‘aprile del 1992 e l‘aprile del 1994. Ci sono 10 immagini differenti di 40 soggetti distinti. Per alcuni soggetti le foto sono state scattate in tempi differenti, con differenti luci ed espressioni del volto (occhi chiusi/aperti, sorridenti non sorridenti). Tutte le immagini hanno lo stesso sfondo nero, e contengono soltanto il volto in posizione frontale (con una piccola tolleranza nello spostamento laterale). Tutti i file sono in formato PNG e hanno una dimensione di 92x112 pixels, con 256 livelli di grigio. Il database FERET è un database standard di volti utilizzato per lo sviluppo e il testing degli algoritmi di riconoscimento. Il programma FERET è sponsorizzato dal dipartimento della difesa americano attraverso la Defense Advanced Research Projects Agency (DARPA). Le immagini sono state scattate in 15 sessioni diverse tra l‘agosto del 1993 e giugno 1996. Ogni sessione durava uno o due giorni. Per mantenere la consistenza delle immagini di tutto il database la locazione e la posizione dei soggetti è rimasta invariata in tutte le foto. Nonostante questi database, si è deciso di crearne un altro, con delle caratteristiche che si adattino meglio all‘FRS e che apporti dei vantaggi tra i quali: Nessun problema di licenza Facilità di aggiornamento CAPITOLO 6: DATABASE FOTO 61 6.1 Creazione database Fortunatamente l‘FRS si è dimostrato molto flessibile, quindi c‘è stata ampia possibilità di scelta delle specifiche tecniche del database. Il set è composto da poco meno di 700 fotografie; i soggetti per il momento sono 12, 7 maschi e 5 femmine, tutti di età compresa tra i venti e i trent‘anni. Le foto sono state scattate tutte nella stessa postazione e con la stessa attrezzatura; come macchina fotografica è stata scelta una Nikon Reflex D60, che permette un vasto range di opzioni per rendere le foto più aderenti alle nostre specifiche; inoltre è stato usato un treppiede, per evitare il più possibile il movimento e la sfocatura. Per ampliare ulteriormente la scelta, è stato deciso di prendere gli scatti in tre posizioni differenti; frontale , profilo destro e profilo sinistro. In questo modo possiamo avere un solo database, oppure 3 sottodatabase in base a come vogliamo testare il sistema. La qualità degli scatti è medio bassa, in quanto non è richiesta un dettaglio altissimo per le applicazioni in cui il sistema dovrebbe lavorare; inoltre l‘FRS si è dimostrato molto affidabile anche con questo tipo di dettaglio e in questo modo si risparmia molto spazio di memoria fisica. Le immagini hanno tutte una risoluzione di 1936 X 1296 pixel; anche se queste dimensioni sono troppo grandi per il sistema, c‘è la possibilità di ridimensionarle in pochissimo tempo, e in questo modo non si perde troppo di dettaglio. Ogni immagine ―pesa‖ tra i 200 e i 300 kB, per un impiego di memoria fisica totale di circa 150 MB. Una volta definite le specifiche tecniche si è passati alla creazione del database; nel prossimo paragrafo verranno descritte le problematiche principali riscontrate nella creazione del database CAPITOLO 6: DATABASE FOTO 62 6.2 Problematiche riscontrate Nella creazione del set di immagini, a parte i problemi di logistica e di ―reperimento‖ dei soggetti, abbiamo incontrato 2 problemi tecnici principali: Cambio di luci ed ombre nello scatto delle foto Difficoltà di classificazione Nelle prime immagini scattate, infatti, ci sono stati dei problemi con le ombre del profilo del volto sullo sfondo neutro utilizzato. L‘FRS considerava le ombre come una parte del volto, e aveva problemi a riconoscere le immagini. Per risolvere questo inconveniente si è dapprima cercato di modificare la luce con ulteriori lampade di supporto, purtroppo senza successo. Infine, avendo riscontrato che non utilizzando il flash (o lampeggiatore) incorporato nella macchina fotografica le ombre non si proiettavano sullo sfondo, si è deciso di scattare le foto senza l‘ausilio del flash. Questo modalità di acquisizione delle immagini ha risolto il problema delle ombre, ma la non uniformità della luce ha fatto sì che permangano variazioni del colore di sfondo, dovuto al fatto che ovviamente le immagini sono state scattate a ore diverse, in giorni diversi, e in condizioni atmosferiche variabili. Comunque la flessibilità del sistema di riconoscimento facciale è molto elevata, e il cambio di luce sullo sfondo non crea un problema per il riconoscimento dei volti (come spiegato nel paragrafo 5.2, la divisione del volto in sezioni permette di isolare i disturbi che non riguardano i contorni delle immagini). Quindi il primo problema tecnico è stato superato senza ulteriori difficoltà. Il secondo problema riscontrato non è di carattere puramente tecnico, ma di fruibilità del sistema. Infatti il database è stato ordinato in 12 cartelle, ognuna delle quali contiene tutte le foto di un solo soggetto. I file delle immagini sono nominati con un codice creato dal software della macchina fotografica, con una sigla iniziale fissa ed un codice numerico sequenziale creato in base alla data di scatto delle foto (es. DSC_0001 per la prima foto scattata, DSC_0500 per la cinquecentesima). Rinominare le foto una per una non avrebbe avuto senso, e d‘altro canto scegliere una a una le foto da inserire nei training set avrebbe un costo di tempo troppo elevato. Per risolvere questo problema, e contemporaneamente per arricchire di contenuto CAPITOLO 6: DATABASE FOTO 63 il database, si è scelto di classificare le foto con un software specifico, creando un sistema di ―tag‖ che renda la selezione e la scelta delle foto molto più rapida. Il software scelto per l‘etichettatura (o taggatura) delle immagini è Picasa, sviluppato dalla società Google Inc. Il software è stato scelto per i seguenti motivi: Licenza freeware Supporto multipiattaforma (MS Windows, Linux, Mac OS X) Facilità di utilizzo Aggiornamento costante Le immagini sono state etichettate secondo certi parametri: innanzitutto il nome del soggetto (per evitare problemi si usano le sigle S1, S2, etc.) e il sesso (MX, FM). Un‘altra etichetta è dovuta alla posizione di scatto della foto: se di profilo (destro o sinistro) oppure se scattata in posizione frontale (FRONTALE, PR SX, PR DX) e infine le caratteristiche aggiuntive della foto. Infatti le immagine sono state prima acquisite ―al naturale‖, cioè è stato scattata una sequenza di foto senza modifiche tra l‘una e l‘altra, che possono servire per addestrare bene il Face Recognition System, successivamente sono state scattate immagini con modifiche leggere (capelli legati diversamente, occhiali da vista, barba leggera). Infine, per testare il sistema in casi particolarmente estremi, sono state prese immagine di casi limite, in cui il volto è difficilmente riconoscibile. Per queste caratteristiche aggiuntive sono state aggiunte etichette come BASE, oppure CAPELLI, CAPPELLO, OCCHIALI. Etichettare le foto in questo modo ha reso la ricerca delle foto giuste da inserire nel training set molto più rapida. Infatti è possibile eseguire grazie a Picasa una rapida ricerca in base alle caratteristiche che si vogliono utilizzare per creare un sotto-database da usare come training set. Il software crea autonomamente selezioni di foto scelte con particolari ―tag‖, che possono essere copiate in una cartella specifica creata appositamente. L‘ultima caratteristica del software (e un altro dei motivi per cui è stato scelto) consiste nel fatto che con Picasa è possibile creare degli efficienti album online, rendendo fruibile il database anche a distanza (come scritto nel paragrafo precedente, il peso del sistema è di 150 MB, facilmente trasferibile con le moderne tecnologie di trasferimento dati sul WEB). 64 Capitolo 7 Conclusioni Con questo lavoro di tesi si è proposto una panoramica sull‘uso dei sistemi ibridi (e in particolare sull‘utilizzo delle reti neurali) per il riconoscimento dei volti partendo da una immagine. Come abbiamo visto nell‘introduzione questa tecnica può essere utile in tantissime applicazioni operative, più o meno approfondite. Questa tesi inoltre propone un lavoro teorico approfondito sulle reti neurali e sulle loro varianti, sulla logica fuzzy e sull‘unione di queste due tecniche per la creazione di sistemi ibridi. Infine questo lavoro di tesi propone una panoramica non approfondita sul sistema di riconoscimento facciale progettato dal dipartimento, e una descrizione dettagliata del database di foto su cui testare e migliorare il sistema, del quale sono stato responsabile della creazione e della classificazione. Sviluppi futuri Gli sviluppi futuri possono riguardare sia il sistema di riconoscimento facciale sia il database di foto. L‘FRS è già una evoluzione di un sistema precedente sempre creato all‘interno del dipartimento, di cui conserva la stessa struttura ma aggiunge il modulo fondamentale della retroazione. Comunque un altro passo potrebbe essere quello di aumentare il numero delle reti neurali, includendo il riconoscimento di nuove caratteristiche sempre associate al soggetto come il profilo del volto o delle orecchie. Grazie alla struttura ibrida neuronale simbolica si possono includere nel gruppo delle reti neurali anche reti specializzate su altre caratteristiche non direttamente collegate con l'analisi facciale, come l'analisi vocale o delle impronte digitali. In questo modo, inoltre, il sistema potrebbe analizzare una moltitudine di caratteristiche che non sono influenzate le une dalle altre, rendendo il riconoscimento ancora più attendibile; ad esempio, la foto di un volto potrebbe essere tutta sovraesposta o sottoesposta, ciò potrebbe causare problemi a tutte le reti addestrate al riconoscimento delle immagini, invece se ci fosse anche un CAPITOLO 7: CONCLUSIONI 65 modulo per l'analisi vocale, il campione audio non sarebbe coinvolto dagli stessi disturbi che affliggono tutte le immagini, la registrazione vocale in questo caso non soffrirebbe di alcuna perdita qualitativa e quel modulo identificherebbe in maniera corretta il soggetto. Per quanto riguarda il database di immagini, invece, abbiamo ritenuto sufficiente per le nostre esigenze il numero di foto acquisite. In ogni caso, si potrebbe ampliare il numero di soggetti senza alcuna difficoltà, visto che le specifiche tecniche e il sistema di etichettatura non sono assolutamente restrittivi. Inoltre il set potrebbe essere ampliato da terzi, tramite il posizionamento online del sistema. Infine, non bisogna dimenticare che in caso di difficoltà a reperire soggetti disposti a farsi fotografare, si può sempre utilizzare programmi di editing quali Photoshop o simili, per creare a partire dai soggetti già presenti, ulteriori modifiche più o meno evidenti. Ringraziamenti Giunto alla fine della stesura di questo lavoro di tesi, mi sembra opportuno e doveroso esprimere la mia riconoscenza nei confronti di chi mi ha aiutato e supportato in questi anni di studi universitari. Innanzitutto desidero ringraziare il Professor Aldo Franco Dragoni, relatore di questa tesi, per la disponibilità e per l‘aiuto fornito, e l‘Ingegner Germano Vallesi che anche se non indicato come correlatore, di fatto lo è stato, per i preziosi consigli e la pazienza dimostrata durante tutto l‘arco di tempo relativo al tirocinio e alla stesura della tesi. In secondo luogo, desidero ringraziare i miei genitori e i miei parenti per il loro aiuto morale ed economico grazie ai quali ho potuto raggiungere questo traguardo. Infine, desidero ringraziare i miei compagni di corso con i quali ho condiviso anni di studio per preparare gli esami e i vari progetti, e gli amici di una vita con i quali sono cresciuto, che non mi hanno mai fatto mancare il loro sostegno; è anche grazie a loro se sono riuscito a raggiungere questo obiettivo. Bibliografia [1] R. Chelappa, P.J. Philipd, A. Rosenfeld, W. Zhao, Face Recognition: A Literature Survey.: ACM Computing Surveys, 2003. [2] M. Nappi, D. Riccio, G. Santino, A.F.Abate, 2D and 3D Face recognition: A Survey.: Elsevier B.V., 2007. [3] C. Wilson, S. Sirobey, R. Chelappa, Human and machine recognition of faces: A Survey.: IEEE, 1995. [4] K. Kim, Face Recognition using Principle Component Analysis.: Elsevier B.V. [5] K. Baek,M. Stewart Bartlett, J.Ross Beveridge, B.A. Draper, Recognizing Faces with PCA and ICA.: Computer Vision and Image Understunding, 2003. [6] A.P. Pentland, M.A. Turk, Face Recognition using Eigenfaces.: IEEE, 1991. [7] A. Pentland, B. Moghaddam, An Automatic System for Model-Based Coding of Faces.: IEEE, 1995. [8] S.B. Yung, J.W. Kwon, S.H.Hong, S.J.Lee, Face Detection and Recognition using PCA.: IEEE, 1999. [9] M.H. Hayes, A.V. Hefian, Hidden Markov Model for Face Recognition., 1998. [10] O.E. Agazzi, S.S. Kuo, Keyword spotting in poorly printed documents., 1994. [11] T.Kohonen, Self-organization and associative memory: 3rd edition.: Springer-Verlag, 1989. [12] L. Fausett, Fundamentals of Neural Networks.: Prentice-Hall, 1994. [13] Yu Chi Ho, A.E. Bryson, Applied optimal control : optimization, estimation and control.: Halsted Press, 1975. [14] P. Norvig, S. Russel, Artificial Intelligence: A Modern Approach.: PrenticeHall, 2003. [15] T. Kohonen, The Basic SOM "Self-Organizing Maps". Berlin: Springer. [16] B. Fritzke, Growing cell structures - a self-organizing network for unsupervised and supervised learning, Neural Networks., 1994. [17] T. Kohonen, Learning Vector Quantization. Berlin: Springer. [18] Y. Li D. Zhang, Modular Neural Networks and Their Applications in Biometrics. Berlin: Springer, 2007. [19] L.A. Zadeh, "Fuzzy Set. Information and Control," vol. 8, pp. 338-353, 1965. [20] L.A.Zadeh, "Fuzzy Algorithms," pp. 94-102, 1968. [21] B. Kosko, Il fuzzy-pensiero. Teoria e applicazioni della logica fuzzy. Milano: Baldini & Castoldi, 2000. [22] A. Visoli, M. Veronesi, Logica Fuzzy: teoria e applicazioni. Milano: Franco Angeli, 2000. [23] P. Sconciafurno, "Sistema ibrido per l'apprendimento continuo di reti neurali," , Ancona, 2009. [24] C. Cayrol, D. Dubois, J. Lang,H. Prade, S. Benferhat,.: Morgan Kauffman, 1993, pp. 640-645.