1.3 Struttura dei modelli neurali
1.3.3 Un esempio di pattern recognition
Che significato attribuire ai valori di input e output della rete? Sono valori compresi in un intervallo che, nel caso della funzione logistica, è definito tra 0 e 1. È certamente possibile attribuire un valore semantico ai nodi di uscita, collegando la loro attivazione ad una determinata azione, parola o oggetto, ma qui è fondamentale anche capire il significato matematico del risultato.
Prendiamo un esempio classico di pattern recognition, ossia di riconoscimento di due lettere scritte a mano: la rete viene addestrata a partire da alcune immagini e le verrà richiesto nella fase di verifica di riconoscere le medesime lettere scritte con una diversa calligrafia.
Figura 1.5. Un esempio di classificazione (Bishop 1995, 2-3).
Il primo passo da compiere consiste nell’individuare alcune caratteristiche in base alle quali identificare i due oggetti: si riduce così il numero di variabili della funzione in modo da semplificare i calcoli e, di conseguenza, la funzione stessa. Se si
sceglie la larghezza, ad esempio, il risultato ottenuto è simile al grafico della figura 1.4: al variare della variabile ~x1sull’asse delle ascisse corrisponde una probabilità maggiore o minore, rappresentata sull’asse delle ordinate, che l’oggetto considerato appartenga alla classe C1 o C2, ossia che corrisponda alla lettera a o alla lettera b. Questa distinzione fra le due classi sarà spesso dubbia: ci saranno infatti casi in cui è difficile riconoscere una lettera in base ad una sola particolarità. La soluzione più appropriata è quindi quella di selezionare un’altra proprietà – ad esempio l’altezza – e questo potrebbe rendere la soluzione meno passibile di errore.
Una rete molto semplice per questo scopo potrebbe avere due valori di input e due di output (figura 1.5). Le lettere a e b sono rappresentate ciascuna da un vettore,
[
0.5,0.5]
=
A e B=
[ ]
0.5,1 , i cui elementi corrispondono ai valori dei tratti selezionati, in questo caso la larghezza e l’altezza.Figura 1.6. Un esempio di riconoscimento lettere: la rete deve apprendere ad associare i valori A e B alle rispettive classi.
I due nodi di output della rete identificano invece una lettera o una classe. L’apprendimento della rete modifica la rete in modo da assegnare a dei pattern di input dei valori esterni. Ciò avviene attraverso la stima dei pesi delle connessioni che collegano i diversi nodi. Se si presentano alla rete, dopo la fase di apprendimento, delle nuove lettere scritte con diverse calligrafie simili a quelle su cui la rete ha appreso, essa non farebbe difficoltà a riconoscerle. Nell’esempio esposto il processo di associazione corrisponde all’attivazione di un solo nodo di output che corrisponde ad una delle due lettere: questo processo è definito ‘classificazione’ perché attribuisce ad un pattern di ingresso un valore di output che viene interpretato come l’appartenenza ad una classe. La rete è preparata su dati conosciuti per poi inferire su dati non ancora esaminati.
A B OUTPUT 1 0 C1 0 1 C2 INPUT A B X1 0.5 0.5 X2 0.5 1
Il problema sorge nel momento in cui i valori presentati non siano così precisi come quelli precedenti: se si presenta una lettera X =
[
0.4,0.7]
, la rete ha difficoltà a classificarla con certezza: i valori di uscita della rete non corrispondono a valori interi ma a numeri decimali nell’intervallo{ }
0,1 , ad esempio[
0.6,0.4]
. Questo risultato indica che, in base ai valori dei nodi w acquisiti durante l’apprendimento, è più probabile che il pattern di ingresso appartenga ad una classe piuttosto che ad un’altra. L’interpretazione più adatta dei valori di output è appunto probabilistica, ed in questo consiste la flessibilità dei modelli neurali: essi sono in grado di svolgere le loro funzioni anche nel caso in cui i dati forniti non siano espressi con chiarezza.Immaginiamo ora di avere numerose lettere da identificare, ognuna delle quali con valori diversi per ogni proprietà, e rappresentiamo la loro distribuzione all’interno di uno spazio cartesiano i cui assi indicano il valore delle variabili selezionate. Sarebbe dunque possibile descrivere il processo di classificazione come la costruzione di una linea nello spazio che distingua le due classi. Essa è chiamata decision boundary. In molti casi è difficile classificare correttamente tutti gli esemplari esaminati, ma l’obiettivo è quello di costruire una funzione in cui l’errore di classificazione sia ridotto al minimo. «We can view the basic goal in training a feed-forward neural network as that of modelling the statistical properties of the generator of the data, expressed in terms of a conditional distribution function» (Bishop 1995, 212).
Figura 1.7. Due esempi di funzioni di decision boundary (Bishop 1995, 4).
Le due funzioni della figura 1.7 sono due modi possibili di individuare due classi di oggetti: la prima presenta degli errori, mentre la seconda riesce a tener conto di tutti
gli elementi delle due classi. La differenza tra i due risultati è data dal numero di variabili libere delle due funzioni: aumentando il numero di parametri è possibile, come nell’immagine a destra, descrivere meglio la distribuzione esistente, ma è molto più difficile classificare dati nuovi (Zell 2003).
Infatti, se da un lato l’aumento dei parametri induce ad una migliore descrizione degli elementi osservati, dall’altro influenza negativamente la capacità di generalizzazione della rete: «the best generalisation to new data is obtained when mapping represents the underlying systematic aspects of the data, rather than capturing the specific details of the particular training set» (Bishop 1995, 10). Il processo di apprendimento delle reti neurali può essere letto come la costruzione di una funzione discriminante che riduca al minimo l’errore di classificazione.
Il carattere probabilistico, e quindi la flessibilità dei modelli neurali, è legato all’uso delle funzioni di attivazione continue. Le funzioni lineari usate nei primi modelli avevano solo due possibili valori di output, 1 o 0. Ciò implicava la necessità di classificare un fenomeno nell’una o nell’altra classe. La funzione logistica invece permette di rendere continuo e graduale il passaggio da una all’altra classe, sfumando i contorni in maniera molto simile a quanto accade nella fuzzy logic. Molti fenomeni quindi apparterranno solo parzialmente ad una classe e questa parzialità può essere espressa e interpretata solo in maniera probabilistica.