Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tecniche di visione artificiale Appunti dal corso studenti: Manghisi Vito Modesto.
Docente: Prof. Francescomaria Marino. Politecnico di Bari
2010/2011
La classificazione.
Abbiamo visto che nel momento in cui si deve fare una classificazione essa viene basata su alcune features
salienti. Il task della classificazione si pu scomporre in due compiti separati:
1. Individuazione o estrazione delle features salienti (preprocessing) che discriminano la presenza o
no di una particolarit nelloggetto. Questa fase risulta essere parimenti determinante rispetto la
fase di classificazione. Lestrazione e la individuazione delle features infatti fondamentale ai fini
della correttezza della classificazione successiva. Di fronte ad una immagine composta da una o tre
matrici NxM (rilevante numero di dati), risulta pi conveniente effettuare la classificazione sulla
base di un set di features che abbia una popolazione ristretta rispetto i dati completi dellimmagine.
Dobbiamo capire come estrarre le features salienti, al fine di ridurre la ridondanza (features che
presentano caratteristiche gi presenti in altre features) ed ottenere una classificazione efficiente.
2. Classificazione (supponiamo per ora di tipo binario con un output 0-1).
La difficolt del primo step risiede nel fatto che il primo ed il secondo step sono fortemente correlati. Ad
esempio se nel primo step estraggo i coefficienti di Fourier in una certa banda di frequenza, non detto che
la scelta effettuata a questo livello sia ottimale per il classificatore che andr ad utilizzare nella fase 2 (il
classificatore deve cio essere in grado di individuare tra le features quale descrive una tipologia A e quale
una tipologia B). Ne risulta che i due task sono indipendenti ma comunque correlati.
Si pu pensare di realizzare un classificatore che fa un esame esaustivo delle varie caratteristiche
applicandole a vari classificatori usando cos la forza bruta.
Se sono di fronte ad una immagine posso estrarre da essa varie features, il metodo con cui si estraggono le
informazioni dallimmagine corrisponde alla applicazione di una trasformazione su di essa (vedi figura 1)
In questo modo da un segnale che la rappresentazione puntuale di un oggetto (coefficienti legati ai singoli
pixel) otteniamo la rappresentazione in un altro dominio, che nel caso della trasf. di Fourier sono le
componenti armoniche (bidimensionali) del segnale. Posso allora lavorare in modo massivo cercando di
definire quali tra questi coefficienti meglio descrivono il fenomeno che voglio mappare, facendone anche
tutte le possibili combinazioni, ricercando quali coefficienti meglio descrivono in un classificatore un
fenomeno e poi valutare cosa accade per altri classificatori. In generale si pu pensare di descrivere una
immagine con quella che prende il nome della teroria dei residui, ovvero descrivere limmagine con il suo
valore completo, avere un set di atomi che sono ad esempio per la trasformata di fourier i valori assunti ad
ogni frequenza presente nellimmagine. Tra questi atomi individuiamo quello che meglio approssima
2
limmagine che vogliamo descrivere a meno di un fattore proporzionale, cio se limmagine I
i i
i
I c F =
. nel nostro
caso latomo una funzione, nella fattispecie lantitrasformate a quella frequenza, latomo quindi una
immagine. Il coefficiente descrive quanto devo scalare questa immagine. Procedendo con le armoniche
ridurr sempre di pi lerrore fino ad ottenere un errore nullo.
Quando mi fermer nel processo dovr memorizzare i vari coefficienti utilizzati e gli indici che individuano
gli atomi. In questo modo una approssimazione dellimmagine comprimibile in un insieme di coppie di
numeri ( ,
i
c i ), in cui un numero un floating, e laltro numero un intero.
Posso estendere questo concetto allutilizzo di un secondo dominio di descrizione delloggetto. Linsieme
degli atomi che descrivono un aggetto attraverso le coppie coefficiente indice costituiscono un dizionario,
cos linsieme dei coefficienti della serie di Fourier costituisce un dizionario che ha una corrispondenza
biunivoca ed esaustiva con limmagine. Se ora applico allimmagine unaltra trasformata, ne ottengo la
rappresentazione in un altro dominio caratterizzato da altri atomi. Posso a questo punto effettuare la
descrizione iterativa dellimmagine attraverso una ricerca degli atomi pi efficienti allinterno dellinsieme
di tutti i dizionari, cio possibile che si individui latomo maggiormente descrittivo tra quelli appartenenti
ad un dominio di trasformazione ed il successivo tra quelli appartenenti ad un altro. Alla fine del processo
iterativo (quando avr ottenuto lapprossimazione desiderata) avr individuato una serie di atomi che
potranno appartenere a pi dizionari. Alla fine descriver limmagine con un insieme di atomi
e di pesi
i i
a c ovvero un insieme di pesi e di indici che punteranno ad un dizionario globale ristretto
rispetto lunione dei dizionari. (N.B.: in uno step successivo non potr mai ritrovarmi lo stesso atomo come
descrittore, poich esso ortogonale al residuo).
Possiamo fare un esempio pensando allalgebra vettoriale, e supponiamo di avere unimmagine di tre pixel
caratterizzata da tre valori che sono un punto nello spazio tridimensionale, sia il punto P(5,2,5), una base di
quasto spazio vettoriale la terna {(1,0,0); (0,1,0); (0,0,1)}, se ora devo scegliere un atomo che meglio
descrive limmagine, esso il primo che con un peso pari a 5 mi da come descrizione (5,0,0), ottengo allora
come descrizione i=1 e ci=5.
3
Ottengo il residuo che il minore di tutti gli altri che avrei dagli altri atomi. Sicomme ho un certo errore che
maggiore di , itero il processo ricercando un altro atomo che in questo caso il terzo (i=3) con peso 3. In
questo modo ho ridotto lerrore. Questo dizionario , fatto dai tre atomi consistente, poich da solo riesce
a descrivere questa realt, per possibile utilizzare un altro dizionario, (unaltra base dello spazio) ad
esempio la terna {(0,2,3); (0,1,0); (1,0,0)}. Ora supponiamo di avere a disposizione i due dizionari, se devo
fare la descrizione dellimmagine ho come dizionario globale quello in figura. Con un solo dizionario dopo il
secondo step ho un residuo dato dalla differenza (5.0.3) e (5.2.3), ora invece dopo il primo step vado a
scegliere il 4 con coefficiente 1 commettendo errore nullo.
In pratica si pu pensare di descrivere nel modo pi compatto possibile la fenomenologia da trattare per
poi passare alla classificazione.la classificazione si pu fare con una serie di tecniche tra le quali le reti
neurali.
Le reti neurali
Una rete neurale un sistema che dato un certo input ne discrimina lappartenenza o meno ad una certa
classe, linput alla rete sar linsieme di dati che descrivono il fenomeno da classificare (banalmente i pixel
dellimmagine, ma dato che la complessit della rete neurale dipende dal numero di dati in ingresso
dobbiamo cercare di ridurre il numero delle features salienti in ingresso).
La dimensione del primo stadio altri non che il numero di input in ingresso, questi input sono dei numeri.
La rete neurale associa una serie di input ad una serie di uscite desiderate. Abbiamo che
K
X linsieme
delle features che descrivono un oggetto, mentre
dK
Y la classe a cui quelloggetto appartiene.
La rete opera in due fasi distinte:
- Addestramento (fa parte della fase di creazione del classificatore, nella quale fase, oltre definirne
la topologia, cio definire ad esempio quanti neuroni posizionare in ogni stadio e quanti stadi
utilizzare, si vanno ad inserire allinterno dei neuroni i valori dei pesi con cuoi vengono pesate le
4
informazioni che arrivano ad i singoli neuroni. Allinterno di questa prima fase possibile, ma non
sempre, che laddestramento subisca una evoluzione durante il funzionamento stesso della rete.
Nella fase di addestramento la rete viene affiancata (vedi figura) da una intelligenza che valuta il
comportamento della rete stessa.
Se la rete fosse gi addestrata su un data train, essa con ingresso il data train fornirebbe in uscita le
risposte corrette
dK
Y desiderate, con un rating di errore pari a quello scelto in fase di
addestramento. Durante la fase di addestramento, invece, lintelligenza esterna alla rete valuta se
c corrispondenza tra luscita fornita dalla rete
K
Y per un ingresso
K
X e quella desiderata
dK
Y .
Se la rete ha operato correttamente lintelligenza superiore non interviene, se invece viene rilevato
un errore lintelligenza interviene andando a variare i pesi della rete neurale, andando ad
introdurre un certo w che funzione delluscita della rete a prodotto e di quella che avrebbe
dovuto produrre.
- Fase di evoluzione.
Struttura rete neurale
Una rete neurale risulta composta da un insieme di neuroni o perceptroni che possono essere collegati con
opportune topologie. I neuroni sono tutti uguali, essi hanno il comportamento comune di accumulare
attraverso uno stadio di somma gli ingressi al neurone stesso. Tutti i neuroni a monte del neurone in esame
hanno delle uscite che vanno in ingresso al neurone a valle, tali ingressi vengono modulati dai pesi e
5
sommati nel primo stadio del neurone. Il risultato di questo stadio viene opportunamente sogliato, per
dare luscita del neurone. Se la somma pesata superiore ad un certo teta, diremo che il neurone produce
una segnale di attivazione, altrimenti diremo che produce un segnale di inibizione.
NB: per ogni neurone i pesi in ingresso possono essere differenti.
Luscita del sommatore
ji i
i
net w x =
Mentre luscita dal neurone ( ) y HS net u =
E possibile effettuare una semplificazione dello schema rendendo loperatore di soglia indipendente da u ,
lo facciamo introducendo un ulteriore ingresso con valore costante pari a -1 e pesato con un peso pari a u ,
ottenendo la schematizzazione in figura
Ne otteniamo
ji i
i
net w x u =
.
Su questi valori imposteremo la correzione dei pesi cercando di azzerare quanti pi errori possibili,
lalgoritmo converger nel momento in cui lerrore globale sar minore di un certo fissato.
Obiettivi della Back Propagation
Lobiettivo che si prefigge una rete neurale non
evidentemente la mera corretta classificazione del training
set (negli effetti il training set gi classificato), ma
raggiungere per la rete la capacit di classificare
correttamente oggetti di cui non conosce la classe di
appartenenza e che non ha gi avuto la possibilit di avere
in ingresso nella fase di training. Il primo obiettivo per la
rete dunque lapprendimento. Per questo motivo
importante inserire nel training set degli oggetti che siano
efficaci nellesemplificare tutti le possibili tipologie degli
oggetti da classificare. Se ad esempio siamo di fronte ad
una rete finalizzata ad una classificazione di caratteri di scrittura (OCR), se in fase di addestramento
inserisco come oggetti labelled solo alcune evenienze della a, in fase di successiva classificazione di
fronte ad un carattere a differente dalle evenienze presenti nel training set probabile che la rete
fornisca una classificazione errata non riconoscendo in modo corretto il carattere; analogo discorso si pu
fare su immagini riprese durante le 24 ore della giornata, se inseriamo nel training set solo immagini
relative alle ore pi luminose probabile che di fronte ad immagini per le ore meno illuminate (ad esempio
il crepuscolo) avr una classificazione inconsistente. Per verificare se una rete addestrata raggiunge un
livello di classificazione adeguato su esempi mai analizzati, di norma viene creato oltre il training set un
insieme di oggetti detto validation set contenente dei campioni che non sono inclusi nel training set. Tale
validation set sar anchesso etichettato in base alla classe di appartenenza degli oggetti, e sar mandato in
ingresso alla rete neurale in una fase successiva a quella di addestramento. Questo ci consentir di
verificare se la rete in grado di effettuare una classificazione consistente, andando a valutare lerrore
globale sul set di validazione e verificando se anche esso inferiore alla soglia che abbiamo individuato
come valore per arrestare la fase di addestramento, ovvero come obiettivo di convergenza. E anche
possibile, al termine di questa fase di validazione, prendere gli oggetti del set di validazione, su cui stato
13
commesso un errore di classificazione nella fase di validazione, ed inglobarli in un set di training allargato
che viene utilizzato per una nuova fase di addestramento che dovrebbe condurre ad una rete pi efficiente.
Per quello che concerne lobiettivo di convergenza, si
deve ottenere la minimizzazione dellerrore globali. Se
supponiamo che lerrore globale sia esprimibile in
funzione della matrice dei pesi del livello in esame, e che
sia possibile avere un grafico che descriva la variazione
dellerrore al variare dei pesi come nella figura affianco
(evidentemente non possibile una rappresentazione
come quella della figura poich lo spazio dei pesi
multidimensionale), allora analizzando il grafico
osserviamo che vi sono due possibili andamenti: o la
variazione dellerrore positiva al crescere del peso, o la
variazione dellerrore negativa al crescere del peso.
Questa osservazione ci consente di ricavare una regola
per laggiornamento dei pesi:
- nel primo caso se 0
ji
E
w
c
>
c
per ottenere una
riduzione dellerrore nella fase di training
dovremo impostare un w<0;
- nel secondo caso se 0
ji
E
w
c
<
c
per ottenere una
riduzione dellerrore nella fase di training
dovremo impostare un w>0.
In generale sar
ji
ji
E
w
w
n
c
A =
c
(regola del gradiente),
dove il coefficiente di apprendimento (learning rate).
Il coefficiente di apprendimento esprimer in qualche
modo la velocit con cui ci si approssima al minimo
dellerrore, con valori elevati di si ha uno spostamento
maggiore verso il minimo rispetto ad un piccolo.
Lutilizzo di un elevato non per sinonimo di un
avvicinamento ottimale al minimo come non lo
un valore basso.
Nel primo caso infatti possibile che si vada oltre il
minimo, passando al passo successivo in una
condizione in cui la correzione sui pesi di segno
opposto entrando in una condizione di oscillazione
intorno al minimo. In questo caso una possibile
soluzione consiste nel variare in funzione
14
dellerrore, in modo da accelerare la convergenza allinizio e ridurre le oscillazioni alla fine, oppure si pu
pensare di smorzare le oscillazioni con un filtro passa basso sui pesi con una correzione nella forma:
( ) ( 1),
ji j i ji
w t x w t no o A = + A dove detto momentum.
Nel secondo caso si hanno due controindicazioni, la
prima che la velocit di apprendimento minore, la
seconda che, dato che la forma quadratica che
esprime lerrore risulta distorta dalla funzione di uscita,
essa pu non presentare un profilo monotono e si corre
il rischio di fermarsi in un minimo locale prima di
incontrare il minimo globale, in questo caso occorre
ricominciare da capo con nuovi pesi. Non esiste una
metodica predeterminata per una scelta ottimale a
priori del fattore di apprendimento, si compie una
scelta, si effettua laddestramento della rete e si valuta
lerror rate raggiunto. Se questo valore accettabile si effettua la validazione valutando lerror rate sul
validation set, e in base ai risultati ottenuti si decide se rieffettuare laddestramento su un training set
allargato, oppure se lerror rate sul training set non accettabile vuol dire che si rimasti intrappolati in un
minimo locale e quindi il valore del fattore di apprendimento va accresciuto. Ci accorgiamo invece che il
valore di tale coefficiente troppo alto se osserviamo una oscillazione nellerror rate in iterazioni
successive del training.
Vediamo allora come si procede nella correzione dei pesi dal punto di vista analitico.
Abbiamo detto che la variazione da dare al singolo peso
data dalla variazione dellerrore rispetto al singolo
peso moltiplicata per il fattore di apprendimento
cambiata di segno
k
ji
ji
E
w
w
n
c
A =
c
,
sviluppando la derivata di funzioni composte abbiamo
j
k
ji
j ji
net
E
w
net w
n
c
c
A =
c c
,
essendo
1
p
j ji i
i
net w x
=
=
, si ha
j
i
ji
net
x
w
c
=
c
e quindi posto
k
j
j
E
net
o
c
=
c
, otteniamo
ji j i
w x no A = .
Resta a questo punto da calcolare il valore dei
j
o .
Osservando lespressione di
j
o si vede che
;
j
k k
j
j j j
y
E E
net y net
o
c
c c
= =
c c c
ma
2
1
( )
n
k kj kj
j
E t y
=
=
quindi
2
1
( )
2( );
n
kj kj
j
k
kj kj
j j
t y
E
t y
y y
=
c
c
= =
c c
15
inseriremo il fattore -2 in , e poich
(1 ^ ) ( )
'( ) ;
j j j
j
j j j
f e net y f net
f net
net net net
c c c
= = = =
c c c
otteniamo ( ) '( ).
j kj j j
t y f net o =
Da questultima espressione si evidenzia la necessit che la funzione di attivazione sia derivabile, ed per
questo che in genere si sceglie la sigmoide come funzione di attivazione, poich essa ha la caratteristica di
essere non lineare (ricordiamo la necessit che la funzione introduca una discontinuit al fine di
implementare una rete multilayer) e di avere andamento continuo con la derivata prima. Possiamo in
questo modo effettuare gli aggiornamenti dei pesi allultimo strato.
Per procedere al calcolo dei
j
o nei neuroni intermedi
propaghiamo lerrore allindietro. Se utilizzassimo il
calcolo fin qui visto avremmo ( ) '( )
i di i i
x x f net o =
dove nel calcolo della quantit ( )
kj j
t y abbiamo
sostituito alluscita desiderata
kj
t il valore di uscita
intermedia desiderata
di
x e alluscita ottenuta il valore di
quello che sar lingresso allo strato successivo
i
x . Qui
per non abbiamo a disposizione i valori desiderati
intermedi e quindi procediamo andando ad approssimare
lerrore compiuto a questo livello con la sommatoria delle
correzioni
j ji
w o del livello successivo. Possiamo
osservare che, quando si ha una classificazione corretta in
uscita allultimo strato, il coefficiente
j
o calcolato nullo,
e questo fa si che siano nulle sia le correzioni dei pesi
sullultimo livello, sia quelle sui livelli precedenti dove il
i
o
sempre combinazione lineare dei
j
o .
Possiamo ricapitolare lalgoritmo per laddestramento
della rete:
Per quello che riguarda il processo di
apprendimento possiamo fare alcune
osservazioni sui valori di inizializzazione dei
pesi.
16
Partendo con dei valori iniziali piccoli dei pesi, essendo la funzione di attivazione a sigmoide, si osserva
come a dei piccoli valori dei pesi corrisponda un valore dellargomento della funzione di attivazione
prossimo allo zero. Per questi valori dellargomento la funzione di attivazione presenta i valori pi elevati
della derivata prima e dunque questo porta ad una correzione maggiore sui pesi essendo w f(net).
Generalizzazione
E la capacit della rete di riconoscere stimoli
leggermente diversi da quelli con cui stata addestrata.
Per valutare la capacit della rete di generalizzare gli
esempi del TS, si definisce un altro insieme di esempi,
detto Validation Set (VS). Terminato lapprendimento sul
TS (E
TS
< ), si valuta lerrore sul VS (E
VS
).
Supponiamo di avere gli oggetti in figura e che essi
debbano essere classificati rispetto ad una certa retta, se
abbiamo pochi neuroni nascosti, nel descrivere la
poligonale che traccia il confine tra le due classi ho un
numero ridotto di possibili spezzature della curva.
Aumentando il numero dei neuroni nascosti posso
descrivere la classe in modo pi dettagliato, per se gli
elementi del training set sono quelli rossi in figura, e la
descrizione troppo dettagliata, si corre il rischio di fare
con troppi neuroni nascosti un fitting degli oggetti che li
comprenda con precisione, e che non lasci quindi spazio
alle sottoclassi individuate per contenere elementi
differenti da quelli del training set (avremmo cio un
errore elevato sugli oggetti al di fuori del training set a
seguito di un processo di overtraining) .
Consideriamo la figura a destra e supponiamo di fare
un addestramento con un certo numero di iterazioni.
Supponiamo anche che con il nostro training set al
crescere del numero di iterazioni si arrivi ad un
comportamento con errore sul training set E
TS
<
TS
al
secondo punto di arresto in figura. Quando andiamo a
17
fare la verifica con il nostro set di validazione troviamo un errore di sul
set di validazione che dopo aver raggiunto un minimo (pari ad
VS
)nel
caso di rete addestrata con un numero minore di iterazioni, ritorna a
crescere. Questo accade perch anche in questo caso abbiamo
effettuato un overtraining della rete.
Per migliorare la capacit di generalizzazione si pu addestrare la rete
sul TS, monitorare lerrore sul VS (E
VS
) e fermare lapprendimento
quando E
VS
<
VS
.