Esercitazione N°1
Il tool di Matlab
Matlab mette a disposizione un utile tool per lo studio delle Reti Neurali.
Nel presente corso si fa riferimento alla versione di Matlab n° 6 (Release 12).
Il file della guida sul tool
delle reti neurali è
accessibile tramite la
finestra launch-pad
E’ possibile gestire le reti
neurali attraverso
un’interfaccia grafica che
può essere richiamata
con un doppio-clic
sull’icona del launch-pad
oppure digitando:
>> nntool
Nel prompt dei comandi
di Matlab
Appare la seguente finestra (Network/Data Manager) nella quale sono raccolte le
funzioni per la costruzione e l’uso delle reti. Attraverso i pulsanti nella parte bassa si
agisce sulle reti e i dati di riferimento per l’addestramento e il richiamo. Nelle finestre
della parte superiore sono riassunti i dati e le reti attualmente presenti nell’workspace.
Ingressi
Uscite Calcolate
Uscite Desiderate
Scarto tra uscite
calcolate e desiderate
Ritardi sugli ingressi
Ritardi sulla Rete
Reti Neurali
Premendo il pulsante New Network appare la seguente schermata,
che permette di definire le caratteristiche della nuova rete neurale.
Per imparare ad utilizzare il tool
grafico si assuma la configurazione
di default proposta dal programma.
Il numero di neuroni di ingresso è
pari a 2, e si deduce dal numero di
righe della matrice con gli intervalli
di variazione degli ingressi.
La rete assume la funzione di
addestramento learnlm, la funzione
learngdm di adattamento, l’errore
quadratico medio per il calcolo
dell’errore. La rete è composta da
due strati (oltre allo strato di
ingresso) aventi funzione di
trasferimento tangente iperbolica.
Con il pulsante Create si costruisce la rete e con il pulsante View si può visualizzare.
Dopo aver creato la nuova rete essa appare
nell’apposita finestra del Network/Data
Manager. Per modificare o visualizzare le
caratteristiche della rete occorre prima
selezionarla.
Premendo il pulsante View appare la seguente
rappresentazione grafica della rete:
Assieme a tale rappresentazione compaiono anche le form per la gestione di tutte le funzioni
relative alla rete: Inizializzazione, Richiamo, Addestramento, Adattamento, Definizione del
valore dei pesi
Per poter procedere all’addestramento della rete occorre definire gli insiemi di riferimento,
che nel caso specifico sono gli ingressi del training-set e le corrispondenti uscite
desiderate. Dal Network/Data Manager si preme il pulsante New Data, che fa apparire la
seguente finestra:
In questa si stabilisce il nome della variabile
che si sta creando, i valori numerici e la sua
funzione riguardo la rete, se cioè si tratta di
ingressi, uscite desiderate, ritardi, uscite o
errori.
Come primo passo si definiscano gli ingressi.
Si ricordi che il numero di righe deve essere
pari al numero di neuroni dello strato di
ingresso della rete.
Come secondo passo si definiscano le uscite
desiderate. In questo caso il numero di righe
deve coincidere con il numero di neuroni dello
strato di uscita. Inoltre i valori devono essere
compatibili con le uscite delle funzioni di
trasferimento dei neuroni nell’ultimo strato.
Prima di procedere con la fase di addestramento
occorre inizializzare opportunamente i pesi
delle connessioni, per evitare che la rete resti
intrappolata in qualche minimo locale.
Dopo aver selezionato la rete dall’elenco si
preme il pulsante Initialize.
L’inizializzazione può essere effettuata sulla
base dei valori degli ingressi o degli intervalli
di variazione, fissati all’atto della creazione
della nuova rete.
Premendo il pulsante
Initialize Weights si
effettua l’inizializzazione
della rete.
A questo punto si può
procedere con la fase di
addestramento.
A questo scopo si passa
alla form Train di questa
stessa finestra.
In questa form si fissano tutte
le informazioni necessarie per
addestrare la rete. In
particolare si distinguono le
informazioni riguardanti i dati
in ingresso e in uscita, dai
parametri di apprendimento.
Tra i vari parametri, per i quali
si assumono i valori di default,
si richiama l’attenzione sul
numero massimo di epoche
(epochs), l’errore sulle uscite
desiderate che si pone come
obiettivo (goal) e il numero di
epoche comprese tra due
aggiornamenti successivi della
schermata (show). Gli altri
parametri riguardano la
strategia di apprendimento,
che verrà trattata
compiutamente in
esercitazioni specifiche.
A questo punto si può avviare
l’addestramento della rete con
il pulsante Train Newtwork.
Sullo schermo apparirà
l’andamento dell’errore in
funzione del numero di epoche.
Se si pone come obiettivo un
errore nullo l’addestramento
procederà per il numero di
epoche che si è fissato come
limite.
Nell’esempio in figura, nelle
100 epoche prefissate si è
raggiunto un valore dell’errore
dell’ordine di 10-12.
La rete così addestrata può essere memorizzata nel disco, oppure trasferita all’workspace
di Matlab, per ulteriori operazioni. Partendo dal Network/Data Manager si prema il
pulsante Export.
Apparirà l’elenco di tutte le variabili
create durante le precedenti
operazioni:
la rete neurale, i dati in ingresso, le
uscite desiderate, le uscite calcolate e
gli errori commessi, cioè la differenza
tra le uscite calcolate e quelle
desiderate.
Selezionando una variabile, per esempio la rete network1 si attivano i due pulsanti
Export e Save. Il primo trasferisce la variabile selezionata all’workspace di
Matlab, il secondo la salva su disco.
Si prema Export.
Ora la rete network1 si trova su Matlab, come possiamo vedere digitando il comando:
>>whos
che fornisce l’elenco di tutte le variabile presenti. Apparirà la seguente schermata:
Name
Size
ans
1x1
network1
1x1
Bytes Class
8 double array
27926 network object
Grand total is 971 elements using 27934 bytes
>>
La variabile network1 viene allocata come oggetto di tipo rete. Per visualizzarne la struttura
digitare il nome della rete nel prompt dei comandi:
>>network1
e premere invio. Apparirà la schermata visualizzata nella pagina seguente. Per accedere ai
singoli campi dell’oggetto rete si utilizza la solita sintassi della programmazione a oggetti.
network1 =
inputWeights: {2x1 cell} containing 1 input weight
layerWeights: {2x2 cell} containing 1 layer weight
Neural Network object:
functions:
architecture:
adaptFcn: 'trains'
numInputs: 1
numLayers: 2
biasConnect: [1; 1]
initFcn: 'initlay'
performFcn: 'mse'
trainFcn: 'trainlm'
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
parameters:
outputConnect: [0 1]
targetConnect: [0 1]
adaptParam: .passes
initParam: (none)
numOutputs: 1 (read-only)
numTargets: 1 (read-only)
performParam: (none)
trainParam: .epochs, .goal, .max_fail, .mem_reduc,
.min_grad, .mu, .mu_dec, .mu_inc,
numInputDelays: 0 (read-only)
.mu_max, .show, .time
numLayerDelays: 0 (read-only)
subobject structures:
weight and bias values:
IW: {2x1 cell} containing 1 input weight matrix
inputs: {1x1 cell} of inputs
LW: {2x2 cell} containing 1 layer weight matrix
layers: {2x1 cell} of layers
b: {2x1 cell} containing 2 bias vectors
outputs: {1x2 cell} containing 1 output
targets: {1x2 cell} containing 1 target
biases: {2x1 cell} containing 2 biases
………..
other:
userdata: (user stuff)
Scarica

Il tool di Matlab