Sei sulla pagina 1di 13

Reti Neurali con Apprendimento Supervisionato

Backpropagation

Generare un file xor.arff, contenente i 4 casi dello XOR (input and


output numeri reali) per eseguire il training della rete che risolve lo
XOR con Weka.
Selezionare MultilayerPerceptron come classificatore, training set
come test e attivare lopzione Output Predictions. Disattivare tutte le
opzioni di preprocessing dei dati (normalizzazioni, filtri, ecc.) e
attivare la GUI
Definire prima una rete monostrato, cio senza strati nascosti
(opzione H0) e osservare i risultati ottenuti facendo eseguire 3000
epoche di training.

Aggiungere uno strato nascosto con due unit (-H2) e ripetere il


training.
Preparare un file con una serie di esempi che campionino abbastanza
densamente lo spazio [0,1]2 e determinare come tale spazio venga
suddiviso dalla rete con un grafico.

(v. esercizio 1b)

Classificare il set di dati circletrain.arff e circletest.arff,


addestrando una rete opportuna, modificando
numero di strati nascosti (a parit di numero di neuroni o in
modo arbitrario)
numero di neuroni nello/gli strato/i nascosto/i
learning rate

Problema
distinguere i punti appartenenti a:
1. cerchio di raggio 1 e centro 0,0
2. quadrato di lato 2.5 e centro 0,0
con esclusione della regione 1.

Verificare la correttezza dellapprendimento e discuterne i risultati


classificando un campionamento dello spazio 2D e generando
unimmagine (tanto pi simile a quella ideale quanto migliore sar
stato lapprendimento) sulla base delle classificazioni fornite dalla
rete.
Osservare i valori delle uscite della rete (generare in uscita
unimmagine a livelli di grigio proporzionali alle uscite della rete)
in prossimit del confine fra le 2 regioni, rispetto ai valori che si
ottengono in regioni pi lontane ed esterne al quadrato (anche
notevolmente).
Problema
distinguere i punti appartenenti a:
1. cerchio di raggio 1 e centro 0,0
2. quadrato di lato 2.5 e centro 0,0
con esclusione della regione 1.

Lapprendimento della rete dipende da:


Learning rate: troppo piccolo aumenta la probabilit di cadere
in un minimo locale, troppo grande fa fare passi troppo
lunghi alla ricerca saltando di picco in picco. Questo porta ad
un comportamento instabile della rete: lerrore a tratti
diminuisce, poi improvvisamente risale, ecc.
Numero di iterazioni: se troppo piccolo, la rete si avvicina al
minimo dellerrore, ma non lo raggiunge; se troppo grande,
si pu avere overfitting: la rete si adatta sempre pi ai dati del
training set e non generalizza.

Lapprendimento della rete dipende da:


Dimensione del training set: deve essere proporzionale alla
complessit delle superfici di separazione che si cercano,
alla rumorosit dei dati (un esempio rumoroso ha effetti
tanto pi dannosi quanto minore la dimensione del
training set, in quanto assume un peso maggiore sul calcolo
della funzione errore), ecc.
Dimensione della rete: maggiore la dimensione della rete,
maggiori sono i suoi gradi di libert, quindi la rete
approssima meglio il training set, ma aumenta anche il
rischio di overfitting

Generare tre nuove coppie di file .arff a partire dai due file
circletrain e circletest, aggiungendo a ciascun elemento di ciascun
pattern rumore gaussiano a media nulla con deviazione standard
pari, rispettivamente, a 0.1, 0.3, 0.5.
NB Lasciare inalterate le etichette!

In MATLAB

m=m+k*randn(size(m)) con k= 0.1, 0.3, 0.5

se m una matrice in cui ogni riga una coppia di coordinate .

Utilizzando la stessa struttura della rete che ha fornito le migliori


prestazioni sui dati non rumorosi, ripetere il training della rete con
lo stesso seme random utilizzato per il training della rete di
riferimento e osservare come cambiano i risultati, sia testando la
rete ottenuta sui dati di test senza rumore che su quelli di test con
rumore.

Anche se la backpropagation un algoritmo deterministico,


laddestramento della rete un processo stocastico, dipendente
dallinizializzazione random dei pesi. Non bisogna stupirsi se,
soprattutto se i dati sono pochi o rumorosi, si osservano
risultati anche significativamente diversi ripetendo
laddestramento sugli stessi dati variando il seme della
sequenza random.

NB!! Se si vogliono confrontare pi algoritmi di natura stocastica


sugli stessi dati, sempre necessario valutarne le prestazioni
medie (analizzando anche la relativa deviazione standard) su un
numero elevato di ripetizioni dellesperimento, ciascuna con un
diverso seme random.

Nel caso in cui si debba generare un classificatore a N classi, la


struttura tipica della rete prevede uno strato di ingresso con tanti
neuroni quanti sono gli elementi del pattern e uno strato di uscita
con tanti neuroni quante sono le classi (v. file xor-bin.arff). Ogni
neurone di uscita quindi associato a una specifica classe. Il
numero degli strati hidden e dei neuroni che li compongono
arbitrario e deve essere fissato dallutente.

Il teaching input, tipicamente, sar dato da un vettore binario con


N-1 elementi uguali a 0 e un solo elemento pari a 1, in
corrispondenza della posizione associata alla classe di
appartenenza del pattern.

Note:
1. Un classificatore N-ario di questo tipo equivalente a un
insieme di classificatori binari, ciascuno corrispondente ad una
classe, la cui uscita dovr essere 0 se il pattern di ingresso non
appartiene alla classe corrispondente e 1 se il pattern di ingresso
le appartiene.

2. Si possono verificare due casi indesiderati:


a. tutte le uscite hanno valore 0
b. pi di una uscita ha valore 1
In entrambi i casi lambiguit pu essere eliminata tenendo conto
che le uscite della rete sono numeri reali e classificando il pattern
di ingresso come appartenente alla classe corrispondente
alluscita pi elevata.

Risolvere lesercizio 2 dellesercitazione 1 utilizzando un


multilayer perceptron addestrato con backpropagation.
Confrontare i risultati ottenuti con quelli ottenuti con lalbero di
decisione sia sul training set (per evidenziare i comportamenti
differenti), sia facendo giocare alcune partite alla rete cos
ottenuta.
Per risolvere questo esercizio possibile utilizzare una libreria
dedicata, come ad esempio FANN (http://leenissen.dk/fann) o la
libreria di Weka (modello MultiLayer Perceptron), per poter
utilizzare le funzioni di definizione, addestramento e test della
rete dallinterno di una propria applicazione.

1.

2.

Utilizzare un sistema di riferimento centrato sulla formica e


orientato nella direzione dellultima mossa effettuata (cosa
vede intorno a s la formica dopo avere fatto la mossa ?) per
eliminare le ridondanze dovute alla rappresentazione rispetto
a un riferimento fisso (per ogni configurazione rispetto alla
formica ci sono 4 diverse configurazioni equivalenti se si usa
un riferimento assoluto).
Nella definizione del training set, anche se la strategia
migliore porterebbe a giocare allinterno della scacchiera e
lontano dai bordi a meno che non ci sia del cibo, cercare di
generare delle mosse che facciano raggiungere il bordo alla
formica, per garantire che il training set comprenda dei casi in
cui la formica deve evitare di uscire dalla scacchiera.

3.

4.

Generare una mossa a caso (indipendentemente da ci che


suggerirebbe la rete) quando la formica non vede cibo
nellintorno considerato per prendere la decisione.
Per confrontare diverse soluzioni (e comunque per
confrontare i risultati che ottiene la rete neurale nei confronti
degli alberi di decisione) confrontare i risultati ottenuti
facendo giocare le stesse partite ai diversi algoritmi di
decisione.
Questo vale tutte la volte che si devono confrontare algoritmi
diversi sullo stesso problema: usare le stesse istanze del
problema; ogni algoritmo deve essere messo nelle stesse
condizioni!