Sunteți pe pagina 1din 110

Ctlin-Daniel Cleanu

Virgil Tiponu

Reele neuronale. Aplicaii

Material realizat n cadrul programului TEMPUS AC-JEP 13438-98

Prefa

Cartea se adreseaz studenilor de la facultile de Electronic i Telecomunicaii, Automatic i Calculatoare, Informatic i are rolul de a introduce noiuni teoretice elementare despre reele 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 aplicaie prezint succint mediul MATLAB. Noiunile expuse aici faciliteaz nelegerea aspectelor legate de implementarea MATLAB a RNA. A doua aplicaie abordeaz principiile generale ale calculului neuronal iar restul aplicaiilor trateaz cele mai importante tipuri de reele neuronale: perceptronul simplu i cel multistrat, RNA bazate pe funcii 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 aplicaiile tipice. Acestea din urm sunt nsoite i de codul surs MATLAB aferent rezolvrii acestora. Pentru aprofundarea aspectelor teoretice privind RNA este recomandat utilizarea, n paralel cu acest material, a crii Reele neuronale. Arhitecturi i algoritmi aprut n Ed. POLITEHNICA i elaborat de aceeai autori. Lucrarea a fost realizat, pe baza unei documentrii la University of STRATHCLYDE, Glasgow, Marea Britanie, n cadrul programului TEMPUS AC-JEP 13438-98 iar autorii in s mulumeasc pe aceast cale coordonatorilor acestui program. Totodat exprimm mulumiri recenzorului pentru sugestiile utile exprimate dup parcurgerea acestui material precum i cadrelor didactice de la University of Strathclyde, Glasgow, pentru numeroasele discuii care au contribuit la finalizarea acestei cri.

Autorii

Cuprins

Aplicaia 1.
(C.D. Cleanu)

Introducere n MATLAB...pag.7 Modele ale neuronilor i ale reelelor neuronale artificiale.....pag.19 Perceptronul simplu. Algoritmul LMSpag.29 Perceptronul multistrat. Algoritmul BP standard.pag.35 Algoritmi rapizi de antrenament pentru RNA de tip MLP......pag.45 Reele neuronale bazate pe funcii radiale...pag.55 Reele neuronale artificiale recurente...pag.59 Reele neuronale cu autoorganizare.....pag.65 Primul experiment cu reele neuronale celulare: studiul unor template-uri simple...pag.71

Aplicaia 2.
(C.D. Cleanu)

Aplicaia 3.
(C.D. Cleanu)

Aplicaia 4.
(C.D. Cleanu)

Aplicaia 5.
(C.D. Cleanu)

Aplicaia 6.
(C.D. Cleanu)

Aplicaia 7.
(C.D. Cleanu)

Aplicaia 8.
(C.D. Cleanu)

Aplicaia 9.
(V. Tiponu)

Aplicaia 10. Crearea unei interfee grafice utilizator pentru o aplicaie cu RNA
(C.D. Cleanu)

folosind mediul MATLAB...pag.83 Simulatorul analogic de reele neuronale celulare MATCNN -prezentare general..pag.95

Anexa nr.1
(V. Tiponu)

Bibliografie......pag.111

APLICAIA NR. 1
Introducere n MATLAB

1. Generaliti n cadrul acestei lucrri toate referinele au n vedere MATLAB versiunea 5.3.0 (R11), 21.01.1999. Matlab [1], [2] reprezint un mediu de programare destinat calculului numeric i reprezentrilor grafice n domeniul tiinei i ingineriei. Elementul de baz cu care opereaz MATLAB este matricea. Este uor de extins, prin faptul c orice utilizator poate aduga propriile funcii sau le poate modifica pe cele existente. Folosind funciile predefinite ale MATLAB-ului se obine o important economie de timp n crearea de noi aplicaii. Deasemenea pachetul software include un set de funcii specifice (denumite toolbox) anumitor domenii, ca de exemplu: Reele neuronale (Neural Networks); Logic fuzzy (Fuzzy Logic) Prelucrri de imagine (Image Processing); Prelucrri de semnal (Signal Processing); Undioare (Wavelet) Achiziie 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

- 8 - Aplicaia 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). Adugnd la cele de mai sus i numeroasele posibiliti de reprezentare grafic 2 sau 3D a datelor i posibilitatea interfarii codului MATLAB cu cel scris n C sau limbaj de asamblare pentru procesoarele de semnal, avem argumentele MATLAB. Se ofer n continuare noiuni MATLAB elementare [3], necesare unei bune nelegeri ale aplicaiilor prezentate n capitolele urmtoare. 2. Elemente de baz MATLAB 2.1 Linia de comand Se folosete de regul pentru lansarea n execuie a programelor sau pentru diverse comenzi MATLAB. Un program MATLAB se apleleaz tastnd n linia de comand numele fiierului. O condiie necesar rulrii programului este setarea cii n care acesta se gsete (din meniul principal, opiunea File, submeniu Set path). n modul linie de comand fiecare linie este prelucrat imediat i rezultatele sunt afiate. Linia de comand nu este recomandat pentru scrierea fiierelor MATLAB. 2.2 Crearea programelor MATLAB (fiierelor script i fiiere funcie) Un program MATLAB, caracterizat de extensia *.m, const dintr-o necesare care s justifice implementarea aplicaiilor cu reele neuronale prin intermediul

succesiune de instruciuni MATLAB, cu posibilitatea apelrii altor fiiere. El presupune mai multe linii de cod care se pot scrie apelnd editorul MATLAB implicit. Acesta se lanseaz prin comanda Edit. Un fiier script conine o secven de comenzi. Dac prima linie a fiierului

Introducere n MATLAB - 9 conine cuvntul function, fiierul respectiv este declarat ca fiier funcie. O funcie difer de un script prin faptul c poate lucra cu argumente. Editorul ofer i faciliti de depanare (debugging) a programului prin setarea unor puncte de oprire (breakpoints) i rularea pas cu pas a programului. Exemplul 1.1 Scriei o funcie 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 fiiere MAT:AB de tip *.m.

n urma acestei comenzi se poate introduce codul MATLAB aferent funciei suma (fig.1.2). Dup salvarea fiierului (File, Save As, suma.m) se poate apela din linia de comand nou funcie definit (fig.1.3). 2.3 Operaii cu matrici ! ! Definirea unei constante. Exemplu: x = 2 Definirea unui vector. Exemplu: y = [1 2 3 4 5]

- 10 - Aplicaia nr. 1

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

Fig.1.3 Apelul funciei 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:

Introducere n MATLAB - 11 A= 1 4 7 ! 2 5 8 3 6 9

Referirea unui elemet al unei matrici. Exemplu: A(2,1) ans = 4

! ! ! ! ! ! ! ! ! !

Adunare + Scdere Inmulire * Inmulirea elementelor elementelor corespondente .* Ridicarea la putere ^ Ridicarea la putere a elementelor corespondente .^ Imprirea la stnga \ sau la dreapta / Imprirea la stnga .\ sau la dreapta ./ a elementelor corespondente Transpusa unei matrici ' Schimbarea dimensiunilor matricii - funcia reshape (X, M, N). ntoarce o matrice de M linii i N coloane cu elemente obinute din matricea original X . 2.4 Generarea vectorilor i matricilor

! ! !

Matrice nul - funcia zeros (M, N). Genereaz o matrice MxN cu toate elementele egale cu 0. Matrice unitate - funcia ones (M, N). Genereaz o matrice MxN cu toate elementele egale cu 1. Matrice identic - funcia eye (N, M). Genereaz o matrice MxN n care diagonala matricii are elementele egale cu 1, restul elementelor matricii fiind 0.

- 12 - Aplicaia nr. 1 ! Generarea vectorilor cu pas liniar. Dac se cunosc limitele intervalului i pasul dintre dou elemente, vectorul va fi generat cu instruciunea: x = xmin : pas : xmax Dac se cunosc limitele intervalului i numrul de elemenete N se foloseste comanda urmtoare: x = linspace (xmin, xmax, N). ! Generarea vectorilor cu pas logaritmic. Un vector x care va conine N elemente distribuite logaritmic ntre decadele [10 astfel: x = logspace (xmin, xmax, N) 2.5 Informaii despre vectori/matrici ! Dimensiunea unei matrici - funcia size (A). Returneaz un vector coloan [M N] n care M reprezint numrul de linii iar N reprezint numrul de coloane pentru matricea A. ! Lungimea unui vector - funcia length (x). ntoarce numrul de elemente ale vectorului x. 2.6 Instruciuni i fucii de control ! Repetarea unei secvene de program de un anumit numr de ori - instruciunea FOR: FOR variabil = expresie, grup de instruciuni, END ! Executarea condiionat a instruciunilor Forma general este: IF expresie_1 - instruciunile IF, ELSEIF, ELSE.
xmin

, 10 xmax ] se genereaz

Introducere n MATLAB - 13 declaraii_1 ELSEIF expresie_2 declaraii_2 ELSE declaraii_3 END Dac expresie_1 este adevrat se vor executa numai declaraii_1. Altfel, dac expresie_2 este adevrat, se vor executa numai declaraii_2. n caz contrar, cnd nici expresie_1 i nici expresie_2 nu e adevrat, se execut declaraii_3. ! Repetarea unui grup de instruciuni de un numr nedefinit de ori - instruciunea WHILE. Forma general este: WHILE expresie grup de instruciuni END i se execut grup de instruciuni pn cnd expresie are toate elementele nenule. 2.7 Reprezentarea graficelor 2D i 3D ! Grafice 2D elementare, n coordonate liniare. Sunt generate prin intermediul instruciunilor: plot (y), plot (x, y), plot (x, y, s) . Prima form reprezint grafic argumentul y n funcie de indici. A II-a form reprezint graficul vectorului y n funcie 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 instruciunilor loglog, semilogx, semilogy, folosite cu aceeai sintax ca instruciunea plot. Exist posibilitatea specificrii denumirii graficului (string1, string2, ). title(text) , axelor graficului xlabel (text) i ylabel(text), sau a legendei graficului legend

- 14 - Aplicaia nr. 1 ! Grafice 3D elementare. Exist numeroase funcii care permit diverse reprezentri 3D. Dintre acestea cele mai des folosite sunt funcia plot3 (x, y, z) care reprezint o linie n spaiul 3D care trece prin punctele ale cror coordonate sunt triplei (x, y, z). Pentru reprezentarea 3D a suprafeelor se poate folosi funcia mesh (X, Y, Z). n aceste condiii o suprafa este parametrizat prin dou variabile independente care variaz continuu n interiorul uni dreptunghi; fiecare punct este specificat prin trei funcii: X(i, j), Y(i, j) i Z(i, j). Exist posibilitatea controlul culorii (mesh (X, Y, Z, C)), al luminozitii (lighting), al punctului de observaie (view (az, el)) sau se pot modifica diverse alte proprieti ale unei suprafee. 3. Experimente 3.1 Scriei un program MATLAB care s implementeze operaiile 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 [10 7 6;3 2 0;2 A = [1 2 3; 4 5 B = [10 7 6;3 2 unei matrici: A = [1 2 3; 4 5 6; 7 8 9], B = 4 5]') 6; 7 8 9] 1;2 4 5]

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 Scriei un program MATLAB care s genereze vectori/matrici dup specificaiile din 2.4 i s afieze informaii referitoare la acetia/acestea conform 2.5.

- 16 - Aplicaia 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 Scriei un program MATALB care s foloseasc instruciunile de control descrise n 2.6. Rezolvare:
%Instructiuni de control %Catalin-Daniel Caleanu, 2000

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') end pause 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') end pause 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 Scriei un program MATLAB care s ilustreze posibilitile de creare a graficelor 2D i 3D pe baza funciilor descrise n 2.7. n acest sens reprezentai o distribuie gaussian 2D respectiv 3D. Ecuaiile de generare sunt:

y
i:

1 2 ,+ 1

( 2 % )& x # & 2+ 2 #

, pentru cazul 2D

2 ,+

( x2 y ) & & 2 +2

2%

# #

, pentru cazul 3D.

- 18 - Aplicaia 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')

APLICAIA NR. 2
Modele ale neuronilor i ale reelelor neuronale artificiale

1. Introducere Se urmrete definirea noiunilor de neuron artificial i reea neuronal artificial (RNA). Sunt evideniate 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 intrri (dendrite), corpul celulei i o ieire (axon). Analogia dintre neuronul real i cel artificial poate fi observat comparnd 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 numr de intrri (conexiuni sinaptice), fiecare dintre ele fiind caracterizat de o anumit pondere sinaptic wkj; - un sumator care efectueaz o combinaie liniar a intrrilor, rezultatul fiind intrarea net uk;

- o ieire caracterizat de prezena unei funcii de activare (.) i a unui prag !k. De regul (.) este o funcie neliniar. Fig. 2.3 prezint cteva forme tipice pentru funcia de activare a unui neuron.

- 20 - Aplicaia nr. 2

sinaps nucleu corpul celulei axon

dendrite

Fig. 2.1 Structura unui neuron biologic.

x1 x2 uk

xN

yk

Fig. 2.2 Modelul neuronului artificial.

Formula matematic care descrie comportarea neuronului artificial este:

y # % (u ! # %( w
k k k

) x !

) (2.1)
k

j# 1

kj

ceea ce se mai poate scrie:

y k ( w kj x j ) # % j# 0
cu x0 = -1 i wk0 = ! k.

(2.2)

Modele ale neuronilor i ale reelelor neuronale artificiale - 21 1 1 1 1

-1 -4 -2 0 2 4

-1 -4 -2 0 2 4

-1 -4 -2 0 2 4

-1 -4 -2 0 2 4

a) Sigmoid

b) Treapt

c) Liniar cu saturaie

d) Gaussian

Fig. 2.3 Funcii de activare tipice.

3. Arhitecturi ale RNA O structur compus dintr-un numr mare de procesoare elementare interconectate care opereaz n paralel, n vederea ndeplinirii unei sarcini specifice, poart denumirea de reea neuronal artificial, prescurtat RNA. & RNA cu propagare nainte a semnalului (feedforward) n acest caz, cmpul 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 parial conectate (fig.2.5). & RNA recurente (feedback) Se disting prin existena unui semnal de reacie din partea neuronilor straturilor superioare pentru neuronii straturilor inferioare sau, ca un caz particular, semnalul de reacie poate s provin de la ieirile neuronilor aceluiai strat (fig.2.6).

- 22 - Aplicaia nr. 2

Fig. 2.4 RNA feedforward total conectat.

Fig.2.5 RNA feedforward parial conectat.

4. Tipuri de instruire specifice RNA RNA achiziioneaz cunotinele prin instruire (nvare). nvarea presupune adaptarea parametrilor liberi ai RNA ca urmare a stimulilor mediului n care se gsete reeaua. Tipul de nvre este determinat de maniera n care sunt ajustai parametrii liberi ai RNA:

Modele ale neuronilor i ale reelelor neuronale artificiale - 23 -

Fig.2.6 RNA recurent.

& nvarea de tip supervizat Este caracterizat de prezena unui supervizor care cunoate cu exactitate modul de asociere al intrrilor RNA cu ieirile acesteia. Parametrii RNA sunt modificai sub influena combinat a vectorilor de antrenament i a semnalului de eroare (diferena dintre rspunsul dorit i cel actual). Scopul final al algoritmului de antrenament este ca RNA s emuleze, optim n sens statistic, supervizorul. & nvarea de tip nesupervizat (cu autoorganizare) Este caracterizat de absena unui semnal sau supervizor care s aprecieze corectitudinea asociaiilor intrare-ieire. RNA va descoperii trsturilor vectorului de intrare. singur legitile coninute n datele de intrare printr-o reprezentare intern adecvat a

- 24 - Aplicaia nr. 2 & nvarea prin ntrire Urmrete maximizarea unei mrimi scalare (indice de performan sau

semnal de ntrire) n urma unei aciuni efectuate de ctre sistemul supus nvrii. Dac modificrile aduse conduc spre o stare mai bun dect cea precedent, tendina sistemului de a produce acea aciune particular este ntrit. 5. Probleme 5.1. Reprezenati grafic cteva din funciile de activare (denumite n MATLAB

transfer functions) ale unui neuron disponibile n Neural Networks Toolbox, v.3.0. Indicaie: Pentru a cunoate totalitatea funciilor specifice, predefinite, disponibile pentru domeniul reele neuronale tastai help nnet. Dac se doresc amnunte despre o anumit funcie, acestea se pot obine prin: help denumirea_funciei. 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');

Modele ale neuronilor i ale reelelor 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')

Observaie: Rezultatul rulrii programului poate fi observat n fig. 2.3. 5.2. Un neuron j primete semnale de la ali patru neuroni ale cror 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. Calculai ieirea neuronului j n urmtoarele cazuri: a) neuronul este liniar; b) neuronul are o funcie de activare sigmoidal. Se consider pragul de activare k = 0,5. Indicaie: Modelul neuronului va fi implementat folosind funciile 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]

- 26 - Aplicaia 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. Cunoscnd faptul c anumii algoritmi de antrenament ai RNA folosesc derivata de ordinul I a funciei de activare, ce avantaj prezint n acest sens funciile de activare sigmoid i tangent hiperbolic? Rezolvare: Derivatele reprezint funcii exprimate prin funcia original (cea care se deriveaz). 5.4. Implementai o RNA feedforward total conectat, care s aib configuraia de mai jos. Calculai ieirea y a RNA pentru x = [0,7 3] considernd c neuronii din stratul ascuns au funcii de activare de tip tangent hiperbolic iar neuronul de ieire este liniar.

-1 x1 x2 -1 0,2 -0,2 1 -1
Fig.2.7 Reea neuronal feedforward (pentru problema 5.4).

0,5 1 -2 -0,1

-1 0,5 y

Indicaie: La implementarea RNA se va folosi funcia newff, a crei descriere este oferit n continuare: NEWFF Creaz o reea neuronal feedforward Sintaxa: net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) n care:

Modele ale neuronilor i ale reelelor neuronale artificiale - 27 PR - Rx2, matrice de valori min i max pentru R intrri. Si - Numrul de neuroni ai stratului i, pentru Nl straturi. TFi - Funcia de transfer pentru stratul i, implicit tangent hiperbolic ('tansig'). BTF - Funcia de antrenament, implicit metoda Levenberg-Marquardt ('trainlm'). BLF Funcia de nvare, implicit gradient descendent cu moment ('learngdm') PF - Atribuit de performan, implicit eroarea medie ptratic ('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 Trasai diagrama Hinton aferent RNA de la punctul anterior. Indicaie: Diagrama Hinton reprezint o modalitate de vizualizare a mrimii ponderilor i pragurilor. Pentru vizualizarea ponderilor i pragurilor aferente neuronilor stratului ascuns din problema precedent se va folosi comada:

- 28 - Aplicaia nr. 2
hintonwb(net.iw{1},net.b{1})

Se observ o reprezentare proporional a mrimii ponderilor i pragurilor, culoarea roie (mai nchis) fiind asocit cu valorile negative iar cea verde (mai deschis) cu cele pozitive (fig.2.8).

1 Input

Fig.2.8 Diagrama Hinton pentru problema 5.5.

5.6 Evideniai comparativ avantajele i dezavantajele RNA total conectate fa de RNA parial conecte. Rezolvare : Reelele neuronale total conectate se folosesc atunci cnd nu exist cunotine apriorice despre structura datelor de intrare. Au o aplicabilitate general i din acest motiv o structur care presupune un numr nsemnat de parametri liberi (ponderi i praguri). RNA parial conectate exploateaz informaiile 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 dect cele total conectate. Au cerine privitoare la puterea de calcul mai mici dect n cazul precedent, avnd implementate mecanisme de partajare a ponderilor (weight sharing).

APLICAIA 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 Aplicaia nr.2, fig. 2.2) pentru cazul n care funcia de activare este de tip treapt unitate bipolar.

I N T R R I

x1 x2

w1 y -1

xN

wN

I E I R E

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

- 30 - Aplicaia nr. 3 separate de ctre un hiperplan definit de eceuaia:

w#
i!1 i

xi %

! 0 (3.1)

n concluzie, perceptronul simplu poate fi folosit cu succes doar n cazul particular al clasificrii tiparelor liniar separabile, adic a tiparelor care sunt situate de-o parte i de alta al unui hiperplan. Avnd n vedere notaiile urmtoare:

x (n ) ! [ 1 ,x 1 (n ), x 2 x N (nT)]= vector de intrare; (n ),..., T w(n) ! [ % (n),w1 (n), w2 (n),...,wN (n)] = vectorul ponderilor sinaptice;
(n) = prag; y(n) = rspuns actual; d(n) = rspuns dorit; &(n) = rat de nvare, de regul 0 < & < 1. paii algoritmului (tip Rosenblatt) de antrenament aferent perceptronului simplu vor fi: a) Iniializarea: w(0) = 0; b) Calcul rspuns actual: funcia signum. c) Modificarea ponderilor sinaptice: w (n n care :

y(n)! sgn[w (n)x(n)] , n care funcia sgn(.) reprezint 1 )! w (n ) &[ d (n ) y (n )])x (n )

1 , dac x ( n ) + C1 d( n ! ) ) ( 1, dacx(n) + C2
d) Incrementarea lui n cu o unitate i salt la pct.b)

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 difereniaz de algoritmul de antrenament al perceptronului simplu este modul de calcul al semnalului de eroare, care n acest caz nu este cuantizat iar funcia de activare poate fi liniar. Avnd n vedere aceste aspecte, algoritmul LMS poate fi formulat n modul urmtor: a) Etapa de initializare: pentru wk(0) = 0, k = 1,2, ..., N b) Etapa de filtrare:
N

y (n )!

w (n) (n)
j! 0 j

e( n) ! d (n ) y (n ) w (n 1)! w (n ) &
k k

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

Formularea algoritmului LMS s-a fcut din perspectiva unei filtrri spaiale. El poate fi utilizat n aceeai msur n rezolvarea problemelor de filtrare temporal, considernd c x(n) reprezint eantioane ale vectorului de intrare la momente de timp diferite:

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

x( n N 1 )]

(3.2)

RNA ADALINE ( Adaptive Linear Element) folosete algoritmul de antrenament LMS (Widrow-Hoff) n scopul clasificrii tiparelor. Structura ei este prezentat n fig. 3.2. n timpul etapei de antrenament, tiparele sunt aplicate direct RNA, ea urmnd s descopere singur caracteristicile acestora. Experiena acumulata a RNA este coninut n valorile w1, ..., wN i %.

- 32 - Aplicaia nr. 3

x1 x2

w1 wN e y

xN

d
Fig.3.2 Structura RNA ADALINE.

4. Probleme 4.1 Perceptronul simplu poate fi folosit la implementarea unor funcii logice. Verificai practic aceast afirmaie prin intermediul codului surs MATLAB aferent unui perceptron simplu care s efectueze funciile logoce I, SAU i SAUEXCLUSIV. Justificai comportamentul perceptronului simplu n cazul funciei SAUEXCLUSIV. Indicaie: La implementarea RNA se va folosi funcia newp, a crei 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 intrri. S - Numr de neuroni TF - Funcie de transfer, implicit funcia prag ('hardlim'). LF Funcia de nvare, implicit 'learnp'. Rezolvare:
%Implementare unei retele neuronale de tip perceptron simplu %Catalin-Daniel Caleanu, 2000 clear all close all clc % tipar de intrare

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)

Observaie: Pentru reelele neuronale care implementeaz funciile I i SAU logic se constat o funcionare corespunztoare att pentru tiparele de antrenament ct i pentru cele de test. Pentru cazul SAU-EXCLUSIV se constat imposibilitatea rezolvrii corecte a problemei, att pentru tiparele de atrenament ct i pentru cele de test. Explicaia provine din faptul c primele dou cazuri (I, SAU) reprezint probleme liniar separabile, pe cnd problema SAU-EXCLUSIV nu e liniar separabil. 4.2 Verificai capacitatea de predicie liniar pentru o RNA ADALINE n cazul eantioanelor prelevate dintr-o funcie de tip sinusoidal, la care frecvena se modific liniar n intervalul [0 6]. Considerai o predicie de ordinul 5, adic eantionul x(n) s fie prezis pe baza x(n-1), x(n-2), , x(n-5). Indicaie: La implementarea RNA se va folosi funcia newlin, a crei descriere este oferit n continuare: NEWLIN Creeaz un strat liniar

- 34 - Aplicaia nr. 3 Sintax: net = newlin(PR,S,ID,LR) n care: PR - Rx2, matrice de valori min i max pentru R intrri. S Numrul de neuroni de ieire. ID - Vectorul ntrzierilor , implicit = [0]. LR - Rata de nvare, 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 Eroare 2 1 0

-1 -2 0 5 10 Timp 15 20

Fig.3.3 Semnalele int, Predicie i Eroare = int - Predicie, pentru problema 4.2.

APLICAIA 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 conine: - un set de unitai senzoriale (noduri surs) care constituie stratul de intrare; - unul sau mai multe straturi ascunse; - un strat de ieire. n fig. 4.1 este prezentat arhitectura unei RNA de tip perceptron multistrat, cu un singur strat ascuns. Se pot distinge trei caracteristici eseniale ale RNA de tip MLP: a) Neuronii straturilor de intrare, ascuns sau chiar cei ai stratului de ieire au inclus n modelul lor matematic funcii de activare de tip neliniar, netede (derivabile n orice punct). Prezena neliniaritii este foarte important n funcionarea MLP, n plus ea fiind motivat i de ctre comportamentul neuronului biologic. b) MLP conine unul sau mai multe straturi ascunse, care permit realizarea unor sarcini complexe prin extragerea progresiv, la acest nivel, a trsturilor coninute n tiparele aplicate la intrare. c) Au un grad nalt de conectivitate. (MLP, Multilayer Perceptron)

- 36 -

Aplicaia 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 ieire este definit prin diferena dintre valoarea dorit i valoarea actual a ieirii neuronului:

(n ) d
j

(n ) ! y (n ) (4.1)

Astfel, suma erorilor ptratice pentru toi neuronii stratului de ieire, este:

1 E (n ) # 2

2 j

(n )

(4.2)

j C

unde C reprezint mulimea neuronilor stratului de ieire. Considernd antrenamentul RNA drept o problem de minimizare a unei funcii de cost E(n) , se pot deduce, pe baza metodei gradientului descendent , modificrile care trebuie aduse parametrilor liberi ai RNA:

& w ji ( n ) !

% E ( n) %w
ji

( n)

(4.3)

n care reprezint rata de nvare. Dezvoltnd ec. (4.3) se obin formulele modificrilor ponderilor sinaptice: a) dac neuronul j aparine stratului de ieire:

Perceptronul multistrat. Algoritmul BP standard - 37 -

& w(n ) ) (n )
ji

(n ) y [e (n ) ( (v (n ))] y (n )
i j j j i

(4.4)

n care ) j (n) reprezint valoarea gradientului local al erorii iar vj(n) intrarea net a neuronului (potenialul intern de activare). b) dac neuronul j aparine stratului ascuns:

& w (n ) [ ( (v (n ))
ji j j

#
k

) (n )w
k kj i

(n )] y (n ) (4.5)

unde k reprezint indicele corespunztor neuronilor din stratul succesor aceluia din care face parte neuronul j. ntr-un caz particular, cnd MLP are doar un singur strat ascuns, indicele k se refer la neuronii stratului de ieire. Practic, se disting dou etape ale algoritmului BP: a) pasul forward - presupune calculul tuturor ieirilor neuronilor RNA:

y ( n) ( ( v ( n )) ( (
j j j

i Cl

w (n )y (n ))
ji i

(4.6)

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 ieire 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 aplicaii concrete. O valoare prea mic a ratei de nvare genereaz o traiectorie lin n spaiul ponderilor dar are ca efect un proces lung de antrenament. Dimpotriv, o valoare prea mare compromis. O metod simpl de cretere a conduce la un posibil comportament instabil al RNA, convergena algoritmului fiind , evitnd totodat instabilitatea, o reprezint includerea unui termen denumit moment n ec. (4.4):

! 1

& w +& w
ji

ji

(n ) 1 ), ) (n !

(n ) y (n ) (4.7)
j i

Ecuaia de mai sus poart denumirea de regula delta generalizat. Efectele introducerii termenului moment se manifest prin prevenirea nepenirii RNA n minime locale

- 38 -

Aplicaia nr. 4

ale spaiului ponderilor i printr-un efect global de stabilizare a procesului de nvare. 4. Probleme 4.1 Implementai o RNA MLP care s rezolve problema XOR. Numrul de neuroni de intrare, ascuni i de ieire vor fi: 2, 4 respectiv 1 iar metoda de antrenament backpropagation cu moment (funcia MATLAB traingdm). Indicaie: La implementarea RNA se va folosi funcia newff, a crei descriere este oferit n continuare: NEWFF Creaz o reea 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 intrri. Si - Numrul de neuroni ai stratului i, pentru Nl straturi. TFi - Funcia de transfer pentru stratul i, implicit tangent hiperbolic ('tansig'). BTF - Funcia de antrenament, implicit metoda Levenberg-Marquardt ('trainlm'). BLF Funcia de nvare, implicit gradient descendent cu moment ('learngdm') PF - Atribuit de performan, implicit eroarea medie ptratic ('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')

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 SAUEXCLUSIV net = train(net,Pantr,T_XOR); in rezolvarea problemei

% 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

50

100 150 238 Epochs

200

Fig.4.2 Evoluia erorii medii ptratice de-alungul procesului de antrenamet (problema 4.1)

4.2 Verificai capacitatea de interpolare a RNA MLP pentru urmtoarea funcie: f(x) = 0,2 + 0,8(x+ 0,7sin(2 x)) cu 0 x 1. Se vor considera un numr de 11 puncte de antrenament, adic intervalul

- 40 -

Aplicaia nr. 4 101 puncte de test, adic un pas de

considerat, eantionat cu un pas de 0,1 i test. Rezolvare:

eantionare de 0,01. Evaluai eroarea pentru cazul datelor de antrenament respectiv

% 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

Perceptronul multistrat. Algoritmul BP standard - 41 plot(P,T,'.') plot(Ptest,y1test,':'); xlabel('x'); ylabel('Antrenament . Test + hold off figure bar(er*100); ylabel('Eroare aproximare [%]'); xlabel('Antrenament

Iesire MLP --')

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 x 0.6 0.8 1

Fig.4.3 Aproximarea unei funcii (problema 4.2).

4.3 Considernd 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.

- 42 -

Aplicaia nr. 4

x0=[1 1 1 1 1 1 1 1

1 0 0 0 0 0 0 1

1 0 0 0 0 0 0 1

1 0 0 0 0 0 0 1

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

Fig. 4.4 Conversia imaginilor n format binar.

Evaluai eroarea pentru cazul datelor de antrenament respectiv pentru setul datelor de test. Considerai 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

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 funcie de numrul neuronilor stratului ascuns? Dar n funcie de numrul de epoci de antrenament sau nivelul erorii medii ptratice? Experimentai aceste variaii n cazul pct.4.3. Rezolvare:

- 44 -

Aplicaia nr. 4 Numrul neuronilor ascuni are o valoare optim, n general imposibil de

prezis cu exactitate, nainte de evaluarea performanelor reelei n mai multe seturi de experimente. Dac numrul neuronilor stratului ascuns este prea mic, reeaua nu reuete s formeze o reprezentare intern adecvat a datelor de antrenament i n consecin eroarea de clasificare va fi mare. Cu un numr prea mare de neuroni n stratul ascuns reeaua nva foarte bine datele de antrenament dar este incapabil de o bun generalizare obinnd valori mari ale erorii ptratice pentru cazul datelor de test. Concluzia este valabil i pentru numrul total de epoci de antrenament sau valoarea final a erorii ptratice medii: optimul acestor mrimi poate fi determinat numai experimental i este dependent de tipul problemei i structura RNA.

APLICAIA NR. 5
Algoritmi rapizi de antrenament pentru RNA de tip MLP

1. Introducere Se vor investiga cteva metode, detaliate n metoda Darken-Moody; regula delta-delta; adaptarea fuzzy a ratei de nvare; metode bazate pe calculul gradientului conjugat Ribire); metoda Levenberg-Marquardt. 2. Metoda Darken-Moody Denumita i metoda caut apoi converge, propune ajustarea ratei de nvare ntr-un mod simplu dar care aduce un spor considerabil n ceea ce privete viteza de convergen a algoritmului de antrenament. Se propune o rat de nvre de forma: (Fletcher-Reeves, Polak[7] i [8], care conduc la

accelerarea procesului de antrenament al unei RNA - MLP:

0 ( n) n 1# !
n care 0 reprezint rata de nvre iniial, o constant de timp iar epocilor de antrenament.

(5.1)

n numrul

Variaia de-alungul epocilor de antrenament este ilustrat n fig. 5.1. n epoci timpurii, algoritmul se comport similar celui standard, rata de nvare meninndu-se

- 46 - Aplicaia nr. 5 ridicat i relativ constant. Pe msur ce procesul de antrenament avanseaz, este micorat.
8

4 2 100 101 102 Nr. de epoci 103

Fig. 5.1 Forma de variaie 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 Considernd valoarea criteriului (atributului) de performan (MSE, SSE, etc.) notat cu perf(w(n)), regula de modificare a ratei de nvare este n acest caz:

n care coeficienii au urmtoarele valori tipice: c1 = 1,05, c2 = 0,7, c3 = 1,04. valoarea w(n-1) respectiv perf(w(n-1)).

( c 1 ( k ) 1 perf ( w ( k )) , perf ( w ( k ) 1 ) ), if % perf ( w ( k ) 1 )(5.2) ( k) c ( k if perf ( w ( k )) + c ) 1 ), 2 3 %& ( k ) 1), altfel

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

Algoritmi rapizi de antrenament pentru RNA de tip MLP - 47 4. Adaptarea fuzzy a ratei de nvare Dezavantajul metodei precedente const din faptul c parametrii c1 i c2 sunt constani de-alungul etapei de nvare i, n consecin, impiedic o variaie rapid a ratei de nvare. Controlerul fuzzy [9] primete drept intrri valoarea relativ a atributului de performan:

p(n )
i variaia relativ a p(n):

perf ( n ) perf ( n ) 1 ) perf ( n perf ( n ) 1 ) ) ) perf ( n ) 2) perf ( n ) 1)

(5.3)

(n) p

(5.4)

Ieirea controlerului de tip Mamdami reprezint un coeficient c care multiplic rata de nvare:

(n) c(n )
Suprafaa de reglare a controlerului este prezentat n fig. 5.2. 5. Metode bazate pe calculul gradientului conjugat

1 ) (5.5)

Metodele de antrenament prezentate pn n acum pot fi circumscrise n clasa metodelor de ordinul nti ale gradientului descendent deoarece iau n considerare prima derivat a funciei de cost (funcie criteriu). n cazul acestor metode, direcia vectorului de-alungul cruia se face ajustarea ponderilor reprezint negativul gradientului. Metoda gradientului conjugat evit oscilaiile n jurul soluiei finale, considernd o relaie, relativ complicat, ntre direcia i gradientul vectorului. Fie p(n) vectorul direcie. Ponderile reelei vor fi adaptate dup urmtoarea regul:

- 48 - Aplicaia nr. 5

w(n # 1 )
Iniial:

w(n) #

(n) p(n) (5.6)


(5.7)

p(0) ) g(0)

Fig. 5.2 Suprafaa de reglare a controlerului fuzzy.

n care g(n) reprezint vectorul gradient. Ceilali vectori direcie vor fi calculai ca o combinaie liniar a vectorului gradinet curent i a vectorului direcie anterior:

p(n # 1 )
a) Formula Fletchr-Reeves:

) g(n # 1 ) #

. (n)p(n) (5.8)

Exist numeroase moduri de exprimare a parametrului (n):


T

. ( n)

g(

b) Formula Polak-Ribire:

n # 1 ) g( n)

g(n# 1) g(n)

(5.9)

. ( n) g ( T 1 ) [ g ( n # 1 )) g ( n )] n# g T (n ) g (n )
n cazul ec. (5.6) (n) este definit dup cum urmeaz:

(5.10)

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


funcia de cost.

(5.11)

adic presupune o cutare liniar pentru gsirea valorii particulare care minimizeaz

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 funcii [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 eliminrii cazurilor pentru care H-1 nu exist:

w )

/ E H
) 1

/ E
2 ) 1

(5.12)

Cnd indicele (funcia) de performan este o sum de ptrate (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 performant) i e reprezint vectorul eroare al RNA [10]. indicelui de

[/ E # 0I]

) TJ e w [J J #0 I]
valoare ct mai mic.

) 1

(5.13)

De menionat faptul c poate s fie modificat adaptiv, pentru el fiind recomandat o 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 Aplicaia nr. 4, pct. 4.2, verificai comparativ viteza de convergen pentru algoritmul BP standard i cele 6 metode prezentate n cadrul acestei lucrri. Rezolvare:
% Comparatie intre diversi algoritmi de antrenament % cazul interpolarii unei functii % Catalin-Daniel Caleanu, 2000 clear all

- 50 - Aplicaia 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;

Algoritmi rapizi de antrenament pentru RNA de tip MLP - 51 t4 = clock; [net4,tr4]= train(net4,P,T); time4=etime(clock,t4); y1test y2test y3test y4test y1antr y2antr y3antr y4antr = = = = = = = = sim(net1,Ptest); sim(net2,Ptest); sim(net3,Ptest); sim(net4,Ptest); sim(net1,P); sim(net2,P); sim(net3,P); 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

- 52 - Aplicaia 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 Repetai verificarea de la punctul 7.1 pentru cazul unei probleme de clasificare a unor tipare de dimensiuni mari (baza de date ORL). 7.3 Completai tabelul de mai jos (tab.5.1), pe baza rezultatelor simulrii de la pct. 7.1 i 7.2. Care sunt concluziile desprinse n urma rulrii acestor algoritmi de antrenamet ? Rezolvare: Concluziile experimentelor conduc la ideea c algoritmii de antrenament se claseaz, n ordinea cresctoarea 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 cerinele de memorie i putere de calcul sunt practic proporionale 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-Ribire).

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

4 3 2

2
1

traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4

traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4

Fig.5.1 Grafice rezultate n urma rulrii programului aferent pct.7.1.

- 54 - Aplicaia nr. 5
TIP PROBLEM INTERPOLARE CLASIFICARE EPM Nr. Timp EPM Nr. Timp [%] de de [%] de de epoci calcul epoci calcul [s] [s]

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

Tab. 5.1 Rezultate comparative pentru diveri algoritmi de antrenament ai RNA MLP.

Metodele backpropagation cu rata variabil de nvare (traingdx, trainfuzzy) ofer cel mai bun raport vitez de convergen / cerine de memorie.

APLICAIA NR. 6
Reele neuronale bazate pe funcii radiale

1.Introducere Este prezentat o abordare diferit a modului de funcionare a unei RNA: aceasta este vzut ca o problem de aproximare a unei curbe ntr-un spaiu multidimensional. 2. Arhitectura unei RNA-RBF O RNA bazat pe funcii radiale (RBF - Radial Basis Function) prezint trei straturi (fig. 6.1): stratul de intrare sau stratul senzorial; stratul ascuns - conine funcii care constituie o baz pentru vectorii de intrare; aceste funcii poart denumirea de funcii radiale. stratul de ieire. Transformarea spaiului de intrare n spaiul neuronilor ascuni este neliniar, pe cnd transformarea spaiului neuronilor ascuni n spaiul neuronilor de ieire este liniar. Justificarea acestui aspect se bazeaz pe teorema lui Cover asupra separabilitii tiparelor, care arat c o problem complex de clasificare a tiparelor, transformat neliniar ntru-un spaiu de dimensiune nalt este cu mult mai probabil de a fi liniar separabil dect ntru-un spaiu cu dimensiuni mai puine.

- 56 - Aplicaia nr. 6

Fig.6.1. Arhitectura unei RNA-RBF.

3. Strategii de nvare pentru RNA bazate pe funcii radiale Exist mai multe metode de antrenament ale RNA - RBF, deosebirea dintre ele constnd n metoda de alegere a centrilor funciilor radiale: metoda centrilor fici alei aleator; metoda seleciei autoorganizate a centrilor; metoda seleciei supervizate a centrilor. n continuare, se va prezenta detaliat prima metod menionat anterior. Ea reprezint cea mai simpl abordare i presupune funcii radiale fixe pentru funciile de activare ale stratului ascuns. Locaiile centrilor funciilor sunt alese aleator, dintre vectorii de intrare. Pentru funciile radiale se prefer cele de forma:

G! x t

) M # exp x t

& , i # 1 ,2, M %

(6.1)

n care M reprezint numrul centrilor, iar d distana maxim dintre aceti centri alei. Pentru determinarea ponderilor stratului liniar de ieire se folosete metoda pseudoinversei:

( d

w #G
+

(6.2)

G fiind pseudoinversa matricii G:

Reele neuronale bazate pe funcii radiale - 57 -

G # { g ij }
cu:
2& ) M g ji # exp 2 xj ti , i # 1 , 2, ( d %

(6.3)

M , j # 1 ,2, N

(6.4)

Conform teoremei decompoziiei valorii singulare pseudoinversa matricii G este definit astfel:
+ + T

G #V U
+

(6.5)

n care este ea nsi o matrice N x N constituit din valorile singulare ale lui G:

) 1 1 & 1 ,+ # diag , ,..., ,0 ( 1 2 k ,...,0 %


4. Probleme 4.1. Verificai capacitatea de predicie a unei RNA-RBF pentru urmtoarea serie haotic: x # 3,79x
n n1

(6.6)

( 1 x ) cu x.[0,1]
n1

Centrii funciilor radiale vor fi uniform distribuii n intervalul [0,1]. Indicaie: La implementarea RNA se va folosi funcia newrb, a crei descriere este oferit n continuare: NEWRB Creeaz o RNA bazat pe funcii 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 funciilor 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

- 58 - Aplicaia nr. 6
N=100; p=50; % numarul total de esantioane calculate % fractiunea, in procente, din N pentru care % se vor constitui datele de antrenament k=5; % pasul predictiei eg = 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-RBF test1=x((N*p)+1:N); % esantioane de test Y1=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. Evaluai influena dispersiei funciilor radiale (n cazul 4.1) asupra procesului de predicie. Acelai lucru pentru cazul n cazul n care numrul neuronilor ascuni variaz.
1
1 0.8 0.6 0.4 0.2 0

0.8 0.6 0.4 0.2


0 0.2 0.4 x(n-1) 0.6 0.8 1

training values predicted values

0 0

20

40

60

80

100

120

Fig.6.1 Grafice obinute n urma rulrii programului de la punctul 4.1.

APLICAIA NR. 7
Reele neuronale artificiale recurente

1.Introducere Se urmrete familiarizarea cu o clas important a RNA i anume acelea care prezint o structur recurent.[11]. RNA recurente sunt caracterizate de: - uniti 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 vzut ca o memorie asociativ sau ca o memorie adresabil prin coninut, a crei funcie principal este regsirea tiparelor stocate n memorie, ca rspuns la prezentarea unui tipar incomplet sau contaminat cu zgomot. Esena memoriilor adresabile prin coninut const n transformarea tiparelor n stri 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 stri posibile: activ (si = 1) , respectiv inactiv (si = -1). Starea unei RNA-H alctuit din N neuroni este definit de ctre vectorul: s = [s1, s2, ..., sN]T (7.1)

- 60 - Aplicaia nr. 7

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

Potenialul intern al unui neuron j este:

vj

i1

w ji si #

(7.2)

n care j reprezint pragul neuronului. Neuronul j i modific starea conform regulii:

( + 1 ,dac v j 0 sj &# 1 , dac v j ) 0


-1. De exemplu, se poate conveni ca starea neuronului s rmn nemodificat. n funcionarea RNA-H se pot distinge dou etape:

(7.3)

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

a) Faza de memorare . S presupunem c se dorete stocarea unor vectori N dimensionali { | = 1, 2, ..., p}. Atunci, conform postulatului lui Hebb:

w
ji

1 p N ! ,, j , , i
, 1

(7.4)

Acelai lucru poate fi scris n form matricial astfel:

Reele neuronale artificiale recurente - 61 -

1 p p T W N ! N I #
, 1

(7.5)

n care I reprezint matricea identic. b) Faza de utilizare (regsire). 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 reelei, ales n mod aleator, estimeaz propriul potenial de activare i i stabilete starea final. Acest proces asincron (serial) de modificare a strilor 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 crui elemente satisfac condiia de stabilitate:

y j sgn( !
i 1

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

(7.6)

sau n form matricial:

y sgn( W y # ) .
RNA-H cu ponderi sinaptice li se poate asocia aa-numita funcie de energie:

(7.7)

E #

1 N N ! ! 2 w

ji

s is

(7.8)

i 1 j 1

Variaia energiei E ca urmare a variaiei strii neuronului j e dat de expresia:

0 E #0 s

i 1 i/ j

w ji s

(7.9)

Astfel, n timpul fazei de regsire a unui tipar, E descrete monoton. Schimbarea strii RNA-H va continua pn cnd se va atinge un minim local al peisajului energetic. Minimele peisajului energetic corespund unor atractori specifici spaiului strilor care n mod normal reprezint tipare memorate n faza de memorare.

- 62 - Aplicaia nr. 7 3. Probleme 3.1. Implementai n MATLAB o RNA-H cu N = 120 neuroni (N 2 - N = 12280 ponderi sinaptice!) care, n faza de memorare s fie capabil s stocheze 10 tipare de dimensiune 12 x 10 pixeli corespunztoare numerelor 0...9 binarizate. Pentru faza de utilizare procedai dup cum urmeaz: ntr-o prim etap, se vor aplica tiparele de antrenament, pentru testarea capacitii RNA-H de a regsi corect datele de antrenament. Notai numrul de iteraii necesare regsirii acestora. Pentru a demonstra capacitatea de corecie a erorilor pentru RNA-H se vor folosi versiuni corupte cu zgomot 5%, 15% respectiv 25% ale aceleiai baze de date. Notai i n acest caz numrul de iteraii necesare regsirii acestor tipare i efectuai o comparaie cu cazul precedent. Indicaie: La implementarea RNA se va folosi funcia newhop, a crei 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;

Reele 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)

- 64 - Aplicaia nr. 7
fig3=figure; set(fig3,'Position',[200 200 imshow(cifra_zgomot') truesize(fig3,[200,200]); title('Imagine cu zgomot') 50 50])

% 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 iteraii, converge spre unul din tiparele memorate anterior, n acest caz cel al cifrei 1 (problema 3.1).

APLICAIA NR. 8
Reele neuronale cu autoorganizare

1. Introducere Se prezint o nou clas a RNA i anume cele cu nvare de tip

nesupervizat (cu autoorganizare) [12], [13]. Discuia este restrns la cadrul nvrii de tip competitiv dei trebuie menionat existena mai multor paradigme ale nvrii nesupervizate: nvarea de tip hebbian sau cea bazat pe teoria informaiei. n contextul mai sus menionat 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 contiin. 2. RNA-SOFM (Kohonen) Scopul acestui algoritm const n transformarea unui tipar de intrare de dimensiune arbitrar ntr-o hart de trsturi (spaiu discret, de regul 1D sau 2D) ordonat topologic . Cu alte cuvinte, exist o coresponden ntre tipul (caracteristicile) tiparului aplicat la intrare i locaia spaial a neuronului care va fi activat. Corespondena topologic se manifest n sensul n care la tipare similare aplicate la intrarea RNA vor fi activai neuroni situai n aceeai bulb) a stratului de ieire. Arhitectura RNA-SOFM 2D este prezentat n fig.8.1. Algoritmul de antrenament presupune urmtorii pai : a) Iniializarea ponderilor. Se aleg valori aleatoare mici pentru ponderile sinaptice wj(0). vecintate (lob sau

- 66 - Aplicaia nr. 8

Stratul neuronilor de ieire

w1 x1 x2 xN

wN Stratul neuronilor de intrare

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

b) Desemnarea neuronului ctigtor. Se aplic tiparul x la intrarea RNA, iar pe baza acestuia este selectat neuronul ctigtor al competiiei:

i (x ) ! arg

min x( n ) w
j j

, j ! 1 ,2 ,..., N (8.1)

c) Ajustarea ponderilor:

% w j w j( n ( 1 ) ! # 0,
n care (n) reprezint rata de nvare, iar

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

altfel

(8.2)

& i ( x) ( n ) reprezint vecintatea topologic


j,i (x )

a neuronului nving tor i(x). Dac se noteaz cu topologice, atunci relaia (8.2) poate fi rescris astfel:

amplitudinea vecintii

w (n ( 1)! w ( ) (n ) ( n )[ x ( n )
j j

(n )

w (n )]
j

(8.3)

j, i (x )

De regul (n), &

i (x )

( n ) i

j,i ( x )

sunt mrimi dinamice, care variaz de-a

lungul epocilor de antrenament:

j,i

! exp(

d2 i j, 2 +
2

(8.4)

Reele neuronale cu autoorganizare - 67 -

) ( n )) !

1 n. exp

(8.5)

n care dj,i reprezint distana de la neuronul j la neuronul ctigtor i iar

/ , 0 21 1 n. + (n) ! + 0 exp / 2 , 0 2

(8.6)

) ,+ ,
0 0

21,2 2 sunt constante.


Procedura se repet de la pasul b) de un numr de ori specificat apriori sau pn cnd nu se mai nregistreaz schimbri notabile n harta de trsturi . 3. Algoritmul de antrenament nesupervizat, cu contiin Una din problemele cu care este confruntat algoritmul de tip Kohonen reprezint faptul c unii neuroni ai RNA pot s ctige foarte rar sau chiar deloc competiia. Algoritmul cu contiin elimin acest impediment prin memorarea numrului de activri pentru fiecare dintre neuronii RNA. Contiina neuronului se manifest prin autoeliminarea sa din cursa pentru ctigarea competiiei n cazul n care a fost activat (a ctigat competiia) de un numr de ori prea mare. Paii algoritmului sunt urmtorii: a) Gsirea ponderii sinaptice wi cea mai apropiat de vectorul de intrare x:

xw
i

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

b) Memorarea numrului de activri pentru neuronul care a ctigat competiia:

p nou
j

unde 0<B<<1 i: y
j

! p

vechi j

( B(y
j

vechi j

p)

% 1 , dac neuronul " j " este cstigator ! # 0,altfel

c) Gsirea noului neuron ctigtor, conform mecanismului contiinei:

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

- 68 - Aplicaia nr. 8

unde bj poate fi vzut ca o deplasare de scar (bias); el este definit dup cum urmeaz: 1 1 . ! C/ p, j 0N unde C este o constant iar N reprezint numrul total de neuroni din stratul de ieire.
j

d) Adaptarea vectorului ponderilor aferente neuronului c tigtor:

! w ( ) (x w ) i i n care ) reprezint rata de nvare a algoritmului SOFM


u i

w no

vechi

vechi

4. Probleme 4.1 Pentru a ilustra procesul de formare a bulbilor de-a lungul epocilor de

antrenament, implementai o RNA-SOFM tridimensional, 3 x 3 x 3 neuroni, folosind funcia newsom. Tiparele de intrare sunt generate de ecuaia (fig.8.2):

z!

1 2 +
2

1 x2 (y2 / / 2+ 2 0

. , ,

(8.7)

Folosind funcia plotsom ilustrai formarea bulbilor dup 0, 3, 20 de iteraii. Indicaie: Pentru implementarea unei RNA-SOFM se va folosi fucia newsom, a crei descriere este oferit n continuare: NEWSOM Creeaz o RNA tip hart de trsturi Sintaxa: net = newsom(PR,[d1,d2,...],tfcn,dfcn,olr,osteps,tlr,tns) n care: PR - Rx2 matrice de valori min i max pentru R intrri. Di - Dimensiunea (numrul de neuroni) pentru stratul i, implicit [5 8]. TFCN - Tipul topologiei, implicit 'hextop'. DFCN - Funcia distan (descrie noiunea de distan dintre neuronii stratului de ieire), implicit 'linkdist'. OLR - Rata de nvare n faza de ordonare, implicit 0.9. OSTEPS - Durata (n epoci) a fazei de ordonare, implicit 1000. TLR - Rata de nvare n faza de ajustare, implicit 0.02

TND - Distana dintre vecinti n faza de ajustare, implicit 1.

Reele neuronale cu autoorganizare - 69 -

Fig.8.2 Distribuia 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,

- 70 - Aplicaia 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 Po siti ons

1.5 1.5 1 0.5 0.5 0 2 2 1 position(2,i) 0 0 1 position(1,i) W(i,2) -0.5 0 0.5 0.5 0 -0.5 1

W(i,1)

Fig.8.3 Distribuiile iniiale i finale ale vectorilor pondere obinute n urma rulrii progarmului aferent pct.4.1.

APLICAIA NR. 9
Primul experiment cu reele neuronale celulare: studiul unor template-uri simple

1. Chestiuni introductive

Lucrarea de fa urmrete aprofundarea cunotintelor de reele neuronale celulare (RNC) prin studiul experimental, prin simulare, al unor template-uri simple. Simularea se face utiliznd toolbox-ul MATCNN, elaborat exclusiv pentru acest tip de reele neuronale i care este prezentat n ANEXA NR. 1. Sunt analizate dou template-uri, larg utilizate n prelucrrile de imagini: template-ul simulat n MATCNN, adic o RNC standard, cu vecinatai ( N1 ( i, j) ). 2. Analiza template-urilor EDGE i THRES Regimul dinamic al unei celule dintr-o RNC cu vecinti 3x3 este descris de EDGE i 3x3 template-ul THRES. Peste tot n cele ce urmeaz se are n vedere reeaua neuronal

v ecuaia diferenial ordinar i neliniar [7]: C xij ( t ) &% R


%1

v xij !t #

kl ( N 1

A ij ,kl v !t #

ykl

kl ( N1

ij ,kl

ukl

!t # I ij (9.1)

iar mrimea la ieiere ei este data de relaia:

v (t ) & f (v (t )) & 0 5( | v ( t 1| % | v ( t ) % 1| ) )#
yij xij xij xij

(9.2)

n expesiile de mai sus, v ieirea unei celule C


ij 1

xij

,v ,v
uij

yij

reprezint starea, intrarea i respectiv

. Prin N a fost notat vecintatea de raza 1 (vecintate 3x3) a

- 72 -

Aplicaia nr.9
ij

unei celule C

, definit n sensul celor aratate n

[7]. A

ij,kl

i B

ij,kl

reprezint

operatori sinaptici de reacie i respectiv de comand iar

I ij este curentul celulei (de f (.) , ce definete

regul invariant n spatiu). Trebuie observat apoi c funcia

caracteristica de ie ire este funcia sigmoid aproximat liniar pe poriuni. Observaie: Dac n rel.(9.1) se iau parametrii artat mai sus - n MATCNN. Este limpede c operaiile de procesare pe care le realizeaz o RNC sunt determinate de operatorii

R &C & 1, ecuaia diferential care

rezult caracterizeaz aa-numita reea neuronal standard [7], simulat - aa cum s-a

ij,kl

, B

ij,kl

i respectiv de curentul I

ij

. Acest ansamblu de

mrimi este denumit n literatura de specialitate template-ul* RNC i elaborarea de noi template-uri, corespunzatoare unor noi operaii de prelucrare cu RNC, constituie n momentul de fa o preocupare major n domeniu. Vom analiza n continuare template-urile EDGE i THRES sugereaz denumirea, aceste template-uri realizeaz: - detecia muchiilor n cazul unor imagini cu nuane de gri; - respectiv conversia unei imagini cu nuane de gri ntr-o imagine alb-negru (imagine binar). Observaie: ntr-un caz mai general, n rel.(9.1) pot interveni i ali operatori, dependent de complexitatea template-urilor utilizate (vezi [7]). n cazul de fa, aa cum va rezulta n continuare, template-urile analizate includ numai operatori liniari de tipul A i B, astfel nct rel.(9.1) este acoperitoare. n cazul ambelor template-uri intereseaza urmtoarele aspecte:
*

(de la

threshold, prag) incluse n biblioteca standard aferent toolbox-ului MATCNN. Aa cum

Termenul template a fost preluat direct din literatura de limb englez n lipsa unui

termen potrivit, echivalent, n limba roman. Frecvent, mrimile

ij,kl

ij,kl

etc. sunt

apelate tot prin termenul template. n acord cu semnificaia real i pentru a evita confuziile, n lucrarea de fa aceste mrimi vor fi desemnate prin termenul operatori.

Primul experiment cu reele neuronale celulare - 73 - forma n care este definit template-ul, - comportamentul dinamic al reelei care utilizeaz template-urile respective, - satisfacerea de ctre template-urile analizate a regulilor locale care definesc operaia de procesare n cauz (n cazul de fa detecia muchiilor respectiv conversia n albnegru a unei imagini cu nuane 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; -0.25 2.0 -0.25; -0.25 -0.25 -0.25]; I: EDGE_I = -1.45; (9.3)

Celelalte mrimi care caracterizeaz reeaua sunt definite dup cum urmeaz: Intrarea: Starea iniiala: U(t) = P, unde P reprezint imaginea static ce urmeaza a fi procesat X(0) = U(t) Condiiile de frontier: Sunt de tipul fix, adic

v & 0 si v
uij xij

& 0 pentru toate

celulele virtuale ([U] = [Y] = [0]) [7] Ieirea: Y(t)

) Y( ), unde Y( ) constituie o imagine

binar n care pixelii negri corespund muchiilor nete respectiv muchiilor vagi din imaginea P.

- 74 -

Aplicaia nr.9

Observaii: Muchiile vagi reprezinta grupri de pixeli gri care formeaz segmente de linii sau arce unidimensionale, astfel nct intensitatea pixelilor de pe o parte a liniei/arcului difer semnificativ de intensitatea pixelilor nvecinai, situai de cealalt parte a liniei/arcului. Template-ul EDGE poate fi definit i pentru cazul n care se pleac din condiii iniiale nule (X(0) = 0). Forma data n lucrare prezint avantajul unei iniializri uoare, imaginea P fiind oricum disponibil. Reelele neuronale avnd operatorul A cu toate elementele nule, cu excepia elementului a , se numesc reele necuplate, deoarece o celul C nu este conectat
00 ij

cu ieirile 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 existena i unicitatea unei solutii

vxij (t) , pentru t + 0 i pentru

orice stare initial vxij (0) ( R . Afirmaia de mai sus este important din punct de vedere aplicativ, deoarece ne asigur c dup ncheierea unui regim tranzitoriu (teoretic pentru t , ) reeaua ajunge ntr-o stare stabil (nu oscileaz haotic). n aceast situatie, tensiunile la ieirile celulelor, care reprezint rezultatul prelucrrii (imaginea Y() ) , nu se mai modific n timp i prin urmare pot fi interpretate. n cele ce urmeaz vom aprofunda problema stabilitii urmnd 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 reeaua analizat.

Aceast structur a fost elaborat pe baza urmatoarei relaii:

Primul experiment cu reele neuronale celulare - 75 -

I
U

ij

v uij

v xij

dt
-1 a
00

vxij

f(.)

yij

Fig. 9.1 Schema functional a unei celule

ij din RNC studiat

v ( t ) & %v )# B
xij xij

!t # a
00

v
kl ( N

( t !t # I
ij , kl ukl ij

, (9.4)

yij

rezultat prin particularizarea ecuaiei (9.1) pentru cazul template-ului EDGE (n care numai a00 . 0 ) i considernd

R &C & 1. Cu precizarea c vectorul U include

tensiunile de la intrrile tuturor celulelor din imediata vecinatate a celulei dintre schema functional i rel.(9.4) este imediat.

Cij , legatura

Problema stabilitii poate fi acum abordat pe baza schemei de mai sus. Este lesne de constatat c atta timp ct | v
xij

| / 1 , conform rel.(9.2) v

yij

& v i n
xij

consecina circuitul se comport n esent ca un integrator cu reacie pozitiv ( a00 & 2 0 1). Prin urmare tensiunea la ie irea lui crete sau scade monoton, dependent de polaritatea tensiunii aplicate la intrare n momentul iniial

t & 0 . Odat

cu satisfacerea conditiei | vxij |+1 , tensiunea la ieirea celulei va avea valori ferme, egale cu +1 sau -1 (vezi rel.(9.2)). Procesul de integrare continu pn cnd circuitele componente intr n limitare, fr ca acest lucru s modifice nivelul tensiunii la ieirea
n legatur cu notaiile uzuale pentru elementele operatorilor A i B ( consulta [7].
*

a00 spe exemplu) a se

- 76 -

Aplicaia nr.9

celulei. Un asemenea comportament este, evident, stabil. Schema funcional prezentat n fig.9.1 permite, totodat, abordarea ntr-o manier simpl a problemei satisfacerii de ctre template-ul EDGE a regulilor locale ce definesc operaia 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 ctre template-ul analizat, problema proiectrii find abordat ntr-o alt aplicatie.
Caz 1 2 3 4

v (0)
uij

v ()
yij

pixel alb pixel negru pixel negru pixel gri

alb, independent de pixelii vecini alb, dac toi vecinii cei mai apropiai sunt negri negru, dac cel puin unul dintre cei mai apropiai vecini este alb negru, dac nuana de gri a pixelilor din vecintatea n medie un anumit prag, adic pentru

N1 depete

xij (0) & 0 ,

kl(N1

i , j kl

v
ukl

0 1,45

pixel gri alb, dac pentru

xij (0) & 0 ,

kl( N

Bij,klvukl 1 1,45
1

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

Se constat uor c n Tab.9.1 au fost avute n vedere o serie de situaii n care se poate gsi un pixel dintr-o imagine cu nuane de gri, mpreun cu condiiile ce se impun a fi satisfcute pentru ca ieirea s aibe o anumita valoare. Unele condiii, 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 ieire tot un pixel alb; pe de alta parte, unui pixel negru trebuie s-i corespund la ieire un pixel negru numai dac pixelul de intrare se situeaz pe o muchie, adic are cel puin un pixel alb printre vecinii cei mai apropiai.

Primul experiment cu reele neuronale celulare - 77 n general, decelarea celor mai semnificative situaii i a condiiilor corespunzatoare, operaie care determin performanele template-ului, depinde de experienta proiectantului aplicaiei. Se va verifica n continuare satisfacerea condiiilor din Tab.9.1 pentru RNC n discuie. Se pleac n acest scop de la observaia c pentru din rel.(9.2) rezult v

v (0 ) & v ( [% 1 ,# 1 ] ,
xij uij

&v a

(0 ) & v (0 )
yij xij uij

. n aceste condiii i avnd n vedere c

00

& v , pentru momentul iniial t & 0 ecuaia (9.4) devine: 2 (0 ) & v #


xij uij

Cazul v n acest 1: caz

kl ( N

uij

B v
1

ij , kl ukl

# I

ij

(9.5)

%1 i din rel.(9.5) se obine: (%1) % 0


kl(N kl.ij

& 25

xij(0) & %1# 2

ukl

% 1,45 1 0 , (9.6)

pentru orice valoare a pixelilor din vecinatate:

vukl ( [%1,#1]. O tensiune iniial

negativ la intrarea intrgratorului va determina, conform celor artate mai sus, un nivel la ieirea celulei

yij

()&%1; acest nivel corespunde unui pixel alb, aa cum se

impune conform cerinei din Tab.9.1. Cazul 2: Problema poate fi tratat n mod similar celor prezentate la cazul precedent.

Deoarece acum v

uij

& #1 , relaia (9.5) devine: 1 0,


(9.7)

(0 ) & 1 # 2 (# 1 ) % 0 ,25 v % 1 ,45


xij kl ( N kl . ij

ukl

pentru vukl & #1. Integratorul va determina, n consecin, un nivel la ieirea celulei

yij

v () &%1, corespunztor unui pixel alb.

Cazul3: n aceast caz v


uij

& #1 i dac exist un v

u23

& %1 , atunci:
ukl

xij (0 ) & 1 # 2 ( # 1 ) % 0 ,25 ( v % 1 ) % 0 ,25


kl ( N 1 l kl.ij, k .23

% 1 ,45 0 0

(9.8)

- 78 -

Aplicaia nr.9

pentru orice vukl ( [%1,#1] . Relaia (9.8) probeaz regula 3. Cazul 4: Pentru

xi j

(0 ) & 0 , fapt ce implic n acord cu rel. v % 1 ,45

(9.2)

v (0 ) & 0 ,
yij

rel.(9.4) devine:

(0 )
xij

&

kl (N

B
1

(9.9)

ij ,kl ukl

Dac avem acum n vedere c

n consecin nivelul la ieirea celulei corespunde unui pixel negru. Cazul 5: Se are n vedere rel. v Condiia (9.9), valabil i n acest caz.

kl (N

B
1

ij, kl ukl

0 1 ,45 , rezulta c (0 ) 0 0 i
xij

kl(N

B ij,kl vukl 1 1,45 implic


1

xij(0) 1 0 , fapt ce determin un nivel

corespunztor unui pixel alb n imaginea de la ieire. 2.2 Template-ul THRES Acest template realizeaz operaia de conversie a unei imagini cu nuane 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; 0 0 0; 0 0 0]; I: THRES_I = i, -1< i <1; Celelalte mrimi care caracterizeaz reeaua sunt definite dup cum urmeaz: Intrarea: U(t) = 0 sau arbitrar (9.10)

Primul experiment cu reele neuronale celulare - 79 Starea iniial: Ieirea: X(0) = P, unde P reprezint imaginea ce urmeaz a fi procesat Y(t) ) Y( ), unde Y( ) constituie o imagine binar n care toi pixelii al cror nivel de gri:

pij 0 i devin negri.

Problema stabilitii dinamice a reelei se soluioneaz n mod similar celor prezentate n cazul template-ului EDGE. Pentru verificarea regulilor locale se au n vedere condiiile 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 nuae de gri la o imagine binar, n care pixelii a cror intensitate luminoas au depit pragul i devin pixeli negri.
Caz 1 2 3

v (0)
uij

v ()
yij

vxij (0) 1 i vxij (0) 0 i vxij (0) & i

alb, independent de pixelii vecini negru, independent de pixelii vecini i, pesupunnd zgomot nul

Tab.9.2 Reguli locale pentru template-ul THRES

Observaii: Template-ul THRES din MATCNN are implicit pragul valoarea pragului este stabilit nafara intervalului

i & 0 . Dac i & #4

[-1,+1] (uzual se ia

respectiv i & %4 ), atunci imaginea de ieire va conine exclusiv pixeli negri respectiv albi. Aceste dou operaii, de umplere cu negru (FILBLACK) respectiv de umplere cu alb (FILWHITE), i gsesc aplicabilitate n prelucrrile de imagini.

- 80 -

Aplicaia nr.9 3. Desfurarea experimentului

3.1 Prima operaie 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, procednd dup cum urmeaz. Se deschide i afieaz, n fereastra de editare/depanare a mediului MATLAB, directorul matcnn (<matlab>\toolbox\matcnn); se va identifica apoi prezena scripturilor menionate n ANEXA 1. Se va deschide i afia fiierul <matlab>\toolbox\temlib, care conine biblioteca de template-uri a toolbox-ului MATCNN. Va fi trecut n revist coninutul acestei biblioteci i se va reine forma tipic n care este editat un template. Utiliznd, n fereastra de comanda a mediului de lucru MATLAB, comanda showdpic vor fi vizualizate cele 8 imagini (pic1, pic2, , pic8) care constituie obiectul aplicaiilor ce urmeaz. 3.2 Se elaboreaz prima aplicaie cu RNC, care detecteaz muchiile ntr-o imagine cu nuane de gri, utiliznd template-ul EDGE. Imaginea prelucrat este pic7, preferat deoarece conine elemente cu forme geometric regulate (n aceast situaie performanele aplicaiei pot fi mai lesne evaluate vizual). Secvena corespunztoare de instruciuni 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');

Primul experiment cu reele neuronale celulare - 81 ShowTem; %run template and show result RunTem; subplot(122); CNNShow(OUTPUT);

Se poate lesne constata c pe lng detecia muchiilor, programul vizualizeaz imaginea iniial precum i cea rezultat n urma pelucrrii iar n fereastra de comand mediului MATLAB este afiat secvena corespunztoare template-ului EDGE. Inelegerea scriptului de mai sus este nlesnit de precizrile 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 urmtoarele instruciuni:
%%%%%%%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

- 82 -

Aplicaia nr.9

subplot(224); CNNShow(OUTPUT);

Din scriptul prezentat mai sus rezult c la nceput este realizat operaia de transformare n imagine binar a imaginii de intrare, utiliznd template-ul THRES, dup care sunt extrase muchiile. Sunt vizualizate, totodat, imaginea binar precum i imaginea cu muchiile extrase din aceasta.

Imaginea iniial pic7

Muchiile extrase din pic7

Imaginea binarizat

Muchiile extrase

Fig.9.2 Rezultatul prelucrrii cu scriptul aferent pct.3.4.

Concluzii: rezultatele prelucrrii cu template-ul EDGE a unei imagini cu nuane 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 acuratee n cazul imaginii binare, o concluzie pe deplin n acord cu intuiia inginereasc.

APLICAIA NR. 10
Crearea unei interfee grafice utilizator pentru o aplicaie cu RNA folosind mediul MATLAB

1. Principiile dezvoltrii unei interfee grafice utilizator

Interfaa grafic utilizator, (GUI - Graphical User Interface) are rolul de a mijloci comunicarea ntre program i cel care l utilizeaz. Dei, n succesul acesteia depinde de calitatea desigului GUI. S-a considerat util formularea unor principii dup care se va efectua proiectarea interfeei grafice: ! Consideraii privind aspectele statice ale GUI Principiile pe care trebuie s le indeplineasc GUI sunt, cf. simplitatea, consistena i familiaritatea (fig.10.1). [14]: aparen, ar putea reprezenta un aspect secundar n realizarea unei aplicaii, de multe ori

SIMPLITATE

(elegan, claritate, unitate)

CONSISTEN

(aliniere, integritate, armonie)

FAMILIARITATE

(prietenoas, confortabil)

Fig.10.1 Principiile dup care trebuie efectuat designul unei GUI.

- 84 - Aplicaia nr. 10

Simplitatea. Reprezint scopul principal n proiectarea GUI. O interfa grafic simpl sporete claritatea prezentrii i d un sens unitar acesteia. Reprezentarea calitativ, adic sublinierea formei, poate fi mult mai important dect reprezentarea cantitativ, numeric (fig.10.2).

Fig. 10.2 Importana reprezentrii calitative asupra celei cantitative, n proiectarea GUI.

Tot n acest context se recomand o arie minim de interactiune ntre utilizator i program. Se prefer pstrarea unui numr redus de figuri pe ecran. Introducerea datelor se prefer a fi fcut grafic i nu numeric. Consistena. Servete la eliminarea confuziei i lipsei orientrii 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 capabilitile MATLAB de analiz a sunetului iar cealalt la posibilitile de reprezentare grafic 3D. Se observ ns acelai amplasament n pagin a controalelor (n partea dreapt a figurilor, cu chenar) i chiar unele controale comune (Info,

GUI pentru o aplicaie cu RNA folosind mediul MATLAB - 85 -

Close). Acest aspect nlesnete utilizarea unor aplicaii diferite ca fond dar care mbrac aceeai form.

Fig.10.3 Dei cele dou aplicaii MATLAB trateaz aspecte cu totul diferite, amplasamentul n pagin eate identic. Acest fapt elimin confuzia i dezorientarea utilizatorului.

Familiaritatea . Dac interfaa grafic este ntr-un anumit sens familiar utilizatorilor acetia vor nva mai repede s o utilizeze. GUI poate s fac apel la experiena utilizatorului pentru a grbi nelegerea acesteia.

Fig. 10.4. GUI trebuie s introduc elemente familiare utilizatorului

- 86 - Aplicaia nr. 10

De exemplu, n fig. 10.4 se prezint forma de und (sus) i analiza spectral (jos) a tonurilor generate de formarea unui numr de telefon. Pentru generarea tonurilor se folosete chiar reprezentarea grafic a tastaturii acestuia. ! Consideraii privind aspectele dinamice la GUI n momentul n care se interacioneaz cu GUI, aciunile 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 cnd acestea ar reprezenta un obiect solid. Avnd n vedere conceptele de aciune imediat i continu, se recomand, dac timpul de calcul o permite, afiarea instantanee a rezultatului obinut asupra datelor selectate. Dac timpul de calcul necesar unei aciuni este semnificativ se recomand folosirea unui buton pentru invocarea acesteia. n exemplul din fig.10.6 uitlizatorul are posibilitaea seleciei directe a

GUI pentru o aplicaie cu RNA folosind mediul MATLAB - 87 -

formei de und (sus) dup care transformata Fourier corespunztoare acesteia va fi afiat instantaneu (jos). Se poate ilustra astfel cu uurin relaia dintre semnal i transformata sa Fourier. n final, reversibilitatea se refer la capacitatea de a anula efectul unei sau mai multor aciuni deja efectuate. Este uneori mai greu de implementat, dar ntotdeauna apreciat de utilizator. Capacitatea de anulare ncurajeaz experimentarea diverselor aciuni i d un confort sporit n utilizarea GUI.

Fig.10.6 Exemplu de manipulare directa a datelor, cu afiarea instantanee a rezultatului aciunii

Se poate afirma n concluzie c pe baza principiilor mai sus enunate, crearea unei interfee grafice utilizator, n general, sau folosind mediul MATLAB, n particular, presupune existena a dou faze: proiectare i implementare (fig.10.7).

- 88 - Aplicaia nr. 10

START

Definirea procedurilor

Desenarea GUI

Testarea designului

PROIECTARE

STOP

Testarea codului

Scrierea codului

IMPLEMENTARE

Fig. 10.7 Etapele realizrii unei interfee grafice utilizator

2. Probleme 2.1 Proiectai i implementai, folosind mediul MATLAB, o interfa grafic utilizator pentru problema 4.3 din APLICAIA NR.4. Aceast interfa trebuie s permit selecia interactiv a: numrului de neuroni afereni stratului ascuns (uicontrol de tip Edit); ratei de nvare (uicontrol tip Slider); funciei de antrenament (uicontrol de tip ListBox); cifrei aplicate la intrare (uicontrol de tip Popup); nivel zgomot (uicontrol tip Slider);

Totodat aplicaia trebuie s dispun de butoane care s lanseze procesul de antrenament i pe cel de recunoatere (uicontrol tip Pushbutton). Se va oferi posibilitatea de vizualizare a desfurrii procesului de antrenament i a rezultatelor procesului de recunoatere (obiect de tip Axes). Pentru

GUI pentru o aplicaie cu RNA folosind mediul MATLAB - 89 -

individualizarea categoriilor de aciuni se va folosi un obiect de tip frame i Text. n final interfaa grafic utilizator va arta ca cea din figura de mai jos.

Fig.10.8. Interfa grafic utilizator pentru cazul problemei 4.3 din APLICAIA nr.4.

Rezolvare: n general, n construcia unei interfee grafice, se ncepe, cf. fig. 10.7, cu definiia procedurilor pe care aceasta trebuie s le realizeze i schiarea, pe hrtie, a amplasamentului obiectelor (axe, controale, etc.) n figur. Abia dup

- 90 - Aplicaia 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) tastnd 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 activnd i opiunile aferente figurii curente: Options Snap Objects to Grid i Options Display Grid (fig.10.9).

Fig.10.9 Guide i interfaa grafic care urmeaz a fi creat.

n final se leag obiectele cu codul surs aferent.

GUI pentru o aplicaie cu RNA folosind mediul MATLAB - 91 -

Observaii: 1. Oricrui obiect grafic MATLAB denumit handler. O modalitate simpl de determinare a handlerului unui obiect o reprezint funcia findobj n conjuncie cu nite parametrii ce specific proprieti ale acelui obiect. De exemplu, fiecrui obiect i se poate asocia o etichet (Tag). n aceste condiii determinarea handlerului se va face astfel: handler_axa = findobj('Tag','Axes1') 2. La executarea aciunilor 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. (vezi fig.10.10 pentru totalitatea obiectelor disponibile) i este atribuit un identificator unic,

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

- 92 - Aplicaia 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 'logsig'},fct_antr_sel); 10],{'tansig'

GUI pentru o aplicaie 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');

- 94 - Aplicaia nr. 10

Fig.10.11 Interfaa grafic funcional.

n final, prin legtura controalelor la subrutinele corespunztoare, se obine o interfa grafic utilizator funcional (fig.10.11).

ANEXA NR.1
Simulatorul analogic de reele neuronale celulare MATCNN -prezentare general

1. Introducere

MATCNN [15] este o colecie de funcii 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 dect att, codul surs al diferitelor subrutine fiind disponibil utilizatorului, poate fi eventual modificat i adaptat cerinelor aplicaiei. Cteva caracteristici ale simulatorului, ce merit a fi subliniate: ! MATCNN permite elaborarea de algoritmi analogici i logici bazai pe RNC. (fiierul temlib.m); exist ns posibilitatea completrii Simulatorul include o bibliotec predefinit de template-uri* (operatori) utilizate frecvent n operaiile cu RNC ! ! bibliotecii cu noi operatori, definii de utilizator. MATCNN ofer suportul necesar elaborrii de fiiere MEX, utile n cazul Simulatorul MATCNN este conceput pentru a fi utilizat n mediul MATLAB 1.0-2.0; cu mici modificri ale folosirii mediului MATLAB sub sistemele de operare MS WINDOWS i UNIX [15]. versiunile 4.2-5.0 i Image Processing Toolbox MATLAB mai recent elaborate (versiunea 5.3). ! Ecuaiile difereniale ce intervin n modelul RNC sunt integrate numeric, utiliznd formula direct a lui Euler.
Termenul template a fost preluat direct din literatura de limb englez n lipsa unui termen potrivit, echivalent, n limba romn.
*

funciilor i scripturilor simulatorului este posibil utilizarea acestuia i n versiuni

- 96 - Anexa nr.1 ! Principala aplicaie a RNC fiind, cel putin pna n momentul de fa,

prelucrrile de imagini [7], simulatorul MATCNN a fost elaborat pentru a fi utilizat cu precdere n acest domeniu. Pot fi procesate imagini cu nuane 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 cunoaterea modelului de RNC ce a stat la baza elaborrii lui. Se prezint n continuare RNC modelat de acest simulator, mpreun cu o serie de noiuni i consideraii utile din punct de vedere aplicativ. MATCNN permite implementarea de RNC cu un singur strat, constnd dintr-un tablou bidimensional de celule identice Cij,

1 # i# M si 1 # j# N

Comportamentul dinamic al fiecrei celule este descris de urmtoarea ecuaie diferenial ordinar i neliniar (pentru aprofundarea chestiunilor a se consulta [7]):

(t) + (R
xij

(1

v t%
xij yy

&A
r r

ij,kl

v t%
ykl uu

&B
r

ij,

v t% I
kl ukl ij

iar mrimea la ieiere ei este dat de relaia:


xij

kl N

&
r

A ( ) v)
ij ,kl

kl N

kl N

&

B ( ) v)
ij ,kl

kl N

kl N
r

&

D ( ) v )
ij , kl

(A1.1)

vyi (t ) + f (v (t )) + 0 v ( t ) 1| ( | v xij xij j 5( | ) v )v

( t ) ( 1| ) , (A1.2)

cu notaiile:
yy

+ v t% ( v % t
ykl yiy

uu

+ v t%( v % t
ukl uij u,x,ykl

(A1.3)

)v + v

t%( v

u,x,yij

%t

Simulatorul analogic de reele neuronale celulare MATCNN - 97 -

|v (t ) | # 1 , | v (t ) | | Iij | # v , 1 # i# M , 1 # j# N #1 ,
x
ij

ij

max

n relaiile de mai sus tensiunile v

xij

, v , v
uij

yij

reprezint starea, intrarea i

respectiv ieirea unei celule Cij . n cursul unei operaii de procesare starea i ieirea variaz n timp, pe cnd intrarea rmne nemodificat. Prin vecintatea de raza r a unei celule reacie i respectiv de comand iar spaiu).A

Nr a fost notat

ij

ij,kl

i B

ij,kl

reprezint operatori liniari de

Iij este curentul celulei (de regul invariant n

ij , kl

, B

ij ,kl

i D

ij , kl

sunt operatori neliniari care se aplic diferenelor A


ij ,kl

generalizate )v yy , )v i respectiv v) . Mai exact,


uu

repezint operator de reacie

comandat prin diferen, B


ij,kl

este operator de comand comandat prin diferen iar

Dij,kl este un operator neliniar generalizat (care l include att pe

ij,kl

ct i pe

Bij,kl ). Trebuie observat apoi c funcia f, ce definete caracteristica de ieire este


funcia sigmoid, aproximat liniar pe poriuni. n fine, de timp a unei celule; n cele ce urmeaz se va considera

, + RC reprezint constanta

R + 1, C + 1 i deci i
(cel mai frecvent

, + 1 , situaie ce caracterizeaz, printre altele, RNC standard


utilizate n aplicaii [7]).

Din cele expuse pn n prezent rezult c unei RNC i se poate asocia cu uurin o imagine (cte un pixel pentru fiecare celul). Pe de alt parte, deoarece fiecare celul este caracterizat de anumii parametri respectiv semnale (vezi rel.(A1.1), este convenabil ca aceste mrimi s fie i ele aezate 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

- 98 - Anexa nr.1 ieirea celulelor reelei. Se utilizeaz frecvent i urmtoarele straturi: - aa-numitul strat de polarizare al reelei, notat cu B, care reprezint - sub forma unei imagini cu nuane de gri - componenta variant n spaiu din curentul fiecrei celule; - aa-numitul strat masc, notat cu M, care specific printr-o imagine binar faptul c o celul este activ (pixelul corespunztor este egal cu +1) sau este inactiv (pixelul corespunztor este egal cu -1). Unii operatori (de exemplu prin imaginile U1 i U2 . Observaii: 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 menionate mai sus permite ncorporarea n algoritmii cu RNC a unei adaptabiliti spaiale, liniare n cazul stratului I i neliniare n cazul stratului M. 3. Modele de RNC cu template-uri liniare i neliniare Operaiile de procesare pe care le realizeaz o RNC depind n esen de natura operatorilor ce intervin n ecuaia de stare, dat de rel. (A1.1). Template-urile incluse implicit n biblioteca MATCNN reprezint operatori desemnai n literatura de specialitate ca fiind cei mai utili n prelucrarea imaginilor - principalul domeniu aplicativ al RNC - i n plus conduc la implementri VLSI de complexitate sczut [15]. Template-urile din MATCNN pot fi clasificate dup cum urmeaz: - template-uri liniare, care includ numai termenii liniari celulei; - template-uri neliniare de tipul "A-B", care conin 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

Dij,kl ) pot avea dou valori de intrare, specificate

A i B i curentul I al

Simulatorul analogic de reele neuronale celulare MATCNN - 99 RNC asociate acestor tipuri de template-uri precum i forma n care sunt reprezenatate aceste template-uri n MATCNN. Observaie: Din considerente practice, template-urile din bibliteca MATCNN poart denumiri care sugereaz operaia de procesare pe care o implementeaz, aa dup cum va rezulta n continuare. Template liniar: [A B I] Ecuaia de stare asociat este de forma:

v t% + ( v t%
xij xij kl N

&
r

ig,kl ykl

v t%

Forma de reprezentare n biblioteca MATCNN: imagine binar. EDGE_A = [0 0 0; 0 2 0; 0 0 0]; EDGE_B = [-0.25 -0.25 -0.25 -0.25 EDGE_I = -1.5; 2 -0.25 -0.25 -0.25 -0.25];

kl N

&
r

B v t% I
ij,kl ukl ij

(A1.4)

Exemplul 1: Template-ul EDGE - operator care realizeaz detecia muchiilor ntr-o

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];

- 100 - Anexa nr.1 DIFFUS_I = 0;

B Template neliniar de tipul "AB": [A B A I]


Ecuaia de stare asociat:

v ( t) + ( v t%
xij xij

A v t%
kl N
r

B v t% I
kl N

&

ij, kl ykl

Forma de reprezentare n MATCNN: Exemplu: Template-ul GRADIENT - operator care realizeaz detecia 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 GRADT_I = -1.8; n legatur cu funcia GRADT_b, care exprim interaciunea neliniar, se va reveni n continuare. Operatori neliniari de tipul D: [A B D I] 00 33];

kl N

&
r

( ) v)
ij ,kl yy

&
r

ij ,kl ukl

ij

B ( ) v)
ij , kl uu

(A1.5)

kl N

&
r

v
Ecuaia de stare asociat este de forma:

xij (t) + (vxij t%

klNr

&A

ij,kl

v ykl

t%
klNr

&

Bij,klvukl t%

Iij Dij,kl (v) (A1.6)

Simulatorul analogic de reele 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 ]; (funcie care exprim interaciunea 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 ]; (funcie care exprim interaciunea neliniar). Specificarea funciilor neliniare n template-urile de tip "AB" respectiv "D" Din exemplele prezentate s-a putut observa c n operatorii A ,

B i D , intervin

funciile a,b i d - care determin interaciunile neliniare dintre celule. Aceste funcii pot fi exprimate prin aproximare pe poriuni, cu valori constante (piecewise-constant pwc) sau variaii liniare (piecewise-liniar pwl). Specificarea lor n MATCNN se face

- 102 - Anexa nr.1 dup cum urmeaz: Pentru a i b: unde: [ interp p_num x_1 y_1 x_2 y_2 . . . . x_n y_n ] interp x1 y1 xn yn - indic metoda de interpolare: 0 - pwc i 1 - pwl - ordonata i abscisa primului punct - ordonata i abscisa ultimului punct. p-num - reprezint numrul de puncte

Exemplu: n operatorul GRADIENT se declar la un moment dat: GRADT_b = [13 -33 00 33]; Aest fapt specific o funcie neliniar, aproximat prin interpolare liniar ntre trei puncte: (-3,3), (0,0), (3,3). Observaie: conform rel.(A1.3), funciile a i b se aplica ntotdeauna diferenelor ntre intrrile sau ntre ieirile a dou celule nvecinatate. Pentru d: unde: [ interp p_num x_1 y_1 x_2 y_2 ... x_n y_n p-num - reprezint numrul de puncte x1 y1 xn yn - ordonata i abscisa primului punct - ordonata i abscisa ultimului punct. intspec]

interp - indic metoda de interpolare: 0 - pwc i 1 - pwl

intspec - parametru ce specifica interaciunea. Codurile valide pentru parametrul intspec, prin care se precizeaz argumentul v n funcia neliniar d(v), sunt dup cum urmeaz: 11 12 13 21 v = vukl - vuij v = vukl - vxij v = vukl - vyij v = vxkl - vuij

Simulatorul analogic de reele neuronale celulare MATCNN - 103 22 23 31 32 33 mai sus codul 100. Observaii: Se observ uor c interaciunile precizate de codurile 11 i 33 sunt cele corespunztoare funciilor neliniare a i b. Din acest motiv D se numete operator generalizat, el incluznd ambii operatori: A i B. Interaciuni, 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 cteva exemple. Exemplul 1: (se refer la template-ul MEDIAN) MEDIAN_d = [ 02 0-1 21 12 ]; Operaia specificat mai sus este o limitare cu funcia treapt (ntre punctele (0,-1) i (2,1)) aplicat diferenei ntre intrrile i strile celulelor nvecinatate (cod: 12). O neliniaritate de tip sigmoidal (interpolare liniara pwl, ntre 4 puncte) ar necesita o funcie 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 funcie neliniar rezultat prin interpolare liniar (pwl) ntre 5 puncte: (-2,0), (-0.1,0), (0,1), (2,0) i care se aplic diferenelor ntre strile celulelor nvecinate (codul 22 din suma 122 = 22 + 100 ). Adiionarea codului 100 indic faptul c rezultatul obinut la operaia precedent trebuie multiplicat cu v. v = vxkl - vxij v = vxkl - vyij v = vykl - vuij v = vykl - vxij v = vykl - vyij.

Pentru specificarea unor interaciuni de forma d(v)(v), se va aduna la codul de

- 104 - Anexa nr.1 4. Simularea unei aplicaii cu RNC Elaborarea unui program de simulare a unei aplicaii cu RNC se conformeaz regulilor cunoscute pentru orice alt program ce ruleaza n mediul MATLAB [3]. n consecin, programul va include funcii i scripturi i va face uz de variabile (globale). O list complet cu scripturile, funciile i variabilele globale cu care opereaz MATCNN este prezentat la pct.5. n cele ce urmeaz se va descrie pe scurt, anticipnd, cteva dintre variabilele globale utilizate pe parcursul acestui paragraf. O prim cartegorie de variabile sunt cele corespunztoare imaginilor asociate modelului de RNC utilizat n MATCNN (pct. 2) i care include variabilele: INPUT1 INPUT2 STATE OUTPUT BIAS MASK Observaii: 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 spaiu, date de curentul variant n spaiu din modelul de RNC ( Masca M este o imagine binar ( M celul este activ ( M
ij ij

- U sau U1 (imagine de intrare primar a modelului de RNC) - U2 (imagine de intrare secundar a modelului de RNC) - X (imaginea de starea) - Y (imaginea aferent ieirii modelului de RNC) - B (imaginea de polarizare (bias map) a modelului de RNC) - M (imagine masc a modelului de RNC).

Bij , reprezint

I + I B ).
ij ij

+ 1 ) sau inactiv ( M
ij

+ 1 sau -1), care specific dac o + (1 ).

Valorile implicite pentru elementele imaginilor BIAS i MASK sunt 0 (polarizare nul) respectiv 1 (toate celulele active).

Simulatorul analogic de reele 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 iniializate de ctre utilizator (nainte de efectuarea simulrii propriu-zise). Acestea sunt urmtoarele: UseMask UseBiasMap Boundary - valideaz (UseMask = 1) sau invalideaz (UseMask = 0 ) utilizarea imaginii masc M - valideaz (UseBiasMap = 1) sau invalideaz (UseBiasMap = 0) utilizarea imaginii de polarizare - variabila prin care se specific condiiile de frontier: -1 # Boundary # 1 zero flux (Boundary = 2) torus (Boundary = 3) TemGroup TimeStep IterNum Observaii: Precizri suplimentare privind condiiile 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 funciile i scripturile MATCNN i care nu trebuie modificate de ctre utilizator. Aceste variabile sunt prezentate la pct. 5. Se prezint n continuare etapele de elaborare a unui program pentru simularea unei aplicaii cu RNC i vizualizarea rezultatului obinut: ! se specific utilizarea mediului de simulare MATCNN i denumirea - permite precizarea bibliotecii din care vor fi extrai template-urile apelate n program; valoarea implicit este TemLib - specific intervalul dintre dou momente discrete de timp la care au loc doua iteratii succesive; are valoarea implicita TimeStep = 0.2 - precizeaz numrul de iteraii care au loc pentru o simulare.

- 106 - Anexa nr.1 bibliotecii de unde vor fi extrase template-urile; spre exemplu: SetEnv; TemGroup = 'MyTemLib'; - se seteaz mediul de simulare MATCNN - operatorii sunt extrai din biblioteca coninut n fiierul mytemlib.m. Observaie: n timp ce specificarea mediului de simulare MATCNN este ntotdeauna necesar, declaraia privind biblioteca utilizat poate lipsi; n acest ultim caz, simulatorul opereaz cu biblioteca implicit a mediului (fiierul temlib.m). ! se iniializeaz imaginile aferente intrrii i respectiv strii modelului de RNC INPUT1 = LBmp2CNN('Road'); - road.bmp este ncrcat la intrare STATE = zeros(size(INPUT1)); - toate valorile iniiale ale strii sunt puse pe zero. Observaie: Iniializarea intrrii este opional n timp ce iniializarea strii este ntotdeauna necesar; n aceast faz pot fi adiionate zgomote la imaginile utilizate (cu scop de testare). ! se specific utilizarea/neutilizarea imaginii de polarizare i a imaginii masc, dup cum urmeaz: UseBiasMap = 1; UseMask = 0; - s-a setat utilizarea imaginii de polarizare - i nu se va folosi imaginea masc.

Observaie: Dac s-a optat pentru utilizarea imaginii de polarizare/masc, atunci imaginile respective trebuie mai nti iniializate. Scriptul MATCNN SetEnv iniializeaz aceste variabile globale cu zero. ! se precizeaz condiiile 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 iteraii succesive si numrul de iteraii aferente ntregului proces de simulare. Spre exemplu: TimeStep = 0.1; IterNum = 100; - intervalul de timp ntre dou iteraii egal cu 0.1 - numrul de iteraii stabilit la 100.

Observaii: Valorile implicite TimeStep = 0.2 i IterNum = 25, conduc la un interval

Simulatorul analogic de reele neuronale celulare MATCNN - 107 de timp, pe durata cruia este simulat comportamentul RNC, egal cu 5 secunde. Pentru valorile uzuale R = 1, C = 1 i deci = 1, acest interval corespunde la 5, situaie n care se poate considera c regimurile tranzitorii din reea sunt practic ncheiate i c toate celulele au atins regimul staionar. Prin urmare, valorile implicite pentru TimeSetup i IterNum satisfac n situaiile practice curente. Cu toate acestea, anumii 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 ncrcat template-ul EDGE. Observaie: Este util ca template-urile aferente unei aplicaii cu reele neuronale s fie memorate ntr-o bibliotec (fiier-M), care se seteaz ca biblioteca curent (utilizind TemGroup). ! se lanseaz n execuie procesul de simulare: RunTem CNNShow(OUTPUT) - se execut simularea cu operatorul specificat. - vizualizeaz imaginea de la ieirea RNC. ! se vizualizeaz rezultatul simulrii:

Observaie: Deoarece att intrrile ct i ieirile unei RNC sunt imagini, la evaluarea peformanelor reelei se recomand utilizarea facilitilor de procesare (scalri, modificarea nuanelor de gri, etc.) oferite de Image Processing Toolbox, MATLAB. 5. Lista funciilor, scripturilor i a variabilelor globale din MATCNN Fiiere - M din MATCNN (scripturi i funcii) Scripturi i funcii de baz: SetEnv ShowEnv - seteaz mediul MATCNN i iniializeaz variabilele globale - afieaz valorile variabilelor globale din mediul MATCNN din mediul

- 108 - Anexa nr.1 ShowTem RunTemp CNNShow TemLib - afieaz template-ul efectiv ncrcat n mediul MATCNN - lanseaz n execuie template-ul deja ncrcat - vizualizeaz o imagine tip RNC - biblioteca implicit cu template-uri a mediului MATCNN

Scripturi i funcii diferite CNN2Gray Gray2CNN CBound CImNoise LBmp2CNN SCNN2Bmp - convertete o imagine tip RNC ntr-o imagine cu nuante de gri - convertete o imagine cu nuane de gri ntr-o imagine tip RNC - adaug o frontier specificat la o imagine tip RNC - suprapune zgomot peste o imagine de tip RNC - ncarc un fiier BMP de pe disc i l convertete ntr-o imagine tip RNC - salveaz pe disc, n format BMP, o imagine de tip RNC

Fiire - MEX din MATCNN Fiiere de baz tlinear tnlinab tnlind - simuleaz un operator liniar de RNC - simuleaz un operator neliniar de tipul AB - simuleaza un operator neliniar de tip D

Fiiere speciale, care implementeaz diferite filtre speciale: tmedian tmedianh tanisod modfilt - simuleaza un operator care realizeaz filtrarea median - operator pentru filtrarea median, cu aplicaii n studiul sistemelor cu neliniariti de tip histerez - simuleaz operatorul de difuzie anisotropic - operator care implementeaz filtre modale.

Simulatorul analogic de reele neuronale celulare MATCNN - 109 Variabile globale din MATCNN (lista complet) /./ ). Variabile globale crora li se asigneaza valori prin program: UseBiasMap UseMask Boundary - valideaz (UseBiasMap = 1) sau invalideaz (UseBiasMap = 0) utilizarea imaginii de polarizare; / 0 / - valideaz (UseMask = 1) sau invalideaz (UseMask = 0 ) utilizarea imaginii masc M / 0 / - variabila prin care se specific condiiile de frontier: -1 # Boundary # 1 zero flux (Boundary = 2) torus (Boundary = 3); / 2 / TemGroup TimeStep IterNum - permite precizarea bibliotecii din care vor fi extrase template-urile apelate n program; / TemLib / - specific intervalul dintre dou iteraii succesive; / 0.2 / - precizeaz numrul de iteraii care au loc pentru o simulare; / 25 /. (valorile implicite sunt trecute n

Variabile globale modificate de funciile i scripturile din MATCNN: TemName TemNum TemType Atem Btem At_n nlin_a Bt_n nlin_b Dt_n - numele operatorului actual; / / - numrul de ordine al operatorului efectiv utilizat n program / 0 / - tipul operatorului actual: 0- liniar, 1- neliniar de tipul AB, 2- neliniar de tipul D; / 0 / - reacie liniar; / 0 / - comand liniar; / 0 / - reacie neliniar; / 0 / - funcia neliniar din reacie; / 0 / - comand neliniar; / 0 / - funcie neliniar de comand; / 0 / - interaciune neliniar generalizat; / 0 /

- 110 - Anexa nr.1 Nlin_d I Run Text - funcia neliniar din termenul generalizat; / 0 / - curentul celulei; / 0 / - afieaz numele operatorului, numrul lui de ordine, intervalul ntre dou iteraii succesive, numrul total de iteraii i apelul modulului de raportare, nainte ca operatorul respectiv s fie lansat n execuie INPUT1 INPUT2 STATE OUTPUT BIAS MASK - U sau U1 (imagine de intrare primar a modelului de RNC) - U2 (imagine de intrare secundar a modelului de RNC) - X (imaginea de stare) - Y (imaginea aferent ieirii modelului de RNC) - B (imaginea de polarizare (bias map) a modelului de RNC) - 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 fiierul master matlabrc.m, ce se execut automat la lansarea n execuie a mediului MATLAB, calea: addpath('C:\MATLABR11\toolbox\Matcnn');. Pentru salvarea fiierelor cu aplicaii se recomand utilizare directorului work (<matlab>\work), aflat la dispoziia utilizatorului.

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. Fireeanu, - MATLAB. Calcul numeric-Grafic-Aplicaii, Ed. Teora, 1995. [4] H. Demuth, M. Beale - Neural Network Toolbox. Users Guide, ver.3.0, 1998. [5] S. Haykin - Neural Networks: A Comprehensive Foundation, Second Edition, IEEE Press 1999. [6] G. Toderean, M. Coteiu, M. Giurgiu - Reele neuronale, Ed. Microinformatica, Cluj-Napoca, 1994. [7] V. Tiponu, C.D. Cleanu algoritmi" , Politehnica, Timioara, 2000. [8] Cichocki A., Unbehauen R., - Neural Networks for Optimization and Signal Processing, John Wiley & Sons, 1993. [9] C.D. Cleanu, 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. Users Guide, ver.3.0, The MATHWORKS Inc., 1998. [11] D. Dumitrescu, H. Costin - Reele neuronale. Teorie i aplicaii, 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. "Reele neuronale. Arhitecturi i Ed.

[13] C. Lau (Ed.) - "Neural Networks. Theoretical Foundations and

Analysis", IEEE Press, 1992.

- 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 - colecia anilor 1996-1999.

S-ar putea să vă placă și