carte retele neuronale

139
Cătălin-Daniel Căleanu Virgil Tiponuţ Reţele neuronale. Aplicaţii Material realizat în cadrul programului TEMPUS AC-JEP 13438-98

Upload: corneliu84

Post on 26-Jun-2015

2.490 views

Category:

Documents


19 download

TRANSCRIPT

Page 1: Carte Retele Neuronale

Cătălin-Daniel Căleanu Virgil Tiponuţ

Reţele neuronale. Aplicaţii

Material realizat în cadrul programului

TEMPUS AC-JEP 13438-98

Page 2: Carte Retele Neuronale

Prefaţă

Cartea se adresează studenţilor de la facultăţile de Electronică şi

Telecomunicaţii, Automatică şi Calculatoare, Informatică şi are rolul de a introduce

noţiuni teoretice elementare despre reţele neuronale artificiale (RNA) şi deprinderi

practice pentru implementarea software (“Neural Network Toolbox v.3” din mediul

MATLAB v.5.3 - 1999) a acestora.

În acest sens, prima aplicaţie prezintă succint mediul MATLAB. Noţiunile

expuse aici facilitează înţelegerea aspectelor legate de implementarea MATLAB a

RNA. A doua aplicaţie abordează principiile generale ale calculului neuronal iar restul

aplicaţiilor tratează cele mai importante tipuri de reţele neuronale: perceptronul simplu

şi cel multistrat, RNA bazate pe funcţii radiale, RNA recurente (Hopfield), RNA cu

autoorganizare (Kohonen) şi RNA celulare. Pentru fiecare dintre RNA enumerate mai

sus sunt prezentate pe scurt aspecte legate de arhitectură, algoritmii de antrenament şi

aplicaţiile tipice. Acestea din urmă sunt însoţite şi de codul sursă MATLAB aferent

rezolvării acestora.

Pentru aprofundarea aspectelor teoretice privind RNA este recomandată

utilizarea, în paralel cu acest material, a cărţii “Reţele neuronale. Arhitecturi şi

algoritmi” apărută în Ed. POLITEHNICA şi elaborată de aceeaşi autori.

Lucrarea a fost realizată, pe baza unei documentării la University of

STRATHCLYDE, Glasgow, Marea Britanie, în cadrul programului TEMPUS AC-JEP

13438-98 iar autorii ţin să mulţumească pe această cale coordonatorilor acestui

program. Totodată exprimăm mulţumiri recenzorului pentru sugestiile utile exprimate

după parcurgerea acestui material precum şi cadrelor didactice de la University of

Strathclyde, Glasgow, pentru numeroasele discuţii care au contribuit la finalizarea

acestei cărţi.

Autorii

Page 3: Carte Retele Neuronale

Cuprins

Aplicaţia 1. Introducere în MATLAB…………………………………..…….pag.7(C.D. Căleanu)

Aplicaţia 2. Modele ale neuronilor şi ale reţelelor neuronale artificiale….....pag.19(C.D. Căleanu)

Aplicaţia 3. Perceptronul simplu. Algoritmul LMS…………………………pag.29(C.D. Căleanu)

Aplicaţia 4. Perceptronul multistrat. Algoritmul BP standard………….……pag.35(C.D. Căleanu)

Aplicaţia 5. Algoritmi rapizi de antrenament pentru RNA de tip MLP…......pag.45(C.D. Căleanu)

Aplicaţia 6. Reţele neuronale bazate pe funcţii radiale………………..…….pag.55(C.D. Căleanu)

Aplicaţia 7. Reţele neuronale artificiale recurente………………………..….pag.59(C.D. Căleanu)

Aplicaţia 8. Reţele neuronale cu autoorganizare.………………………..…..pag.65(C.D. Căleanu)

Aplicaţia 9. Primul experiment cu reţele neuronale celulare: studiul unor

(V. Tiponuţ) template-uri simple…………….…………………………….….pag.71

Aplicaţia 10. Crearea unei interfeţe grafice utilizator pentru o aplicaţie cu RNA

(C.D. Căleanu) folosind mediul MATLAB……………………………………...pag.83

Anexa nr.1 Simulatorul analogic de reţele neuronale celulare

(V. Tiponuţ) MATCNN -prezentare generală………………………………..pag.95

Bibliografie…………………………………………………...………...pag.111

Page 4: Carte Retele Neuronale

APLICAŢIA NR. 1

Introducere în MATLAB

1. Generalităţi

În cadrul acestei lucrări toate referinţele au în vedere MATLAB versiunea

5.3.0 (R11), 21.01.1999.

Matlab [1], [2] reprezintă un mediu de programare destinat calculului numeric şi

reprezentărilor grafice în domeniul ştiinţei şi ingineriei. Elementul de bază cu care

operează MATLAB este matricea. Este uşor de extins, prin faptul că orice utilizator

poate adăuga propriile funcţii sau le poate modifica pe cele existente. Folosind

funcţiile predefinite ale MATLAB-ului se obţine o importantă economie de timp

în crearea de noi aplicaţii. Deasemenea pachetul software include un set de funcţii

specifice (denumite “toolbox”) anumitor domenii, ca de exemplu:

- Reţele neuronale (“Neural Networks”);

- Logică fuzzy (“Fuzzy Logic”)

- Prelucrări de imagine (“Image Processing”);

- Prelucrări de semnal (“Signal Processing”);

- Undişoare (“Wavelet”)

- Achiziţie de date (“Data Aqusition”);

- Statistică (“Statistics”);

- Identificarea sistemelor (“System Identification”);

- Financiar (“Financial”).

Există posibilitatea modelarii, analizei şi simularii sistemelor dinamice, prin

descrierea acestora la nivel de schemă bloc prin intermediul mediului Simulink. În

Page 5: Carte Retele Neuronale

- 8 - Aplicaţia nr. 1

acestă categorie pot fi incluse, de exemplu, sisteme cu procesoare numerice de semnal

(“DSP Blockset”) sau sisteme bazate pe circuite electonice de putere (“Power System

Blockset).

Adăugând la cele de mai sus şi numeroasele posibilităţi de reprezentare

grafică 2 sau 3D a datelor şi posibilitatea interfaţării codului MATLAB cu cel scris în “C”

sau limbaj de asamblare pentru procesoarele de semnal, avem argumentele necesare

care să justifice implementarea aplicaţiilor cu reţele neuronale prin intermediul

MATLAB.

Se oferă în continuare noţiuni MATLAB elementare [3], necesare unei bune

înţelegeri ale aplicaţiilor prezentate în capitolele următoare.

2. Elemente de bază MATLAB

2.1 Linia de comandă

Se foloseşte de regulă pentru lansarea în execuţie a programelor sau pentru

diverse comenzi MATLAB. Un program MATLAB se aplelează tastând în linia de

comandă numele fişierului. O condiţie necesară rulării programului este setarea căii în

care acesta se găseşte (din meniul principal, opţiunea “File”, submeniu “Set path”). În

modul linie de comandă fiecare linie este prelucrată imediat şi rezultatele sunt afişate.

Linia de comandă nu este recomandată pentru scrierea fişierelor MATLAB.

2.2 Crearea programelor MATLAB (fişierelor script şi fişiere funcţie)

Un program MATLAB, caracterizat de extensia *.m, constă dintr-o

succesiune de instrucţiuni MATLAB, cu posibilitatea apelării altor fişiere. El

presupune mai multe linii de cod care se pot scrie apelând editorul MATLAB implicit.

Acesta se lansează prin comanda “Edit”.

Un fişier script conţine o secvenţă de comenzi. Dacă prima linie a fişierului

Page 6: Carte Retele Neuronale

Introducere în MATLAB - 9 -

conţine cuvântul “function”, fişierul respectiv este declarat ca fişier funcţie. O funcţie

diferă de un script prin faptul că poate lucra cu argumente.

Editorul oferă şi facilităţi de depanare (“debugging”) a programului prin

setarea unor puncte de oprire (“breakpoints”) şi rularea pas cu pas a programului.

Exemplul 1.1 Scrieţi o funcţie denumită “suma” care să preia drept

argument două variabile şi să returneze suma acestora.

Se apelează editorul prin comanda “edit” (fig.1.1).

Fig.1.1 Lansarea editorului pentru fişiere MAT:AB de tip *.m.

În urma acestei comenzi se poate introduce codul MATLAB aferent funcţiei

“suma” (fig.1.2). După salvarea fişierului (“File”, “Save As…”, suma.m) se poate

apela din linia de comandă nouă funcţie definită (fig.1.3).

2.3 Operaţii cu matrici

Definirea unei constante. Exemplu: » x = 2

Definirea unui vector. Exemplu: » y = [1 2 3 4 5]

Page 7: Carte Retele Neuronale

- 10 - Aplicaţia nr. 1

Fig.1.2 Editorul/debbuger-ul MATLAB folosit pentru scrierea şi depanarea fişierelor *.m.

Fig.1.3 Apelul funcţiei sumă, cu parametrii (6,4). Logic, rezultatul returnat va fi 6+4 = 10.

Definirea unei matrici. Exemplu: » A = [1 2 3;4 5 6;7 8 9]. Rezultatul va fi o

matrice 3x3 de forma:

Page 8: Carte Retele Neuronale

Introducere în MATLAB - 11 -

A =

1 2 3

4 5 6

7 8 9

Referirea unui elemet al unei matrici. Exemplu: » A(2,1)

ans =

4

Adunare +

Scădere -

Inmulţire *

Inmulţirea elementelor elementelor corespondente .*

Ridicarea la putere ^

Ridicarea la putere a elementelor corespondente .^

Impărţirea la stânga \ sau la dreapta /

Impărţirea la stânga .\ sau la dreapta ./ a elementelor corespondente

Transpusa unei matrici '

Schimbarea dimensiunilor matricii - funcţia reshape (X, M, N). Întoarce o

matrice de M linii şi N coloane cu elemente obţinute din matricea originală X .

2.4 Generarea vectorilor şi matricilor

Matrice nulă - funcţia zeros (M, N). Generează o matrice MxN cu toate

elementele egale cu 0.

Matrice unitate - funcţia ones (M, N). Generează o matrice MxN cu toate

elementele egale cu 1.

Matrice identică - funcţia eye (N, M). Generează o matrice MxN în care

diagonala matricii are elementele egale cu 1, restul elementelor matricii fiind

0.

Page 9: Carte Retele Neuronale

- 12 - Aplicaţia nr. 1

Generarea vectorilor cu pas liniar. Dacă se cunosc limitele intervalului şi pasul

dintre două elemente, vectorul va fi generat cu instrucţiunea:

x = xmin : pas : xmax

Dacă se cunosc limitele intervalului şi numărul de elemenete N se foloseste

comanda următoare:

x = linspace (xmin, xmax, N).

Generarea vectorilor cu pas logaritmic. Un vector x care va conţine N

elemente distribuite logaritmic între decadele [10xmin, 10xmax] se generează

astfel:

x = logspace (xmin, xmax, N)

2.5 Informaţii despre vectori/matrici

Dimensiunea unei matrici - funcţia size (A). Returnează un vector coloană

[M N] în care M reprezintă numărul de linii iar N reprezintă numărul de

coloane pentru matricea A.

Lungimea unui vector - funcţia length (x). Întoarce numărul de elemente ale

vectorului x.

2.6 Instrucţiuni şi fucţii de control

Repetarea unei secvenţe de program de un anumit număr de ori - instrucţiunea

FOR:

FOR variabilă = expresie,

grup de instrucţiuni,

END

Executarea condiţionată a instrucţiunilor - instrucţiunile IF, ELSEIF, ELSE.

Forma generală este:

IF expresie_1

Page 10: Carte Retele Neuronale

Introducere în MATLAB - 13 -

declaraţii_1

ELSEIF expresie_2

declaraţii_2

ELSE

declaraţii_3

END

Dacă expresie_1 este adevărată se vor executa numai declaraţii_1. Altfel, dacă

expresie_2 este adevărată, se vor executa numai declaraţii_2. În caz contrar, când

nici expresie_1 şi nici expresie_2 nu e adevărată, se execută declaraţii_3.

Repetarea unui grup de instrucţiuni de un număr nedefinit de ori - instrucţiunea

WHILE. Forma generală este:

WHILE expresie

grup de instrucţiuni

END

şi se execută “grup de instrucţiuni” până când “expresie” are toate elementele

nenule.

2.7 Reprezentarea graficelor 2D şi 3D

Grafice 2D elementare, în coordonate liniare. Sunt generate prin intermediul

instrucţiunilor: plot (y), plot (x, y), plot (x, y, s). Prima formă reprezintă

grafic

argumentul y în funcţie de indici. A II-a formă reprezintă graficul vectorului y în

funcţie de vectorul x. A III-a formă permite specificarea culorii şi a modului de

reprezentare a punctelor graficului. Controlul axelor unui grafic se realizează prin

intermediul instrucţiunilor loglog, semilogx, semilogy, folosite cu aceeaşi

sintaxă

ca instrucţiunea plot.

Există posibilitatea specificării denumirii graficului title(‘text’), axelor

graficului xlabel (‘text’) şi ylabel(‘text’), sau a legendei graficului legend

(string1,

string2, …).

Page 11: Carte Retele Neuronale

- 14 - Aplicaţia nr. 1

Grafice 3D elementare. Există numeroase funcţii care permit diverse reprezentări

3D. Dintre acestea cele mai des folosite sunt funcţia plot3 (x, y, z) care reprezintă

o linie în spaţiul 3D care trece prin punctele ale căror coordonate sunt tripleţi

(x, y, z).

Pentru reprezentarea 3D a suprafeţelor se poate folosi funcţia mesh (X, Y, Z). În

aceste condiţii o suprafaţă este parametrizată prin două variabile independente care

variază continuu în interiorul uni dreptunghi; fiecare punct este specificat prin trei

funcţii: X(i, j), Y(i, j) şi Z(i, j).

Există posibilitatea controlul culorii (mesh (X, Y, Z, C)), al luminozităţii

(lighting), al punctului de observaţie (view (az, el)) sau se pot modifica diverse alte

proprietăţi ale unei suprafeţe.

3. Experimente

3.1 Scrieţi un program MATLAB care să implementeze operaţiile cu matrici descrise

în § 2.3.

Rezolvare:

%Operatii cu matrici %Catalin-Daniel Caleanu, 2000

clear all close all clc

disp('definirea unei constante: x=2') x=2 pause

disp('definirea unui vector: y = [1 2 3 4 5]') y = [1 2 3 4 5] pause

disp('definirea unei matrici: A = [1 2 3; 4 5 6; 7 8 9], B = [10 7 6;3 2 0;2 4 5]') A = [1 2 3; 4 5 6; 7 8 9] B = [10 7 6;3 2 1;2 4 5]

Page 12: Carte Retele Neuronale

Introducere în MATLAB - 15 -

pause disp('referirea unui element al unei matrici: A(2,1)') A(2,1) pause

disp('adunarea a doua matrici: C = A + B') C = A + B pause

disp('scaderea a doua matrici: D = A - B') D = A - B pause

disp('inmultirea a doua matrici: E = A * B') E = A * B pause

disp('inmultirea elementelor corespondente: F = A .* B') F = A .* B pause

disp('ridicarea la puterea x: G = A ^ x') G = A ^ x pause

disp('ridicarea la putere a elementelor corespondente: H = A .^ x') H = A .^ x pause

disp('impartirea a doua matrici: I = A / B') I = A / B pause

disp('impartirea elementelor corespondente a doua matrici: J = A ./ B') J = A ./B pause

disp('transpusa unei matrici: K = A` ') K = A' pause

disp('schimbarea dimensiunii unei matrici: reshape(A,1,9)') L = reshape(A,1,9)

3.2 Scrieţi un program MATLAB care să genereze vectori/matrici după specificaţiile din §

2.4 şi să afişeze informaţii referitoare la aceştia/acestea conform § 2.5.

Page 13: Carte Retele Neuronale

- 16 - Aplicaţia nr. 1

Rezolvare:

%Generarea vectorilor si matricilor %Catalin-Daniel Caleanu, 2000 clear all close all clc

disp('generarea unei matrici nule cu 2 linii si 4 coloane: zeros(2,4)') A = zeros(2,4) pause

disp('generarea unei matrici unitate cu 3 linii si 2 coloane; ones(3,2)') ones(3,2) pause

disp('generarea unei matrici identice cu 3 linii si 3 coloane: eye(3)') eye(3) pause

disp('generarea unui vector cu pas liniar: a = 1:0.1:2') a = 1:0.1:2 pause

disp('generarea unui vector cu pas logaritmic b = logspace(1,3,5)') b = logspace(1,3,5) pause

disp('afisarea dimensiunilor unei matrici: size(A)') A size(A) pause

disp('afisarea dimensiunii unui vector: length(x)') a length (a)

3.3 Scrieţi un program MATALB care să folosească instrucţiunile de control descrise

în § 2.6.

Rezolvare:

%Instructiuni de control %Catalin-Daniel Caleanu, 2000

Page 14: Carte Retele Neuronale

Introducere în MATLAB - 17 -

clear all close all clc

disp('repetarea unei secvente de instructiuni de un nr. de ori: FOR') disp(' ') for i=1:1:4

disp('acest text va fi afisat de 4 ori')endpause

disp(' ') disp('executarea conditionata a instructiunilor: IF, ELSEIF, ELSE') disp(' ') nr = input('introduceti un numar: ') if nr > 10

disp('nr > 10') elseif nr < 10

disp('nr < 10') else

disp ('nr = 10')endpause

disp(' ') disp('Repetarea unui grup de instructiuni de un numar nedefinit de ori: WHILE') disp(' ') i=4 while i>0

i=i-1 end

3.4 Scrieţi un program MATLAB care să ilustreze posibilităţile de creare a graficelor 2D

şi 3D pe baza funcţiilor descrise în § 2.7. În acest sens reprezentaţi o distribuţie

gaussiană 2D respectiv 3D. Ecuaţiile de generare sunt:

2 x

1 2 2 y

2

şi:

2 e , pentru cazul 2D

x2 y 2

z 12

2 e2 2

, pentru cazul 3D.

Page 15: Carte Retele Neuronale

- 18 - Aplicaţia nr. 1

Rezolvare:

%Grafice 2D si 3D %Catalin-Daniel Caleanu, 2000

clear all close all clc sigma=3;

disp('grafic 2D') x=-1:.005:1; y=(1/2*pi*sigma^2)*exp(-(x.^2/2*sigma^2)); plot(x,y) title('Gaussian 2D') xlabel('Axa Ox') ylabel('Axa Oy') pause

disp('grafic 3D') x=-1:.01:1; y=-1:.01:1; [X,Y] = meshgrid(x,y); Z=(1/2*pi*sigma^2)*exp(-(X.^2+Y.^2)/2*sigma^2); figure mesh(Z) title('Gaussian 3D') xlabel('Axa Ox') ylabel('Axa Oy') zlabel('Axa Oz')

Page 16: Carte Retele Neuronale

APLICAŢIA NR. 2

Modele ale neuronilor şi ale reţelelor neuronale artificiale

1. Introducere

Se urmăreşte definirea noţiunilor de neuron artificial şi reţea neuronală

artificială (RNA). Sunt evidenţiate arhitecturile tipice ale RNA precum şi modurile de

instruire aferente acestora [4], [5].

2. Modelul neuronului artificial

Neuronul artificial, denumit uneori procesor elementar, nod sau unitate este

inspirat din modelul corespondentului biologic, real. Astfel, în cazul neuronului

biologic (fig.2.1) se pot deosebi mai multe intrări (dendrite), corpul celulei şi o ieşire

(axon).

Analogia dintre neuronul real şi cel artificial poate fi observată comparând fig.

2.1 cu fig.2.2, în cea din urmă figură fiind prezentat modelul unui neuron artificial. Se

pot deosebi, în cazul fig.2.2, cele 3 elemente constituente ale neuronului artificial:

- un număr de intrări (conexiuni sinaptice), fiecare dintre ele fiind caracterizată de o

anumită pondere sinaptică wkj;

- un sumator care efectuează o combinaţie liniară a intrărilor, rezultatul fiind intrarea

netă uk;

- o ieşire caracterizată de prezenţa unei funcţii de activare φ(.) şi a unui prag k.

De regulă φ(.) este o funcţie neliniară. Fig. 2.3 prezintă câteva forme tipice pentru

funcţia de activare a unui neuron.

Page 17: Carte Retele Neuronale

- 20 - Aplicaţia nr. 2

sinapsă

nucleuaxon

corpul celulei

dendrite

Fig. 2.1 Structura unui neuron biologic.

x1

x2 uk yk

Σ φ

xN θk

Fig. 2.2 Modelul neuronului artificial.

Formula matematică care descrie comportarea neuronului artificial este:

N

y ( u ) ( w

x ) (2.1)

k k k

ceea ce se mai poate scrie:

N

j1

kj j k

y k

cu x0 = -1 şi wk0 = k.

( w kj x j ) (2.2)j 0

Page 18: Carte Retele Neuronale

Modele ale neuronilor şi ale reţelelor neuronale artificiale - 21 -

1 1 1 1

0 0 0 0

-1 -1 -1 -1

-4 -2 0 2 4 -4 -2 0 2 4 -4 -2 0 2 4 -4 -2 0 2 4

a) Sigmoid b) Treaptă c) Liniară cu saturaţie d) Gaussian

Fig. 2.3 Funcţii de activare tipice.

3. Arhitecturi ale RNA

O structură compusă dintr-un număr mare de procesoare elementare

interconectate care operează în paralel, în vederea îndeplinirii unei sarcini specifice,

poartă denumirea de reţea neuronală artificială, prescurtat RNA.

RNA cu propagare înainte a semnalului (feedforward)

În acest caz, câmpul receptiv al unui neuron provine doar din stratul/straturile

inferioare celui din care face parte neuronul. RNA feeedforward pot fi total (fig.2.4) sau

parţial conectate (fig.2.5).

RNA recurente (feedback)

Se disting prin existenţa unui semnal de reacţie din partea neuronilor

straturilor superioare pentru neuronii straturilor inferioare sau, ca un caz particular,

semnalul de reacţie poate să provină de la ieşirile neuronilor aceluiaşi strat (fig.2.6).

Page 19: Carte Retele Neuronale

- 22 - Aplicaţia nr. 2

Fig. 2.4 RNA feedforward total conectată.

Fig.2.5 RNA feedforward parţial conectată.

4. Tipuri de instruire specifice RNA

RNA achiziţionează cunoştinţele prin instruire (învăţare). Învăţarea presupune

adaptarea parametrilor liberi ai RNA ca urmare a stimulilor mediului în care se

găseşte reţeaua. Tipul de învăţăre este determinat de maniera în care sunt ajustaţi

parametrii liberi ai RNA:

Page 20: Carte Retele Neuronale

Modele ale neuronilor şi ale reţelelor neuronale artificiale - 23 -

Fig.2.6 RNA recurentă.

Învăţarea de tip supervizat

Este caracterizată de prezenţa unui supervizor care cunoaşte cu exactitate

modul de asociere al intrărilor RNA cu ieşirile acesteia. Parametrii RNA sunt

modificaţi sub influenţa combinată a vectorilor de antrenament şi a semnalului de

eroare (diferenţa dintre răspunsul dorit şi cel actual). Scopul final al algoritmului de

antrenament este ca RNA să emuleze, optim în sens statistic, supervizorul.

Învăţarea de tip nesupervizat (cu autoorganizare)

Este caracterizată de absenţa unui semnal sau supervizor care să

aprecieze corectitudinea asociaţiilor intrare-ieşire. RNA va descoperii singură

legităţile conţinute în datele de intrare printr-o reprezentare internă adecvată a

trăsăturilor vectorului de intrare.

Page 21: Carte Retele Neuronale

- 24 - Aplicaţia nr. 2

Învăţarea prin întărire

Urmăreşte maximizarea unei mărimi scalare (indice de performanţă sau

semnal de întărire) în urma unei acţiuni efectuate de către sistemul supus învăţării. Dacă

modificările aduse conduc spre o stare mai bună decât cea precedentă, tendinţa sistemului

de a produce acea acţiune particulară este întărită.

5. Probleme

5.1. Reprezenati grafic câteva din funcţiile de activare (denumite în MATLAB

“transfer functions”) ale unui neuron disponibile în Neural Networks Toolbox, v.3.0.

Indicaţie: Pentru a cunoaşte totalitatea funcţiilor specifice, predefinite, disponibile

pentru domeniul reţele neuronale tastaţi “help nnet”. Dacă se doresc amănunte despre o

anumită funcţie, acestea se pot obţine prin: “help denumirea_funcţiei”.

Rezolvare:

%Reprezentare functii de activare %Catalin-Daniel Caleanu, 2000

clear all close all clc

n = -4:0.001:4;

%functie de activare de tip sigmoid a1 = logsig(n);

%functie de acticare de tip treapta a2 = hardlim(n);

%functie de activare de tip liniar, cu saturatie a3 = satlins(n);

%functie de activare radiala a4 = radbas(n);

subplot(1,4,1) plot(n,a1,'linewidth',2,'color','b');

Page 22: Carte Retele Neuronale

Modele ale neuronilor şi ale reţelelor neuronale artificiale - 25 -

axis([-4 4 -1.1 1.1]) title('sigmoid')

subplot(1,4,2) plot(n,a2,'linewidth',2,'color','b'); axis([-4 4 -1.1 1.1]) title('treapta') subplot(1,4,3) plot(n,a3,'linewidth',2,'color','b') axis([-4 4 -1.1 1.1]) title('liniar')

subplot(1,4,4) plot(n,a4,'linewidth',2,'color','b'); axis([-4 4 -1.1 1.1]) title('radial')

Observaţie: Rezultatul rulării programului poate fi observat în fig. 2.3.

5.2. Un neuron “j” primeşte semnale de la alţi patru neuroni ale căror nivele de

activare sunt: 0,1 , 0,3 , - 0,8 , 0,5. Ponderile sinaptice ale neuronului “j” sunt: 0,9 , 0,7 ,

0,1 , 0,7. Calculaţi ieşirea neuronului “j” în următoarele cazuri:

a) neuronul este liniar;

b) neuronul are o funcţie de activare sigmoidală. Se

consideră pragul de activare θk = 0,5.

Indicaţie: Modelul neuronului va fi implementat folosind funcţiile de activare purelin

pentru cazul neuronului liniar respectiv logsig pentru cazul neuronului neliniar.

Rezolvare:

%Implementare neuron %Catalin-Daniel Caleanu, 2000

clear all close all clc

% definire prag de activare theta = 0.5

% x = vector de intrare x = [0.1 0.3 -0.8 0.5]

Page 23: Carte Retele Neuronale

- 26 - Aplicaţia nr. 2

% w = vectorul ponderilor sinaptice w = [0.9 0.7 0.1 0.7]

% y = iesirea neuronului y1 = purelin(x*w'-theta) y2 = logsig(x*w'-theta)

5.3. Cunoscând faptul că anumiţi algoritmi de antrenament ai RNA folosesc derivata de

ordinul I a funcţiei de activare, ce avantaj prezintă în acest sens funcţiile de activare

sigmoid şi tangentă hiperbolică?

Rezolvare: Derivatele reprezintă funcţii exprimate prin funcţia originală (cea care se

derivează).

5.4. Implementaţi o RNA feedforward total conectată, care să aibă configuraţia de mai

jos. Calculaţi ieşirea y a RNA pentru x = [0,7 3] considerând că neuronii din stratul

ascuns au funcţii de activare de tip tangentă hiperbolică iar neuronul de ieşire este

liniar.

-1

0,5

x1 -1 10,2

-0,2x2 1 -2

-0,1

-1

-1

0,5

y

Fig.2.7 Reţea neuronală feedforward (pentru problema 5.4).

Indicaţie: La implementarea RNA se va folosi funcţia newff, a cărei descriere este

oferită în continuare:

NEWFF Crează o reţea neuronală feedforward Sintaxa: net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) în care:

Page 24: Carte Retele Neuronale

Modele ale neuronilor şi ale reţelelor neuronale artificiale - 27 -

PR - Rx2, matrice de valori min şi max pentru R intrări. Si - Numărul de neuroni ai stratului “i”, pentru Nl straturi. TFi - Funcţia de transfer pentru stratul “i”, implicit tangentă hiperbolică ('tansig'). BTF - Funcţia de antrenament, implicit metoda Levenberg-Marquardt ('trainlm'). BLF - Funcţia de învăţare, implicit gradient descendent cu moment ('learngdm') PF - Atribuit de performanţă, implicit eroarea medie pătratică ('mse').

Rezolvare:

%Implementare unei retele neuronale feedforward %Catalin-Daniel Caleanu, 2000 clear all close all clc % vectorul intrarilor x = [0.7; 3]; % specificarea valorilor min si max pentru fiecare dintre intrari x1min=0; x2min=0; x1max=10; x2max=10; % definirea numarului de straturi si a numarului de neuroni/strat nr_neur_asc_strat1=2; nr_neur_ies=1; % newff intoarce obiectul net, in care % ponderile stratului de intrare, net.iw % ponderile straturilor ascunse, net.lw % si deplasarile de scara, net.b % sunt initializate cu valori subunitare aleatorii net = newff([x1min x1max; x2min x2max],[nr_neur_asc_strat1 nr_neur_ies],{'tansig' 'purelin'}); % se definesc valorile dorite pentru praguri si ponderi net.iw{1,1}(1,:) = [-1 -0.2]; net.iw{1,1}(2,:) = [1 0.2]; net.b{1,1}(1,:) = 0.5;net.b{1,1}(2,:) = -0.1;net.lw{2,1}(1,:) = [1 -2]; net.b{2} = 0.5; y = sim(net,x)

5.5 Trasaţi diagrama Hinton aferentă RNA de la punctul anterior.

Indicaţie: Diagrama Hinton reprezintă o modalitate de vizualizare a mărimii

ponderilor şi pragurilor. Pentru vizualizarea ponderilor şi pragurilor aferente

neuronilor stratului ascuns din problema precedentă se va folosi comada:

Page 25: Carte Retele Neuronale

- 28 - Aplicaţia nr. 2

» hintonwb(net.iw{1},net.b{1})

Se observă o reprezentare proporţională a mărimii ponderilor şi pragurilor, culoarea

roşie (mai închisă) fiind asocită cu valorile negative iar cea verde (mai deschisă) cu cele

pozitive (fig.2.8).

1

2

0 1 2

Input

Fig.2.8 Diagrama Hinton pentru problema 5.5.

5.6 Evidenţiaţi comparativ avantajele şi dezavantajele RNA total conectate faţă de RNA

parţial conecte.

Rezolvare: Reţelele neuronale total conectate se folosesc atunci când nu există

cunoştinţe apriorice despre structura datelor de intrare. Au o aplicabilitate generală şi

din acest motiv o structură care presupune un număr însemnat de parametri liberi

(ponderi şi praguri). RNA parţial conectate exploatează informaţiile referitoare la

structura datelor de intrare şi au o arhitectură orientată pe un anumit tip de problemă.

Ele oferă uneori, pentru probleme particulare, rezultate mai bune decât cele total

conectate. Au cerinţe privitoare la puterea de calcul mai mici decât în cazul precedent,

având implementate mecanisme de partajare a ponderilor (“weight sharing”).

Page 26: Carte Retele Neuronale

APLICAŢIA NR. 3

Perceptronul simplu. Algoritmul LMS

1. Introducere

Se prezintă arhitectura şi algoritmii de antrenament pentru cazul RNA cu un

singur neuron: perceptronul simplu şi RNA ADALINE antrenată cu algoritmul

LMS [5].

2. Perceptronul simplu

Arhitectura unei astfel de RNA este prezentată în fig. 3.1. Se poate afirma că

perceptronul simplu reprezintă o particularizare a modelului McCulloch-Pitts al

neuronului artificial (vezi Aplicaţia nr.2, fig. 2.2) pentru cazul în care funcţia de

activare este de tip treaptă unitate bipolară.

I x1

NT x2

RĂRI xN

w1

wN

I

y EŞI

θ RE

-1

Fig. 3.1 Arhitectura perceptronului simplu.

Scopul perceptronului simplu este de a clasifica în una din cele două clase

disponibile (y = +1 sau y = -1) un set de stimuli exteriori. Regiunile de decizie vor fi

Page 27: Carte Retele Neuronale

- 30 - Aplicaţia nr. 3

separate de către un hiperplan definit de eceuaţia:

N

wi xi 0 (3.1)i1

În concluzie, perceptronul simplu poate fi folosit cu succes doar în cazul

particular al clasificării tiparelor liniar separabile, adică a tiparelor care sunt situate

de-o parte şi de alta al unui hiperplan. Având în vedere notaţiile următoare:

x (n ) [ 1 , x 1 (n ), x 2

(n ),...,

Tx N (n )]= vector de intrare;

T

w(n) [ (n),w1 (n), w2 (n),...,wN (n)] = vectorul ponderilor sinaptice;

θ(n) = prag;

y(n) = răspuns actual;

d(n) = răspuns dorit;

(n) = rată de învăţare, de regulă 0 < < 1.

paşii algoritmului (tip Rosenblatt) de antrenament aferent perceptronului simplu vor fi:

a) Iniţializarea: w(0) = 0;

T

b) Calcul răspuns actual: y(n) sgn[w (n)x(n)], în care funcţia sgn(.) reprezintă

funcţia signum.

c) Modificarea ponderilor sinaptice: w (n

în care :

1 , dac ã x ( n ) C 1

1 ) w (n ) [ d (n ) y (n )])x (n )

d( n)

1, dacãx(n) C2

d) Incrementarea lui n cu o unitate şi salt la pct.b)

Page 28: Carte Retele Neuronale

Perceptronul simplu. Algoritmul LMS - 31 -

3. Algoritmul LMS (Least-Mean-Square). RNA Adaline

Cunoscut şi sub denumirea de algoritmul Widrow-Hoff sau regula delta, este

destinat antrenarii unei RNA formată dintr-un singur neuron liniar. Ceea ce îl

diferenţiază de algoritmul de antrenament al perceptronului simplu este modul de

calcul al semnalului de eroare, care în acest caz nu este cuantizat iar

funcţia de activare poate fi liniară. Având în vedere aceste aspecte, algoritmul

LMS poate fi formulat în modul următor:

a) Etapa de initializare: pentru wk(0) = 0, k = 1,2, ..., N

b) Etapa de filtrare:

N

y ( n )

j0

wj( n ) x

j

( n )

e( n) d (n ) y (n )

w ( n 1 ) w ( n )

e ( n )x ( n), k 1 , 2,..., N

k k k

Formularea algoritmului LMS s-a făcut din perspectiva unei filtrări spaţiale.

El poate fi utilizat în aceeaşi măsură în rezolvarea problemelor de filtrare temporală,

considerând că x(n) reprezintă eşantioane ale vectorului de intrare la momente de timp

diferite:

x( n) [ x( n), x( n 1 ),...,

Tx( n N 1 )] (3.2)

RNA ADALINE (Adaptive Linear Element) foloseşte algoritmul de

antrenament LMS (Widrow-Hoff) în scopul clasificării tiparelor. Structura ei este

prezentată în fig. 3.2.

În timpul etapei de antrenament, tiparele sunt aplicate direct RNA, ea urmând să

descopere singură caracteristicile acestora. Experienţa acumulata a RNA este

conţinută în valorile w1, ..., wN şi .

Page 29: Carte Retele Neuronale

- 32 - Aplicaţia nr. 3

x1

x2

xN

4. Probleme

w1

wN eΣ

θ

d

Fig.3.2 Structura RNA ADALINE.

4.1 Perceptronul simplu poate fi folosit la implementarea unor funcţii logice.

Verificaţi practic această afirmaţie prin intermediul codului sursă MATLAB aferent

unui perceptron simplu care să efectueze funcţiile logoce ŞI, SAU şi SAU-

EXCLUSIV. Justificaţi comportamentul perceptronului simplu în cazul funcţiei SAU-

EXCLUSIV.

Indicaţie: La implementarea RNA se va folosi funcţia newp, a cărei descriere este

oferită în continuare:

NEWP Creează un perceptron Sintaxa: net = newp(pr,s,tf,lf) în care: PR - Rx2, matrice de valori min şi max pentru R intrări.S - Număr de neuroniTF - Funcţie de transfer, implicit funcţia prag ('hardlim'). LF - Funcţia de învăţare, implicit 'learnp'. Rezolvare:

%Implementare unei retele neuronale de tip perceptron simplu %Catalin-Daniel Caleanu, 2000 clear all close all clc % tipar de intrare

Page 30: Carte Retele Neuronale

Perceptronul simplu. Algoritmul LMS - 33 -

Pantr = [0 0 1 1;0 1 0 1] % tipare de iesire T_SAU = [0 1 1 1] T_SI = [0 0 0 1]T_XOR = [0 1 1 0] % se implementeaza 3 RNA perceptron net1 = newp([0 1;0 1],1); net2 = newp([0 1;0 1],1); net3 = newp([0 1;0 1],1); % se antreneaza 3 RNA perceptron in rezolvarea % problemelor SAU, SI, SAU-EXCLUSIV net1 = train(net1,Pantr,T_SAU); net2 = train(net2,Pantr,T_SI); net3 = train(net3,Pantr,T_XOR); % se testeaza performantele retelelor pentru vectorii de antrenament y1a = sim(net1,Pantr) y2a = sim(net2,Pantr) y3a = sim(net3,Pantr) % se testeaza performantele retelelor pentru vectorii de test % astfel se poate testa capacitatea de generalizare a retelelor Ptest = [0.1 0.2 0.9 0.8;0.2 0.7 0.1 0.9]; y1t = sim(net1,Ptest) y2t = sim(net2,Ptest) y3t = sim(net3,Ptest)

Observaţie: Pentru reţelele neuronale care implementează funcţiile ŞI şi SAU logic se

constată o funcţionare corespunzătoare atât pentru tiparele de antrenament cât şi

pentru cele de test. Pentru cazul SAU-EXCLUSIV se constată imposibilitatea

rezolvării corecte a problemei, atât pentru tiparele de atrenament cât şi pentru cele de

test. Explicaţia provine din faptul că primele două cazuri (ŞI, SAU) reprezintă

probleme liniar separabile, pe când problema SAU-EXCLUSIV nu e liniar separabilă.

4.2 Verificaţi capacitatea de predicţie liniară pentru o RNA ADALINE în cazul

eşantioanelor prelevate dintr-o funcţie de tip sinusoidal, la care frecvenţa se modifică liniar

în intervalul [0 6π]. Consideraţi o predicţie de ordinul 5, adică eşantionul x(n) să fie prezis

pe baza x(n-1), x(n-2), …, x(n-5).

Indicaţie: La implementarea RNA se va folosi funcţia newlin, a cărei descriere este

oferită în continuare:

NEWLIN Creează un strat liniar

Page 31: Carte Retele Neuronale

- 34 - Aplicaţia nr. 3

Sintaxă: net = newlin(PR,S,ID,LR) în care: PR - Rx2, matrice de valori min şi max pentru R intrări. S - Numărul de neuroni de ieşire. ID - Vectorul întârzierilor , implicit = [0]. LR - Rata de învăţare, implicit = 0.01. Rezolvare: %Predictie liniara %Catalin-Daniel Caleanu, 2000 clear all close all clc % generarea si reprezentarea functiei tinta x = 0:0.1:6*pi; fr = linspace(1,3,length(x)); y = sin(x.*fr); plot(x,y); hold on % vectori de intrare si iesire P respectiv T P = con2seq(y); T = P; % implementarea retelei neuronale lr = 0.1; intarzieri = [1 2 3 4 5]; net = newlin(minmax(y),1,intarzieri,lr); % calculul esantionului curent din cele 5 esantioane intarziate [net,ies,e]=adapt(net,P,T); % reprezentarea grafica a rezultatelor plot(x,cat(2,ies{:}),':r'); xlabel('Timp'); ylabel('Predictie - - Tinta - Eroare .-'); title('Semnalele Predictie, Tinta si Eroare'); plot(x,cat(2,e{:}),'.-g') hold off

Semnalele Predictie, Tinta si Eroare2

1

0

-1

-2 0 5 10 15 20

Timp

Fig.3.3 Semnalele Ţintă, Predicţie şi Eroare = Ţintă - Predicţie, pentru problema 4.2.

Page 32: Carte Retele Neuronale

APLICAŢIA NR. 4

Perceptronul multistrat. Algoritmul BP standard

1. Introducere

Se va studia una dintre cele mai importante tipuri ale RNA feedforward

(RNA cu propagare înainte) şi anume perceptronul multistrat, împreună cu

algoritmul standard de antrenament al acestuia, cunoscut sub denumirea de algoritm cu

propagare înapoi a erorii (BP, backpropagation) [5], [6].

2. Arhitectura RNA de tip perceptron multistrat

În mod tipic RNA perceptron multistrat (MLP, Multilayer Perceptron)

conţine:

- un set de unitaţi senzoriale (noduri sursă) care constituie stratul de intrare;

- unul sau mai multe straturi ascunse;

- un strat de ieşire.

În fig. 4.1 este prezentată arhitectura unei RNA de tip perceptron multistrat, cu un

singur strat ascuns.

Se pot distinge trei caracteristici esenţiale ale RNA de tip MLP:

a) Neuronii straturilor de intrare, ascuns sau chiar cei ai stratului de ieşire au inclus în

modelul lor matematic funcţii de activare de tip neliniar, netede (derivabile în orice

punct). Prezenţa neliniarităţii este foarte importantă în funcţionarea MLP, în plus ea fiind

motivată şi de către comportamentul neuronului biologic.

b) MLP conţine unul sau mai multe straturi ascunse, care permit realizarea unor

sarcini complexe prin extragerea progresivă, la acest nivel, a trăsăturilor conţinute în

tiparele aplicate la intrare.

c) Au un grad înalt de conectivitate.

Page 33: Carte Retele Neuronale

- 36 - Aplicaţia nr. 4

x1

y1

x2

xN

yM

Fig. 4.1 RNA de tip perceptron multistrat, cu un singur strat ascuns.

3. Algoritmul BP standard

Eroarea la nivelul unui neuron “j” din stratul de ieşire este definită prin

diferenţa dintre valoarea dorită şi valoarea actuală a ieşirii neuronului:

ej (n ) d (n ) y (n ) (4.1)

j j

Astfel, suma erorilor pătratice pentru toţi neuronii stratului de ieşire, este:

E ( n )

1

2ej C

2j (n ) (4.2)

unde “C” reprezintă mulţimea neuronilor stratului de ieşire.

Considerând antrenamentul RNA drept o problemă de minimizare a unei

funcţii de cost E(n), se pot deduce, pe baza metodei gradientului

descendent, modificările care trebuie aduse parametrilor liberi ai RNA:

w ji ( n )

E ( n)(4.3)

w ji ( n)

în care reprezintă rata de învăţare.

Dezvoltând ec. (4.3) se obţin formulele modificărilor ponderilor sinaptice:

a) dacă neuronul “j” aparţine stratului de ieşire:

Page 34: Carte Retele Neuronale

Perceptronul multistrat. Algoritmul BP standard - 37 -

w(n ) (n ) y (n )

[e (n ) (v (n ))] y (n ) (4.4)

ji j i j j j i

în care j (n) reprezintă valoarea gradientului local al erorii iar vj(n) intrarea netă a

neuronului (potenţialul intern de activare).

b) dacă neuronul “j” aparţine stratului ascuns:

w(n ) [ (v (n )) (n )w (n )] y (n )(4.5)

ji j j k

k kj i

unde “k” reprezintă indicele corespunzător neuronilor din stratul succesor aceluia din

care face parte neuronul “j”. Într-un caz particular, când MLP are doar un singur strat

ascuns, indicele “k” se referă la neuronii stratului de ieşire.

Practic, se disting două etape ale algoritmului BP:

a) pasul forward - presupune calculul tuturor ieşirilor neuronilor RNA:

y ( n) ( v ( n )) ( w (n )y (n )) (4.6)

j j j i C l 1

ji i

în care Cl-1 reprezintă stratul inferior aceluia din care face parte neuronul “j”.

b) pasul backward - pe baza calculului erorii (gradientului) straturilor, provenind de la

ieşire spre intrarea RNA, se modifică ponderile sinaptice cf. ec. (4.4) sau (4.5). În acest

caz eroarea sau gradientul erorii pentru stratul “n+1” poate fi considerată ca un semnal de

intrare pentru neuronii stratului “n” - de aici şi denumirea algoritmului (BP,

backpropagation, algoritm cu propagare înapoi a erorii).

Alegerea parametrului este crucială în cazul multor aplicaţii concrete. O

valoare prea mică a ratei de învăţare generează o traiectorie lină în spaţiul ponderilor dar

are ca efect un proces lung de antrenament. Dimpotrivă, o valoare prea mare conduce

la un posibil comportament instabil al RNA, convergenţa algoritmului fiind

compromisă. O metodă simplă de creştere a , evitând totodată instabilitatea, o

reprezintă includerea unui termen denumit “moment” în ec. (4.4):

w(n ) w(n 1 ) (n ) y (n ) (4.7)

ji ji j i

Ecuaţia de mai sus poartă denumirea de regula delta generalizată. Efectele introducerii

termenului moment se manifestă prin prevenirea “înţepenirii” RNA în minime locale

Page 35: Carte Retele Neuronale

- 38 - Aplicaţia nr. 4

ale spaţiului ponderilor şi printr-un efect global de stabilizare a procesului de învăţare.

4. Probleme

4.1 Implementaţi o RNA MLP care să rezolve problema XOR. Numărul de neuroni de

intrare, ascunşi şi de ieşire vor fi: 2, 4 respectiv 1 iar metoda de antrenament

backpropagation cu moment (funcţia MATLAB ‘traingdm’).

Indicaţie: La implementarea RNA se va folosi funcţia newff, a cărei descriere este

oferită în continuare:

NEWFF Crează o reţea neuronală feedforward Sintaxa: net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) în care: PR - Rx2, matrice de valori min şi max pentru R intrări. Si - Numărul de neuroni ai stratului “i”, pentru Nl straturi. TFi - Funcţia de transfer pentru stratul “i”, implicit tangentă hiperbolică ('tansig'). BTF - Funcţia de antrenament, implicit metoda Levenberg-Marquardt ('trainlm'). BLF - Funcţia de învăţare, implicit gradient descendent cu moment ('learngdm') PF - Atribuit de performanţă, implicit eroarea medie pătratică ('mse').

Rezolvare:

%Implementare unui perceptron multistrat pentru rezolvarea problemei XOR %Catalin-Daniel Caleanu, 2000

clear all close all clc % tipar de intrare Pantr = [0 0 1 1;0 1 0 1] % tipare de iesire T_XOR = [0 1 1 0]

% se implementeaza RNA perceptron multistrat cu structura: % doua intrari in gama [-1 1] % 4 neuroni ascunsi % 1 neuron de iesire % functia de activare stat ascuns: tangenta hiperbolica ('tansig') % functia de activare iesire: liniara ('purelin')

Page 36: Carte Retele Neuronale

Perceptronul multistrat. Algoritmul BP standard - 39 -

% metoda de antrenament: backpropagation gradient descendent cu moment ('traingdm') net = newff([-1 1;-1 1],[4 1],{'tansig' 'purelin'},'traingdm'); net.trainParam.lr=0.05; net.trainParam.mc=0.5; net.trainParam.min_grad=0; net.trainParam.show = 10; net.trainParam.epochs = 400; net.trainParam.goal = 0.001;

% se antreneaza RNA perceptron in rezolvarea problemei SAUEXCLUSIV net = train(net,Pantr,T_XOR);

% se testeaza performantele retelei pentru vectorii de antrenament ya = hardlim(sim(net,Pantr)-0.5)

% se testeaza performantele retelei pentru vectorii de test % astfel se poate testa capacitatea de generalizare

Ptest = [0.1 0.2 0.9 0.8;-0.2 0.7 0.1 0.9]; yt = hardlim(sim(net,Ptest)-0.5)

Performance is 0.000976277, Goal is 0.001

100

10-2

0 50 100 150 200

238 Epochs

Fig.4.2 Evoluţia erorii medii pătratice de-alungul procesului de antrenamet (problema 4.1)

4.2 Verificaţi capacitatea de interpolare a RNA MLP pentru următoarea funcţie:

f(x) = 0,2 + 0,8(x+ 0,7sin(2x))

cu 0 ≤ x ≤ 1. Se vor considera un număr de 11 puncte de antrenament, adică intervalul

Page 37: Carte Retele Neuronale

- 40 - Aplicaţia nr. 4

considerat, eşantionat cu un pas de 0,1 şi 101 puncte de test, adică un pas de

eşantionare de 0,01. Evaluaţi eroarea pentru cazul datelor de antrenament respectiv

test.

Rezolvare:

% Implementare unui perceptron multistrat pentru % cazul interpolarii unei functii % Catalin-Daniel Caleanu, 2000

clear all close all clc

% definirea perechilor de vectori % intrare (P,pattern) - iesire (T, target) % pentru datele de antrenament (P,T) si test (Ptest, Ttest) P = 0:0.1:1; T = 0.2 + 0.8*(P + 0.7*sin(2*pi*P)); Ptest=0:0.01:1; Ttest=0.2 + 0.8*(Ptest + 0.7*sin(2*pi*Ptest)); % se implementeaza o RNA-MLP cu: % 1 intrare, 15 neuroni ascunsi, 1 neuron de iesire net1= newff(minmax(P),[15 1],{'tansig' 'logsig'},'traingdm'); net1.trainParam.lr=2; net1.trainParam.mc=0.5; net1.trainParam.min_grad=1e-10; net1.trainParam.show = 1; net1.trainParam.epochs = 300; net1.trainParam.goal = 0.001;

% antrenarea retelei [net1,tr1]= train(net1,P,T);

% utilizarea retelei pentru cazul datelor de antrenament si test y1test = sim(net1,Ptest); y1antr = sim(net1,P);

% calculul erorii de intrepolare er1antr=(sum(sum(abs(T-y1antr))))/length(T); er1test=(sum(sum(abs(Ttest-y1test))))/length(Ttest); er = [er1antr er1test];

% reprezentarea grafica a rezultatelor clf; plot(Ptest,Ttest,'+r'); title('Aproximare functiei 0.2 + 0.8*(x + 0.7*sin(2*pi*x))'); hold

Page 38: Carte Retele Neuronale

Perceptronul multistrat. Algoritmul BP standard - 41 -

plot(P,T,'.') plot(Ptest,y1test,':'); xlabel('x'); ylabel('Antrenament . Test + Iesire MLP --') hold off figure bar(er*100); ylabel('Eroare aproximare [%]'); xlabel('Antrenament Test')

Aproximare functiei 0.2 + 0.8*(x + 0.7*sin(2*pi*x))1

0.8

0.6

0.4

0.2

0 0 0.2 0.4 0.6 0.8 1

x

Fig.4.3 Aproximarea unei funcţii (problema 4.2).

4.3 Considerând drept vector de intrare pentru o RNA MLP cu un singur strat ascuns,

imaginile rasterizate ale cifrelor 0...9, în format binarizat 8x5 (fig.4.4). Să se scrie

codul sursă MATLAB care realizează, prin intermediul RNA MLP, clasificarea

acestor tipare.

Page 39: Carte Retele Neuronale

- 42 - Aplicaţia nr. 4

x0=[1 1 1 1 1; ... x9=[1 1 1 1 1; 1 0 0 0 1; 1 0 0 0 1;1 0 0 0 1; 1 0 0 0 1;1 0 0 0 1; 1 1 1 1 1;1 0 0 0 1; 0 0 0 0 1;1 0 0 0 1; 0 0 0 0 1;1 0 0 0 1; 0 0 0 0 1;1 1 1 1 1] 1 1 1 1 1]

Fig. 4.4 Conversia imaginilor în format binar.

Evaluaţi eroarea pentru cazul datelor de antrenament respectiv pentru setul

datelor de test. Consideraţi apoi cazul datelor de antrenament/test contaminate cu

zgomot.

Rezolvare:

% Implementare unui perceptron multistrat pentru % clasificarea numerelor 0...9 % Catalin-Daniel Caleanu, 2000

clear all close all clc

% se incarca imaginile binarizate ale cifrelor din fisierul cifre.mat % matricile x0...x9 au dimensiunea 8x5 load cifre

% se formeaza matricea P a vectorilor de intrare P = [x0(:) x1(:) x2(:) x3(:) x4(:) x5(:) x6(:) x7(:) x8(:) x9(:)];

% se formeaza matricea vectorilor de iesire % de exemplu, pentru x0 aplicat la intrare, vectorul de iesire este: % 1 0 0 0 0 0 0 0 0 0 T = eye(10);

% matricea PR specifica valorile min si max pentru cele 40

Page 40: Carte Retele Neuronale

Perceptronul multistrat. Algoritmul BP standard - 43 -

(8x5) % de intrari ale MLP for i=1:40

PR(i,:)=minmax(P(:)'); end

% se defineste o RNA MLP cu structura 40-20-10 net= newff(PR,[20 10],{'tansig' 'logsig'},'traingdm');

% se definesc alti parametrii ai RNA (rata de invatare, moment, etc.) net.trainParam.lr=1; net.trainParam.mc=0.7; net.trainParam.min_grad=1e-10; net.trainParam.show = 1; net.trainParam.epochs = 400; net.trainParam.goal = 0.001;

% incepe procesul de antrenament [net,tr]= train(net,P,T); % faza de utilizare a retelei % se testeaza capacitatea de recunoastere pentru cazul cand tiparele % sunt afectate cu zgomot while(1)

cifra=input('Introduceti cifra dorita sau "q" pentru iesire: ','s');

if isletter(cifra) break end reshape(P(:,str2num(cifra)+1),8,5) zgomot=input('Zgomotul dorit [%]: ');

% s-a definit in prealabil o functie xi = noise (xi, zgomot) % care contamineaza biti matricii "xi" in proportie de

"zgomot [%]" cifra_zgomot =

reshape(noise(P(:,str2num(cifra)+1),zgomot),8,5) [y,i] = max(sim(net,cifra_zgomot(:)),[],1);

cifra_recunoscuta=i-1 end disp('program terminat')

4.4 Cum variază capacitatea de generalizare a RNA MLP în funcţie de numărul

neuronilor stratului ascuns? Dar în funcţie de numărul de epoci de antrenament sau

nivelul erorii medii pătratice? Experimentaţi aceste variaţii în cazul pct.4.3.

Rezolvare:

Page 41: Carte Retele Neuronale

- 44 - Aplicaţia nr. 4

Numărul neuronilor ascunşi are o valoare optimă, în general imposibil de

prezis cu exactitate, înainte de evaluarea performanţelor reţelei în mai multe seturi de

experimente.

Dacă numărul neuronilor stratului ascuns este prea mic, reţeaua nu reuşeşte să

formeze o reprezentare internă adecvată a datelor de antrenament şi în consecinţă

eroarea de clasificare va fi mare. Cu un număr prea mare de neuroni în stratul ascuns

reţeaua învaţă foarte bine datele de antrenament dar este incapabilă de o bună

generalizare obţinând valori mari ale erorii pătratice pentru cazul datelor de test.

Concluzia este valabilă şi pentru numărul total de epoci de antrenament sau

valoarea finală a erorii pătratice medii: optimul acestor mărimi poate fi determinat numai

experimental şi este dependent de tipul problemei şi structura RNA.

Page 42: Carte Retele Neuronale

APLICAŢIA NR. 5

Algoritmi rapizi de antrenament pentru RNA de tip MLP

1. Introducere

Se vor investiga câteva metode, detaliate în [7] şi [8], care conduc la

accelerarea procesului de antrenament al unei RNA - MLP:

- metoda Darken-Moody;

- regula delta-delta;

- adaptarea fuzzy a ratei de învăţare;

- metode bazate pe calculul gradientului conjugat (Fletcher-Reeves, Polak-

Ribière);

- metoda Levenberg-Marquardt.

2. Metoda Darken-Moody

Denumita şi metoda “caută apoi converge”, propune ajustarea ratei de învăţare

într-un mod simplu dar care aduce un spor considerabil în ceea ce priveşte viteza de

convergenţă a algoritmului de antrenament.

Se propune o rată de învăţăre de forma:

( n)

0

n1

(5.1)

în care η0 reprezintă rata de învăţăre iniţială, τ o constantă de timp iar n numărul

epocilor de antrenament.

Variaţia η de-alungul epocilor de antrenament este ilustrată în fig. 5.1. În epoci

timpurii, algoritmul se comportă similar celui standard, rata de învăţare menţinându-se

Page 43: Carte Retele Neuronale

- 46 - Aplicaţia nr. 5

ridicată şi relativ constantă. Pe măsură ce procesul de antrenament avansează, η este

micşorată.

8

6

4

2

100 101 102 103

Nr. de epoci

Fig. 5.1 Forma de variaţie a η de-alungul epocilor de antrenament.

Ca dezavantaj al acestei metode este considerată imposibilitatea alegerii apriorice a

valorilor optime pentru constantele η0 şi τ.

3. Regula delta-delta

Considerând valoarea criteriului (atributului) de performanţă (MSE, SSE, etc.)

notată cu perf(w(n)), regula de modificare a ratei de învăţare este în acest caz:

c 1 ( k 1 ), if

perf ( w ( k )) perf ( w ( k 1 )

( k) c( k 1 ),

if perf ( w ( k )) c perf ( w ( k 1 )(5.2)

2 3(k 1), altfel

în care coeficienţii au următoarele valori tipice: c1 = 1,05, c2 = 0,7, c3 = 1,04.

În cazul în care η(n) = η(n-1), noile valori calculate pentru w(n) şi perf(w(n)) vor avea

valoarea w(n-1) respectiv perf(w(n-1)).

Page 44: Carte Retele Neuronale

Algoritmi rapizi de antrenament pentru RNA de tip MLP - 47 -

4. Adaptarea fuzzy a ratei de învăţare

Dezavantajul metodei precedente constă din faptul că parametrii c1 şi c2 sunt

constanţi de-alungul etapei de învăţare şi, în consecinţă, impiedică o variaţie rapidă a ratei

de învăţare.

Controlerul fuzzy [9] primeşte drept intrări valoarea relativă a atributului de

performanţă:

p ( n )

perf ( n )perf ( n 1 )

(5.3)

şi variaţia relativă a p(n):

p ( n )

perf ( n )

perf ( n 1 )

perf ( n 1 ) (5.4)

perf ( n 2)

Ieşirea controlerului de tip Mamdami reprezintă un coeficient “c” care multiplică rata de

învăţare:

(n) c(n 1 ) (5.5)

Suprafaţa de reglare a controlerului este prezentată în fig. 5.2.

5. Metode bazate pe calculul gradientului conjugat

Metodele de antrenament prezentate până în acum pot fi circumscrise în clasa

metodelor de ordinul întâi ale gradientului descendent deoarece iau în considerare

prima derivată a funcţiei de cost (funcţie criteriu). În cazul acestor metode,

direcţia

vectorului de-alungul căruia se face ajustarea ponderilor reprezintă negativul

gradientului.

Metoda gradientului conjugat evită oscilaţiile în jurul soluţiei finale,

considerând o relaţie, relativ complicată, între direcţia şi gradientul vectorului.

Fie p(n) vectorul direcţie. Ponderile reţelei vor fi adaptate după următoarea

regulă:

Page 45: Carte Retele Neuronale

- 48 - Aplicaţia nr. 5

w(n 1 ) w(n) (n) p(n)(5.6)

Iniţial:

p(0) g(0) (5.7)

Fig. 5.2 Suprafaţa de reglare a controlerului fuzzy.

în care g(n) reprezintă vectorul gradient. Ceilalţi vectori direcţie vor fi calculaţi ca o

combinaţie liniară a vectorului gradinet curent şi a vectorului direcţie anterior:

p(n 1 ) g(n 1 ) (n)p(n)(5.8)

Există numeroase moduri de exprimare a parametrului β(n):

a) Formula Fletchr-Reeves:

T

g(( n) n

1 )g ( n )

g ( n 1 )T (5.9)g ( n )

b) Formula Polak-Ribière:

( n)

g ( n

T1 )

g[ g ( n 1 ) g ( n )]

T(n ) g (n )

(5.10)

În cazul ec. (5.6) η(n) este definit după cum urmează:

(n) arg min{Eav(w(n)p(n))} (5.11)

adică presupune o căutare liniară pentru găsirea valorii particulare η care minimizează

funcţia de cost.

Page 46: Carte Retele Neuronale

Algoritmi rapizi de antrenament pentru RNA de tip MLP - 49 -

6. Metoda Levenberg-Marquardt (LM)

Metoda LM derivă din metoda Newton de minimizare a unei funcţii [8] şi

presupune însumarea hessianului H (matrice cu elemente derivate de ordinul doi ale

indicelui de performanţă) cu un termen de forma νI (ν constantă pozitivă, I matricea

identică) în scopul eliminării cazurilor pentru care H-1 nu există:

w

E1

E (5.12)

2 1

H [ E I]Când indicele (funcţia) de performanţă este o sumă de pătrate (cazul RNA

feedforward) matricea hessiană poate fi aproximată prin JT J iar gradientul prin JT e unde

J reprezintă jacobianul RNA (matrice cu elemente derivate de ordinul I ale indicelui de

performantă) şi e reprezintă vectorul eroare al RNA [10].

w T

J eT 1

(5.13) [J J I]

De menţionat faptul că ν poate să fie modificat adaptiv, pentru el fiind recomandată o

valoare cât mai mică.

Metoda LM reprezintă cea mai rapidă metodă de antrenament dar viteza de

converganţă poate să scadă dramatic dacă dimensiunile RNA cresc.

7. Probleme

7.1 Pentru cazul problemei de interpolare formulată în Aplicaţia nr. 4, pct. 4.2,

verificaţi comparativ viteza de convergenţă pentru algoritmul BP standard şi cele 6

metode prezentate în cadrul acestei lucrări.

Rezolvare:

% Comparatie intre diversi algoritmi de antrenament % cazul interpolarii unei functii % Catalin-Daniel Caleanu, 2000

clear all

Page 47: Carte Retele Neuronale

- 50 - Aplicaţia nr. 5

close all clc % definirea perechilor de vectori % intrare (P,pattern) - iesire (T, target) % pentru datele de antrenament (P,T) si test (Ptest, Ttest) P = 0:0.1:1; T = 0.2 + 0.8*(P + 0.7*sin(2*pi*P)); Ptest=0:0.01:1; Ttest=0.2 + 0.8*(Ptest + 0.7*sin(2*pi*Ptest));

% se implementeaza 4 RNA-MLP identice cu: % 1 intrare, 9 neuroni ascunsi, 1 neuron de iesire % antrenate cu 4 algoritmi diferiti net1= newff(minmax(P),[9 1],{'tansig' 'logsig'},'traingdm'); net1.trainParam.lr=3; net1.trainParam.mc=0.3; net1.trainParam.min_grad=1e-10; net1.trainParam.show = 1; net1.trainParam.epochs = 60; net1.trainParam.goal = 0.001; t1 = clock; [net1,tr1]= train(net1,P,T); time1=etime(clock,t1);

net2= newff(minmax(P),[9 1],{'tansig' 'logsig'},'traingdx'); net2.trainParam.lr = net1.trainParam.lr; net2.trainParam.mc = net1.trainParam.mc; net2.trainParam.min_grad = net1.trainParam.min_grad; net2.trainParam.show = net1.trainParam.show; net2.trainParam.epochs = net1.trainParam.epochs; net2.trainParam.goal = net1.trainParam.goal; t2 = clock; [net2,tr2]= train(net2,P,T); time2=etime(clock,t2); net3= newff(minmax(P),[9 1],{'tansig' 'logsig'},'trainfuzzy'); net3.trainParam.lr = net1.trainParam.lr; net3.trainParam.mc = net1.trainParam.mc; net3.trainParam.min_grad = net1.trainParam.min_grad; net3.trainParam.show = net1.trainParam.show; net3.trainParam.epochs = net1.trainParam.epochs; net3.trainParam.goal = net1.trainParam.goal; t3 = clock; [net3,tr3]= train(net3,P,T); time3=etime(clock,t3);

net4= newff(minmax(P),[9 1],{'tansig' 'logsig'},'trainlm'); net4.trainParam.lr = net1.trainParam.lr; net4.trainParam.mc = net1.trainParam.mc; net4.trainParam.min_grad = net1.trainParam.min_grad; net4.trainParam.show = net1.trainParam.show; net4.trainParam.epochs = net1.trainParam.epochs; net4.trainParam.goal = net1.trainParam.goal;

Page 48: Carte Retele Neuronale

Algoritmi rapizi de antrenament pentru RNA de tip MLP - 51 -

t4 = clock; [net4,tr4]= train(net4,P,T); time4=etime(clock,t4);

y1test = sim(net1,Ptest); y2test = sim(net2,Ptest); y3test = sim(net3,Ptest); y4test = sim(net4,Ptest); y1antr = sim(net1,P); y2antr = sim(net2,P); y3antr = sim(net3,P); y4antr = sim(net4,P);

% calcul eroare test, antrenament si timp de executie er1test=(sum(sum(abs(Ttest-y1test))))/length(Ttest); er2test=(sum(sum(abs(Ttest-y2test))))/length(Ttest); er3test=(sum(sum(abs(Ttest-y3test))))/length(Ttest); er4test=(sum(sum(abs(Ttest-y4test))))/length(Ttest); ertest=[er1test er2test er3test er4test];

er1antr=(sum(sum(abs(T-y1antr))))/length(T); er2antr=(sum(sum(abs(T-y2antr))))/length(T); er3antr=(sum(sum(abs(T-y3antr))))/length(T); er4antr=(sum(sum(abs(T-y4antr))))/length(T); erantr=[er1antr er2antr er3antr er4antr];

time=[time1 time2 time3 time4]

% reprezentarea grafica a rezultatelor clf; figure title('Aproximare functiei 0.2 + 0.8*(x + 0.7*sin(2*pi*x))'); hold plot(Ptest,Ttest,'linewidth', 2) plot(Ptest,y1test,'-'); plot(Ptest,y2test,':r'); plot(Ptest,y3test,'-.g'); plot(Ptest,y4test,'--m'); xlabel('x'); legend('original','traingdm', 'traingdx', 'trainfuzzy', 'trainlm',0); hold off figure hold semilogy(tr1.epoch,tr1.perf,'-'); semilogy(tr2.epoch,tr2.perf,':r'); semilogy(tr3.epoch,tr3.perf,'-.g'); semilogy(tr4.epoch,tr4.perf,'--m'); title('EPM versus numar de epoci'); xlabel('Numar de epoci'); legend('traingdm', 'traingdx', 'trainfuzzy', 'trainlm',0) hold off

Page 49: Carte Retele Neuronale

- 52 - Aplicaţia nr. 5

figure bar((ertest)*100); ylabel('Eroare aproximare test [%]'); xlabel('traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4') figure bar((erantr)*100); ylabel('Eroare aproximare antrenament [%]'); xlabel('traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4') figure barh(time,'r'); xlabel('Timp prelucrare [s]'); ylabel('traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4') hold off ertest=[er1test er2test er3test er4test]*100 erantr=[er1antr er2antr er3antr er4antr]*100

7.2 Repetaţi verificarea de la punctul 7.1 pentru cazul unei probleme de clasificare a unor

tipare de dimensiuni mari (baza de date ORL).

7.3 Completaţi tabelul de mai jos (tab.5.1), pe baza rezultatelor simulării de la pct. 7.1

şi 7.2. Care sunt concluziile desprinse în urma rulării acestor algoritmi de antrenamet ?

Rezolvare:

Concluziile experimentelor conduc la ideea că algoritmii de antrenament se

clasează, în ordinea crescătoarea a vitezei de convergenţă, conform tab.5.1, adică cel mai

lent algoritm este algoritmul gradientului descendent iar cel mai rapid

Levenberg-Marquardt.

Trebuie ţinut cont însă de faptul că cerinţele de memorie şi putere de calcul sunt

practic proporţionale cu viteza de convergenţă. Spre exemplu, probleme care implică

vectori de intrare de dimensiuni mari (sute de elemente) sunt imposibil de abordat cu

metoda Levenberg-Marquardt şi greu de abordat cu metodele bazate pe gradientul

conjugat (Fletcher-Reeves, Polak-Ribière).

Page 50: Carte Retele Neuronale

Algoritmi rapizi de antrenament pentru RNA de tip MLP - 53 -

6

4

2

0

4

3

2

1

1 2 3 40

1 2 3 4traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4 traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4

Fig.5.1 Grafice rezultate în urma rulării programului aferent pct.7.1.

Page 51: Carte Retele Neuronale

- 54 - Aplicaţia nr. 5

TIP PROBLEMĂ INTERPOLARE CLASIFICARE

EPM Nr. Timp EPM Nr. TimpMETODĂ [%] de de [%] de de

epoci calcul epoci calcul[s] [s]

1. BP momentum (traingdm) 2. delta-delta (traingdx) 3. η fuzzy (trainfuzzy) 4. Fletcher-Reeves (traincgf) 5. Polak-Ribière (traincgp) 6. Levenberg-Marquardt (trainlm)

Tab. 5.1 Rezultate comparative pentru diverşi algoritmi de antrenament ai RNA MLP.

Metodele backpropagation cu rata variabilă de învăţare (traingdx, trainfuzzy)

oferă cel mai bun raport viteză de convergenţă / cerinţe de memorie.

Page 52: Carte Retele Neuronale

APLICAŢIA NR. 6

Reţele neuronale bazate pe funcţii radiale

1.Introducere

Este prezentată o abordare diferită a modului de funcţionare a unei RNA:

aceasta este văzută ca o problemă de aproximare a unei curbe într-un spaţiu

multidimensional.

2. Arhitectura unei RNA-RBF

O RNA bazată pe funcţii radiale (RBF - Radial Basis Function) prezintă trei

straturi (fig. 6.1):

- stratul de intrare sau stratul senzorial;

- stratul ascuns - conţine funcţii care constituie o bază pentru vectorii de intrare;

aceste funcţii poartă denumirea de funcţii radiale.

- stratul de ieşire.

Transformarea spaţiului de intrare în spaţiul neuronilor ascunşi este neliniară, pe

când transformarea spaţiului neuronilor ascunşi în spaţiul neuronilor de ieşire este

liniară. Justificarea acestui aspect se bazează pe teorema lui Cover asupra

separabilităţii tiparelor, care arată că o problemă complexă de clasificare a tiparelor,

transformată neliniar întru-un spaţiu de dimensiune înaltă este cu mult mai probabil de a fi

liniar separabilă decât întru-un spaţiu cu dimensiuni mai puţine.

Page 53: Carte Retele Neuronale

- 56 - Aplicaţia nr. 6

φ

φ

φ

Fig.6.1. Arhitectura unei RNA-RBF.

3. Strategii de învăţare pentru RNA bazate pe funcţii radiale

Există mai multe metode de antrenament ale RNA - RBF, deosebirea dintre ele

constând în metoda de alegere a centrilor funcţiilor radiale:

- metoda centrilor ficşi aleşi aleator;

- metoda selecţiei autoorganizate a centrilor;

- metoda selecţiei supervizate a centrilor.

În continuare, se va prezenta detaliat prima metodă menţionată anterior. Ea

reprezintă cea mai simplă abordare şi presupune funcţii radiale fixe pentru funcţiile de

activare ale stratului ascuns. Locaţiile centrilor funcţiilor sunt alese aleator, dintre

vectorii de intrare.

Pentru funcţiile radiale se preferă cele de forma:

G x t

i

2 Mexp x t

2 i

2 , i 1 , 2, M (6.1)

d în care “M” reprezintă numărul centrilor, iar “d” distanţa maximă dintre aceşti centri

aleşi. Pentru determinarea ponderilor stratului liniar de ieşire se foloseşte metoda

pseudoinversei:

w G

d (6.2)

G fiind pseudoinversa matricii G:

Page 54: Carte Retele Neuronale

Reţele neuronale bazate pe funcţii radiale - 57 -

G

cu:

g

{ g ij }

ji exp

M 2 2 xj ti , i 1 , 2,

(6.3)

M , j 1 , 2, N (6.4)

d Conform teoremei decompoziţiei valorii singulare pseudoinversa matricii G

este definită astfel:

T

G V Σ U (6.5)

în care Σ este ea însăşi o matrice N x N constituită din valorile singulare ale lui G:

1 1 1 diag , ,..., ,0

1 2 k

4. Probleme

,...,0 (6.6)

4.1. Verificaţi capacitatea de predicţie a unei RNA-RBF pentru următoarea serie

haotică: x 3,79x ( 1 x ) cu x[0,1]n n1 n1

Centrii funcţiilor radiale vor fi uniform distribuiţi în intervalul [0,1].

Indicaţie: La implementarea RNA se va folosi funcţia newrb, a cărei descriere este

oferită în continuare:

NEWRB Creează o RNA bazată pe funcţii radiale Sintaxă: net = newrb(P,T,GOAL,SPREAD) în care: P - RxQ matrice de Q vectori de intrare. T - SxQ matrice de Q vectori ţinta. GOAL - Eroarea medie patratică dorită, implicit 0.0. SPREAD - Dispersia funcţiilor radiale, implicit 1.0. Rezolvare:

%Exemplu de implementare a unei RNA-RBF %pentru cazul predictiei functiilor %Catalin-Daniel Caleanu, 2000 clear all close all clc

Page 55: Carte Retele Neuronale

- 58 - Aplicaţia nr. 6

N=100; % numarul total de esantioane calculatep=50; % fractiunea, in procente, din N pentru care

% se vor constitui datele de antrenament k=5; % pasul predictieieg = 0.02; % eroarea MSE dorita sc = 0.03; % marimea camplului receptiv al functiilor radiale p=p/100; % calculul si reprezentarea grafica a seriei haotice x(1)=0.01; for i=2:N

x(i)=3.79*x(i-1)*(1-x(i-1)); end P=x(1:N*p); % N*p esantioane de antrenament, x(n)T=x(1+k:N*p+k); % N*p esantioane calculate analitic, x(n+k)net=newrb(P,T,eg,sc); % implementarea RNA-RBFtest1=x((N*p)+1:N); % esantioane de testY1=sim(net,test1); % esantioaner prezise de RNA-RBF% reprezentarea grafica a datelor plot(x(1:N-1),x(2:N),'+') xlabel('x(n-1)'); ylabel('x(n)'); figure plot(x,'red','linewidth', 1) hold on plot(N*p+1+k:N+k,Y1,'linewidth', 2) legend('training values','predicted values',0) hold off

4.2. Evaluaţi influenţa dispersiei funcţiilor radiale (în cazul 4.1) asupra procesului de

predicţie. Acelaşi lucru pentru cazul în cazul în care numărul neuronilor ascunşi

variază.

1

1 0.8

0.8

0.6 0.6

0.4

0.2

00 0.2 0.4 0.6 0.8 1

x(n-1)

0.4

0.2 training values

predicted values

00 20 40 60 80 100 120

Fig.6.1 Grafice obţinute în urma rulării programului de la punctul 4.1.

Page 56: Carte Retele Neuronale

APLICAŢIA NR. 7

Reţele neuronale artificiale recurente

1.Introducere

Se urmăreşte familiarizarea cu o clasă importantă a RNA şi anume acelea care

prezintă o structură recurentă.[11]. RNA recurente sunt caracterizate de:

- unităţi de procesare neliniare;

- simetria conexiunilor sinaptice (wji = wij);

- folosirea intensivă a feedback-ului .

Din această categorie fac parte RNA Boltzmann (RNA-B) şi RNA Hopfield

(RNA-H), cea din urmă fiind detaliată în cele ce urmează.

2. RNA de tip Hopfield (RNA-H)

Poate fi văzută ca o memorie asociativă sau ca o memorie adresabilă

prin

conţinut, a cărei funcţie principală este regăsirea tiparelor stocate în memorie, ca

răspuns la prezentarea unui tipar incomplet sau contaminat cu zgomot. Esenţa

memoriilor adresabile prin conţinut constă în transformarea tiparelor ξ μ în stări stabile

sμ ale sistemului dinamic (proces de codare) şi invers (proces de decodare).

Fiecare neuron al RNA-H (fig.7.1) este caracterizat prin una din cele două stări

posibile: activ (si = 1) , respectiv inactiv (si = -1).

Starea unei RNA-H alcătuită din “N” neuroni este definită de către vectorul:

s = [s1, s2, ..., sN]T (7.1)

Page 57: Carte Retele Neuronale

- 60 - Aplicaţia nr. 7

Fig.7.1. Arhitectura unei RNA-H cu 3 neuroni.

Potenţialul intern al unui neuron “j” este:

N

v j w ji si ji 1

în care θj reprezintă pragul neuronului.

Neuronul “j” îşi modifică starea conform regulii:

1 , dacã v j 0

(7.2)

s j (7.3) 1 , dacã v j 0

sau echivalent sj = sgn[vj]. Dacă vj = 0 atunci sj poate lua o valoare arbitrară, +1 sau

-1. De exemplu, se poate conveni ca starea neuronului să rămână nemodificată.

În funcţionarea RNA-H se pot distinge două etape:

a) Faza de memorare. Să presupunem că se doreşte stocarea unor vectori “N”

dimensionali {ξ μ | μ = 1, 2, ..., p}. Atunci, conform postulatului lui Hebb:

w 1 p

(7.4)ji N

1

, j , i

Acelaşi lucru poate fi scris în formă matricială astfel:

Page 58: Carte Retele Neuronale

Reţele neuronale artificiale recurente - 61 -

1 pT p

W N ξμ ξ μ

1

N I (7.5)

în care I reprezintă matricea identică.

b) Faza de utilizare (regăsire). În această fază, un anumit tipar x este impus drept

vector de stare al RNA-H. De regulă el reprezintă o versiune incompletă sau afectată

de zgomot al unui tipar memorat. Apoi fiecare neuron al reţelei, ales în mod aleator,

estimează propriul potenţial de activare şi îşi stabileşte starea finală. Acest proces

asincron (serial) de modificare a stărilor se va opri în momentul în care vectorul de

stare nu se va mai modifica. Aceasta înseamnă că RNA-H a produs un vector de stare

invariant în timp, ale cărui elemente satisfac condiţia de stabilitate:

N

y j sgn( i 1

sau în formă matricială:

y sgn( W

w ji yi i ), j 1 , 2, ...,

y θ )

N (7.6)

(7.7)

RNA-H cu ponderi sinaptice li se poate asocia aşa-numita funcţie de energie:

E

1

2

N N

wi1 j1

ji s i s j (7.8)

Variaţia energiei ΔE ca urmare a variaţiei stării neuronului “j” e dată de expresia:

N

E s j

w ji s i (7.9)i1i j

Astfel, în timpul fazei de regăsire a unui tipar, E descreşte monoton. Schimbarea stării

RNA-H va continua până când se va atinge un minim local al peisajului energetic.

Minimele peisajului energetic corespund unor atractori specifici spaţiului stărilor care în

mod normal reprezintă tipare memorate în faza de memorare.

Page 59: Carte Retele Neuronale

- 62 - Aplicaţia nr. 7

3. Probleme

3.1. Implementaţi în MATLAB o RNA-H cu N = 120 neuroni (N2 - N = 12280 ponderi

sinaptice!) care, în faza de memorare să fie capabilă să stocheze 10 tipare de

dimensiune 12 x 10 pixeli corespunzătoare numerelor 0...9 binarizate. Pentru faza de

utilizare procedaţi după cum urmează:

Într-o primă etapă, se vor aplica tiparele de antrenament, pentru testarea

capacităţii RNA-H de a regăsi corect datele de antrenament. Notaţi numărul de iteraţii

necesare regăsirii acestora.

Pentru a demonstra capacitatea de corecţie a erorilor pentru RNA-H se vor

folosi versiuni corupte cu zgomot 5%, 15% respectiv 25% ale aceleiaşi baze de date.

Notaţi şi în acest caz numărul de iteraţii necesare regăsirii acestor tipare şi efectuaţi o

comparaţie cu cazul precedent.

Indicaţie: La implementarea RNA se va folosi funcţia newhop, a cărei descriere este

oferită în continuare:

NEWHOP Creează o RNA recurentă de tip Hopfield Sintaxa: net = newhop(T) în care: T - RxQ matrice de Q vectori ţintă (valorile acestora trebuie să fie +1 sau -1)

Rezolvare:

% Exemplu de implementare a unei RNA-Hopfield % pentru cazul regasirii tiparelor % Catalin-Daniel Caleanu, 2000

clear all close all clc

% incarca fisierul tipare.mat % care returneaza variabila tipare de dimensiune 120x10 % coloanele acesteia reprezentand cifrele de la 0 la 9 load tipare disp('Se incarca tiparele de antrenament...') % afiseaza imaginile originale ale cifrelor fig1=figure;

Page 60: Carte Retele Neuronale

Reţele neuronale artificiale recurente - 63 -

set(fig1,'Position',[200 150 50 50]) imshow(reshape(tipare,10,120)'); truesize(fig1,[200,200]); title('Imagini originale') disp('Tiparele de antrenament incarcate si afisate!') disp(' ')

% creeaza si antreneaza RNA disp('Reteaua se antreneaza...') net=newhop(tipare); disp('Reteaua antrenata!') disp(' ') % verificare stabilitate RNA pentru punctele initiale disp('Se verifica memorarea tiparelor de antrenament...') nr_iteratii = 10; Ai = tipare; Y = sim(net,nr_iteratii,[],Ai);

% afiseaza imaginile furnizate de RNA fig2=figure; set(fig2,'Position',[500 150 50 50]) imshow(reshape(Y,10,120)'); truesize(fig2,[200,200]); title('Iesirea RNA')

disp('Tipare de antrenament afisate. Apasati orice tasta !') pause close all

% faza de utilizare a retelei % se testeaza capacitatea de recunoastere pentru cazul cand tiparele % sunt afectate cu zgomot while(1)

clc cifra=input('Introduceti cifra dorita sau "q" pentru iesire:

','s'); if isletter(cifra) break end close all zgomot=input('Zgomotul dorit [%]: '); nr_iteratii=input('Nr. de iteratii: ');

% s-a definit in prealabil o functie xi = noise2 (xi, zgomot)

% care contamineaza biti matricii "xi" in proportie de "zgomot [%]"

% se afiseaza cifra contaminata cu zgomot cifra_zgomot =

reshape(noise2(tipare(:,str2num(cifra)+1),zgomot),10,12)

Page 61: Carte Retele Neuronale

- 64 - Aplicaţia nr. 7

fig3=figure; set(fig3,'Position',[200 200 50 50]) imshow(cifra_zgomot') truesize(fig3,[200,200]); title('Imagine cu zgomot')

% se aplica cifra contaminata la intrarea RNA cifra_contaminata=tipare(:,str2num(cifra)+1); cifra_contaminata=noise2(cifra_contaminata,zgomot); Y = sim(net,{1 nr_iteratii},{},{cifra_contaminata});

% se afiseaza raspunsul RNA fig4=figure; set(fig4,'Position',[500 200 50 50]) imshow(reshape(Y{nr_iteratii},10,12)') truesize(fig4,[200,200]); title('Iesirea RNA')

end % end while

close all disp('Program terminat !')

Imagine cu zgomot Iesirea RNA

Fig.7.2 Cifra “1” contaminată cu zgomot 10% este aplicată RNA-H, care după 10 iteraţii, converge spre

unul din tiparele memorate anterior, în acest caz cel al cifrei “1” (problema 3.1).

Page 62: Carte Retele Neuronale

APLICAŢIA NR. 8

Reţele neuronale cu autoorganizare

1. Introducere

Se prezintă o nouă clasă a RNA şi anume cele cu învăţare de tip

nesupervizat (cu autoorganizare) [12], [13]. Discuţia este restrânsă la cadrul

învăţării de tip competitiv deşi trebuie menţionată existenţa mai multor paradigme

ale învăţării nesupervizate: învăţarea de tip hebbian sau cea bazată pe teoria

informaţiei. În contextul mai sus menţionat este prezentată arhitectura şi algoritmul

standard de antrenament pentru RNA-SOFM (Self Organizing Feature Map)

cunoscută şi sub denumirea de RNA Kohonen. Este discutată şi o versiune modificată

pentru algoritmului standard, denumit algoritmul cu conştiinţă.

2. RNA-SOFM (Kohonen)

Scopul acestui algoritm constă în transformarea unui tipar de intrare de

dimensiune arbitrară într-o hartă de trăsături (spaţiu discret, de regulă 1D sau 2D)

ordonată topologic. Cu alte cuvinte, există o corespondenţă

între tipul (caracteristicile) tiparului aplicat la intrare şi locaţia

spaţială a neuronului care va fi activat. Corespondenţa topologică se

manifestă în sensul în care la tipare similare aplicate la intrarea

RNA vor fi activaţi neuroni situaţi în aceeaşi vecinătate (lob sau

bulb) a stratului de ieşire.

Arhitectura RNA-SOFM 2D este prezentată în fig.8.1.

Algoritmul de antrenament presupune următorii paşi :

a) Iniţializarea ponderilor. Se aleg valori aleatoare mici pentru ponderile sinaptice

wj(0).

Page 63: Carte Retele Neuronale

- 66 - Aplicaţia nr. 8

Stratul neuronilor de ieşire

w1

x1

wN

Stratul neuronilor de intrarex2 xN

Fig. 8.1. Arhitectura unei RNA-SOFM 2D.

b) Desemnarea neuronului câştigător. Se aplică tiparul x la intrarea RNA, iar pe

baza acestuia este selectat neuronul câştigător al competiţiei:

i (x ) arg

j

c) Ajustarea ponderilor:

min x( n ) w , j 1 ,2 ,..., N (8.1)j

w ( n ) ( n )[ x w ( n )] , daca j )j

w j ( n 1 ) j i(x)

(8.2)0,

în care η(n) reprezintă rata de învăţare, iar i ( x

altfel

) ( n ) reprezintă vecinătatea topologică

a neuronului învingător i(x). Dacă se notează cu j,i (x

topologice, atunci relaţia (8.2) poate fi rescrisă astfel:

w ( n 1 ) w ( n ) ( n ) ( n )[ x ( n )

) amplitudinea vecinătăţii

w (n )] (8.3)j j

De regulă η(n), ( n ) şij, i (x ) j

sunt mărimi dinamice, care variază de-ai (x )

lungul epocilor de antrenament:

d

j,i ( x )

2j, i

j,i exp( 2

2 ) (8.4)

Page 64: Carte Retele Neuronale

Reţele neuronale cu autoorganizare - 67 -

( n )

n 0 exp (8.5)

1

n (n) 0 exp (8.6)

2

în care dj,i reprezintă distanţa de la neuronul “j” la neuronul câştigător “i” iar , ,0 0

1, 2 sunt constante.

Procedura se repetă de la pasul b) de un număr de ori specificat apriori sau până

când nu se mai înregistrează schimbări notabile în harta de trăsături .

3. Algoritmul de antrenament nesupervizat, cu conştiinţă

Una din problemele cu care este confruntat algoritmul de tip Kohonen

reprezintă faptul că unii neuroni ai RNA pot să câştige foarte rar sau chiar deloc

competiţia. Algoritmul cu conştiinţă elimină acest impediment prin memorarea

numărului de activări pentru fiecare dintre neuronii RNA. Conştiinţa neuronului se

manifestă prin autoeliminarea sa din cursa pentru câştigarea competiţiei în cazul în

care a fost activat (a câştigat competiţia) de un număr de ori prea mare.

Paşii algoritmului sunt următorii:

a) Găsirea ponderii sinaptice wi cea mai apropiată de vectorul de intrare x:

x wi min x w , j 1 ,2 ,..., N

j

b) Memorarea numărului de activări pentru neuronul care a câştigat competiţia:

p

unde 0<B<<1 şi:

y

nouj

j

vechi vechip B ( y p)

j j j

1 , dacã neuronul " j " este câstigator0,altfel

c) Găsirea noului neuron câştigător, conform mecanismului conştiinţei:

x w min( x w b )i j j j

Page 65: Carte Retele Neuronale

- 68 - Aplicaţia nr. 8

unde bj poate fi văzut ca o deplasare de scară (bias); el este definit după cum urmează:

bj

1 C p

jN

unde “C” este o constantă iar “N” reprezintă numărul total de neuroni dinstratul de ieşire.d) Adaptarea vectorului ponderilor aferente neuronului câştigător:

wnoui

vechi vechiw ( x w )

i i

în care reprezintă rata de învăţare a algoritmului SOFM

4. Probleme

4.1 Pentru a ilustra procesul de formare a bulbilor de-a lungul epocilor de

antrenament, implementaţi o RNA-SOFM tridimensională, 3 x 3 x 3 neuroni, folosind

funcţia newsom. Tiparele de intrare sunt generate de ecuaţia (fig.8.2):

x2y2

1 22 z

2

2 e (8.7)

Folosind funcţia plotsom ilustraţi formarea bulbilor după 0, 3, 20 de iteraţii.

Indicaţie: Pentru implementarea unei RNA-SOFM se va folosi fucţia newsom, a cărei

descriere este oferită în continuare:

NEWSOM Creează o RNA tip hartă de trăsături Sintaxa: net = newsom(PR,[d1,d2,...],tfcn,dfcn,olr,osteps,tlr,tns) în care: PR - Rx2 matrice de valori min şi max pentru R intrări. Di - Dimensiunea (numărul de neuroni) pentru stratul “i”, implicit [5 8]. TFCN - Tipul topologiei, implicit 'hextop'. DFCN - Funcţia distanţă (descrie noţiunea de distanţă dintre neuronii stratului de ieşire), implicit 'linkdist'. OLR - Rata de învăţare în faza de ordonare, implicit 0.9. OSTEPS - Durata (în epoci) a fazei de ordonare, implicit 1000. TLR - Rata de învăţare în faza de ajustare, implicit 0.02 TND - Distanţa dintre vecinătăţi în faza de ajustare, implicit 1.

Page 66: Carte Retele Neuronale

Reţele neuronale cu autoorganizare - 69 -

Fig.8.2 Distribuţia tiparelor de intrare pentru problema 4.1.

Rezolvare:

% Exemplu de implementare a unei retele neuronale SOFM-3D % pentru cazul extragerii distributiei de probabilitate % dintr-un set de date % Catalin-Daniel Caleanu, 1999

clear all close all clc

% definire constante sigma=1.5; % reprezentare 3D a datelor de antrenament x=-1:.01:1; y=-1:.01:1; [X,Y] = meshgrid(x,y); Z=(1/2*pi*sigma^2)*exp(-(X.^2+Y.^2)/2*sigma^2); mesh(Z) figure Z=Z.*rand(length(x),length(x)); mesh(Z) figure

% definirea unui nor de date 3D cu distributie gaussiana x=2*(rand(1,300)-0.5); y=2*(rand(1,300)-0.5); z=(1/2*pi*sigma^2)*exp(-(x.^2+y.^2)/2*sigma^2); z=z.*rand(1,length(x));

% definirea setului de date de intrare P P = [x;y;z]; % implementarea retelei neuronale SOFM cu trei intrari in gama -1...1, -1...1,

Page 67: Carte Retele Neuronale

- 70 - Aplicaţia nr. 8

% 0...10 si un strat de iesire tridimensional de 3x3x3 neuroni net = newsom([-1 1;-1 1;0 10],[3 3 3]); % afisarea distributiei initiale a vectorilor pondere plotsom(net.layers{1}.positions) figure

% antrenamentul retelei net.trainParam.epochs=1000; net = train(net,P);

plotsom(net.iw{1,1},net.layers{1}.distances)

Weight Vectors

N euron

1.5

1

0.5

0

2

1

position(2,i) 0 0

Po siti ons 2

1.5

1

0.5

2 -0.5

1

position(1,i)

00.5 0.5

W(i,2)

-0.50

W(i,1)

Fig.8.3 Distribuţiile iniţiale şi finale ale vectorilor pondere obţinute în urma rulării progarmului aferent

pct.4.1.

Page 68: Carte Retele Neuronale

v

APLICAŢIA NR. 9

Primul experiment cu reţele neuronale celulare: studiul

unor

template-uri simple

1. Chestiuni introductive

Lucrarea de faţă urmăreşte aprofundarea cunoştintelor de reţele neuronale

celulare (RNC) prin studiul experimental, prin simulare, al unor template-uri simple.

Simularea se face utilizând toolbox-ul MATCNN, elaborat exclusiv pentru

acest tip de reţele neuronale şi care este prezentat în ANEXA NR. 1. Sunt analizate

două template-uri, larg utilizate în prelucrările de imagini: template-ul EDGE şi

template-ul THRES. Peste tot în cele ce urmează se are în vedere reţeaua neuronală

simulată în MATCNN, adică o RNC standard, cu vecinataţi 3x3

( N1( i, j) ).

2. Analiza template-urilor EDGE şi THRES

Regimul dinamic al unei celule dintr-o RNC cu vecinătăţi 3x3 este descris de

ecuaţia diferenţială ordinară şi neliniară [7]:

C xij ( t ) R

1v xij t

A ij ,kl v ykl

t B ij ,kl v ukl tI ij (9.1)

kl N 1

iar mărimea la ieşiere ei este data de relaţia:

v (t ) f (v (t )) 0 5( | v ( t )

kl N1

1| | v ( t ) 1| ) (9.2)

yij xij xij

În expesiile de mai sus, v , v , v

xij

reprezintă starea, intrarea şi respectiv

ieşirea unei celule C . Prin N

xij uij yij

a fost notată vecinătatea de raza 1 (vecinătate 3x3) a ij 1

Page 69: Carte Retele Neuronale

- 72 - Aplicaţia nr.9

unei celule C , definită în sensul celor aratate în [7]. A şi B reprezintă ij ij,kl ij,kl

operatori sinaptici de reacţie şi respectiv de comandă iar I ij este curentul celulei (de

regulă invariant în spatiu). Trebuie observat apoi că funcţia f (.) , ce defineşte

caracteristica de ieşire este funcţia sigmoid aproximată liniar pe porţiuni.

Observaţie: Dacă în rel.(9.1) se iau parametrii R C 1, ecuaţia diferentială care

rezultă caracterizează aşa-numita reţea neuronală standard [7], simulată - aşa cum s-a

arătat mai sus - în MATCNN.

Este limpede că operaţiile de procesare pe care le realizează o RNC sunt

determinate de operatoriiA , B şi respectiv de curentul I . Acest ansamblu de

ij,kl ij,kl ij

mărimi este denumit în literatura de specialitate template-ul* RNC şi elaborarea de

noi template-uri, corespunzatoare unor noi operaţii de prelucrare cu RNC, constituie în

momentul de faţă o preocupare majoră în domeniu.

Vom analiza în continuare template-urile EDGE şi THRES (de la

“threshold”, prag) incluse în biblioteca standard aferentă toolbox-ului MATCNN. Aşa cum

sugerează denumirea, aceste template-uri realizează:

- detecţia muchiilor în cazul unor imagini cu nuanţe de gri;

- respectiv conversia unei imagini cu nuanţe de gri într-o imagine alb-negru (imagine

binară).

Observaţie: Într-un caz mai general, în rel.(9.1) pot interveni şi alţi operatori,

dependent de complexitatea template-urilor utilizate (vezi [7]). În cazul de faţă, aşa cum

va rezulta în continuare, template-urile analizate includ numai operatori liniari de tipul A şi

B, astfel încât rel.(9.1) este acoperitoare.

În cazul ambelor template-uri intereseaza următoarele aspecte:

* Termenul “template” a fost preluat direct din literatura de limbă engleză în lipsa unui

termen potrivit, echivalent, în limba romană. Frecvent, mărimile A , B etc. suntij,kl ij,kl

apelate tot prin termenul “template”. În acord cu semnificaţia reală şi pentru a evita

confuziile, în lucrarea de faţă aceste mărimi vor fi desemnate prin termenul “operatori”.

Page 70: Carte Retele Neuronale

Primul experiment cu reţele neuronale celulare - 73 -

- forma în care este definit template-ul,

- comportamentul dinamic al reţelei care utilizează template-urile respective,

- satisfacerea de către template-urile analizate a regulilor locale care definesc operaţia de

procesare în cauză (în cazul de faţă detecţia muchiilor respectiv conversia în albnegru a

unei imagini cu nuanţe de gri).

2.1 Template-ul EDGE

În cazul acestui template operatorii A şi B respectiv curentul I sunt de forma:

A: EDGE_A = [0 0 0;

0 2 0;

0 0 0];

B: EDGE_B = [-0.25 -0.25 -0.25; (9.3)

-0.25 2.0 -0.25;

-0.25 -0.25 -0.25];

I: EDGE_I = -1.45;

Celelalte mărimi care caracterizează reţeaua sunt definite după cum urmează:

Intrarea: U(t) = P, unde P reprezintă imaginea statică ce urmeaza a fi

procesată

Starea iniţiala: X(0) = U(t)

Condiţiile de frontieră: Sunt de tipul fix, adică v 0 si v 0 pentru toate

uij xij

celulele virtuale ([U] = [Y] = [0]) [7]

Ieşirea: Y(t) Y(), unde Y() constituie o imagine

binară în care pixelii negri corespund muchiilor nete respectiv

muchiilor vagi din imaginea P.

Page 71: Carte Retele Neuronale

- 74 - Aplicaţia nr.9

Observaţii: Muchiile vagi reprezinta grupări de pixeli gri care formează segmente de linii

sau arce unidimensionale, astfel încât intensitatea pixelilor de pe o parte a

liniei/arcului diferă semnificativ de intensitatea pixelilor învecinaţi, situaţi de cealaltă parte

a liniei/arcului.

Template-ul EDGE poate fi definit şi pentru cazul în care se pleacă din

condiţii iniţiale nule (X(0) = 0). Forma data în lucrare prezintă avantajul unei

iniţializări uşoare, imaginea P fiind oricum disponibilă.

Reţelele neuronale având operatorul A cu toate elementele nule, cu excepţia

elementului a , se numesc reţele necuplate, deoarece o celulă C nu este conectată00 ij

cu ieşirile celulelor din imediata ei vecinatate.

Vom aborda în continuare problema comportamentului dinamic al RNC

studiate.

Conform celor prezentate în [7], în cazul RNC standard - cum este şi cazul de

faţă, este asigurată existenţa şi unicitatea unei solutii vxij(t) , pentru t 0 şi pentru

orice stare initială vxij(0) R . Afirmaţia de mai sus este importantă din punct de

vedere aplicativ, deoarece ne asigură că după încheierea unui regim tranzitoriu

(teoretic pentru t ) reţeaua ajunge într-o stare stabilă (nu oscilează haotic). În

această situatie, tensiunile la ieşirile celulelor, care reprezintă rezultatul prelucrării

(imaginea Y() ) , nu se mai modifică în timp şi prin urmare pot fi interpretate.

În cele ce urmează vom aprofunda problema stabilităţii urmând o cale mai

simplă, intuitivă. Se are în vedere în acest scop schema din fig.9.1, care reprezintă

structura unei celule C ij din reţeaua analizată.

Această structură a fost elaborată pe baza urmatoarei relaţii:

Page 72: Carte Retele Neuronale

v

v

Primul experiment cu reţele neuronale celulare - 75 -

U

v uij

I ij

xij

B +v

dt

-1

a 00

xijf(.)

vyij

Fig. 9.1 Schema functională a unei celule

( t ) v ta v ( t ) B v

C ij din RNC studiată

tI *, (9.4)

xij xij 00 yij kl N

1

ij , kl ukl ij

rezultată prin particularizarea ecuaţiei (9.1) pentru cazul template-ului EDGE (în care

numai a00 0 ) şi considerând R C 1. Cu precizarea că vectorul U include

tensiunile de la intrările tuturor celulelor din imediata vecinatate a celulei Cij , legatura

dintre schema functională şi rel.(9.4) este imediată.

Problema stabilităţii poate fi acum abordată pe baza schemei de mai sus. Este

lesne de constatat că atâta timp cât | vxij | 1 , conform rel.(9.2) v v şi în

yij xij

consecinţa circuitul se comportă în esentă ca un integrator cu reacţie pozitivă

( a00 2 1). Prin urmare tensiunea la ieşirea lui creşte sau scade monoton,

dependent de polaritatea tensiunii aplicate la intrare în momentul iniţial t 0 . Odată

cu satisfacerea conditiei | vxij |1 , tensiunea la ieşirea celulei va avea valori ferme,

egale cu +1 sau -1 (vezi rel.(9.2)). Procesul de integrare continuă până când circuitele

componente intră în limitare, fără ca acest lucru să modifice nivelul tensiunii la ieşirea

* În legatură cu notaţiile uzuale pentru elementele operatorilor A şi B ( a00 spe exemplu) a seconsulta [7].

Page 73: Carte Retele Neuronale

- 76 - Aplicaţia nr.9

celulei. Un asemenea comportament este, evident, stabil.

Schema funcţională prezentată în fig.9.1 permite, totodată, abordarea într-o

manieră simplă a problemei satisfacerii de către template-ul EDGE a regulilor locale

ce definesc operaţia de extragere a muchiilor. Aceste reguli, prezentate în Tab.9.1,

servesc la proiectarea template-ului; în lucrarea de faţă ne vom limita la verificarea

satisfacerii lor de către template-ul analizat, problema proiectării find abordată într-o

altă aplicatie.

Caz v (0) v ()uij yij

1 pixel alb alb, independent de pixelii vecini

2 pixel negru alb, dacă toţi vecinii cei mai apropiaţi sunt negri

3 pixel negru negru, dacă cel puţin unul dintre cei mai apropiaţi vecini este alb

4 pixel gri negru, dacă nuanţa de gri a pixelilor din vecinătatea N1 depăşeşte

în medie un anumit prag, adică pentru

xij(0) 0 , Bij

, kl v

ukl 1,45klN1

5 pixel grialb, dacă pentru xij(0) 0 , Bij,klvukl 1,45

klN 1

Tab.9. 1 Regulile locale pentru template-ul EDGE

Se constată uşor că în Tab.9.1 au fost avute în vedere o serie de situaţii în care se

poate găsi un pixel dintr-o imagine cu nuanţe de gri, împreună cu condiţiile ce se impun a

fi satisfăcute pentru ca ieşirea să aibe o anumita valoare. Unele condiţii, cum sunt - spre

exemplu - cele aferente primelor trei cazuri, sunt evidente: un pixel alb, care nu se

situează pe o muchie, va avea drept corespondent în imaginea de ieşire tot un pixel alb; pe

de alta parte, unui pixel negru trebuie să-i corespundă la ieşire un pixel negru numai dacă

pixelul de intrare se situează pe o muchie, adică are cel puţin un pixel alb printre vecinii

cei mai apropiaţi.

Page 74: Carte Retele Neuronale

v

v

v

v

Primul experiment cu reţele neuronale celulare - 77 -

În general, decelarea celor mai semnificative situaţii şi a condiţiilor

corespunzatoare, operaţie care determină performanţele template-ului, depinde de

experienta proiectantului aplicaţiei.

Se va verifica în continuare satisfacerea condiţiilor din Tab.9.1 pentru RNC în

discuţie. Se pleacă în acest scop de la observaţia că pentruv (0 ) v [1 ,1 ] ,

din rel.(9.2) rezultă v (0 ) v (0 ) v

xij uij

. În aceste condiţii şi având în vedere căyij xij

a 00 2 , pentru momentul iniţial t

(0 ) v B v

uij

0 ecuaţia (9.4) devine:

I (9.5)xij uij

Cazul 1: În acest caz

kl N

v uij

ij , kl ukl ij1

1 şi din rel.(9.5) se obţine:

xij(0) 1 2 (1) 0 25 vukl 1,45 0 , (9.6)klNklij

pentru orice valoare a pixelilor din vecinatate: vukl [1,1]. O tensiune iniţială

negativă la intrarea intrgratorului va determina, conform celor arătate mai sus, un nivel

la ieşirea celulei v yij ()1; acest nivel corespunde unui pixel alb, aşa cum se

impune conform cerinţei din Tab.9.1.

Cazul 2: Problema poate fi tratată în mod similar celor prezentate la cazul precedent.

Deoarece acum v uij 1 , relaţia (9.5) devine:

(0 ) 1 2 (1 ) 0 , 25 v1 ,45 0 , (9.7)

xij kl Nkl ij

ukl

pentru vukl 1. Integratorul va determina, în consecinţă, un nivel la ieşirea celulei

v yij () 1, corespunzător unui pixel alb.

Cazul3: În aceast caz v1 şi dacă există un v 1 , atunci:

uij u

xij (0 ) 1 2 ( 1 ) 0 , 25 ( 1 ) 0 , 25

kl N

v ukl 1 ,45 0 (9.8)

klij,1 kl

Page 75: Carte Retele Neuronale

v

v

v

- 78 - Aplicaţia nr.9

pentru orice vukl [1,1] . Relaţia (9.8) probează regula 3.

Cazul 4: Pentru v

rel.(9.4) devine:

(0 )

xij

(0 ) 0 , fapt ce implică în acord cu rel. (9.2) v (0 ) 0 ,yij

B v 1 ,45 (9.9)xij

klN

1

ij ,kl ukl

Dacă avem acum în vedere că B v 1 ,45 , rezulta că (0 ) 0şiklN 1

ij, kl ukl xij

în consecinţă nivelul la ieşirea celulei corespunde unui pixel negru.

Cazul 5: Se are în vedere rel.(9.9), valabilă şi în acest caz.

Condiţia B ij,klvukl 1,45 implică xij(0) 0 , fapt ce determină un nivelklN 1

corespunzător unui pixel alb în imaginea de la ieşire.

2.2 Template-ul THRES

Acest template realizează operaţia de conversie a unei imagini cu nuanţe de gri

într-o imagine binară. Template-ul include operatorul A (operatorul B fiind nul) şi curentul

I al celulei:

A: THRES_A = [0 0 0;

0 2 0;

0 0 0];

B: THRES_B = [0 0 0; (9.10)

0 0 0;

0 0 0];

I: THRES_I = i, -1< i <1;

Celelalte mărimi care caracterizează reţeaua sunt definite după cum urmează:

Intrarea: U(t) = 0 sau arbitrar

Page 76: Carte Retele Neuronale

Primul experiment cu reţele neuronale celulare - 79 -

Starea iniţială: X(0) = P, unde P reprezintă imaginea ce urmează a fi

procesată

Ieşirea: Y(t) Y(), unde Y() constituie o imagine binară în

care toţi pixelii al căror nivel de gri: pij i devin negri.

Problema stabilităţii dinamice a reţelei se soluţionează în mod similar celor

prezentate în cazul template-ului EDGE. Pentru verificarea regulilor locale se au în

vedere condiţiile specificate în Tab.9.2 şi se procedează analog celor expuse la punctul

precedent.

Regulile de mai sus conduc în mod evident de la o imagine cu nuaţe de gri la o

imagine binară, în care pixelii a căror intensitate luminoasă au depăşit pragul “i” devin

pixeli negri.

Caz v (0) v ()uij yij

1 vxij(0) i alb, independent de pixelii vecini

2 vxij(0) i negru, independent de pixelii vecini

3 vxij(0) i i, pesupunând zgomot nul

Tab.9.2 Reguli locale pentru template-ul THRES

Observaţii: Template-ul THRES din MATCNN are implicit pragul i 0 . Dacă

valoarea pragului este stabilită înafara intervalului [-1,+1] (uzual se ia i 4

respectiv i 4 ), atunci imaginea de ieşire va conţine exclusiv pixeli negri respectiv

albi. Aceste două operaţii, de “umplere cu negru” (FILBLACK) respectiv de “umplere cu

alb” (FILWHITE), îşi găsesc aplicabilitate în prelucrările de imagini.

Page 77: Carte Retele Neuronale

- 80 - Aplicaţia nr.9

3. Desfăşurarea experimentului

3.1 Prima operaţie ce se impune a fi efectuata o constituie instalarea toolbox-ului

MATCNN în mediul de lucru MATLAB, conform celor prezentate în ANEXA 1. Se

încearcă apoi o familiarizare cu instrumentele de lucru, procedând după cum urmează.

Se deschide şi afişează, în fereastra de editare/depanare a mediului MATLAB,

directorul matcnn (<matlab>\toolbox\matcnn); se va identifica apoi prezenţa

scripturilor menţionate în ANEXA 1.

Se va deschide şi afişa fişierul <matlab>\toolbox\temlib, care conţine

biblioteca de template-uri a toolbox-ului MATCNN. Va fi trecut în revistă conţinutul

acestei biblioteci şi se va reţine forma tipică în care este editat un template.

Utilizînd, în fereastra de comanda a mediului de lucru MATLAB, comanda

“showdpic” vor fi vizualizate cele 8 imagini (pic1, pic2, …, pic8) care constituie

obiectul aplicaţiilor ce urmează.

3.2 Se elaborează prima aplicaţie cu RNC, care detectează muchiile într-o imagine cu

nuanţe de gri, utilizînd template-ul EDGE. Imaginea prelucrată este “pic7”, preferată

deoarece conţine elemente cu forme geometric regulate (în această situaţie

performanţele aplicaţiei pot fi mai lesne evaluate vizual). Secvenţa corespunzătoare de

instrucţiuni este prezentată în cele ce urmează.

%set CNN environment SetEnv; TemGroup='TemLib'; %load to INPUT1 and show image pic7 load pic7; subplot(121);

CNNShow(INPUT1); %initialize layers STATE=INPUT1; %set the simulation parameters Boundary=-1; TimeStep=0.1; IterNum=50; %load and show EDGE template LoadTem('EDGE');

Page 78: Carte Retele Neuronale

Primul experiment cu reţele neuronale celulare - 81 -

ShowTem; %run template and show result RunTem; subplot(122); CNNShow(OUTPUT);

Se poate lesne constata că pe lângă detecţia muchiilor, programul vizualizează

imaginea iniţială precum şi cea rezultată în urma pelucrării iar în fereastra de comandă

mediului MATLAB este afişată secvenţa corespunzătoare template-ului EDGE.

Inţelegerea scriptului de mai sus este înlesnită de precizările prezentate în ANEXA 1,

la pct. 2.3.

3.3 Pentru a experimenta comportamentul template-ului EDGE în cazul unor imagini

alb-negru, se va binariza imaginea de intrare (“pic7”) şi se va executa apoi template-ul

EDGE. Se completează în acest scop, programul de mai sus, cu următoarele

instrucţiuni:

%%%%%%%run threshold %%%%%%%%%% load pic7; %initialize layers STATE=INPUT1; %set the simulation parameters TimeStep=0.4; IterNum=15; %load and run THRES template loadtem('THRES'); runtem; %show result

subplot (223); CNNShow(OUTPUT); %%%%%%%%run again EDGE template %the OUTPUT is aplied to the INPUT1 of CNN INPUT1=OUTPUT; %initialize layers STATE=INPUT1; %set the simulation parameters Boundary=-1; timeStep=0.1; IterNum=50; %load and run EDGE template LoadTem('EDGE'); RunTem; %show result

Page 79: Carte Retele Neuronale

- 82 - Aplicaţia nr.9

subplot(224); CNNShow(OUTPUT);

Din scriptul prezentat mai sus rezultă că la început este realizată operaţia de

transformare în imagine binară a imaginii de intrare, utilizând template-ul THRES, după

care sunt extrase muchiile. Sunt vizualizate, totodată, imaginea binară precum şi imaginea

cu muchiile extrase din aceasta.

Imaginea iniţială pic7 Muchiile extrase din pic7

Imaginea binarizată Muchiile extrase

Fig.9.2 Rezultatul prelucrării cu scriptul aferent pct.3.4.

Concluzii: rezultatele prelucrării cu template-ul EDGE a unei imagini cu nuanţe de gri

respectiv a unei imagini alb-negru sunt prezentate în fig.9.2. Este lesne de constatat că

extragerea muchiilor se face cu mai multă acurateţe în cazul imaginii binare, o

concluzie pe deplin în acord cu intuiţia inginerească.

Page 80: Carte Retele Neuronale

APLICAŢIA NR. 10

Crearea unei interfeţe grafice utilizator pentru o

aplicaţie cu

RNA folosind mediul MATLAB

1. Principiile dezvoltării unei interfeţe grafice utilizator

Interfaţa grafică utilizator, (GUI - Graphical User Interface) are rolul de a

mijloci comunicarea între program şi cel care îl utilizează. Deşi, în aparenţă,

ar putea reprezenta un aspect secundar în realizarea unei aplicaţii, de multe ori

succesul acesteia depinde de calitatea desigului GUI.

S-a considerat utilă formularea unor principii după care se va efectua

proiectarea interfeţei grafice:

Consideraţii privind aspectele statice ale GUI

Principiile pe care trebuie să le indeplinească GUI sunt, cf. [14]:

simplitatea, consistenţa şi familiaritatea (fig.10.1).

SIMPLITATE (eleganţă, claritate, unitate)

CONSISTENŢĂ (aliniere, integritate, armonie)

FAMILIARITATE (prietenoasă, confortabilă)

Fig.10.1 Principiile după care trebuie efectuat designul unei GUI.

Page 81: Carte Retele Neuronale

- 84 - Aplicaţia nr. 10

Simplitatea. Reprezintă scopul principal în proiectarea GUI. O

interfaţă grafică simplă sporeşte claritatea prezentării şi dă un sens unitar

acesteia. Reprezentarea calitativă, adică sublinierea formei, poate fi mult

mai importantă decât reprezentarea cantitativă, numerică (fig.10.2).

Fig. 10.2 Importanţa reprezentării calitative asupra celei cantitative, în proiectarea GUI.

Tot în acest context se recomandă o arie minimă de interactiune

între utilizator şi program. Se preferă păstrarea unui număr redus de figuri pe ecran.

Introducerea datelor se preferă a fi făcută grafic şi nu numeric.

Consistenţa. Serveşte la eliminarea confuziei şi lipsei orientării

utilizatorului în momentul în care interactionează cu programul.

De exemplu, în fig.10.3 sunt prezentate două programe MATLAB

demonstrative total diferite în fondul problemei. Una se referă la capabilităţile

MATLAB de analiză a sunetului iar cealaltă la posibilităţile de reprezentare

grafică 3D. Se observă însă acelaşi amplasament în pagină a controalelor (în

partea dreaptă a figurilor, cu chenar) şi chiar unele controale comune (“Info”,

Page 82: Carte Retele Neuronale

GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 85 -

“Close”). Acest aspect înlesneşte utilizarea unor aplicaţii diferite ca fond dar care

îmbracă aceeaşi formă.

Fig.10.3 Deşi cele două aplicaţii MATLAB tratează aspecte cu totul diferite, amplasamentul în pagină

eate identic. Acest fapt elimină confuzia şi dezorientarea utilizatorului.

Familiaritatea. Dacă interfaţa grafică este într-un anumit sens

familiară utilizatorilor aceştia vor învăţa mai repede să o utilizeze. GUI poate

să facă apel la experienţa utilizatorului pentru a grăbi înţelegerea acesteia.

Fig. 10.4. GUI trebuie să introducă elemente familiare utilizatorului

Page 83: Carte Retele Neuronale

- 86 - Aplicaţia nr. 10

De exemplu, în fig. 10.4 se prezintă forma de undă (sus) şi analiza

spectrală (jos) a tonurilor generate de formarea unui număr de telefon. Pentru

generarea tonurilor se foloseşte chiar reprezentarea grafică a tastaturii acestuia.

Consideraţii privind aspectele dinamice la GUI

În momentul în care se interacţionează cu GUI, acţiunile trebuie să fie:

immediate, continue şi reversibile (fig.10.5).

IMEDIAT (direct)

CONTINUU (lin)

REVERSIBIL (prietenos, încurajator)

Fig.10.5 Principii ale aspectului dinamic al GUI

În acest sens este recomandată manipularea directă a datelor, ca şi când

acestea ar reprezenta un obiect solid. Având în vedere conceptele de acţiune

imediată şi continuă, se recomandă, dacă timpul de calcul o permite, afişarea

instantanee a rezultatului obţinut asupra datelor selectate. Dacă timpul de

calcul necesar unei acţiuni este semnificativ se recomandă folosirea unui buton

pentru invocarea acesteia.

În exemplul din fig.10.6 uitlizatorul are posibilitaea selecţiei directe a

Page 84: Carte Retele Neuronale

GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 87 -

formei de undă (sus) după care transformata Fourier corespunzătoare acesteia va fi

afişată instantaneu (jos). Se poate ilustra astfel cu uşurinţă relaţia dintre semnal şi

transformata sa Fourier.

În final, reversibilitatea se referă la capacitatea de a anula efectul unei

sau mai multor acţiuni deja efectuate. Este uneori mai greu de implementat, dar

întotdeauna apreciată de utilizator. Capacitatea de anulare încurajează

experimentarea diverselor acţiuni şi dă un confort sporit în utilizarea GUI.

Fig.10.6 Exemplu de manipulare directa a datelor, cu afişarea instantanee

a rezultatului acţiunii

Se poate afirma în concluzie că pe baza principiilor mai sus enunţate,

crearea unei interfeţe grafice utilizator, în general, sau folosind mediul

MATLAB, în particular, presupune existenţa a două faze: proiectare şi

implementare (fig.10.7).

Page 85: Carte Retele Neuronale

- 88 - Aplicaţia nr. 10

START Definirea Desenarea Testareaprocedurilor GUI designului

PROIECTARE

STOP Testarea Scriereacodului codului

IMPLEMENTARE

Fig. 10.7 Etapele realizării unei interfeţe grafice utilizator

2. Probleme

2.1 Proiectaţi şi implementaţi, folosind mediul MATLAB, o interfaţă grafică

utilizator pentru problema 4.3 din APLICAŢIA NR.4. Această interfaţă trebuie să

permită selecţia interactivă a:

- numărului de neuroni aferenţi stratului ascuns (uicontrol de tip “Edit”);

- ratei de învăţare (uicontrol tip “Slider”);

- funcţiei de antrenament (uicontrol de tip “ListBox”);

- cifrei aplicate la intrare (uicontrol de tip “Popup”);

- nivel zgomot (uicontrol tip “Slider”);

Totodată aplicaţia trebuie să dispună de butoane care să lanseze procesul de

antrenament şi pe cel de recunoaştere (uicontrol tip “Pushbutton”). Se va oferi

posibilitatea de vizualizare a desfăşurării procesului de antrenament şi a

rezultatelor procesului de recunoaştere (obiect de tip “Axes’). Pentru

Page 86: Carte Retele Neuronale

GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 89 -

individualizarea categoriilor de acţiuni se va folosi un obiect de tip “frame” şi

“Text”.

În final interfaţa grafică utilizator va arăta ca cea din figura de mai jos.

Fig.10.8. Interfaţă grafică utilizator pentru cazul problemei 4.3 din APLICAŢIA nr.4.

Rezolvare:

În general, în construcţia unei interfeţe grafice, se începe, cf. fig. 10.7,

cu definiţia procedurilor pe care aceasta trebuie să le realizeze şi schiţarea, pe

hârtie, a amplasamentului obiectelor (axe, controale, etc.) în figură. Abia după

Page 87: Carte Retele Neuronale

- 90 - Aplicaţia nr. 10

ce aceste lucruri sunt clare se va trece la etapele ulterioare.

În continuare se trece crearea figurii şi la amplasarea obiectelor în

figură (File → New → Figure). După ce s-a creat figura, se aplează GUIDE

(Graphical User Interface Development Enviroment) tastând guide de la

consolă sau File → Show GUI Layout Tool. Apoi se trece la controlul figurii

(Controlled #1, Apply). Se amplasează obiectele dorite în figură, eventual

activând şi opţiunile aferente figurii curente: Options → Snap Objects to Grid şi

Options → Display Grid (fig.10.9).

Fig.10.9 Guide şi interfaţa grafică care urmează a fi creată.

În final se leagă obiectele cu codul sursă aferent.

Page 88: Carte Retele Neuronale

GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 91 -

Observaţii:

1. Oricărui obiect grafic MATLAB (vezi fig.10.10 pentru totalitatea

obiectelor disponibile) îi este atribuit un identificator unic,

denumit

handler. O modalitate simplă de determinare a handlerului unui obiect

o reprezintă funcţia findobj în conjuncţie cu nişte parametrii ce

specifică proprietăţi ale acelui obiect. De exemplu, fiecărui obiect i se

poate asocia o etichetă (“Tag”). În aceste condiţii determinarea

handlerului se va face astfel:

» handler_axa = findobj('Tag','Axes1')

2. La executarea acţiunilor permise (creearea, închiderea, accesarea)

asupra unui obiect se pot lansa anumite subrutine (“Callback). Acestea

pot fi incluse în obiectul de tip fereastră sau pot fi scripturi separate.

Fig.10.10 Totalitatea obiectelor grafice din mediul MATLAB.

a) Program principal

% Implementare unui perceptron multistrat pentru % clasificarea numerelor 0...9 % si a unei interfete grafice utilizator (GUI) % Catalin-Daniel Caleanu, 2000

%clear all close all clc

Page 89: Carte Retele Neuronale

- 92 - Aplicaţia nr. 10

cifre={'0','1','2','3','4','5','6','7','8','9'}; fct_antr={'traingdm','traingdx','trainscg','trainlm'};

% se incarca imaginile binarizate ale cifrelor din fisierul cifre.mat % matricile x0...x9 au dimensiunea 8x5 load cifre

% se formeaza matricea P a vectorilor de intrare P = [x0(:) x1(:) x2(:) x3(:) x4(:) x5(:) x6(:) x7(:) x8(:) x9(:)];

% se formeaza matricea vectorilor de iesire % de exemplu, pentru x0 aplicat la intrare, vectorul de iesire este: % 1 0 0 0 0 0 0 0 0 0 T = eye(10);

% matricea PR specifica valorile min si max pentru cele 40 (8x5) % de intrari ale MLP for i=1:40

PR(i,:)=minmax(P(:)'); end

% apelare GUI fig_l10

b) Faza de antrenament

% se preiau datele din GUI % referitoare la parametrii proc. de antr.

ha1=findobj('Tag','Axes1'); axes(ha1);

handler_edit1 = findobj('Tag','EditText1'); handler_slider1 = findobj('Tag','Slider1'); handler_listbox1 = findobj('Tag','Listbox1');

nr_neur_asc = eval(get(handler_edit1,'String')); rata_inv = get(handler_slider1,'Value'); fct_antr_sel = mat2str(cell2mat(fct_antr(get(handler_listbox1,'Value'))));

% se creeaza obiectul net net= newff(PR,[nr_neur_asc 10],{'tansig' 'logsig'},fct_antr_sel);

Page 90: Carte Retele Neuronale

GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 93 -

% se definesc alti parametrii ai RNA (rata de invatare, moment, etc.) net.trainParam.lr=rata_inv; net.trainParam.mc=0.7; net.trainParam.min_grad=1e-10; net.trainParam.show = 1; net.trainParam.epochs = 400; net.trainParam.goal = 0.001;

% incepe procesul de antrenament [net,tr]= train(net,P,T); set(gca,'Tag','Axes1');

c) Etapa de utilizare

% faza de utilizare a retelei % se testeaza capacitatea de recunoastere pentru cazul cand tiparele % sunt afectate cu zgomot

ha2=findobj('Tag','Axes2'); ha3=findobj('Tag','Axes3'); ha4=findobj('Tag','Axes4');

handler_slider2 = findobj('Tag','Slider2'); handler_PopupMenu1 = findobj('Tag','PopupMenu1'); cifra = get(handler_PopupMenu1,'Value'); zgomot = get(handler_slider2,'Value');

axes(ha2); imshow(reshape(P(:,cifra),8,5)); set(gca,'Tag','Axes2');

% s-a definit in prealabil o functie xi = noise (xi, zgomot) % care contamineaza biti matricii "xi" in proportie de "zgomot [%]" cifra_zgomot = reshape(noise(P(:,cifra),zgomot),8,5); axes(ha3); imshow(cifra_zgomot); set(gca,'Tag','Axes3');

[y,i] = max(sim(net,cifra_zgomot(:)),[],1); cifra_recunoscuta=i-1; axes(ha4); imshow(reshape(P(:,cifra_recunoscuta+1),8,5)); set(gca,'Tag','Axes4');

Page 91: Carte Retele Neuronale

- 94 - Aplicaţia nr. 10

Fig.10.11 Interfaţa grafică funcţională.

În final, prin legătura controalelor la subrutinele corespunzătoare, se obţine o

interfaţă grafică utilizator funcţională (fig.10.11).

Page 92: Carte Retele Neuronale

ANEXA NR.1

Simulatorul analogic de reţele neuronale

celulare

MATCNN -prezentare generală

1. Introducere

MATCNN [15] este o colecţie de funcţii şi scripturi care permit simularea şi

testarea RNC cu un singur strat. El a fost conceput pe suportul matematic şi de

vizualiare oferit de mediul MATLAB şi în consecinţă poate fi utilizat ca orice alt

"toolbox" din mediul de lucru amintit. Mai mult decât atât, codul sursă al diferitelor

subrutine fiind disponibil utilizatorului, poate fi eventual modificat şi adaptat

cerinţelor aplicaţiei.

Câteva caracteristici ale simulatorului, ce merită a fi subliniate:

MATCNN permite elaborarea de algoritmi analogici şi logici bazaţi pe RNC.

Simulatorul include o bibliotecă predefinită de template-uri* (operatori) utilizate

frecvent în operaţiile cu RNC (fişierul temlib.m); există însă posibilitatea completării

bibliotecii cu noi operatori, definiţi de utilizator.

MATCNN oferă suportul necesar elaborării de fişiere MEX, utile în cazul

folosirii mediului MATLAB sub sistemele de operare MS WINDOWS şi UNIX [15].

Simulatorul MATCNN este conceput pentru a fi utilizat în mediul MATLAB

versiunile 4.2-5.0 şi Image Processing Toolbox 1.0-2.0; cu mici modificări ale

funcţiilor şi scripturilor simulatorului este posibilă utilizarea acestuia şi în versiuni

MATLAB mai recent elaborate (versiunea 5.3).

Ecuaţiile diferenţiale ce intervin în modelul RNC sunt integrate numeric,

utilizând formula directă a lui Euler.

* Termenul “template” a fost preluat direct din literatura de limbă engleză în lipsa unui termen potrivit, echivalent, în limba română.

Page 93: Carte Retele Neuronale

v

- 96 - Anexa nr.1

Principala aplicaţie a RNC fiind, cel putin pâna în momentul de faţă,

prelucrările de imagini [7], simulatorul MATCNN a fost elaborat pentru a fi utilizat cu

precădere în acest domeniu. Pot fi procesate imagini cu nuanţe de gri, normalizate în

intervalul [-1,+1] respectiv imagini binare, cu valori de -1 şi/sau +1 (-1 corespunde la

alb, +1 la negru, iar nivelurile de gri sunt reprezentate prin valori cuprinse în intervalul

(-1,+1) ).

2. Modelul general de RNC utilizat în MATCNN

Pentru o utilizare corectă şi eficientă a simulatorului MATCNN este necesară

cunoaşterea modelului de RNC ce a stat la baza elaborării lui. Se prezintă în

continuare RNC modelată de acest simulator, împreună cu o serie de noţiuni şi

consideraţii utile din punct de vedere aplicativ.

MATCNN permite implementarea de RNC cu un singur strat, constând

dintr-un tablou bidimensional de celule identice Cij, 1 i M si 1 j N

Comportamentul dinamic al fiecărei celule este descris de următoarea ecuaţie

diferenţială ordinară şi neliniară (pentru aprofundarea chestiunilor a se consulta [7]):

1 (t) R

v t A v t B v tI xij xij ij,kl ykl ij,

kl ukl ijkl N r kl N r

A ˆ ( v ) ˆ B ( v ) ˆ D ( v )(A1.1)

kl N r

ij ,kl yy kl N r

ij ,kl uu kl N r

ij , kl

iar mărimea la ieşiere ei este dată de relaţia:vyi

j(t ) f (v (t )) 0 5( |

xij

v ( t ) 1| | v ( t ) 1| ) , (A1.2)xij xij

cu notaţiile:

v yy v tv t

ykl yiy

v v t v t (A1.3)uu ukl uij

v v t v tu,x,ykl u,x,yij

Page 94: Carte Retele Neuronale

A

A

A

Simulatorul analogic de reţele neuronale celulare MATCNN - 97 -

|v (t ) | 1 , | v (t ) | 1 , | Iij | v , 1 iM , 1 jN

x ij u ij max

În relaţiile de mai sus tensiunile v , v , v reprezintă starea, intrarea şi xij uij yij

respectiv ieşirea unei celule Cij . În cursul unei operaţii de procesare starea şi ieşirea

variază în timp, pe când intrarea rămâne nemodificată. Prin Nr a fost notată

vecinătatea de raza r a unei celuleC A şi B reprezintă operatori liniari de

ij ij,kl ij,kl

reacţie şi respectiv de comandă iar Iij este curentul celulei (de regulă invariant în

spaţiu).

ˆ , Bˆ şi Dˆ sunt operatori neliniari care se aplică diferenţelorij , kl

generalizate v

ij ,kl

yy , v uu

ij , kl

şi respectiv v . Mai exact, ˆij ,kl

repezintă operator de reacţie

comandat prin diferenţă, B ˆeste operator de comandă comandat prin diferenţă iar

ij,kl

Dˆ este un operator neliniar generalizat (care îl include atât pe ˆ cât şi peij,kl ij,kl

Bˆij,kl ). Trebuie observat apoi că funcţia f, ce defineşte caracteristica de ieşire este

funcţia sigmoid, aproximată liniar pe porţiuni. În fine, RC reprezintă constanta

de timp a unei celule; în cele ce urmează se va considera R 1, C 1 şi deci şi

1 , situaţie ce caracterizează, printre altele, RNC standard (cel mai frecvent

utilizate în aplicaţii [7]).

Din cele expuse până în prezent rezultă că unei RNC i se poate asocia cu

uşurinţă o imagine (câte un pixel pentru fiecare celulă). Pe de altă parte, deoarece

fiecare celulă este caracterizată de anumiţi parametri respectiv semnale (vezi

rel.(A1.1), este convenabil ca aceste mărimi să fie şi ele aşezate ordonat, în tablouri

bidimensionale, în corespondenţă cu stratul de celule Cij.

În consecinţă, RNC cu un singur strat va fi tratată în continuare, din punctul

de vedere al calculelor, ca o structură cu mai multe straturi ("imagini")

bidimensionale. Imaginile notate cu U, X şi Y reprezintă intrarea, starea şi respectiv

Page 95: Carte Retele Neuronale

- 98 - Anexa nr.1

ieşirea celulelor reţelei. Se utilizează frecvent şi următoarele straturi:

- aşa-numitul strat de polarizare al reţelei, notat cu B, care reprezintă - sub forma unei

imagini cu nuanţe de gri - componenta variant în spaţiu din curentul fiecărei celule;

- aşa-numitul strat mască, notat cu M, care specifică printr-o imagine binară faptul că o

celulă este activă (pixelul corespunzător este egal cu +1) sau este inactivă (pixelul

corespunzător este egal cu -1).

Unii operatori (de exemplu ˆ Dij,kl ) pot avea două valori de intrare, specificate

prin imaginile U1 şi U2 .

Observaţii: Dacă nu sunt precizate explicit valori pentru straturile I şi M, atunci stratul

de polarizare se presupune nul respectiv toate celulele sunt active. Utilizarea celor

două straturi menţionate mai sus permite încorporarea în algoritmii cu RNC a unei

adaptabilităţi spaţiale, liniare în cazul stratului I şi neliniare în cazul stratului M.

3. Modele de RNC cu template-uri liniare şi neliniare

Operaţiile de procesare pe care le realizează o RNC depind în esenţă de natura

operatorilor ce intervin în ecuaţia de stare, dată de rel. (A1.1). Template-urile incluse

implicit în biblioteca MATCNN reprezintă operatori desemnaţi în literatura de

specialitate ca fiind cei mai utili în prelucrarea imaginilor - principalul domeniu

aplicativ al RNC - şi în plus conduc la implementări VLSI de complexitate scăzută

[15]. Template-urile din MATCNN pot fi clasificate după cum urmează:

- template-uri liniare, care includ numai termenii liniari A şi B şi curentul I al

celulei;

- template-uri neliniare de tipul "A-B", care conţin termenii liniari A, B , termenii

neliniari Â, Bˆ şi curentul I al celulei;

- template-uri neliniare de tipul "D", care constau din termenii liniari A, B , termenul

neliniar generalizat Dˆ şi curentul celulei ( I ).

Ne propunem în cele ce urmează o scurtă trecere în revistă a modelelor de

Page 96: Carte Retele Neuronale

v

Simulatorul analogic de reţele neuronale celulare MATCNN - 99 -

RNC asociate acestor tipuri de template-uri precum şi forma în care sunt reprezenatate

aceste template-uri în MATCNN.

Observaţie: Din considerente practice, template-urile din bibliteca MATCNN

poartă denumiri care sugerează operaţia de procesare pe care o implementează, aşa după

cum va rezulta în continuare.

Template liniar: [A B I]

Ecuaţia de stare asociată este de forma:

tv tA v t B v tI (A1.4)

xij xij kl N r

ig,kl ykl kl N r

ij,kl ukl ij

Forma de reprezentare în biblioteca MATCNN:

Exemplul 1: Template-ul EDGE - operator care realizează detecţia muchiilor într-o

imagine binară.

EDGE_A = [0 0 0;

0 2 0;

0 0 0];

EDGE_B = [-0.25 -0.25 -0.25

-0.25 2 -0.25

-0.25 -0.25 -0.25];

EDGE_I = -1.5;

Exemplul 2: Template-ul DIFFUS - operator care realizează difuzia (are termenul liniar

B nul).

DIFFUS_A = [0.1 0.15 0.1;

0.15 0 0.15;

0.1 0.15 0.1];

Page 97: Carte Retele Neuronale

Template neliniar de tipul "AB": [A B A

v

ˆv

- 100 - Anexa nr.1

DIFFUS_I = 0;

Ecuaţia de stare asociată:

( t) v t

ˆ Bˆ I]

A v t B v tI

xij xij

kl N r

ˆ A

ij, kl ykl

( v )

kl N r

ij ,kl ukl ij

(A1.5)ˆ B ( v )

kl N r

ij ,kl yy kl N r

ij , kl uu

Forma de reprezentare în MATCNN:

Exemplu: Template-ul GRADIENT - operator care realizează detecţia de contur pe

bază de gradient (termenul liniar B precum şi termenul neliniar  sunt nuli).

GRADT_A = [0 0 0;

0 2 0;

0 0 0];

GRADT_Bb = [1 1 1;

1 0 1;

1 1 1];

GRADT_b = [13 -33 00 33];

GRADT_I = -1.8;

În legatură cu funcţia GRADT_b, care exprimă interacţiunea neliniară, se va reveni în

continuare.

Operatori neliniari de tipul D: [A B D I]

Ecuaţia de stare asociată este de forma:

xij (t) vxij t A ij,kl v ykl t Bij,klvukl t IijDij,kl (v)(A1.6)klNr klNr

Page 98: Carte Retele Neuronale

Simulatorul analogic de reţele neuronale celulare MATCNN - 101 -

Forma de reprezentare în MATCNN:

Exemplul 1: Template-ul MEDIAN - realizează filtrarea mediană (termenul liniar B şi

curentul I al celulei sunt nuli).

MEDIAN_A = [0 0 0;

0 1 0;

0 0 0];

MEDIAN_Dd = 0.5 * [1 1 1;

1 0 1;

1 1 1];

MEDIAN_d = [ 02 0-1 21 12 ]; (funcţie care exprimă interacţiunea neliniară).

Exemplul 2: NLINDIFF - realizează difuzia neliniară (termenul liniar B şi curentul I

al celulei sunt nuli)

NLINDIFF_A= [0 0 0 ;

0 1 0;

0 0 0];

NLINDIFF_Dd = 0.5 * [1 1 1;

1 0 1;

1 1 1];

NLINDIFF _d = [ 02 0-1 21 12 ]; (funcţie care exprimă interacţiunea neliniară).

Specificarea funcţiilor neliniare în template-urile de tip "AB" respectiv "D"

Din exemplele prezentate s-a putut observa că în operatorii Aˆ , Bˆ şi Dˆ , intervin

funcţiile a,b şi d - care determină interacţiunile neliniare dintre celule. Aceste funcţii

pot fi exprimate prin aproximare pe porţiuni, cu valori constante (piecewise-constant

pwc) sau variaţii liniare (piecewise-liniar pwl). Specificarea lor în MATCNN se face

Page 99: Carte Retele Neuronale

- 102 - Anexa nr.1

după cum urmează:

Pentru a şi b: [ interp p_num x_1 y_1 x_2 y_2 . . . . x_n y_n ]

unde: interp - indică metoda de interpolare: 0 - pwc şi 1 - pwl

p-num - reprezintă numărul de puncte

x1 y1 - ordonata şi abscisa primului punct

xn yn - ordonata şi abscisa ultimului punct.

Exemplu: în operatorul GRADIENT se declară la un moment dat:

GRADT_b = [13 -33 00 33];

Aest fapt specifică o funcţie neliniară, aproximată prin interpolare liniară între trei

puncte: (-3,3), (0,0), (3,3).

Observaţie: conform rel.(A1.3), funcţiile a şi b se aplica întotdeauna diferenţelor între

intrările sau între ieşirile a două celule învecinatate.

Pentru d: [ interp p_num x_1 y_1 x_2 y_2 ... x_n y_n intspec]

unde: interp - indică metoda de interpolare: 0 - pwc şi 1 - pwl

p-num - reprezintă numărul de puncte

x1 y1 - ordonata şi abscisa primului punct

xn yn - ordonata şi abscisa ultimului punct.

intspec - parametru ce specifica interacţiunea.

Codurile valide pentru parametrul intspec, prin care se precizează argumentul Δv în

funcţia neliniară d(Δv), sunt după cum urmează:

11 Δv = vukl - vuij

12 Δv = vukl - vxij

13 Δv = vukl - vyij

21 Δv = vxkl - vuij

Page 100: Carte Retele Neuronale

Simulatorul analogic de reţele neuronale celulare MATCNN - 103 -

22 Δv = vxkl - vxij

23 Δv = vxkl - vyij

31 Δv = vykl - vuij

32 Δv = vykl - vxij

33 Δv = vykl - vyij.

Pentru specificarea unor interacţiuni de forma d(Δv)(Δv), se va aduna la codul de

mai sus codul 100.

Observaţii: Se observă uşor că interacţiunile precizate de codurile 11 şi 33 sunt cele

corespunzătoare funcţiilor neliniare a şi b. Din acest motiv Dˆ se numeşte operator

generalizat, el incluzând ambii operatori: Aˆ şi Bˆ.

Interacţiuni, ca cele specificate prin codurile de mai sus, fac cu putinţă

exprimarea unor operatori (cum sunt filtrare statistică, difuzia neliniară, etc.), ca simpli

operatori de RNC.

Pentru clarificarea ideilor se prezintă în continuare câteva exemple.

Exemplul 1: (se referă la template-ul MEDIAN)

MEDIAN_d = [ 02 0-1 21 12 ];

Operaţia specificată mai sus este o limitare cu funcţia treaptă (între punctele (0,-1) şi

(2,1)) aplicată diferenţei între intrările şi stările celulelor învecinatate (cod: 12). O

neliniaritate de tip sigmoidal (interpolare liniara pwl, între 4 puncte) ar necesita o

funcţie de forma:

MEDIAN_d = [ 12 -2-1 -0.5-1 0.51 21 12 ];

Exemplul 2: (are în vedere operatorul NLINDIFF)

NLINDIFF = [ 12 -20 -0.10 01 0.10 20 122 ];

acesta specifică o funcţie neliniară rezultată prin interpolare liniară (pwl) între 5

puncte: (-2,0), (-0.1,0), (0,1), (2,0) şi care se aplică diferenţelor între stările celulelor

învecinate (codul 22 din suma 122 = 22 + 100 ). Adiţionarea codului 100 indică faptul că

rezultatul obţinut la operaţia precedentă trebuie multiplicat cu Δv.

Page 101: Carte Retele Neuronale

- 104 - Anexa nr.1

4. Simularea unei aplicaţii cu RNC

Elaborarea unui program de simulare a unei aplicaţii cu RNC se conformează

regulilor cunoscute pentru orice alt program ce ruleaza în mediul MATLAB [3]. În

consecinţă, programul va include funcţii şi scripturi şi va face uz de variabile

(globale).

O listă completă cu scripturile, funcţiile şi variabilele globale cu care operează

MATCNN este prezentată la pct.5. În cele ce urmează se va descrie pe scurt,

anticipând, câteva dintre variabilele globale utilizate pe parcursul acestui paragraf.

O primă cartegorie de variabile sunt cele corespunzătoare imaginilor asociate

modelului de RNC utilizat în MATCNN (pct. 2) şi care include variabilele:

INPUT1 - U sau U1 (imagine de intrare primară a modelului de RNC)

INPUT2 - U2 (imagine de intrare secundară a modelului de RNC)

STATE - X (imaginea de starea)

OUTPUT - Y (imaginea aferentă ieşirii modelului de RNC)

BIAS - B (imaginea de polarizare (bias map) a modelului de RNC)

MASK - M (imagine mască a modelului de RNC).

Observaţii:

Se subliniază că suma dintre curentul constant I al unei celule, ce intervine în modelul

dat de rel.(A1.1) şi valorile de polarizare variant în spaţiu, date de Bij , reprezintă

curentul variant în spaţiu din modelul de RNC ( I I B ).

Masca M este o imagine binară ( M ij

celulă este activă ( M 1 ) sau inactivă ( M

ij ij

1 sau -1), care specifică dacă o

1 ). ij ij

Valorile implicite pentru elementele imaginilor BIAS şi MASK sunt 0

(polarizare nulă) respectiv 1 (toate celulele active).

Page 102: Carte Retele Neuronale

Simulatorul analogic de reţele neuronale celulare MATCNN - 105 -

Operatorii aritmetici, logici şi de tip Dˆ pot avea două valori de intrare: U =

U1 şi U2.

O a doua categorie de variabile globale sunt cele care se impun a fi iniţializate

de către utilizator (înainte de efectuarea simulării propriu-zise). Acestea sunt

următoarele:

UseMask - validează (UseMask = 1) sau invalidează (UseMask = 0 ) utilizarea

imaginii mască M

UseBiasMap - validează (UseBiasMap = 1) sau invalidează (UseBiasMap = 0)

utilizarea imaginii de polarizare

Boundary - variabila prin care se specifică condiţiile de frontieră:

-1 Boundary 1

zero flux (Boundary = 2)

torus (Boundary = 3)

TemGroup - permite precizarea bibliotecii din care vor fi extraşi template-urile

apelate în program; valoarea implicită este TemLib

TimeStep - specifică intervalul dintre două momente discrete de timp la care au

loc doua iteratii succesive; are valoarea implicita TimeStep = 0.2

IterNum - precizează numărul de iteraţii care au loc pentru o simulare.

Observaţii:

Precizări suplimentare privind condiţiile de frontieră, specificate aici prin variabila

globală Boundry, sunt date în [7].

Exista şi o a doua categorie de variabile globale, utilizate şi modificate de

funcţiile şi scripturile MATCNN şi care nu trebuie modificate de către utilizator.

Aceste variabile sunt prezentate la pct. 5.

Se prezintă în continuare etapele de elaborare a unui program pentru simularea

unei aplicaţii cu RNC şi vizualizarea rezultatului obţinut:

se specifică utilizarea mediului de simulare MATCNN şi denumirea

Page 103: Carte Retele Neuronale

- 106 - Anexa nr.1

bibliotecii de unde vor fi extrase template-urile; spre exemplu:

SetEnv; - se setează mediul de simulare MATCNN

TemGroup = 'MyTemLib'; - operatorii sunt extraşi din biblioteca conţinută în

fişierul mytemlib.m.

Observaţie: În timp ce specificarea mediului de simulare MATCNN este întotdeauna

necesară, declaraţia privind biblioteca utilizată poate lipsi; în acest ultim caz,

simulatorul operează cu biblioteca implicită a mediului (fişierul temlib.m).

se iniţializează imaginile aferente intrării şi respectiv stării modelului de RNC

INPUT1 = LBmp2CNN('Road'); - road.bmp este încărcată la intrare

STATE = zeros(size(INPUT1)); - toate valorile iniţiale ale stării sunt puse pe zero.

Observaţie: Iniţializarea intrării este opţională în timp ce iniţializarea stării este

întotdeauna necesară; în această fază pot fi adiţionate zgomote la imaginile utilizate

(cu scop de testare).

se specifică utilizarea/neutilizarea imaginii de polarizare şi a imaginii mască,

după cum urmează:

UseBiasMap = 1; - s-a setat utilizarea imaginii de polarizare

UseMask = 0; - şi nu se va folosi imaginea mască.

Observaţie: Dacă s-a optat pentru utilizarea imaginii de polarizare/mască, atunci

imaginile respective trebuie mai întâi iniţializate. Scriptul MATCNN SetEnv

iniţializează aceste variabile globale cu zero.

se precizează condiţiile de frontieră; de exemplu:

Boundary = -1; - variabila Boundary se face egală cu -1.

se setează parametrii ce caracterizează procesul de simulare: intervalul de

timp între două iteraţii succesive si numărul de iteraţii aferente întregului

proces de simulare.

Spre exemplu:

TimeStep = 0.1; - intervalul de timp între două iteraţii egal cu 0.1

IterNum = 100; - numărul de iteraţii stabilit la 100.

Observaţii: Valorile implicite TimeStep = 0.2 şi IterNum = 25, conduc la un interval

Page 104: Carte Retele Neuronale

Simulatorul analogic de reţele neuronale celulare MATCNN - 107 -

de timp, pe durata căruia este simulat comportamentul RNC, egal cu 5 secunde. Pentru

valorile uzuale R = 1, C = 1 şi deci τ = 1, acest interval corespunde la 5τ, situaţie în

care se poate considera că regimurile tranzitorii din reţea sunt practic încheiate şi că

toate celulele au atins regimul staţionar. Prin urmare, valorile implicite pentru

TimeSetup şi IterNum satisfac în situaţiile practice curente. Cu toate acestea, anumiţi

operatori necesită alte valori pentru parametrii procesului de simulare [15].

se încarcă, din biblioteca deja specificată, template-ul care determină efectiv

modelul de RNC. Spre exemplu:

LoadTem('EDGE'); - este încărcat template-ul EDGE.

Observaţie: Este util ca template-urile aferente unei aplicaţii cu reţele neuronale să fie

memorate într-o bibliotecă (fişier-M), care se setează ca biblioteca curentă (utilizind

TemGroup).

se lansează în execuţie procesul de simulare:

RunTem - se execută simularea cu operatorul specificat.

se vizualizează rezultatul simulării:

CNNShow(OUTPUT) - vizualizează imaginea de la ieşirea RNC.

Observaţie: Deoarece atât intrările cât şi ieşirile unei RNC sunt imagini, la evaluarea

peformanţelor reţelei se recomandă utilizarea facilităţilor de procesare (scalări,

modificarea nuanţelor de gri, etc.) oferite de Image Processing Toolbox, din mediul

MATLAB.

5. Lista funcţiilor, scripturilor şi a variabilelor globale din MATCNN

Fişiere - M din MATCNN (scripturi şi funcţii)

Scripturi şi funcţii de bază:

SetEnv - setează mediul MATCNN şi iniţializează variabilele globale

ShowEnv - afişează valorile variabilelor globale din mediul MATCNN

Page 105: Carte Retele Neuronale

- 108 - Anexa nr.1

ShowTem - afişează template-ul efectiv încărcat în mediul MATCNN

RunTemp - lansează în execuţie template-ul deja încărcat

CNNShow - vizualizează o imagine tip RNC

TemLib - biblioteca implicită cu template-uri a mediului MATCNN

Scripturi şi funcţii diferite

CNN2Gray - converteşte o imagine tip RNC într-o imagine cu nuante de gri

Gray2CNN - converteşte o imagine cu nuanţe de gri într-o imagine tip RNC

CBound - adaugă o frontieră specificată la o imagine tip RNC

CImNoise - suprapune zgomot peste o imagine de tip RNC

LBmp2CNN - încarcă un fişier BMP de pe disc şi îl converteşte într-o imagine tip

RNC

SCNN2Bmp - salvează pe disc, în format BMP, o imagine de tip RNC

Fişire - MEX din MATCNN

Fişiere de bază

tlinear - simulează un operator liniar de RNC

tnlinab - simulează un operator neliniar de tipul “AB”

tnlind - simuleaza un operator neliniar de tip “D”

Fişiere speciale, care implementează diferite filtre speciale:

tmedian - simuleaza un operator care realizează filtrarea mediană

tmedianh - operator pentru filtrarea mediană, cu aplicaţii în studiul sistemelor cu

neliniarităţi de tip histereză

tanisod - simulează operatorul de difuzie anisotropică

modfilt - operator care implementează filtre modale.

Page 106: Carte Retele Neuronale

Simulatorul analogic de reţele neuronale celulare MATCNN - 109 -

Variabile globale din MATCNN (lista completă) (valorile implicite sunt trecute în

/./ ).

Variabile globale cărora li se asigneaza valori prin program:

UseBiasMap - validează (UseBiasMap = 1) sau invalidează (UseBiasMap = 0)

utilizarea imaginii de polarizare; / 0 /

UseMask - validează (UseMask = 1) sau invalidează (UseMask = 0 ) utilizarea

imaginii mască M / 0 /

Boundary - variabila prin care se specifică condiţiile de frontieră:

-1 Boundary 1

zero flux (Boundary = 2)

torus (Boundary = 3); / 2 /

TemGroup - permite precizarea bibliotecii din care vor fi extrase template-urile

apelate în program; / “TemLib” /

TimeStep - specifică intervalul dintre două iteraţii succesive; / 0.2 /

IterNum - precizează numărul de iteraţii care au loc pentru o simulare; / 25 /.

Variabile globale modificate de funcţiile şi scripturile din MATCNN:

TemName - numele operatorului actual; / ‘’’’’’ /

TemNum - numărul de ordine al operatorului efectiv utilizat în program / 0 /

TemType - tipul operatorului actual: 0- liniar, 1- neliniar de tipul “AB”,

2- neliniar de tipul “D”; / 0 /

Atem - reacţie liniară; / 0 /

Btem - comandă liniară; / 0 /

At_n - reacţie neliniară; / 0 /

nlin_a - funcţia neliniară din reacţie; / 0 /

Bt_n - comandă neliniară; / 0 /

nlin_b - funcţie neliniară de comandă; / 0 /

Dt_n - interacţiune neliniară generalizată; / 0 /

Page 107: Carte Retele Neuronale

- 110 - Anexa nr.1

Nlin_d - funcţia neliniară din termenul generalizat; / 0 /

I - curentul celulei; / 0 /

Run Text - afişează numele operatorului, numărul lui de ordine, intervalul între

două iteraţii succesive, numărul total de iteraţii şi apelul modulului

de raportare, înainte ca operatorul respectiv să fie lansat în execuţie

INPUT1 - U sau U1 (imagine de intrare primară a modelului de RNC)

INPUT2 - U2 (imagine de intrare secundară a modelului de RNC)

STATE - X (imaginea de stare)

OUTPUT - Y (imaginea aferentă ieşirii modelului de RNC)

BIAS - B (imaginea de polarizare (bias map) a modelului de RNC)

MASK - M (imagine mască a modelului de RNC).

6. Instalarea toolbox-ului MATCNN în mediul MATLAB

Programul MATCNN este disponibil si poate fi încarcat, sub forma arhivată,

de la adresa http://lab.analogic.sztaki.hu/MATCNN/index.html. După dezarhivare se

copiază întreg directorul matcnn în directorul cu toolbox-uri din mediul MATLAB:

(<matlab>\toolbox). Pentru ca noul program să poata fi utilizat la fel ca oricare alt

toolbox, se adaugă în fişierul master matlabrc.m, ce se execută automat la lansarea în

execuţie a mediului MATLAB, calea: addpath('C:\MATLABR11\toolbox\Matcnn');.

Pentru salvarea fişierelor cu aplicaţii se recomandă utilizare directorului work

(<matlab>\work), aflat la dispoziţia utilizatorului.

Page 108: Carte Retele Neuronale

Bibliografie

[1] * * * - “MATLAB Function Reference”, vol.1: Language, ver.5, The

MATHWORKS Inc., 1999.

[2] www.mathworks.com.- The MATHWORKS Inc.

[3] M. Ghinea, V. Fireţeanu, - “MATLAB. Calcul numeric-Grafică-Aplicaţii”,

Ed.

Teora, 1995.

[4] H. Demuth, M. Beale - “Neural Network Toolbox. User’s Guide”, ver.3.0,

1998. [5] S. Haykin - “Neural Networks: A Comprehensive Foundation”,

Second Edition,

IEEE Press 1999.

[6] G. Toderean, M. Coşteiu, M. Giurgiu - “Reţele neuronale”, Ed. Microinformatica,

Cluj-Napoca, 1994.

[7] V. Tiponuţ, C.D. Căleanu - "Reţele neuronale. Arhitecturi şi

algoritmi", Ed.

Politehnica, Timişoara, 2000.

[8] Cichocki A., Unbehauen R., - “Neural Networks for Optimization and

Signal

Processing”, John Wiley & Sons, 1993.

[9] C.D. Căleanu, L. Petropoulakis - “Improved Training of Multilayer

Feedforward

Neural Networks for Large Input Vectors”, Proc. 8th IEEE Med. Conf. Control

and

Aut., Rio, Patras, Greece, 2000.

[10] H. Demuth, M. Beale - “Neural Network Toolbox. User’s Guide”, ver.3.0,

The

MATHWORKS Inc., 1998.

[11] D. Dumitrescu, H. Costin - “Reţele neuronale. Teorie şi aplicaţii”, Ed.

Teora,

1996.

[12] J. Hertz, A. Krogh, R. Palmer - “Introduction to the Theory of Neural

Computation”, Lectures Notes, Santa Fe Institute, Addison-Wesley Publishing

Company, 1995.

[13] C. Lau (Ed.) - "Neural Networks. Theoretical Foundations and

Page 109: Carte Retele Neuronale

Analysis",

IEEE Press, 1992.

Page 110: Carte Retele Neuronale

- 112 - Bibliografie

[14] *** - “Building GUIs with MATLAB”,ver.5, The MATHWORKS Inc.,

1999.

[15] * * * - "MATCNN. Analogic CNN Simulation Toolbox for MATLAB",

Version 1.0, Analogical and Neural Computing Laboratory, Hungarian Academy of

Science, 1997.

[16] *** - IEEE Transaction on Neural Networks - colecţia anilor 1996-1999.