Sei sulla pagina 1di 12

Esercitazione N1

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
uninterfaccia grafica che
pu essere richiamata
con un doppio-clic
sullicona 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 luso delle reti. Attraverso i pulsanti nella parte bassa si
agisce sulle reti e i dati di riferimento per laddestramento e il richiamo. Nelle finestre
della parte superiore sono riassunti i dati e le reti attualmente presenti nellworkspace.

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, lerrore
quadratico medio per il calcolo
dellerrore. 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


nellapposita 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 alladdestramento 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 nellultimo 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 dallelenco si
preme il pulsante Initialize.
Linizializzazione pu essere effettuata sulla
base dei valori degli ingressi o degli intervalli
di variazione, fissati allatto della creazione
della nuova rete.
Premendo il pulsante
Initialize Weights si
effettua linizializzazione
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 lattenzione sul
numero massimo di epoche
(epochs), lerrore 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


laddestramento della rete con
il pulsante Train Newtwork.
Sullo schermo apparir
landamento dellerrore in
funzione del numero di epoche.
Se si pone come obiettivo un
errore nullo laddestramento
proceder per il numero di
epoche che si fissato come
limite.
Nellesempio in figura, nelle
100 epoche prefissate si
raggiunto un valore dellerrore
dellordine di 10-12.

La rete cos addestrata pu essere memorizzata nel disco, oppure trasferita


allworkspace di Matlab, per ulteriori operazioni. Partendo dal Network/Data Manager
si prema il pulsante Export.
Apparir lelenco 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 allworkspace
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 lelenco 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 delloggetto 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)