Sei sulla pagina 1di 17

1

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 =

valuto quale dei

da solo meglio descrive limmagine di partenza, in questo modo ho una approssimazione


al primo stadio che mi fornisce limmagine
0
I commettendo lerrore
0 o
R I I = , dove
0 0 0
I a c = . Posso
iterare il processo di approssimazione fermandomi quando al passo ottengo una approssimazione
inferiore ad una certa tolleranza. In questo modo ho una serie di valori che meglio descrivono questa
situazione, questi valori sono dati dai coefficienti
i
c e gli indici che individuano gli atomi

. 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 =

, in questo modo la sogliatura viene fatta su net>0 e non pi su net-u >0,


il risultato rimane lo stesso, ma svincola loperazione di sogliatura da u . In questo modo tutti i neuroni
sono uguali e tutti i loro parametri particolari sono esternati nei pesi (u incluso). Ora devo solo valutare i
pesi per i neuroni e non i pesi e la soglia. Dobbiamo quindi trovare lalgoritmo per configurare i pesi.
Vediamo due esempi di classificazione:

Nel secondo esempio ho bisogno di fare una classificazione tra pi classi (3), in questo caso un unico
neurone non pu classificare tra pi di due classi (una di appartenenza ed una di non appartenenza), quindi
6

ho bisogno nellesempio di tre neuroni in uscita, ognuno dei quali classifichi lappartenenza o no ad una
delle tre classi. (Nellesempio A, B, C sono tre classificatori diversi !).
Addestramento del neurone
Pensiamo al momento al singolo neurone (il discorso per legato a tutta la rete). Il neurone effettua un
accumulo pesato ed una operazione di soglia. Lo scopo della fase di adattamento consiste nella eventuale
correzione dei pesi in ingresso attraverso lintroduzione di un opportuno w.

Il w
i
che va introdotto la quantit

dove il oeffiiente di pprendimento (lo pprofondiremo


dopo) e =(yd-y) lerrore ommesso, quindi l orrezione sui pesi ostituit on un unio fttore di
proporzionlit{ sui reltivi ingressi. Vedimo quli sono le fsi delllgoritmo di ddestramento.
Possiamo osservare come compiuta questa modifica il neurone si comporti in modo corretto.

Per prima cosa si deve creare un training set, cio un insieme di dati che serve alladdestramento della rete.
Linsieme deve contenere un certo numero di campioni che la rete deve classificare (caratterizzati
attraverso i loro features vectors) associati a delle etichette che diano la corretta classificazione dei
campioni (classificazione binaria).
- Al primo passo si inizializzano i vari w
i
con valori casuali, dopo di che si inserisce nella rete una delle
K coppie, in base alla X
k
in ingresso la rete produrr una uscita Y
k
, si confronta Y
k
con Y
dk
(nota
dalletichetta di X
k
) e se sono uguali passo al prossimo elemento, altrimenti devo provvedere a
7

correggere i pesi. La correzione avviene sul singolo peso sommando ad esso lerrore compiuto
moltiplicato per lingresso x
i
al singolo peso e per il coefficiente di apprendimento .
- Una volta effettuata la correzione sui pesi si procede nello stesso modo per tutti i valori del
training set, ovvero si iterano i passi dal 3 al 5 per tutte le coppie del training set. Completato
lddestrmento sul trining set si die he si omplett unepoca.
- A questo punto si ripete la classificazione sul training set procedendo nello stesso modo con la
realizzazione di epoche successive, ognuna che porta a certe correzioni sui pesi
- Mn mno he si proede on le epohe si h un progressiv riduzione dellerror rte dell
rete (in realt potrebbe anche oscillare, ma con un range di oscillazione che tende a diminuire),
he ndr{ d ssestrsi su un pit{ fisiologi dell rete stess. Ci fermeremo nelliterre le
epoche quando avremo raggiunto un error rate desiderato (in questo caso nel ciclo for di ogni
epoca va inserito un contatore che si incrementa in caso di errore di classificazione che
onsente ll fine di ogni epo di vere un vlutzione dellerror rte ottenuto llepo
preedente, il onttore si dovr{ poi zzerre llinizio di ogni nuov epo) o qundo avremo
nnullto lerrore.
Questo non significa che la rete abbia imparato a classificare, vediamo un esempio in cui al neurone sono
associati solo due ingressi. Il neurone nellesempio fa la classificazione di un oggetto che descritto in un
features space in
2
, per cui loggetto viene descritto da due valori (un punto nel piano). La classificazione
effettuata dunque porta alla suddivisione del piano in due semipiani. In sostanza il valore di y sar 0 o 1
quando
1
1 1 2 2 2 1
2 2
1
0 ovvero 0 ;
i i
i
w
w x w x w x x x
w w
u u u > + > > +

abbiamo quindi descritto


la disequazione associata ad una retta nel piano.

Questo ci fornisce uninformazione su quale il grado di complessit di un classificatore finalizzato a
classificare un certo obiettivo in funzione di come la
classe che si vuole classificare pu essere mappata
nello spazio dei parametri che descrivono la
classificazione. In uno spazio a due parametri posso
pensare di avere due classi di tipo binario, possiamo
supporre di avere una classificazione che porti ad un
valore di 1 se entrambe le caratteristiche sono
verificate, questo equivale alla implementazione di
una porta AND con la suddivisione del piano in due
semipiani suddivisi da una retta che delimita le due
8

aree, una prima in cui entrambe le condizioni verificate ed una seconda dove ci non accade. Con i pesi in
figura ho
2 1
0.5 1. x x > + (Pesi finali). (Iniziali w
1
=0, w
2
=2).
Questo ci dice che un singolo neurone con due ingressi in grado di effettuare la suddivisine di un piano
delle features in due semipiani separati da una retta. Vedremo degli esempi in cui non sufficiente una sola
retta ed il classificatore dovr essere necessariamente pi complicato.
Limiti del perceptron
La schema appena visto funzione se il problema linearmente separabile, ovvero se i pattern che
identificano lappartenenza ad una classe sono
contenuti in un semipiano dello spazio di ingresso.
Nel caso in cui ho ingressi n_dimensionali, i pattern
devono essere separabili con un iperpiano. Se ho un
ingresso tridimensionale la separazione avviene
attraverso un piano. Ribadiamo che lo schema
funziona con un singolo neurone solo fino a quando
le classi sono separabili linearmente cio da un
piano o un iperpiano.


Si comprende il significato di questa affermazione se al posto di implementare una AND si vuole
implementare una XOR. In questo caso la rete neurale non sar implementabile con un singolo neurone, lo
possiamo osservare graficamente notando che la
classe da individuare non individuata da una singola
retta. Dovr usare pi neuroni in qualche modo
strutturati per ottenere quelle che sono le topologie
multistrato. Avendo una idea di quella che sar la
rappresentazione della classe nello spazio delle
features, decideremo quanti sono i parametri
significativi in ingresso (numero di ingressi al
neurone), noto invece come circoscrivere la classe (ad
esempio con un poligono) definiremo il numero di
neuroni necessari e la loro organizzazione topologica.

In questo caso sar sufficiente pensare ad una organizzazione di tipo
multistrato con opportune funzioni di uscita , nellimmagine seguente
vediamo alcune possibili funzioni di uscita, altre quella di HeavySide vista
prima. Quando andremo a vedere come lalgoritmo di ricalcolo dei pesi
opera, ci accorgeremo che un vincolo che necessariamente queste
funzioni dovranno rispettare sar la continuit della derivata e della
funzione stessa. Questo vincolo dovr essere rispettato nella scelta della
funzione di uscita che ci porter a selezionare una sigmoide a questo
scopo. Vediamo allora il modo di connettere i neuroni.
9

Reti multistrato
E possibile connettere i neuroni a nostro piacimento, ma si
osserva che una topologia di connessione, che introduce delle
semplificazioni nellalgoritmo di aggiornamento dei pesi e che non
toglie genericit alla capacit della rete di descrivere un evento,
quella che prende il nome di schema multistrato. In uno schema
multilayer i neuroni sono raggruppati in pi strati e i neuroni di
ogni strato hanno la caratteristica di ricevere gli ingressi
provenienti solo dai neuroni dello strato precedente, e di fornire
le loro uscite solo in ingresso allo strato successivo. Non quindi
possibile un collegamento diretto tra due neuroni che siano in due strati non adiacenti, questa per non
una limitazione topologica, poich ove si avesse la necessit di realizzare un trasferimento del genere
sarebbe sufficiente inserire un neurone addizionale nello strato intermedio(in rosso in figura) con peso
unitario sulluscita (in ingresso al neurone intermedio) da trasferire allo stato successivo.
Vediamo un esempio di rete a tre strati (in realt qui lo strato di
input non rappresentato da neuroni, ma dai semplici oggetti in
ingresso. Nel nostro esempio vogliamo implementare una
classificazione di tipo XOR in cui come gi detto il problema non
linearmente separabile. Le reti a tre strati sono in grado di
separare regioni convesse con numero di lati minore o uguale al
numero di neuroni nello strato nascosto.

Questa struttura consente di isolare
zone individuate da due rette. Se la rete
realizzata con un solo neurone posso fare
una separazione del tipo nella figura(a)
seguente, effettuando una separazione del
piano in due semipiani, uno
corrispondente alla classe A ed uno alla classe non A. con unaltra rete
analoga posso fare una classificazione del tipo in figura(b). se ora invio
le uscite di queste due reti a singolo neurone in ingresso ad un altro
neurone strutturato come la AND dellesempio precedente otterr come
risultato limplementazione della XOR visualizzabile in figura(c).
E possibile, aumentando il
numero di neuroni nello
strato intermedio, aumen-
tare il numero di rette o
semirette o segmenti che
delimitano una classe nello spazio delle features, possibile
visualizzare un esempio nella figura seguente, in cui viene
delimitata da tre segmenti una regione convessa con uno strato
intermedio composto da tre neuroni.

10

In generale con una architettura a 3 strati con M neuroni nello
strato hidden possiamo individuare le classi in uno spazio delle
features n_dimensionale delimitando una regione convessa
racchiusa al pi da M segmenti. Per individuare la topologia di
una rete neurale di questo tipo posso circoscrivere nel piano
delle features una regione convessa delimitata da un poligono
convesso ed associare alla retta passante per ognuno dei lati un
neurone che separer il piano in due. I problemi sorgono se le
regioni da delimitare non sono convesse. Supponiamo per
comodit di trovarci ancora in uno spazio a due parametri.
Se ho la situazione nella figura affianco, se non avessi gli elementi
in rosso potrei supporre di delimitare larea con 4 segmenti
(poligono verde) ad ognuno dei quali associato un neurone nello
strato intermedio da mettere poi in AND nello strato finale. Questo
tipo di classificazione conterrebbe allinterno anche gli oggetti rossi
che invece non appartengono alla classe dei rettangoli neri. Larea
da delimitare in realt un poligono concavo e non possibile
quindi effettuare la classificazione con una topologia a tre strati.
Per effettuare una classificazione corretta devo descrivere il
poligono che circoscrive la classe con i tratti in azzurro, non
quindi possibile racchiudere la classe in un unico poligono
convesso, e la non convessit ci porterebbe con una rete a tre
layer o ad includere oggetti estranei alla classe o ad escludere
oggetti appartenenti alla classe. Per procedere dovremo
considerare la classe come racchiusa nello spazio delle
features da pi sottoregioni convesse, implementeremo
quindi una parte della rete neurale per delimitare la classe
della sottoregione a destra ( e quindi 4 neuroni nello strato
intermedio che convergono in un neurone in uno strato successivo per delimitare la prima sottoregione
convessa), ed una seconda parte (ancora di 4 neuroni nello
strato nascosto convergenti in uno che implementa lAND) per
delimitare la seconda sottoregione convessa. Sar poi
necessario considerare linsieme delle due sottoregioni che
sar ottenuto facendo convergere le due uscite dellultimo
strato in un neurone aggiuntivo presente in un quarto strato
che fornir in uscita lOR delle due aree (lOr sar
implementato in modo simile allAND solo che ora dobbiamo
considerare il semipiano che delimita tutte le coppie (x,1) e
(1,x)). In questo modo siamo passati ad una architettura a 4
strati che sono in grado di separare regioni qualsiasi. Quindi al terzo strato avr tanti neuroni quanti sono i
sottopoligoni convessi da considerare. Laggiunta di altri strati non migliora la capacit di classificazione.


11

Importanza della non linearit
Le funzioni di uscita sono quelle funzioni che in pratica vanno a modulare la sommatoria degli ingressi
pesati prima che questa vada in uscita dal neurone. Queste funzioni introducono una non linearit, il fatto
che la funzione sia non lineare ha una utilit fondamentale.
Se la funzione fosse lineare e quindi introducesse una
semplice rimodulazione lineare della sommatoria,
tutto quello fin qui visto sullutilit di aggiungere uno
strato alla rete risulterebbe inutile. Se ci fosse una
linearit si potrebbe pensare che lo strato di ingresso
inserisce un certo numero di campioni descrivibile
come un vettore X, il vettore X (1xN) nel primo strato
viene moltiplicato per una matrice W
21
(NxM) dove M
il numero di neuroni nello strato. Nella
moltiplicazione matrice per vettore (ottengo un
vettore 1xM) con tante componenti quanti sono gli
ingressi ai neuroni dello strato successivo che sar
caratterizzato da una matrice W
32
di dimensione MxL dove l il numero di neuroni dello strato. Se la
funzione di uscita non introduce discontinuit la trasformazione subita dai vettori in ingresso alla rete pu
essere espressa con una unica trasformazione lineare data da ununica matrice W
eq
=W
21
W
32
(a meno di un
eventuale coefficiente di proporzionalit introdotto dalle funzioni di uscita) di dimensioni NxL
corrispondente ad un unico livello composto da L neuroni secondo la trasformazione Z=W
eq
X e la rete
sarebbe sempre riconducibile ad una rete a due strati. E dunque lintroduzione di una non linearit che da
valenza allorganizzazione multistrato e che consente di descrivere regioni non convesse.
Addestramento della rete neurale
Laddestramento pu essere eseguito con diverse metodiche,
lalgoritmo che ha preso pi piede per laddestramento di reti
multistrato quello di back propagation. Lalgoritmo
applicabile su reti multistrato. Lingresso a questi neuroni deve
avere un valore reale compreso tra 0 e 1 e la funzione di uscita
deve essere non lineare e nella fattispecie ha un andamento a
sigmoide. Si prende la sigmoide poich servir avere la
continuit nella derivata prima. Quando operiamo sul singolo
oggetto del training X
k
, con tante componenti quanti sono gli
elementi in ingresso alla rete (negli esempi che abbiamo fatto abbiamo visto essere 2, ovvero x
1
e x
2
),
ad esso associata luscita desiderata Y
dK
, e luscita
ottenuta dalla rete Y
k
, il training set deve essere
composto da oggetti con associata una Y
dK
di entrambe le
classi, altrimenti la rete non apprenderebbe nulla. Nella
figura ho q neuroni nello strato di ingresso, p neuroni
nello strato intermedio e n neuroni nello strato finale.
Quando la rete ha pi di due strati noi siamo a
conoscenza del valore corretto Y
dK
in uscita finale, se
andiamo a confrontarlo con il valore in uscita Y
k

12

possiamo capire se la classificazione corretta o se si deve applicare una correzione ai pesi, non siamo per
in grado di comprendere se lerrore di classificazione legato ad una scorrettezza nei pesi in ingresso al
livello intermedio o allultimo livello. Se allora vado a correggere i pesi tra i primi due livelli e lerrore viene
generato al livello successivo non riesco ad addestrare la rete (inoltre non sono in grado di valutare lerrore,
e quindi la correzione da apportare ai pesi, al livello intermedio). Non abbiamo infatti possibilit di
verificare la correttezza delle uscite ai livelli intermedi. Lidea alla base della back propagation quella di
andare a fare il tuning dei pesi procedendo dagli ultimi strati della rete verso quelli superiori.
Vediamo come si procede. Sul generico oggetto X
k
da classificare lerrore nellultimo strato sar calcolato
come lerrore quadratico e sar calcolato come la somma degli errori commessi da tutti gli n neuroni di
quello strato
2
1
( )
n
k kj kj
j
E t y
=
=

. Lerrore globale (valutabile alla fine di un epoca) sar invece la somma


degli errori commessi su tutti gli oggetti del training_set sempre valutati sullultimo stadio
1
M
k
i
E E
=
=

.
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
.