Esercitazione sulle reti neurali

annuncio pubblicitario
Machine Learning
Traccia dell’esercitazione di laboratorio sulle reti neurali
[N.B. Si suppone di partire da un progetto con le modifiche e aggiunte richieste nelle esercitazioni
precedenti correttamente completate]
Bias
Bias
1
1
Input Layer
Hidden Layer
Output Layer
1) ELEMENTI UTILI DEL PROGETTO PRLAB
a. Esplorare il progetto PRLab all’interno dell’ambiente di sviluppo.

Aprire la cartella “References” nell’albero del progetto dentro alla finestra “Soluzion
Explorer” e fare doppio click sull’assembly “BioLab”: si aprirà la finestra “Object
Browser” dove si possono vedere i namespace della Class Library e dell’assembly
BioLab;

Nella finestra “Object Browser”, trovare le classi Layer, InputLayer, HiddenLayer e
OutputLayer leggendo la relativa definizione e i commenti per comprenderne la logica
di funzionamento; Inoltre visualizzare per ognuna i seguenti membri:
o Count : indica il numero di neuroni del layer
o Values[] : contiene il pattern in input
o Weights[,] : contiene tutti i pesi tra un layer e quello successivo
o Net[i]: contiene la somma dei prodotti tra ciascun neurone di input ed il
corrispettivo peso secondo la formula
=∑ …
∙
+
o Activation[i] : contiene l’output della funzione di attivazione f(neti)
o Errors[i] : contiene l’errore δ del neurone i-esimo di un layer
o Target[] : contiene la classe del pattern
o Bias : valore del bias (fissato a 1)
o BiasWeights[] : contiene i pesi tra il neurone bias e il layer successivo

Aprire l’help della libreria BioLab (nella sottocartella Libraries della cartella PRLab) ed
esaminare le informazioni relative alle classi indicate al punto precedente.
2) IMPLEMENTAZIONE DI UNA RETE NEURALE A TRE LIVELLI
a) Prendere visione del metodo statico BackPropagation che permette di modificare i pesi
delle connessioni in modo tale che si minimizzi una determinata funzione errore J(w).
Completare il metodo ricordando che:

l’errore
viene calcolato come
(
=
)
∙ (1 −
)∙(
−
)
dove è l’attivazione del neurone k dell’output layer (calcolata e memorizzata
durante forward propagation), e , il valore desiderato per l’output k.

dato un neurone k dell’output layer con errore
ed un neurone j dell’hidden layer
con attivazione , il peso , viene aggiornato nel seguente modo
,
dove
Biased

=
∙
∙
è il learning rate compreso nell’intervallo [0,1]. Si ricordi che se la rete è
anche i pesi tra output e bias dell’hidden layer devono essere aggiornati.
data
l’attivazione di un neurone j dell’hidden layer collegato con c neuroni s
dello stato output, l’errore
viene calcolato con
(
=

+
,
)
∙ 1−
∙∑
,
L’aggiornamento precedente si applica anche ad un peso che collega un neurone j
dell’hidden layer ad un neurone i dell’input layer. Si ricordi che se la rete è Biased
anche i pesi tra hidden e bias dell’input layer devono essere aggiornati.
b) Implementare i seguenti metodi della classe MyNeuralNetworkClassifierBuilder:

Il metodo statico ActivationFunction per la funzione di attivazione. A tal fine
utilizzeremo la sigmoide (nella semplice forma di logistic funciton) con valori in
[0,1]:
( )=

la cui derivata prima è
( )= ( )∙ 1− ( )
Il metodo statico ForwardPropagation che, dato un pattern in input con la
corrispondente classe, memorizza il pattern nell’input layer e calcola per ogni
neurone dell’hidden layer e dell’output layer la sua attivazione. Per ogni neurone “i”
la somma pesata dovrà essere memorizzata nel corrispondente Net[i] mentre
l’attivazione in Activation[i]. Si ricordi che se la rete è Biased anche questo
neurone deve essere tenuto in considerazione nella somma pesata.
c) Implementare i membri della classe MyNeuralNetworkClassifier:

nel metodo Classify richiamare il metodo statico ForwardPropagation appena
implementato.
d) Fare alcune prove sia con dataset generati manualmente che con i due dataset scaricabili dal
sito del corso. Verificare il funzionamento nel caso particolare di un solo cluster e
all’aumentare del numero di cluster. A tal fine utilizzare la voce di menù “Esercitazioni
ML→6 - Esercitazione Reti Neurali”.
3) ESPERIMENTO SU “LETTER IMAGE RECOGNITION DATA”
a) Utilizzare la rete appena implementata per il riconoscento di caratteri utilizzando il materiale
aggiuntivo disponibile per l’esercitazione.



Prendere visione dei FeatureVectorSet di train e validaton contenuti nel file ZIP.
Utilizzare il training set per l’addestramento della rete ed il validation set per la
validazione degli iperparametri.
Scegliere i parametri learning rate, numero di epoche e numero di neuroni
dell’hidden layer che minimizzi l’errore sul validation set.
b) Verificare l’accuratezza del modello sul test set che verrà rilasciato al termine del punto
precedente.
Scarica