Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. UN NEURONE
b = bias
f = funzione di trasferimento
n = net input n=w p +w p
1,1 1 1, 2 2
= Wp + b
+ ... + w1, R p R + b
(W è una matrice di una sola riga)
a = uscita del neurone
• NOTAZIONE ABBREVIATA
I pesi del neurone i-mo sono la riga i-ma di W. Tale riga è indicata con
iW.
1 2
Prof. B. Lazzerini Perceptron in MATLAB Prof. B. Lazzerini Perceptron in MATLAB
3 4
Prof. B. Lazzerini Perceptron in MATLAB Prof. B. Lazzerini Perceptron in MATLAB
Per creare una rete perceptron con un vettore di input di un solo elemento,
i cui valori variano in [0 3], ed un neurone:
>> net=newp([0 3],1);
In MATLAB, una rete neurale (net nel nostro caso) è un oggetto di cui è
possibile visualizzare l’architettura, le funzioni, i parametri, i pesi e i bias
digitandone il nome nella finestra comandi.
Per esempio, la funzione di inizializzazione è contenuta in initFcn e ad
essa si può accedere scrivendo
>> net.initFcn
5 6
Prof. B. Lazzerini Perceptron in MATLAB Prof. B. Lazzerini Perceptron in MATLAB
In modo simile, i pesi e i bias , che sono array di celle, sono contenuti nelle Possiamo cambiare il modo in cui un perceptron è inizializzato con la
matrici IW (input weight) ed LW (layer weight) e nel vettore b (bias). Ad funzione init. Per esempio, assegnando numeri casuali:
esempio, per accedere ai pesi di ingresso si deve digitare net.IW{1,1}.
>> net.inputweights{1,1}.initFcn='rands';
Per vedere cosa è stato creato: >> net.biases{1}.initFcn='rands';
>> net=init(net);
>> net.inputweights{1,1}
REGOLA DI ADDESTRAMENTO (learnp)
Otterremo,tra l’altro, Vediamo come si comporta la funzione di addestramento del perceptron
initFcn: 'initzero' funz. di inizializzazione di default (fissa a zero learnp. Se non si usa un bias, learnp cerca una soluzione modificando solo
i valori iniziali dei pesi e del bias) il vettore dei pesi w in modo che w si avvicini a vettori di ingresso che
learnFcn: 'learnp' funzione di apprendimento di default devono essere classificati con “1”, e si allontani da vettori che devono
weightFcn: ‘dotprod’ prodotto del vettore di input e della matrice dei essere classificati con “0”. Questo produce un confine decisionale che è
pesi + bias perpendicolare a w e che classifica correttamente i vettori di ingresso.
L’uso di un eventuale bias non fa altro che traslare il confine decisionale.
Analogamente: Dati il vettore di input p, l’uscita desiderata t e la risposta a della rete
possono verificarsi le seguenti condizioni:
>> net.biases{1} • l’uscita è corretta, cioè a = t e l’errore e = t - a = 0 il vettore dei
pesi w non è modificato;
fornisce risultati simili. • se l’uscita del neurone è 0 mentre avrebbe dovuto essere 1 (a = 0 e t
= 1, ed e = t – a = 1), il vettore di input p è aggiunto al vettore dei
Per visualizzare i valori di pesi e bias: pesi w. Questo rende il vettore dei pesi piú vicino al vettore di input,
>> net.iw{1,1} aumentando in tal modo la probabilità che il vettore di input sarà
>> net.b{1} classificato come 1 in futuro;
• se l’uscita del neurone è 1 mentre avrebbe dovuto essere 0 (a = 1 e t
Per cambiare l’inizializzazione dei pesi: = 0, ed e = t – a = -1), il vettore di input p è sottratto dal vettore dei
>> net.iw{1,1} = -1; pesi w. Questo rende il vettore dei pesi piú lontano dal vettore di
>> net.b{1} = 1; input, aumentando in tal modo la probabilità che il vettore di input
SIMULAZIONE (sim) sarà classificato come 0 in futuro.
Per simulare la rete:
>> p=[1,-2]; % vettore contenente due input La regola può essere riscritta sinteticamente in termini dell’errore e = t – a,
>> a= sim(net, p) e di ∆W :
INIZIALIZZAZIONE (init) • e = 0 ∆W =0
Con la funzione init si possono resettare pesi e bias della rete ai loro valori • e = 1 ∆W = p T
originali:
• e = -1 ∆W = − p T
>> net=init(net);
quindi
7 8
Prof. B. Lazzerini Perceptron in MATLAB Prof. B. Lazzerini Perceptron in MATLAB
È garantito che la regola di apprendimento del perceptron converge in un Limiti del perceptron
numero finito di passi per tutti i problemi risolvibili da un perceptron, cioè
I valori di uscita sono solo 2 (funzione hardlim).
per tutti i problemi di classificazione che sono linearmente separabili.
Il perceptron può classificare soltanto insiemi linearmente separabili.
L’addestramento può richiedere molto tempo a causa degli outliers. Il
ADDESTRAMENTO (train)
problema si può risolvere usando la funzione learnpn (normalizza la regola
di addestramento).
Potremmo addestrare il perceptron usando ripetutamente sim e learnp per
presentare gli esempi di addestramento, calcolare l’uscita e l’errore, e
Outliers e regola di addestramento normalizzata
modificare pesi e bias di conseguenza. Tutto questo viene fatto
automaticamente dalla funzione train. Lunghi tempi di addestramento possono derivare dalla presenza di un
vettore di ingresso, detto outlier, la cui lunghezza è molto superiore o
Esempio: inferiore a quella degli altri vettori di ingresso. La regola di apprendimento
richiede di sommare e sottrarre vettori di ingresso dagli attuali pesi in
net = newp([0 1; -2 2],1); % crea uno strato di perceptron
risposta ad un errore. Di conseguenza, un vettore di ingresso con
% con un vettore di input di 2 elementi (i cui valori variano,
componenti grandi ha un effetto notevole sul vettore dei pesi w al punto
% rispettivamente, in [0 1] and [-2 2]) ed un neurone.
che vettori di ingresso molto piú piccoli devono essere presentati molte
P = [0 0 1 1; 0 1 0 1]; % 4 vettori di input (colonne), ciascuno
volte per avere un effetto sensibile.
% con 2 elementi
Per rendere il tempo di addestramento insensibile agli outliers si
T = [0 1 1 1]; % i 4 target corrispondenti
normalizza la regola di apprendimento:
Y = sim(net,P) % simuliamo l’uscita della rete
net.trainParam.epochs = 20;
net = train(net,P,T); % addestriamo per 20 epoche
Y = sim(net,P) % simuliamo di nuovo l’uscita della rete
In questo modo, l’effetto sui pesi è lo stesso per tutti i vettori di ingresso.
Eseguendo l’esempio precedente si vede che la rete impara dopo 4 epoche. La regola normalizzata è implementata dalla funzione learnpn.
9 10
Prof. B. Lazzerini Perceptron in MATLAB Prof. B. Lazzerini Perceptron in MATLAB
11 12
Prof. B. Lazzerini Perceptron in MATLAB Prof. B. Lazzerini Perceptron in MATLAB
13 14
Prof. B. Lazzerini Perceptron in MATLAB Prof. B. Lazzerini Perceptron in MATLAB
15 16