La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Esercitazione N°3 Pattern Recognition con Reti Neurali MLP.

Presentazioni simili


Presentazione sul tema: "Esercitazione N°3 Pattern Recognition con Reti Neurali MLP."— Transcript della presentazione:

1 Esercitazione N°3 Pattern Recognition con Reti Neurali MLP

2 Esercizio 1 – Superfici di decisione bias uscita ingresso wiwi f (.) In figura è riportato uno schema di Perceptron con un solo neurone di uscita. Come si può notare, lo schema è molto simile a quello del regressore lineare, visto nellesercitazione precedente, con la differenza che il processore elementare (neurone) effettua due operazioni in serie sugli ingressi: prima somma gli ingressi, poi applica a tale somma una funzione soglia. Il tipo più semplice di funzione soglia è il gradino, adottato da Mc Culloch e Pitts: 1 Input Output Una rete neurale come quella di Fig. 1 permette di classificare due insiemi di punti tra loro linearmente separabili. Infatti, il valore su cui viene calcolata la funzione soglia è pari a: Fig. 1 essendo x il vettore degli ingressi, w il vettore dei pesi delle connessioni, b il valore di bias. Una funzione soglia come quella di Fig. 2 applica la funzione segno alla quantità net: Di conseguenza, lo spazio dei punti in cui è definito x (spazio degli ingressi) viene diviso in due semi-spazi, ognuno associato ad una delle due uscite della rete. La frontiera dei due semi-spazi è data dai punti in cui net cambia segno: Fig. 2

3 ossia la rete di Fig. 1 effettua una separazione lineare dello spazio degli ingressi. Infatti, la frontiera che separa i due semi-spazi (superficie di decisione) è un iperpiano, la cui equazione ha coefficienti pari ai pesi delle connessioni e termine costante pari al valore di bias. In Fig. 3 Sono indicati una rete con due ingressi e i due semi-spazi da essa individuati nello spazio degli ingressi. Costruiamo questo esempio nellambiente di Matlab: Utilizzeremo solo i comandi dal prompt. Per definire un nuovo perceptron utilizziamo il seguente comando: >> net = newp(pr,s,tl,sf); essendo: pr:intervallo di variazione degli ingressi s: numero di neuroni di uscita tf:funzione di trasferimento lf:funzione di apprendimento Nel nostro esempio vogliamo esplorare la regione quadrata centrata nellorigine di lato 2, abbiamo un solo neurone di uscita, con funzione di trasferimento a gradino (hardlim, default), mentre non ci interessa la funzione di apprendimento perché assegnamo noi i pesi delle connessioni: >> net = newp([-1 1; -1 1],1); Ora assegnamo i pesi delle connessioni: >> net.IW{1}=[1 1]; % connessioni >> net.b{1} = -1;% bias bias uscita 1 1 x1x1 x2x2 Fig. 3 x1x1 x2x2 uscita = 1 uscita =

4 Osserviamo come viene mappato lo spazio degli ingressi: >> x = -1:0.01:1; >> y = x; >> for i = 1:201, for j = 1:201, z(i,j) = sim(net, [x(i);y(j)]); end >> mesh(x,y,z) La rete che abbiamo costruito mappa lo spazio degli ingressi nei due valori 1 e 0, perché per default viene assunta la funzione di soglia con questi valori delluscita. Se vogliamo modificare i valori in uscita dalla rete modifichiamo la funzione soglia: >> net.layers{1}.transferFcn = 'hardlims'; In questo modo le uscite sono –1 e 1, come previsto dal modello di McCulloch-Pitts. In alternativa possiamo utilizzare una funzione soglia continua, con una regione di frontiera tra i due semi-spazi associata a valori intermedi tra quelli di saturazione: >> net.layers{1}.transferFcn = logsig';

5 Esercizio 2 – Classificazione in R 1 Utilizziamo una rete come quella dellesercizio precedente per applicare un valore di soglia ad un segnale di ingresso: >> x = 2*pi*(0:0.05:1); >> plot(sin(x),'*'); >> y = sin(x); >> target = -ones(1,21); >> target(find(y > 0.5)) = 1; >> hold on; >> plot(target,'ro'); >> axis([ ]); >> line([0 25],[ ]) In ingresso alla rete sono inviati i campioni di una sinusoide, ai quali si vuole applicare una soglia in corrispondenza del valore 0,5. Definiamo il vettore x dei punti in cui campionare la sinusoide, e i valori di y corrispondenti. Lasse y rappresenta il dominio degli ingressi della rete neurale. Il vettore target ha le dimensioni di y ed ha componenti uguali a 1 in corrispondenza delle componenti di y maggiori di 0,5 mentre le altre componenti sono uguali a –1. In figura è riportata la sequenza dei valori di y (asterischi) e i corrispondenti valori del target (cerchietti). Il comando >>hold on permette di sovrapporre i grafici. Una linea orizzontale separa i punti delle due classi. La rete neurale ha le seguente struttura: bias uscita y

6 Infatti, lingresso al neurone vale: I = 1*y – 0,5 che è negativo per y 0,5 Costruiamo la rete richiesta: >> net = newp([-1 1],1); >> net.layers{1}.transferFcn = 'hardlims'; >> net.IW{1} = 1; >> net.b{1} = -0.5; Notiamo che la funzione di soglia è stata modificata perché per default si assume quella con uscite 0 e 1. Verifichiamo che la rete che abbiamo costruito effettui correttamente la classificazione dei punti di y. >> out = sim(net,y); >> hold on; >> plot(out,m^)% triangoli color magenta Si ottiene il grafico seguente: Le uscite calcolate si sovrappongono esattamente con i valori di target, quindi si ottiene la classificazione corretta per tutti i campioni.

7 Esercizio 3 – Insiemi non linearmente separabili. Riprendiamo lesempio dellesercizio precedente, ma modifichiamo la mappatura dello spazio degli ingressi nel seguente modo: >> x = 2*pi*(0:0.05:1); >> y = sin(x); >> target = -ones(1,21); >> target([find(y > 0.5) find(y < -0.5)]) = 1; cioè sono associati al valore 1 i valori superiori a 0,5 e quelli inferiori a –0,5. >> plot(y,'*'); >> hold on; >> plot(target,'ro'); >> line([0;25],[ ]) >> line([0;25],[ ]) >> axis([ ]); Non è possibile definire ununica soglia che distingua i due insiemi di punti, quindi dobbiamo prevedere una classificazione intermedia, che ci porta alla costruzione di una rete a più strati: (Multi Layer Perceptron, MLP) La struttura della rete è la seguente: 1 y uscita -0,

8 In questa rete, i due neuroni del primo strato (neuroni nascosti) classificano gli ingressi ognuno in base ad una soglia, nel senso che il primo neurone distingue dagli altri i valori superiori a 0,5 mentre il secondo neurone distingue dagli altri i valori inferiori a –0,5. I punti dello spazio degli ingressi sono proiettati in uno spazio di 2 dimensioni, diventando linearmente separabili. Per costruire la rete MLP utilizziamo una nuova funzione, utilizzata in generale per costruire reti neurali Feed Forward: >> mlp = newff([-1 1],[2 1],{'hardlims','hardlims'}); Visualizzare lhelp in linea per un elenco completo delle opzioni di questo comando. Nel caso in esame abbiamo indicato lintervallo di variazione degli ingressi (un solo intervallo perché abbiamo un solo ingresso), il numero di neuroni in ogni strato (cioè 2 nello strato nascosto e 1 in uscita) e, a seguire, la funzione soglia per ogni strato. Ora assegnamo i pesi alle connessioni. Anche se abbiamo reti con diversa struttura rispetto agli esercizi precedenti, Matlab tende, finché è possibile, a tenere fissi i nomi dei campi corrispondenti. In particolare questo vale per i campi delle connessioni che, come nel Perceptron a singolo strato, si chiamano.IW e.b In questo caso, però, esiste un campo aggiuntivo, che corrisponde alle connessioni tra lo strato nascosto e quello di uscita:.LW Ognuno di questi campi è costituito da una struttura a celle, alcune delle quali sono vuote, a causa delle caratteristiche da noi assegnate alla rete. Attribuiamo i pesi: >> mlp.IW{1} = [1; -1];% pesi del I strato >> mlp.b{1} = [-0.5; -0.5]; % bias del I strato >> mlp.LW{2,1} = [1 1]; % pesi del II strato >> mlp.b{2} = 1; % bias del II strato

9 Come nellesercizio precedente, confrontiamo le uscite calcolate e i valori fissati come target. >> out = sim(mlp,y); >> hold on; >> plot(out,m^)% triangoli color magenta La classificazione corretta è resa possibile dallo strato nascosto. Questo fatto si può mostrare graficamente. 0,5 y 0 -0,5 h1 h2 out 1 0 y h1 h2 out Ogni nodo rappresenta un asse coordinato in uno spazio associato allo strato di cui fa parte. In ognuno di tali spazi sono definiti iperpiani, i cui coefficienti sono pari ai pesi delle connessioni. Ad ognuno di tali iperpiani corrisponde un neurone dello strato successivo. Si noti come lo strato nascosto definisca uno spazio in cui le due classi sono linearmente separabili.

10 Esercizio 4 – Il problema XOR. Il problema dellor esclusivo (XOR) è diventato un riferimento importante da quando Minsky e Papert lo utilizzarono per mostrare i limiti dellapproccio neurale. Da allora tali limiti sono stati abbondantemente superati, ma questo esempio continua ad essere utilizzato perché da qui sono derivati gli sforzi per definire tecniche di sintesi per reti neurali a più strati. In Fig. 1 sono mostrati la tabella della verità del problema e una sua rappresentazione grafica. x1x1 x2x2 out x1x1 x2x2 Fig. 1 In questo caso lo spazio degli ingressi ha dimensione pari a 2, quindi i neuroni dello strato a seguire (nascosto) determinano superfici di decisione rappresentate da rette. E evidente che nessuna retta può risolvere, da sola, il problema dato, cioè non esiste una rette tale da far cadere i triangoli in un semi-spazio e i cerchietti nellaltro. Anche in questo caso è necessario prevedere uno strato nascosto di neuroni. Con lo stesso procedimento adottato nellesercizio precedente, effettuiamo la separazione delle due classi di punti con una serie di separatori lineari e, ad ognuno, facciamo corrispondere un neurone dello strato successivo. I pesi delle connessioni con ogni neurone sono pari ai coefficienti della retta corrispondente, e il valore di bias al termine costante della stessa retta. In Fig.2 è mostrata una delle soluzioni possibili:

11 Si noti che le due superfici di decisione sono state indicate come funzioni lineari e non come equazioni. Infatti, i neuroni nascosti individuano delle funzioni definite in TUTTO lo spazio degli ingressi, e le rette che abbiamo tracciato rappresentano solo la superficie di decisione, cioè il luogo dei punti in cui vale zero lingresso al neurone. Per questo motivo non è ininfluente cambiare il segno del gruppo di connessioni che convergono ad un neurone nascosto: infatti, con tale cambio di segno, si scambiano i valori delle uscite associati dal neurone ai due semi-spazi. Contrassegnamo con un segno + il semi-spazio associato dal neurone al valore +1 x1x1 x2x2 Fig. 2 Le funzioni lineari g 1 e g 2 diventano discontinue per effetto delle funzioni soglia dei neuroni nascosti. Adottando funzioni soglia con uscite 0 e 1, si può verificare facilmente che le uscite dello strato nascosto, in corrispondenza dei 4 ingressi del problema, valgono rispettivamente: x1x1 x2x2 h1h1 h2h Fig. 3 h1h1 h2h2 Nel piano (h 1,h 2 ) le due classi di punti possono essere separate linearmente. In Fig. 3 è rappresentata la retta g 3 = 0 che normalmente è considerata la soluzione migliore perché è quella che assicura il massimo margine rispetto ai punti da classificare. La g 3 fornisce i pesi del secondo strato di connessioni. Ora possiamo disegnare la rete finale:

12 1 x1x1 g1g1 x2x2 h1h1 g2g2 h2h2 g3g3 out 1 -1,5 0, ,5 Fig. 4 Costruiamo questa rete su Matlab. >> xor = newff([0 1; 0 1 ],[2 1],{'hardlim','hardlim'}); si noti che, rispetto allesercizio precedente, sono definiti due intervalli di variazione degli ingressi (due righe) e questo dato è utilizzato per indicare che la rete ha due ingressi. Assegnamo i pesi delle connessioni >> xor.IW{1} = [1 1; -1 -1]; >> xor.b{1} = [-1.5; 0.5]; >> xor.LW{2,1} = [1 1]; >> xor.b{2} = -0.5; Ora non resta che verificare la mappatura realizzata da questa rete. >> x1 = 0:0.02:1; >> x2 = 0:0.02:1; >> for i = 1:51, for j = 1:51, out(i,j) = sim(xor,[x1(i);x2(j)]); end >> mesh(x1,x2,out) Fig. 5

13 Commento Il metodo applicato nellesercizio precedente può essere applicato in generale, ma non abbiamo affrontato unimportante questione: Come possiamo essere sicuri che i due insiemi di punti diventino linearmente separabili nello spazio associato allo strato nascosto? Infatti, se non adottiamo un criterio, la separazione effettuata dai neuroni nascosti potrebbe essere del tutto inutile. Si provi, per esempio, cosa succede se come superfici di decisione in Fig. 2 si adottano una retta orizzontale e una verticale. Il discorso può portare molto lontano, anche perché in generale si pone il problema di trovare non solo una soluzione che renda i due insiemi linearmente separabili, ma anche che non richieda un numero eccessivo di neuroni nascosti, meglio se si trovasse la soluzione con il numero minimo di neuroni. Come indicazione, in questa sede, diamo un criterio che gode della proprietà, che non dimostriamo, di trasformare qualunque coppia di insiemi con un numero finito di punti in due insiemi linearmente separabili nello spazio associato allo strato nascosto. Il criterio consiste in questo: Si definisce una serie di superfici di decisione in modo tale che ognuna separi, via via, un gruppo di punti della stessa classe dal resto dei punti non ancora separati. La serie si interrompe quando i punti restanti appartengono tutti alla stessa classe. Si noti che questo criterio è stato adottato per risolvere lesempio di questo esercizio. In Fig.6 è riportato un altro esempio Fig.6


Scaricare ppt "Esercitazione N°3 Pattern Recognition con Reti Neurali MLP."

Presentazioni simili


Annunci Google