carte retele neuronale
TRANSCRIPT
Cătălin-Daniel Căleanu Virgil Tiponuţ
Reţele neuronale. Aplicaţii
Material realizat în cadrul programului
TEMPUS AC-JEP 13438-98
Prefaţă
Cartea se adresează studenţilor de la facultăţile de Electronică şi
Telecomunicaţii, Automatică şi Calculatoare, Informatică şi are rolul de a introduce
noţiuni teoretice elementare despre reţele neuronale artificiale (RNA) şi deprinderi
practice pentru implementarea software (“Neural Network Toolbox v.3” din mediul
MATLAB v.5.3 - 1999) a acestora.
În acest sens, prima aplicaţie prezintă succint mediul MATLAB. Noţiunile
expuse aici facilitează înţelegerea aspectelor legate de implementarea MATLAB a
RNA. A doua aplicaţie abordează principiile generale ale calculului neuronal iar restul
aplicaţiilor tratează cele mai importante tipuri de reţele neuronale: perceptronul simplu
şi cel multistrat, RNA bazate pe funcţii radiale, RNA recurente (Hopfield), RNA cu
autoorganizare (Kohonen) şi RNA celulare. Pentru fiecare dintre RNA enumerate mai
sus sunt prezentate pe scurt aspecte legate de arhitectură, algoritmii de antrenament şi
aplicaţiile tipice. Acestea din urmă sunt însoţite şi de codul sursă MATLAB aferent
rezolvării acestora.
Pentru aprofundarea aspectelor teoretice privind RNA este recomandată
utilizarea, în paralel cu acest material, a cărţii “Reţele neuronale. Arhitecturi şi
algoritmi” apărută în Ed. POLITEHNICA şi elaborată de aceeaşi autori.
Lucrarea a fost realizată, pe baza unei documentării la University of
STRATHCLYDE, Glasgow, Marea Britanie, în cadrul programului TEMPUS AC-JEP
13438-98 iar autorii ţin să mulţumească pe această cale coordonatorilor acestui
program. Totodată exprimăm mulţumiri recenzorului pentru sugestiile utile exprimate
după parcurgerea acestui material precum şi cadrelor didactice de la University of
Strathclyde, Glasgow, pentru numeroasele discuţii care au contribuit la finalizarea
acestei cărţi.
Autorii
Cuprins
Aplicaţia 1. Introducere în MATLAB…………………………………..…….pag.7(C.D. Căleanu)
Aplicaţia 2. Modele ale neuronilor şi ale reţelelor neuronale artificiale….....pag.19(C.D. Căleanu)
Aplicaţia 3. Perceptronul simplu. Algoritmul LMS…………………………pag.29(C.D. Căleanu)
Aplicaţia 4. Perceptronul multistrat. Algoritmul BP standard………….……pag.35(C.D. Căleanu)
Aplicaţia 5. Algoritmi rapizi de antrenament pentru RNA de tip MLP…......pag.45(C.D. Căleanu)
Aplicaţia 6. Reţele neuronale bazate pe funcţii radiale………………..…….pag.55(C.D. Căleanu)
Aplicaţia 7. Reţele neuronale artificiale recurente………………………..….pag.59(C.D. Căleanu)
Aplicaţia 8. Reţele neuronale cu autoorganizare.………………………..…..pag.65(C.D. Căleanu)
Aplicaţia 9. Primul experiment cu reţele neuronale celulare: studiul unor
(V. Tiponuţ) template-uri simple…………….…………………………….….pag.71
Aplicaţia 10. Crearea unei interfeţe grafice utilizator pentru o aplicaţie cu RNA
(C.D. Căleanu) folosind mediul MATLAB……………………………………...pag.83
Anexa nr.1 Simulatorul analogic de reţele neuronale celulare
(V. Tiponuţ) MATCNN -prezentare generală………………………………..pag.95
Bibliografie…………………………………………………...………...pag.111
APLICAŢIA NR. 1
Introducere în MATLAB
1. Generalităţi
În cadrul acestei lucrări toate referinţele au în vedere MATLAB versiunea
5.3.0 (R11), 21.01.1999.
Matlab [1], [2] reprezintă un mediu de programare destinat calculului numeric şi
reprezentărilor grafice în domeniul ştiinţei şi ingineriei. Elementul de bază cu care
operează MATLAB este matricea. Este uşor de extins, prin faptul că orice utilizator
poate adăuga propriile funcţii sau le poate modifica pe cele existente. Folosind
funcţiile predefinite ale MATLAB-ului se obţine o importantă economie de timp
în crearea de noi aplicaţii. Deasemenea pachetul software include un set de funcţii
specifice (denumite “toolbox”) anumitor domenii, ca de exemplu:
- Reţele neuronale (“Neural Networks”);
- Logică fuzzy (“Fuzzy Logic”)
- Prelucrări de imagine (“Image Processing”);
- Prelucrări de semnal (“Signal Processing”);
- Undişoare (“Wavelet”)
- Achiziţie de date (“Data Aqusition”);
- Statistică (“Statistics”);
- Identificarea sistemelor (“System Identification”);
- Financiar (“Financial”).
Există posibilitatea modelarii, analizei şi simularii sistemelor dinamice, prin
descrierea acestora la nivel de schemă bloc prin intermediul mediului Simulink. În
- 8 - Aplicaţia nr. 1
acestă categorie pot fi incluse, de exemplu, sisteme cu procesoare numerice de semnal
(“DSP Blockset”) sau sisteme bazate pe circuite electonice de putere (“Power System
Blockset).
Adăugând la cele de mai sus şi numeroasele posibilităţi de reprezentare
grafică 2 sau 3D a datelor şi posibilitatea interfaţării codului MATLAB cu cel scris în “C”
sau limbaj de asamblare pentru procesoarele de semnal, avem argumentele necesare
care să justifice implementarea aplicaţiilor cu reţele neuronale prin intermediul
MATLAB.
Se oferă în continuare noţiuni MATLAB elementare [3], necesare unei bune
înţelegeri ale aplicaţiilor prezentate în capitolele următoare.
2. Elemente de bază MATLAB
2.1 Linia de comandă
Se foloseşte de regulă pentru lansarea în execuţie a programelor sau pentru
diverse comenzi MATLAB. Un program MATLAB se aplelează tastând în linia de
comandă numele fişierului. O condiţie necesară rulării programului este setarea căii în
care acesta se găseşte (din meniul principal, opţiunea “File”, submeniu “Set path”). În
modul linie de comandă fiecare linie este prelucrată imediat şi rezultatele sunt afişate.
Linia de comandă nu este recomandată pentru scrierea fişierelor MATLAB.
2.2 Crearea programelor MATLAB (fişierelor script şi fişiere funcţie)
Un program MATLAB, caracterizat de extensia *.m, constă dintr-o
succesiune de instrucţiuni MATLAB, cu posibilitatea apelării altor fişiere. El
presupune mai multe linii de cod care se pot scrie apelând editorul MATLAB implicit.
Acesta se lansează prin comanda “Edit”.
Un fişier script conţine o secvenţă de comenzi. Dacă prima linie a fişierului
Introducere în MATLAB - 9 -
conţine cuvântul “function”, fişierul respectiv este declarat ca fişier funcţie. O funcţie
diferă de un script prin faptul că poate lucra cu argumente.
Editorul oferă şi facilităţi de depanare (“debugging”) a programului prin
setarea unor puncte de oprire (“breakpoints”) şi rularea pas cu pas a programului.
Exemplul 1.1 Scrieţi o funcţie denumită “suma” care să preia drept
argument două variabile şi să returneze suma acestora.
Se apelează editorul prin comanda “edit” (fig.1.1).
Fig.1.1 Lansarea editorului pentru fişiere MAT:AB de tip *.m.
În urma acestei comenzi se poate introduce codul MATLAB aferent funcţiei
“suma” (fig.1.2). După salvarea fişierului (“File”, “Save As…”, suma.m) se poate
apela din linia de comandă nouă funcţie definită (fig.1.3).
2.3 Operaţii cu matrici
Definirea unei constante. Exemplu: » x = 2
Definirea unui vector. Exemplu: » y = [1 2 3 4 5]
- 10 - Aplicaţia nr. 1
Fig.1.2 Editorul/debbuger-ul MATLAB folosit pentru scrierea şi depanarea fişierelor *.m.
Fig.1.3 Apelul funcţiei sumă, cu parametrii (6,4). Logic, rezultatul returnat va fi 6+4 = 10.
Definirea unei matrici. Exemplu: » A = [1 2 3;4 5 6;7 8 9]. Rezultatul va fi o
matrice 3x3 de forma:
Introducere în MATLAB - 11 -
A =
1 2 3
4 5 6
7 8 9
Referirea unui elemet al unei matrici. Exemplu: » A(2,1)
ans =
4
Adunare +
Scădere -
Inmulţire *
Inmulţirea elementelor elementelor corespondente .*
Ridicarea la putere ^
Ridicarea la putere a elementelor corespondente .^
Impărţirea la stânga \ sau la dreapta /
Impărţirea la stânga .\ sau la dreapta ./ a elementelor corespondente
Transpusa unei matrici '
Schimbarea dimensiunilor matricii - funcţia reshape (X, M, N). Întoarce o
matrice de M linii şi N coloane cu elemente obţinute din matricea originală X .
2.4 Generarea vectorilor şi matricilor
Matrice nulă - funcţia zeros (M, N). Generează o matrice MxN cu toate
elementele egale cu 0.
Matrice unitate - funcţia ones (M, N). Generează o matrice MxN cu toate
elementele egale cu 1.
Matrice identică - funcţia eye (N, M). Generează o matrice MxN în care
diagonala matricii are elementele egale cu 1, restul elementelor matricii fiind
0.
- 12 - Aplicaţia nr. 1
Generarea vectorilor cu pas liniar. Dacă se cunosc limitele intervalului şi pasul
dintre două elemente, vectorul va fi generat cu instrucţiunea:
x = xmin : pas : xmax
Dacă se cunosc limitele intervalului şi numărul de elemenete N se foloseste
comanda următoare:
x = linspace (xmin, xmax, N).
Generarea vectorilor cu pas logaritmic. Un vector x care va conţine N
elemente distribuite logaritmic între decadele [10xmin, 10xmax] se generează
astfel:
x = logspace (xmin, xmax, N)
2.5 Informaţii despre vectori/matrici
Dimensiunea unei matrici - funcţia size (A). Returnează un vector coloană
[M N] în care M reprezintă numărul de linii iar N reprezintă numărul de
coloane pentru matricea A.
Lungimea unui vector - funcţia length (x). Întoarce numărul de elemente ale
vectorului x.
2.6 Instrucţiuni şi fucţii de control
Repetarea unei secvenţe de program de un anumit număr de ori - instrucţiunea
FOR:
FOR variabilă = expresie,
grup de instrucţiuni,
END
Executarea condiţionată a instrucţiunilor - instrucţiunile IF, ELSEIF, ELSE.
Forma generală este:
IF expresie_1
Introducere în MATLAB - 13 -
declaraţii_1
ELSEIF expresie_2
declaraţii_2
ELSE
declaraţii_3
END
Dacă expresie_1 este adevărată se vor executa numai declaraţii_1. Altfel, dacă
expresie_2 este adevărată, se vor executa numai declaraţii_2. În caz contrar, când
nici expresie_1 şi nici expresie_2 nu e adevărată, se execută declaraţii_3.
Repetarea unui grup de instrucţiuni de un număr nedefinit de ori - instrucţiunea
WHILE. Forma generală este:
WHILE expresie
grup de instrucţiuni
END
şi se execută “grup de instrucţiuni” până când “expresie” are toate elementele
nenule.
2.7 Reprezentarea graficelor 2D şi 3D
Grafice 2D elementare, în coordonate liniare. Sunt generate prin intermediul
instrucţiunilor: plot (y), plot (x, y), plot (x, y, s). Prima formă reprezintă
grafic
argumentul y în funcţie de indici. A II-a formă reprezintă graficul vectorului y în
funcţie de vectorul x. A III-a formă permite specificarea culorii şi a modului de
reprezentare a punctelor graficului. Controlul axelor unui grafic se realizează prin
intermediul instrucţiunilor loglog, semilogx, semilogy, folosite cu aceeaşi
sintaxă
ca instrucţiunea plot.
Există posibilitatea specificării denumirii graficului title(‘text’), axelor
graficului xlabel (‘text’) şi ylabel(‘text’), sau a legendei graficului legend
(string1,
string2, …).
- 14 - Aplicaţia nr. 1
Grafice 3D elementare. Există numeroase funcţii care permit diverse reprezentări
3D. Dintre acestea cele mai des folosite sunt funcţia plot3 (x, y, z) care reprezintă
o linie în spaţiul 3D care trece prin punctele ale căror coordonate sunt tripleţi
(x, y, z).
Pentru reprezentarea 3D a suprafeţelor se poate folosi funcţia mesh (X, Y, Z). În
aceste condiţii o suprafaţă este parametrizată prin două variabile independente care
variază continuu în interiorul uni dreptunghi; fiecare punct este specificat prin trei
funcţii: X(i, j), Y(i, j) şi Z(i, j).
Există posibilitatea controlul culorii (mesh (X, Y, Z, C)), al luminozităţii
(lighting), al punctului de observaţie (view (az, el)) sau se pot modifica diverse alte
proprietăţi ale unei suprafeţe.
3. Experimente
3.1 Scrieţi un program MATLAB care să implementeze operaţiile cu matrici descrise
în § 2.3.
Rezolvare:
%Operatii cu matrici %Catalin-Daniel Caleanu, 2000
clear all close all clc
disp('definirea unei constante: x=2') x=2 pause
disp('definirea unui vector: y = [1 2 3 4 5]') y = [1 2 3 4 5] pause
disp('definirea unei matrici: A = [1 2 3; 4 5 6; 7 8 9], B = [10 7 6;3 2 0;2 4 5]') A = [1 2 3; 4 5 6; 7 8 9] B = [10 7 6;3 2 1;2 4 5]
Introducere în MATLAB - 15 -
pause disp('referirea unui element al unei matrici: A(2,1)') A(2,1) pause
disp('adunarea a doua matrici: C = A + B') C = A + B pause
disp('scaderea a doua matrici: D = A - B') D = A - B pause
disp('inmultirea a doua matrici: E = A * B') E = A * B pause
disp('inmultirea elementelor corespondente: F = A .* B') F = A .* B pause
disp('ridicarea la puterea x: G = A ^ x') G = A ^ x pause
disp('ridicarea la putere a elementelor corespondente: H = A .^ x') H = A .^ x pause
disp('impartirea a doua matrici: I = A / B') I = A / B pause
disp('impartirea elementelor corespondente a doua matrici: J = A ./ B') J = A ./B pause
disp('transpusa unei matrici: K = A` ') K = A' pause
disp('schimbarea dimensiunii unei matrici: reshape(A,1,9)') L = reshape(A,1,9)
3.2 Scrieţi un program MATLAB care să genereze vectori/matrici după specificaţiile din §
2.4 şi să afişeze informaţii referitoare la aceştia/acestea conform § 2.5.
- 16 - Aplicaţia nr. 1
Rezolvare:
%Generarea vectorilor si matricilor %Catalin-Daniel Caleanu, 2000 clear all close all clc
disp('generarea unei matrici nule cu 2 linii si 4 coloane: zeros(2,4)') A = zeros(2,4) pause
disp('generarea unei matrici unitate cu 3 linii si 2 coloane; ones(3,2)') ones(3,2) pause
disp('generarea unei matrici identice cu 3 linii si 3 coloane: eye(3)') eye(3) pause
disp('generarea unui vector cu pas liniar: a = 1:0.1:2') a = 1:0.1:2 pause
disp('generarea unui vector cu pas logaritmic b = logspace(1,3,5)') b = logspace(1,3,5) pause
disp('afisarea dimensiunilor unei matrici: size(A)') A size(A) pause
disp('afisarea dimensiunii unui vector: length(x)') a length (a)
3.3 Scrieţi un program MATALB care să folosească instrucţiunile de control descrise
în § 2.6.
Rezolvare:
%Instructiuni de control %Catalin-Daniel Caleanu, 2000
Introducere în MATLAB - 17 -
clear all close all clc
disp('repetarea unei secvente de instructiuni de un nr. de ori: FOR') disp(' ') for i=1:1:4
disp('acest text va fi afisat de 4 ori')endpause
disp(' ') disp('executarea conditionata a instructiunilor: IF, ELSEIF, ELSE') disp(' ') nr = input('introduceti un numar: ') if nr > 10
disp('nr > 10') elseif nr < 10
disp('nr < 10') else
disp ('nr = 10')endpause
disp(' ') disp('Repetarea unui grup de instructiuni de un numar nedefinit de ori: WHILE') disp(' ') i=4 while i>0
i=i-1 end
3.4 Scrieţi un program MATLAB care să ilustreze posibilităţile de creare a graficelor 2D
şi 3D pe baza funcţiilor descrise în § 2.7. În acest sens reprezentaţi o distribuţie
gaussiană 2D respectiv 3D. Ecuaţiile de generare sunt:
2 x
1 2 2 y
2
şi:
2 e , pentru cazul 2D
x2 y 2
z 12
2 e2 2
, pentru cazul 3D.
- 18 - Aplicaţia nr. 1
Rezolvare:
%Grafice 2D si 3D %Catalin-Daniel Caleanu, 2000
clear all close all clc sigma=3;
disp('grafic 2D') x=-1:.005:1; y=(1/2*pi*sigma^2)*exp(-(x.^2/2*sigma^2)); plot(x,y) title('Gaussian 2D') xlabel('Axa Ox') ylabel('Axa Oy') pause
disp('grafic 3D') x=-1:.01:1; y=-1:.01:1; [X,Y] = meshgrid(x,y); Z=(1/2*pi*sigma^2)*exp(-(X.^2+Y.^2)/2*sigma^2); figure mesh(Z) title('Gaussian 3D') xlabel('Axa Ox') ylabel('Axa Oy') zlabel('Axa Oz')
APLICAŢIA NR. 2
Modele ale neuronilor şi ale reţelelor neuronale artificiale
1. Introducere
Se urmăreşte definirea noţiunilor de neuron artificial şi reţea neuronală
artificială (RNA). Sunt evidenţiate arhitecturile tipice ale RNA precum şi modurile de
instruire aferente acestora [4], [5].
2. Modelul neuronului artificial
Neuronul artificial, denumit uneori procesor elementar, nod sau unitate este
inspirat din modelul corespondentului biologic, real. Astfel, în cazul neuronului
biologic (fig.2.1) se pot deosebi mai multe intrări (dendrite), corpul celulei şi o ieşire
(axon).
Analogia dintre neuronul real şi cel artificial poate fi observată comparând fig.
2.1 cu fig.2.2, în cea din urmă figură fiind prezentat modelul unui neuron artificial. Se
pot deosebi, în cazul fig.2.2, cele 3 elemente constituente ale neuronului artificial:
- un număr de intrări (conexiuni sinaptice), fiecare dintre ele fiind caracterizată de o
anumită pondere sinaptică wkj;
- un sumator care efectuează o combinaţie liniară a intrărilor, rezultatul fiind intrarea
netă uk;
- o ieşire caracterizată de prezenţa unei funcţii de activare φ(.) şi a unui prag k.
De regulă φ(.) este o funcţie neliniară. Fig. 2.3 prezintă câteva forme tipice pentru
funcţia de activare a unui neuron.
- 20 - Aplicaţia nr. 2
sinapsă
nucleuaxon
corpul celulei
dendrite
Fig. 2.1 Structura unui neuron biologic.
x1
x2 uk yk
Σ φ
xN θk
Fig. 2.2 Modelul neuronului artificial.
Formula matematică care descrie comportarea neuronului artificial este:
N
y ( u ) ( w
x ) (2.1)
k k k
ceea ce se mai poate scrie:
N
j1
kj j k
y k
cu x0 = -1 şi wk0 = k.
( w kj x j ) (2.2)j 0
Modele ale neuronilor şi ale reţelelor neuronale artificiale - 21 -
1 1 1 1
0 0 0 0
-1 -1 -1 -1
-4 -2 0 2 4 -4 -2 0 2 4 -4 -2 0 2 4 -4 -2 0 2 4
a) Sigmoid b) Treaptă c) Liniară cu saturaţie d) Gaussian
Fig. 2.3 Funcţii de activare tipice.
3. Arhitecturi ale RNA
O structură compusă dintr-un număr mare de procesoare elementare
interconectate care operează în paralel, în vederea îndeplinirii unei sarcini specifice,
poartă denumirea de reţea neuronală artificială, prescurtat RNA.
RNA cu propagare înainte a semnalului (feedforward)
În acest caz, câmpul receptiv al unui neuron provine doar din stratul/straturile
inferioare celui din care face parte neuronul. RNA feeedforward pot fi total (fig.2.4) sau
parţial conectate (fig.2.5).
RNA recurente (feedback)
Se disting prin existenţa unui semnal de reacţie din partea neuronilor
straturilor superioare pentru neuronii straturilor inferioare sau, ca un caz particular,
semnalul de reacţie poate să provină de la ieşirile neuronilor aceluiaşi strat (fig.2.6).
- 22 - Aplicaţia nr. 2
Fig. 2.4 RNA feedforward total conectată.
Fig.2.5 RNA feedforward parţial conectată.
4. Tipuri de instruire specifice RNA
RNA achiziţionează cunoştinţele prin instruire (învăţare). Învăţarea presupune
adaptarea parametrilor liberi ai RNA ca urmare a stimulilor mediului în care se
găseşte reţeaua. Tipul de învăţăre este determinat de maniera în care sunt ajustaţi
parametrii liberi ai RNA:
Modele ale neuronilor şi ale reţelelor neuronale artificiale - 23 -
Fig.2.6 RNA recurentă.
Învăţarea de tip supervizat
Este caracterizată de prezenţa unui supervizor care cunoaşte cu exactitate
modul de asociere al intrărilor RNA cu ieşirile acesteia. Parametrii RNA sunt
modificaţi sub influenţa combinată a vectorilor de antrenament şi a semnalului de
eroare (diferenţa dintre răspunsul dorit şi cel actual). Scopul final al algoritmului de
antrenament este ca RNA să emuleze, optim în sens statistic, supervizorul.
Învăţarea de tip nesupervizat (cu autoorganizare)
Este caracterizată de absenţa unui semnal sau supervizor care să
aprecieze corectitudinea asociaţiilor intrare-ieşire. RNA va descoperii singură
legităţile conţinute în datele de intrare printr-o reprezentare internă adecvată a
trăsăturilor vectorului de intrare.
- 24 - Aplicaţia nr. 2
Învăţarea prin întărire
Urmăreşte maximizarea unei mărimi scalare (indice de performanţă sau
semnal de întărire) în urma unei acţiuni efectuate de către sistemul supus învăţării. Dacă
modificările aduse conduc spre o stare mai bună decât cea precedentă, tendinţa sistemului
de a produce acea acţiune particulară este întărită.
5. Probleme
5.1. Reprezenati grafic câteva din funcţiile de activare (denumite în MATLAB
“transfer functions”) ale unui neuron disponibile în Neural Networks Toolbox, v.3.0.
Indicaţie: Pentru a cunoaşte totalitatea funcţiilor specifice, predefinite, disponibile
pentru domeniul reţele neuronale tastaţi “help nnet”. Dacă se doresc amănunte despre o
anumită funcţie, acestea se pot obţine prin: “help denumirea_funcţiei”.
Rezolvare:
%Reprezentare functii de activare %Catalin-Daniel Caleanu, 2000
clear all close all clc
n = -4:0.001:4;
%functie de activare de tip sigmoid a1 = logsig(n);
%functie de acticare de tip treapta a2 = hardlim(n);
%functie de activare de tip liniar, cu saturatie a3 = satlins(n);
%functie de activare radiala a4 = radbas(n);
subplot(1,4,1) plot(n,a1,'linewidth',2,'color','b');
Modele ale neuronilor şi ale reţelelor neuronale artificiale - 25 -
axis([-4 4 -1.1 1.1]) title('sigmoid')
subplot(1,4,2) plot(n,a2,'linewidth',2,'color','b'); axis([-4 4 -1.1 1.1]) title('treapta') subplot(1,4,3) plot(n,a3,'linewidth',2,'color','b') axis([-4 4 -1.1 1.1]) title('liniar')
subplot(1,4,4) plot(n,a4,'linewidth',2,'color','b'); axis([-4 4 -1.1 1.1]) title('radial')
Observaţie: Rezultatul rulării programului poate fi observat în fig. 2.3.
5.2. Un neuron “j” primeşte semnale de la alţi patru neuroni ale căror nivele de
activare sunt: 0,1 , 0,3 , - 0,8 , 0,5. Ponderile sinaptice ale neuronului “j” sunt: 0,9 , 0,7 ,
0,1 , 0,7. Calculaţi ieşirea neuronului “j” în următoarele cazuri:
a) neuronul este liniar;
b) neuronul are o funcţie de activare sigmoidală. Se
consideră pragul de activare θk = 0,5.
Indicaţie: Modelul neuronului va fi implementat folosind funcţiile de activare purelin
pentru cazul neuronului liniar respectiv logsig pentru cazul neuronului neliniar.
Rezolvare:
%Implementare neuron %Catalin-Daniel Caleanu, 2000
clear all close all clc
% definire prag de activare theta = 0.5
% x = vector de intrare x = [0.1 0.3 -0.8 0.5]
- 26 - Aplicaţia nr. 2
% w = vectorul ponderilor sinaptice w = [0.9 0.7 0.1 0.7]
% y = iesirea neuronului y1 = purelin(x*w'-theta) y2 = logsig(x*w'-theta)
5.3. Cunoscând faptul că anumiţi algoritmi de antrenament ai RNA folosesc derivata de
ordinul I a funcţiei de activare, ce avantaj prezintă în acest sens funcţiile de activare
sigmoid şi tangentă hiperbolică?
Rezolvare: Derivatele reprezintă funcţii exprimate prin funcţia originală (cea care se
derivează).
5.4. Implementaţi o RNA feedforward total conectată, care să aibă configuraţia de mai
jos. Calculaţi ieşirea y a RNA pentru x = [0,7 3] considerând că neuronii din stratul
ascuns au funcţii de activare de tip tangentă hiperbolică iar neuronul de ieşire este
liniar.
-1
0,5
x1 -1 10,2
-0,2x2 1 -2
-0,1
-1
-1
0,5
y
Fig.2.7 Reţea neuronală feedforward (pentru problema 5.4).
Indicaţie: La implementarea RNA se va folosi funcţia newff, a cărei descriere este
oferită în continuare:
NEWFF Crează o reţea neuronală feedforward Sintaxa: net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) în care:
Modele ale neuronilor şi ale reţelelor neuronale artificiale - 27 -
PR - Rx2, matrice de valori min şi max pentru R intrări. Si - Numărul de neuroni ai stratului “i”, pentru Nl straturi. TFi - Funcţia de transfer pentru stratul “i”, implicit tangentă hiperbolică ('tansig'). BTF - Funcţia de antrenament, implicit metoda Levenberg-Marquardt ('trainlm'). BLF - Funcţia de învăţare, implicit gradient descendent cu moment ('learngdm') PF - Atribuit de performanţă, implicit eroarea medie pătratică ('mse').
Rezolvare:
%Implementare unei retele neuronale feedforward %Catalin-Daniel Caleanu, 2000 clear all close all clc % vectorul intrarilor x = [0.7; 3]; % specificarea valorilor min si max pentru fiecare dintre intrari x1min=0; x2min=0; x1max=10; x2max=10; % definirea numarului de straturi si a numarului de neuroni/strat nr_neur_asc_strat1=2; nr_neur_ies=1; % newff intoarce obiectul net, in care % ponderile stratului de intrare, net.iw % ponderile straturilor ascunse, net.lw % si deplasarile de scara, net.b % sunt initializate cu valori subunitare aleatorii net = newff([x1min x1max; x2min x2max],[nr_neur_asc_strat1 nr_neur_ies],{'tansig' 'purelin'}); % se definesc valorile dorite pentru praguri si ponderi net.iw{1,1}(1,:) = [-1 -0.2]; net.iw{1,1}(2,:) = [1 0.2]; net.b{1,1}(1,:) = 0.5;net.b{1,1}(2,:) = -0.1;net.lw{2,1}(1,:) = [1 -2]; net.b{2} = 0.5; y = sim(net,x)
5.5 Trasaţi diagrama Hinton aferentă RNA de la punctul anterior.
Indicaţie: Diagrama Hinton reprezintă o modalitate de vizualizare a mărimii
ponderilor şi pragurilor. Pentru vizualizarea ponderilor şi pragurilor aferente
neuronilor stratului ascuns din problema precedentă se va folosi comada:
- 28 - Aplicaţia nr. 2
» hintonwb(net.iw{1},net.b{1})
Se observă o reprezentare proporţională a mărimii ponderilor şi pragurilor, culoarea
roşie (mai închisă) fiind asocită cu valorile negative iar cea verde (mai deschisă) cu cele
pozitive (fig.2.8).
1
2
0 1 2
Input
Fig.2.8 Diagrama Hinton pentru problema 5.5.
5.6 Evidenţiaţi comparativ avantajele şi dezavantajele RNA total conectate faţă de RNA
parţial conecte.
Rezolvare: Reţelele neuronale total conectate se folosesc atunci când nu există
cunoştinţe apriorice despre structura datelor de intrare. Au o aplicabilitate generală şi
din acest motiv o structură care presupune un număr însemnat de parametri liberi
(ponderi şi praguri). RNA parţial conectate exploatează informaţiile referitoare la
structura datelor de intrare şi au o arhitectură orientată pe un anumit tip de problemă.
Ele oferă uneori, pentru probleme particulare, rezultate mai bune decât cele total
conectate. Au cerinţe privitoare la puterea de calcul mai mici decât în cazul precedent,
având implementate mecanisme de partajare a ponderilor (“weight sharing”).
APLICAŢIA NR. 3
Perceptronul simplu. Algoritmul LMS
1. Introducere
Se prezintă arhitectura şi algoritmii de antrenament pentru cazul RNA cu un
singur neuron: perceptronul simplu şi RNA ADALINE antrenată cu algoritmul
LMS [5].
2. Perceptronul simplu
Arhitectura unei astfel de RNA este prezentată în fig. 3.1. Se poate afirma că
perceptronul simplu reprezintă o particularizare a modelului McCulloch-Pitts al
neuronului artificial (vezi Aplicaţia nr.2, fig. 2.2) pentru cazul în care funcţia de
activare este de tip treaptă unitate bipolară.
I x1
NT x2
RĂRI xN
w1
wN
I
y EŞI
θ RE
-1
Fig. 3.1 Arhitectura perceptronului simplu.
Scopul perceptronului simplu este de a clasifica în una din cele două clase
disponibile (y = +1 sau y = -1) un set de stimuli exteriori. Regiunile de decizie vor fi
- 30 - Aplicaţia nr. 3
separate de către un hiperplan definit de eceuaţia:
N
wi xi 0 (3.1)i1
În concluzie, perceptronul simplu poate fi folosit cu succes doar în cazul
particular al clasificării tiparelor liniar separabile, adică a tiparelor care sunt situate
de-o parte şi de alta al unui hiperplan. Având în vedere notaţiile următoare:
x (n ) [ 1 , x 1 (n ), x 2
(n ),...,
Tx N (n )]= vector de intrare;
T
w(n) [ (n),w1 (n), w2 (n),...,wN (n)] = vectorul ponderilor sinaptice;
θ(n) = prag;
y(n) = răspuns actual;
d(n) = răspuns dorit;
(n) = rată de învăţare, de regulă 0 < < 1.
paşii algoritmului (tip Rosenblatt) de antrenament aferent perceptronului simplu vor fi:
a) Iniţializarea: w(0) = 0;
T
b) Calcul răspuns actual: y(n) sgn[w (n)x(n)], în care funcţia sgn(.) reprezintă
funcţia signum.
c) Modificarea ponderilor sinaptice: w (n
în care :
1 , dac ã x ( n ) C 1
1 ) w (n ) [ d (n ) y (n )])x (n )
d( n)
1, dacãx(n) C2
d) Incrementarea lui n cu o unitate şi salt la pct.b)
Perceptronul simplu. Algoritmul LMS - 31 -
3. Algoritmul LMS (Least-Mean-Square). RNA Adaline
Cunoscut şi sub denumirea de algoritmul Widrow-Hoff sau regula delta, este
destinat antrenarii unei RNA formată dintr-un singur neuron liniar. Ceea ce îl
diferenţiază de algoritmul de antrenament al perceptronului simplu este modul de
calcul al semnalului de eroare, care în acest caz nu este cuantizat iar
funcţia de activare poate fi liniară. Având în vedere aceste aspecte, algoritmul
LMS poate fi formulat în modul următor:
a) Etapa de initializare: pentru wk(0) = 0, k = 1,2, ..., N
b) Etapa de filtrare:
N
y ( n )
j0
wj( n ) x
j
( n )
e( n) d (n ) y (n )
w ( n 1 ) w ( n )
e ( n )x ( n), k 1 , 2,..., N
k k k
Formularea algoritmului LMS s-a făcut din perspectiva unei filtrări spaţiale.
El poate fi utilizat în aceeaşi măsură în rezolvarea problemelor de filtrare temporală,
considerând că x(n) reprezintă eşantioane ale vectorului de intrare la momente de timp
diferite:
x( n) [ x( n), x( n 1 ),...,
Tx( n N 1 )] (3.2)
RNA ADALINE (Adaptive Linear Element) foloseşte algoritmul de
antrenament LMS (Widrow-Hoff) în scopul clasificării tiparelor. Structura ei este
prezentată în fig. 3.2.
În timpul etapei de antrenament, tiparele sunt aplicate direct RNA, ea urmând să
descopere singură caracteristicile acestora. Experienţa acumulata a RNA este
conţinută în valorile w1, ..., wN şi .
- 32 - Aplicaţia nr. 3
x1
x2
xN
4. Probleme
w1
yΣ
wN eΣ
θ
d
Fig.3.2 Structura RNA ADALINE.
4.1 Perceptronul simplu poate fi folosit la implementarea unor funcţii logice.
Verificaţi practic această afirmaţie prin intermediul codului sursă MATLAB aferent
unui perceptron simplu care să efectueze funcţiile logoce ŞI, SAU şi SAU-
EXCLUSIV. Justificaţi comportamentul perceptronului simplu în cazul funcţiei SAU-
EXCLUSIV.
Indicaţie: La implementarea RNA se va folosi funcţia newp, a cărei descriere este
oferită în continuare:
NEWP Creează un perceptron Sintaxa: net = newp(pr,s,tf,lf) în care: PR - Rx2, matrice de valori min şi max pentru R intrări.S - Număr de neuroniTF - Funcţie de transfer, implicit funcţia prag ('hardlim'). LF - Funcţia de învăţare, implicit 'learnp'. Rezolvare:
%Implementare unei retele neuronale de tip perceptron simplu %Catalin-Daniel Caleanu, 2000 clear all close all clc % tipar de intrare
Perceptronul simplu. Algoritmul LMS - 33 -
Pantr = [0 0 1 1;0 1 0 1] % tipare de iesire T_SAU = [0 1 1 1] T_SI = [0 0 0 1]T_XOR = [0 1 1 0] % se implementeaza 3 RNA perceptron net1 = newp([0 1;0 1],1); net2 = newp([0 1;0 1],1); net3 = newp([0 1;0 1],1); % se antreneaza 3 RNA perceptron in rezolvarea % problemelor SAU, SI, SAU-EXCLUSIV net1 = train(net1,Pantr,T_SAU); net2 = train(net2,Pantr,T_SI); net3 = train(net3,Pantr,T_XOR); % se testeaza performantele retelelor pentru vectorii de antrenament y1a = sim(net1,Pantr) y2a = sim(net2,Pantr) y3a = sim(net3,Pantr) % se testeaza performantele retelelor pentru vectorii de test % astfel se poate testa capacitatea de generalizare a retelelor Ptest = [0.1 0.2 0.9 0.8;0.2 0.7 0.1 0.9]; y1t = sim(net1,Ptest) y2t = sim(net2,Ptest) y3t = sim(net3,Ptest)
Observaţie: Pentru reţelele neuronale care implementează funcţiile ŞI şi SAU logic se
constată o funcţionare corespunzătoare atât pentru tiparele de antrenament cât şi
pentru cele de test. Pentru cazul SAU-EXCLUSIV se constată imposibilitatea
rezolvării corecte a problemei, atât pentru tiparele de atrenament cât şi pentru cele de
test. Explicaţia provine din faptul că primele două cazuri (ŞI, SAU) reprezintă
probleme liniar separabile, pe când problema SAU-EXCLUSIV nu e liniar separabilă.
4.2 Verificaţi capacitatea de predicţie liniară pentru o RNA ADALINE în cazul
eşantioanelor prelevate dintr-o funcţie de tip sinusoidal, la care frecvenţa se modifică liniar
în intervalul [0 6π]. Consideraţi o predicţie de ordinul 5, adică eşantionul x(n) să fie prezis
pe baza x(n-1), x(n-2), …, x(n-5).
Indicaţie: La implementarea RNA se va folosi funcţia newlin, a cărei descriere este
oferită în continuare:
NEWLIN Creează un strat liniar
- 34 - Aplicaţia nr. 3
Sintaxă: net = newlin(PR,S,ID,LR) în care: PR - Rx2, matrice de valori min şi max pentru R intrări. S - Numărul de neuroni de ieşire. ID - Vectorul întârzierilor , implicit = [0]. LR - Rata de învăţare, implicit = 0.01. Rezolvare: %Predictie liniara %Catalin-Daniel Caleanu, 2000 clear all close all clc % generarea si reprezentarea functiei tinta x = 0:0.1:6*pi; fr = linspace(1,3,length(x)); y = sin(x.*fr); plot(x,y); hold on % vectori de intrare si iesire P respectiv T P = con2seq(y); T = P; % implementarea retelei neuronale lr = 0.1; intarzieri = [1 2 3 4 5]; net = newlin(minmax(y),1,intarzieri,lr); % calculul esantionului curent din cele 5 esantioane intarziate [net,ies,e]=adapt(net,P,T); % reprezentarea grafica a rezultatelor plot(x,cat(2,ies{:}),':r'); xlabel('Timp'); ylabel('Predictie - - Tinta - Eroare .-'); title('Semnalele Predictie, Tinta si Eroare'); plot(x,cat(2,e{:}),'.-g') hold off
Semnalele Predictie, Tinta si Eroare2
1
0
-1
-2 0 5 10 15 20
Timp
Fig.3.3 Semnalele Ţintă, Predicţie şi Eroare = Ţintă - Predicţie, pentru problema 4.2.
APLICAŢIA NR. 4
Perceptronul multistrat. Algoritmul BP standard
1. Introducere
Se va studia una dintre cele mai importante tipuri ale RNA feedforward
(RNA cu propagare înainte) şi anume perceptronul multistrat, împreună cu
algoritmul standard de antrenament al acestuia, cunoscut sub denumirea de algoritm cu
propagare înapoi a erorii (BP, backpropagation) [5], [6].
2. Arhitectura RNA de tip perceptron multistrat
În mod tipic RNA perceptron multistrat (MLP, Multilayer Perceptron)
conţine:
- un set de unitaţi senzoriale (noduri sursă) care constituie stratul de intrare;
- unul sau mai multe straturi ascunse;
- un strat de ieşire.
În fig. 4.1 este prezentată arhitectura unei RNA de tip perceptron multistrat, cu un
singur strat ascuns.
Se pot distinge trei caracteristici esenţiale ale RNA de tip MLP:
a) Neuronii straturilor de intrare, ascuns sau chiar cei ai stratului de ieşire au inclus în
modelul lor matematic funcţii de activare de tip neliniar, netede (derivabile în orice
punct). Prezenţa neliniarităţii este foarte importantă în funcţionarea MLP, în plus ea fiind
motivată şi de către comportamentul neuronului biologic.
b) MLP conţine unul sau mai multe straturi ascunse, care permit realizarea unor
sarcini complexe prin extragerea progresivă, la acest nivel, a trăsăturilor conţinute în
tiparele aplicate la intrare.
c) Au un grad înalt de conectivitate.
- 36 - Aplicaţia nr. 4
x1
y1
x2
xN
yM
Fig. 4.1 RNA de tip perceptron multistrat, cu un singur strat ascuns.
3. Algoritmul BP standard
Eroarea la nivelul unui neuron “j” din stratul de ieşire este definită prin
diferenţa dintre valoarea dorită şi valoarea actuală a ieşirii neuronului:
ej (n ) d (n ) y (n ) (4.1)
j j
Astfel, suma erorilor pătratice pentru toţi neuronii stratului de ieşire, este:
E ( n )
1
2ej C
2j (n ) (4.2)
unde “C” reprezintă mulţimea neuronilor stratului de ieşire.
Considerând antrenamentul RNA drept o problemă de minimizare a unei
funcţii de cost E(n), se pot deduce, pe baza metodei gradientului
descendent, modificările care trebuie aduse parametrilor liberi ai RNA:
w ji ( n )
E ( n)(4.3)
w ji ( n)
în care reprezintă rata de învăţare.
Dezvoltând ec. (4.3) se obţin formulele modificărilor ponderilor sinaptice:
a) dacă neuronul “j” aparţine stratului de ieşire:
Perceptronul multistrat. Algoritmul BP standard - 37 -
w(n ) (n ) y (n )
[e (n ) (v (n ))] y (n ) (4.4)
ji j i j j j i
în care j (n) reprezintă valoarea gradientului local al erorii iar vj(n) intrarea netă a
neuronului (potenţialul intern de activare).
b) dacă neuronul “j” aparţine stratului ascuns:
w(n ) [ (v (n )) (n )w (n )] y (n )(4.5)
ji j j k
k kj i
unde “k” reprezintă indicele corespunzător neuronilor din stratul succesor aceluia din
care face parte neuronul “j”. Într-un caz particular, când MLP are doar un singur strat
ascuns, indicele “k” se referă la neuronii stratului de ieşire.
Practic, se disting două etape ale algoritmului BP:
a) pasul forward - presupune calculul tuturor ieşirilor neuronilor RNA:
y ( n) ( v ( n )) ( w (n )y (n )) (4.6)
j j j i C l 1
ji i
în care Cl-1 reprezintă stratul inferior aceluia din care face parte neuronul “j”.
b) pasul backward - pe baza calculului erorii (gradientului) straturilor, provenind de la
ieşire spre intrarea RNA, se modifică ponderile sinaptice cf. ec. (4.4) sau (4.5). În acest
caz eroarea sau gradientul erorii pentru stratul “n+1” poate fi considerată ca un semnal de
intrare pentru neuronii stratului “n” - de aici şi denumirea algoritmului (BP,
backpropagation, algoritm cu propagare înapoi a erorii).
Alegerea parametrului este crucială în cazul multor aplicaţii concrete. O
valoare prea mică a ratei de învăţare generează o traiectorie lină în spaţiul ponderilor dar
are ca efect un proces lung de antrenament. Dimpotrivă, o valoare prea mare conduce
la un posibil comportament instabil al RNA, convergenţa algoritmului fiind
compromisă. O metodă simplă de creştere a , evitând totodată instabilitatea, o
reprezintă includerea unui termen denumit “moment” în ec. (4.4):
w(n ) w(n 1 ) (n ) y (n ) (4.7)
ji ji j i
Ecuaţia de mai sus poartă denumirea de regula delta generalizată. Efectele introducerii
termenului moment se manifestă prin prevenirea “înţepenirii” RNA în minime locale
- 38 - Aplicaţia nr. 4
ale spaţiului ponderilor şi printr-un efect global de stabilizare a procesului de învăţare.
4. Probleme
4.1 Implementaţi o RNA MLP care să rezolve problema XOR. Numărul de neuroni de
intrare, ascunşi şi de ieşire vor fi: 2, 4 respectiv 1 iar metoda de antrenament
backpropagation cu moment (funcţia MATLAB ‘traingdm’).
Indicaţie: La implementarea RNA se va folosi funcţia newff, a cărei descriere este
oferită în continuare:
NEWFF Crează o reţea neuronală feedforward Sintaxa: net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) în care: PR - Rx2, matrice de valori min şi max pentru R intrări. Si - Numărul de neuroni ai stratului “i”, pentru Nl straturi. TFi - Funcţia de transfer pentru stratul “i”, implicit tangentă hiperbolică ('tansig'). BTF - Funcţia de antrenament, implicit metoda Levenberg-Marquardt ('trainlm'). BLF - Funcţia de învăţare, implicit gradient descendent cu moment ('learngdm') PF - Atribuit de performanţă, implicit eroarea medie pătratică ('mse').
Rezolvare:
%Implementare unui perceptron multistrat pentru rezolvarea problemei XOR %Catalin-Daniel Caleanu, 2000
clear all close all clc % tipar de intrare Pantr = [0 0 1 1;0 1 0 1] % tipare de iesire T_XOR = [0 1 1 0]
% se implementeaza RNA perceptron multistrat cu structura: % doua intrari in gama [-1 1] % 4 neuroni ascunsi % 1 neuron de iesire % functia de activare stat ascuns: tangenta hiperbolica ('tansig') % functia de activare iesire: liniara ('purelin')
Perceptronul multistrat. Algoritmul BP standard - 39 -
% metoda de antrenament: backpropagation gradient descendent cu moment ('traingdm') net = newff([-1 1;-1 1],[4 1],{'tansig' 'purelin'},'traingdm'); net.trainParam.lr=0.05; net.trainParam.mc=0.5; net.trainParam.min_grad=0; net.trainParam.show = 10; net.trainParam.epochs = 400; net.trainParam.goal = 0.001;
% se antreneaza RNA perceptron in rezolvarea problemei SAUEXCLUSIV net = train(net,Pantr,T_XOR);
% se testeaza performantele retelei pentru vectorii de antrenament ya = hardlim(sim(net,Pantr)-0.5)
% se testeaza performantele retelei pentru vectorii de test % astfel se poate testa capacitatea de generalizare
Ptest = [0.1 0.2 0.9 0.8;-0.2 0.7 0.1 0.9]; yt = hardlim(sim(net,Ptest)-0.5)
Performance is 0.000976277, Goal is 0.001
100
10-2
0 50 100 150 200
238 Epochs
Fig.4.2 Evoluţia erorii medii pătratice de-alungul procesului de antrenamet (problema 4.1)
4.2 Verificaţi capacitatea de interpolare a RNA MLP pentru următoarea funcţie:
f(x) = 0,2 + 0,8(x+ 0,7sin(2x))
cu 0 ≤ x ≤ 1. Se vor considera un număr de 11 puncte de antrenament, adică intervalul
- 40 - Aplicaţia nr. 4
considerat, eşantionat cu un pas de 0,1 şi 101 puncte de test, adică un pas de
eşantionare de 0,01. Evaluaţi eroarea pentru cazul datelor de antrenament respectiv
test.
Rezolvare:
% Implementare unui perceptron multistrat pentru % cazul interpolarii unei functii % Catalin-Daniel Caleanu, 2000
clear all close all clc
% definirea perechilor de vectori % intrare (P,pattern) - iesire (T, target) % pentru datele de antrenament (P,T) si test (Ptest, Ttest) P = 0:0.1:1; T = 0.2 + 0.8*(P + 0.7*sin(2*pi*P)); Ptest=0:0.01:1; Ttest=0.2 + 0.8*(Ptest + 0.7*sin(2*pi*Ptest)); % se implementeaza o RNA-MLP cu: % 1 intrare, 15 neuroni ascunsi, 1 neuron de iesire net1= newff(minmax(P),[15 1],{'tansig' 'logsig'},'traingdm'); net1.trainParam.lr=2; net1.trainParam.mc=0.5; net1.trainParam.min_grad=1e-10; net1.trainParam.show = 1; net1.trainParam.epochs = 300; net1.trainParam.goal = 0.001;
% antrenarea retelei [net1,tr1]= train(net1,P,T);
% utilizarea retelei pentru cazul datelor de antrenament si test y1test = sim(net1,Ptest); y1antr = sim(net1,P);
% calculul erorii de intrepolare er1antr=(sum(sum(abs(T-y1antr))))/length(T); er1test=(sum(sum(abs(Ttest-y1test))))/length(Ttest); er = [er1antr er1test];
% reprezentarea grafica a rezultatelor clf; plot(Ptest,Ttest,'+r'); title('Aproximare functiei 0.2 + 0.8*(x + 0.7*sin(2*pi*x))'); hold
Perceptronul multistrat. Algoritmul BP standard - 41 -
plot(P,T,'.') plot(Ptest,y1test,':'); xlabel('x'); ylabel('Antrenament . Test + Iesire MLP --') hold off figure bar(er*100); ylabel('Eroare aproximare [%]'); xlabel('Antrenament Test')
Aproximare functiei 0.2 + 0.8*(x + 0.7*sin(2*pi*x))1
0.8
0.6
0.4
0.2
0 0 0.2 0.4 0.6 0.8 1
x
Fig.4.3 Aproximarea unei funcţii (problema 4.2).
4.3 Considerând drept vector de intrare pentru o RNA MLP cu un singur strat ascuns,
imaginile rasterizate ale cifrelor 0...9, în format binarizat 8x5 (fig.4.4). Să se scrie
codul sursă MATLAB care realizează, prin intermediul RNA MLP, clasificarea
acestor tipare.
- 42 - Aplicaţia nr. 4
x0=[1 1 1 1 1; ... x9=[1 1 1 1 1; 1 0 0 0 1; 1 0 0 0 1;1 0 0 0 1; 1 0 0 0 1;1 0 0 0 1; 1 1 1 1 1;1 0 0 0 1; 0 0 0 0 1;1 0 0 0 1; 0 0 0 0 1;1 0 0 0 1; 0 0 0 0 1;1 1 1 1 1] 1 1 1 1 1]
Fig. 4.4 Conversia imaginilor în format binar.
Evaluaţi eroarea pentru cazul datelor de antrenament respectiv pentru setul
datelor de test. Consideraţi apoi cazul datelor de antrenament/test contaminate cu
zgomot.
Rezolvare:
% Implementare unui perceptron multistrat pentru % clasificarea numerelor 0...9 % Catalin-Daniel Caleanu, 2000
clear all close all clc
% se incarca imaginile binarizate ale cifrelor din fisierul cifre.mat % matricile x0...x9 au dimensiunea 8x5 load cifre
% se formeaza matricea P a vectorilor de intrare P = [x0(:) x1(:) x2(:) x3(:) x4(:) x5(:) x6(:) x7(:) x8(:) x9(:)];
% se formeaza matricea vectorilor de iesire % de exemplu, pentru x0 aplicat la intrare, vectorul de iesire este: % 1 0 0 0 0 0 0 0 0 0 T = eye(10);
% matricea PR specifica valorile min si max pentru cele 40
Perceptronul multistrat. Algoritmul BP standard - 43 -
(8x5) % de intrari ale MLP for i=1:40
PR(i,:)=minmax(P(:)'); end
% se defineste o RNA MLP cu structura 40-20-10 net= newff(PR,[20 10],{'tansig' 'logsig'},'traingdm');
% se definesc alti parametrii ai RNA (rata de invatare, moment, etc.) net.trainParam.lr=1; net.trainParam.mc=0.7; net.trainParam.min_grad=1e-10; net.trainParam.show = 1; net.trainParam.epochs = 400; net.trainParam.goal = 0.001;
% incepe procesul de antrenament [net,tr]= train(net,P,T); % faza de utilizare a retelei % se testeaza capacitatea de recunoastere pentru cazul cand tiparele % sunt afectate cu zgomot while(1)
cifra=input('Introduceti cifra dorita sau "q" pentru iesire: ','s');
if isletter(cifra) break end reshape(P(:,str2num(cifra)+1),8,5) zgomot=input('Zgomotul dorit [%]: ');
% s-a definit in prealabil o functie xi = noise (xi, zgomot) % care contamineaza biti matricii "xi" in proportie de
"zgomot [%]" cifra_zgomot =
reshape(noise(P(:,str2num(cifra)+1),zgomot),8,5) [y,i] = max(sim(net,cifra_zgomot(:)),[],1);
cifra_recunoscuta=i-1 end disp('program terminat')
4.4 Cum variază capacitatea de generalizare a RNA MLP în funcţie de numărul
neuronilor stratului ascuns? Dar în funcţie de numărul de epoci de antrenament sau
nivelul erorii medii pătratice? Experimentaţi aceste variaţii în cazul pct.4.3.
Rezolvare:
- 44 - Aplicaţia nr. 4
Numărul neuronilor ascunşi are o valoare optimă, în general imposibil de
prezis cu exactitate, înainte de evaluarea performanţelor reţelei în mai multe seturi de
experimente.
Dacă numărul neuronilor stratului ascuns este prea mic, reţeaua nu reuşeşte să
formeze o reprezentare internă adecvată a datelor de antrenament şi în consecinţă
eroarea de clasificare va fi mare. Cu un număr prea mare de neuroni în stratul ascuns
reţeaua învaţă foarte bine datele de antrenament dar este incapabilă de o bună
generalizare obţinând valori mari ale erorii pătratice pentru cazul datelor de test.
Concluzia este valabilă şi pentru numărul total de epoci de antrenament sau
valoarea finală a erorii pătratice medii: optimul acestor mărimi poate fi determinat numai
experimental şi este dependent de tipul problemei şi structura RNA.
APLICAŢIA NR. 5
Algoritmi rapizi de antrenament pentru RNA de tip MLP
1. Introducere
Se vor investiga câteva metode, detaliate în [7] şi [8], care conduc la
accelerarea procesului de antrenament al unei RNA - MLP:
- metoda Darken-Moody;
- regula delta-delta;
- adaptarea fuzzy a ratei de învăţare;
- metode bazate pe calculul gradientului conjugat (Fletcher-Reeves, Polak-
Ribière);
- metoda Levenberg-Marquardt.
2. Metoda Darken-Moody
Denumita şi metoda “caută apoi converge”, propune ajustarea ratei de învăţare
într-un mod simplu dar care aduce un spor considerabil în ceea ce priveşte viteza de
convergenţă a algoritmului de antrenament.
Se propune o rată de învăţăre de forma:
( n)
0
n1
(5.1)
în care η0 reprezintă rata de învăţăre iniţială, τ o constantă de timp iar n numărul
epocilor de antrenament.
Variaţia η de-alungul epocilor de antrenament este ilustrată în fig. 5.1. În epoci
timpurii, algoritmul se comportă similar celui standard, rata de învăţare menţinându-se
- 46 - Aplicaţia nr. 5
ridicată şi relativ constantă. Pe măsură ce procesul de antrenament avansează, η este
micşorată.
8
6
4
2
100 101 102 103
Nr. de epoci
Fig. 5.1 Forma de variaţie a η de-alungul epocilor de antrenament.
Ca dezavantaj al acestei metode este considerată imposibilitatea alegerii apriorice a
valorilor optime pentru constantele η0 şi τ.
3. Regula delta-delta
Considerând valoarea criteriului (atributului) de performanţă (MSE, SSE, etc.)
notată cu perf(w(n)), regula de modificare a ratei de învăţare este în acest caz:
c 1 ( k 1 ), if
perf ( w ( k )) perf ( w ( k 1 )
( k) c( k 1 ),
if perf ( w ( k )) c perf ( w ( k 1 )(5.2)
2 3(k 1), altfel
în care coeficienţii au următoarele valori tipice: c1 = 1,05, c2 = 0,7, c3 = 1,04.
În cazul în care η(n) = η(n-1), noile valori calculate pentru w(n) şi perf(w(n)) vor avea
valoarea w(n-1) respectiv perf(w(n-1)).
Algoritmi rapizi de antrenament pentru RNA de tip MLP - 47 -
4. Adaptarea fuzzy a ratei de învăţare
Dezavantajul metodei precedente constă din faptul că parametrii c1 şi c2 sunt
constanţi de-alungul etapei de învăţare şi, în consecinţă, impiedică o variaţie rapidă a ratei
de învăţare.
Controlerul fuzzy [9] primeşte drept intrări valoarea relativă a atributului de
performanţă:
p ( n )
perf ( n )perf ( n 1 )
(5.3)
şi variaţia relativă a p(n):
p ( n )
perf ( n )
perf ( n 1 )
perf ( n 1 ) (5.4)
perf ( n 2)
Ieşirea controlerului de tip Mamdami reprezintă un coeficient “c” care multiplică rata de
învăţare:
(n) c(n 1 ) (5.5)
Suprafaţa de reglare a controlerului este prezentată în fig. 5.2.
5. Metode bazate pe calculul gradientului conjugat
Metodele de antrenament prezentate până în acum pot fi circumscrise în clasa
metodelor de ordinul întâi ale gradientului descendent deoarece iau în considerare
prima derivată a funcţiei de cost (funcţie criteriu). În cazul acestor metode,
direcţia
vectorului de-alungul căruia se face ajustarea ponderilor reprezintă negativul
gradientului.
Metoda gradientului conjugat evită oscilaţiile în jurul soluţiei finale,
considerând o relaţie, relativ complicată, între direcţia şi gradientul vectorului.
Fie p(n) vectorul direcţie. Ponderile reţelei vor fi adaptate după următoarea
regulă:
- 48 - Aplicaţia nr. 5
w(n 1 ) w(n) (n) p(n)(5.6)
Iniţial:
p(0) g(0) (5.7)
Fig. 5.2 Suprafaţa de reglare a controlerului fuzzy.
în care g(n) reprezintă vectorul gradient. Ceilalţi vectori direcţie vor fi calculaţi ca o
combinaţie liniară a vectorului gradinet curent şi a vectorului direcţie anterior:
p(n 1 ) g(n 1 ) (n)p(n)(5.8)
Există numeroase moduri de exprimare a parametrului β(n):
a) Formula Fletchr-Reeves:
T
g(( n) n
1 )g ( n )
g ( n 1 )T (5.9)g ( n )
b) Formula Polak-Ribière:
( n)
g ( n
T1 )
g[ g ( n 1 ) g ( n )]
T(n ) g (n )
(5.10)
În cazul ec. (5.6) η(n) este definit după cum urmează:
(n) arg min{Eav(w(n)p(n))} (5.11)
adică presupune o căutare liniară pentru găsirea valorii particulare η care minimizează
funcţia de cost.
Algoritmi rapizi de antrenament pentru RNA de tip MLP - 49 -
6. Metoda Levenberg-Marquardt (LM)
Metoda LM derivă din metoda Newton de minimizare a unei funcţii [8] şi
presupune însumarea hessianului H (matrice cu elemente derivate de ordinul doi ale
indicelui de performanţă) cu un termen de forma νI (ν constantă pozitivă, I matricea
identică) în scopul eliminării cazurilor pentru care H-1 nu există:
w
E1
E (5.12)
2 1
H [ E I]Când indicele (funcţia) de performanţă este o sumă de pătrate (cazul RNA
feedforward) matricea hessiană poate fi aproximată prin JT J iar gradientul prin JT e unde
J reprezintă jacobianul RNA (matrice cu elemente derivate de ordinul I ale indicelui de
performantă) şi e reprezintă vectorul eroare al RNA [10].
w T
J eT 1
(5.13) [J J I]
De menţionat faptul că ν poate să fie modificat adaptiv, pentru el fiind recomandată o
valoare cât mai mică.
Metoda LM reprezintă cea mai rapidă metodă de antrenament dar viteza de
converganţă poate să scadă dramatic dacă dimensiunile RNA cresc.
7. Probleme
7.1 Pentru cazul problemei de interpolare formulată în Aplicaţia nr. 4, pct. 4.2,
verificaţi comparativ viteza de convergenţă pentru algoritmul BP standard şi cele 6
metode prezentate în cadrul acestei lucrări.
Rezolvare:
% Comparatie intre diversi algoritmi de antrenament % cazul interpolarii unei functii % Catalin-Daniel Caleanu, 2000
clear all
- 50 - Aplicaţia nr. 5
close all clc % definirea perechilor de vectori % intrare (P,pattern) - iesire (T, target) % pentru datele de antrenament (P,T) si test (Ptest, Ttest) P = 0:0.1:1; T = 0.2 + 0.8*(P + 0.7*sin(2*pi*P)); Ptest=0:0.01:1; Ttest=0.2 + 0.8*(Ptest + 0.7*sin(2*pi*Ptest));
% se implementeaza 4 RNA-MLP identice cu: % 1 intrare, 9 neuroni ascunsi, 1 neuron de iesire % antrenate cu 4 algoritmi diferiti net1= newff(minmax(P),[9 1],{'tansig' 'logsig'},'traingdm'); net1.trainParam.lr=3; net1.trainParam.mc=0.3; net1.trainParam.min_grad=1e-10; net1.trainParam.show = 1; net1.trainParam.epochs = 60; net1.trainParam.goal = 0.001; t1 = clock; [net1,tr1]= train(net1,P,T); time1=etime(clock,t1);
net2= newff(minmax(P),[9 1],{'tansig' 'logsig'},'traingdx'); net2.trainParam.lr = net1.trainParam.lr; net2.trainParam.mc = net1.trainParam.mc; net2.trainParam.min_grad = net1.trainParam.min_grad; net2.trainParam.show = net1.trainParam.show; net2.trainParam.epochs = net1.trainParam.epochs; net2.trainParam.goal = net1.trainParam.goal; t2 = clock; [net2,tr2]= train(net2,P,T); time2=etime(clock,t2); net3= newff(minmax(P),[9 1],{'tansig' 'logsig'},'trainfuzzy'); net3.trainParam.lr = net1.trainParam.lr; net3.trainParam.mc = net1.trainParam.mc; net3.trainParam.min_grad = net1.trainParam.min_grad; net3.trainParam.show = net1.trainParam.show; net3.trainParam.epochs = net1.trainParam.epochs; net3.trainParam.goal = net1.trainParam.goal; t3 = clock; [net3,tr3]= train(net3,P,T); time3=etime(clock,t3);
net4= newff(minmax(P),[9 1],{'tansig' 'logsig'},'trainlm'); net4.trainParam.lr = net1.trainParam.lr; net4.trainParam.mc = net1.trainParam.mc; net4.trainParam.min_grad = net1.trainParam.min_grad; net4.trainParam.show = net1.trainParam.show; net4.trainParam.epochs = net1.trainParam.epochs; net4.trainParam.goal = net1.trainParam.goal;
Algoritmi rapizi de antrenament pentru RNA de tip MLP - 51 -
t4 = clock; [net4,tr4]= train(net4,P,T); time4=etime(clock,t4);
y1test = sim(net1,Ptest); y2test = sim(net2,Ptest); y3test = sim(net3,Ptest); y4test = sim(net4,Ptest); y1antr = sim(net1,P); y2antr = sim(net2,P); y3antr = sim(net3,P); y4antr = sim(net4,P);
% calcul eroare test, antrenament si timp de executie er1test=(sum(sum(abs(Ttest-y1test))))/length(Ttest); er2test=(sum(sum(abs(Ttest-y2test))))/length(Ttest); er3test=(sum(sum(abs(Ttest-y3test))))/length(Ttest); er4test=(sum(sum(abs(Ttest-y4test))))/length(Ttest); ertest=[er1test er2test er3test er4test];
er1antr=(sum(sum(abs(T-y1antr))))/length(T); er2antr=(sum(sum(abs(T-y2antr))))/length(T); er3antr=(sum(sum(abs(T-y3antr))))/length(T); er4antr=(sum(sum(abs(T-y4antr))))/length(T); erantr=[er1antr er2antr er3antr er4antr];
time=[time1 time2 time3 time4]
% reprezentarea grafica a rezultatelor clf; figure title('Aproximare functiei 0.2 + 0.8*(x + 0.7*sin(2*pi*x))'); hold plot(Ptest,Ttest,'linewidth', 2) plot(Ptest,y1test,'-'); plot(Ptest,y2test,':r'); plot(Ptest,y3test,'-.g'); plot(Ptest,y4test,'--m'); xlabel('x'); legend('original','traingdm', 'traingdx', 'trainfuzzy', 'trainlm',0); hold off figure hold semilogy(tr1.epoch,tr1.perf,'-'); semilogy(tr2.epoch,tr2.perf,':r'); semilogy(tr3.epoch,tr3.perf,'-.g'); semilogy(tr4.epoch,tr4.perf,'--m'); title('EPM versus numar de epoci'); xlabel('Numar de epoci'); legend('traingdm', 'traingdx', 'trainfuzzy', 'trainlm',0) hold off
- 52 - Aplicaţia nr. 5
figure bar((ertest)*100); ylabel('Eroare aproximare test [%]'); xlabel('traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4') figure bar((erantr)*100); ylabel('Eroare aproximare antrenament [%]'); xlabel('traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4') figure barh(time,'r'); xlabel('Timp prelucrare [s]'); ylabel('traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4') hold off ertest=[er1test er2test er3test er4test]*100 erantr=[er1antr er2antr er3antr er4antr]*100
7.2 Repetaţi verificarea de la punctul 7.1 pentru cazul unei probleme de clasificare a unor
tipare de dimensiuni mari (baza de date ORL).
7.3 Completaţi tabelul de mai jos (tab.5.1), pe baza rezultatelor simulării de la pct. 7.1
şi 7.2. Care sunt concluziile desprinse în urma rulării acestor algoritmi de antrenamet ?
Rezolvare:
Concluziile experimentelor conduc la ideea că algoritmii de antrenament se
clasează, în ordinea crescătoarea a vitezei de convergenţă, conform tab.5.1, adică cel mai
lent algoritm este algoritmul gradientului descendent iar cel mai rapid
Levenberg-Marquardt.
Trebuie ţinut cont însă de faptul că cerinţele de memorie şi putere de calcul sunt
practic proporţionale cu viteza de convergenţă. Spre exemplu, probleme care implică
vectori de intrare de dimensiuni mari (sute de elemente) sunt imposibil de abordat cu
metoda Levenberg-Marquardt şi greu de abordat cu metodele bazate pe gradientul
conjugat (Fletcher-Reeves, Polak-Ribière).
Algoritmi rapizi de antrenament pentru RNA de tip MLP - 53 -
6
4
2
0
4
3
2
1
1 2 3 40
1 2 3 4traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4 traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4
Fig.5.1 Grafice rezultate în urma rulării programului aferent pct.7.1.
- 54 - Aplicaţia nr. 5
TIP PROBLEMĂ INTERPOLARE CLASIFICARE
EPM Nr. Timp EPM Nr. TimpMETODĂ [%] de de [%] de de
epoci calcul epoci calcul[s] [s]
1. BP momentum (traingdm) 2. delta-delta (traingdx) 3. η fuzzy (trainfuzzy) 4. Fletcher-Reeves (traincgf) 5. Polak-Ribière (traincgp) 6. Levenberg-Marquardt (trainlm)
Tab. 5.1 Rezultate comparative pentru diverşi algoritmi de antrenament ai RNA MLP.
Metodele backpropagation cu rata variabilă de învăţare (traingdx, trainfuzzy)
oferă cel mai bun raport viteză de convergenţă / cerinţe de memorie.
APLICAŢIA NR. 6
Reţele neuronale bazate pe funcţii radiale
1.Introducere
Este prezentată o abordare diferită a modului de funcţionare a unei RNA:
aceasta este văzută ca o problemă de aproximare a unei curbe într-un spaţiu
multidimensional.
2. Arhitectura unei RNA-RBF
O RNA bazată pe funcţii radiale (RBF - Radial Basis Function) prezintă trei
straturi (fig. 6.1):
- stratul de intrare sau stratul senzorial;
- stratul ascuns - conţine funcţii care constituie o bază pentru vectorii de intrare;
aceste funcţii poartă denumirea de funcţii radiale.
- stratul de ieşire.
Transformarea spaţiului de intrare în spaţiul neuronilor ascunşi este neliniară, pe
când transformarea spaţiului neuronilor ascunşi în spaţiul neuronilor de ieşire este
liniară. Justificarea acestui aspect se bazează pe teorema lui Cover asupra
separabilităţii tiparelor, care arată că o problemă complexă de clasificare a tiparelor,
transformată neliniar întru-un spaţiu de dimensiune înaltă este cu mult mai probabil de a fi
liniar separabilă decât întru-un spaţiu cu dimensiuni mai puţine.
- 56 - Aplicaţia nr. 6
φ
φ
φ
Fig.6.1. Arhitectura unei RNA-RBF.
3. Strategii de învăţare pentru RNA bazate pe funcţii radiale
Există mai multe metode de antrenament ale RNA - RBF, deosebirea dintre ele
constând în metoda de alegere a centrilor funcţiilor radiale:
- metoda centrilor ficşi aleşi aleator;
- metoda selecţiei autoorganizate a centrilor;
- metoda selecţiei supervizate a centrilor.
În continuare, se va prezenta detaliat prima metodă menţionată anterior. Ea
reprezintă cea mai simplă abordare şi presupune funcţii radiale fixe pentru funcţiile de
activare ale stratului ascuns. Locaţiile centrilor funcţiilor sunt alese aleator, dintre
vectorii de intrare.
Pentru funcţiile radiale se preferă cele de forma:
G x t
i
2 Mexp x t
2 i
2 , i 1 , 2, M (6.1)
d în care “M” reprezintă numărul centrilor, iar “d” distanţa maximă dintre aceşti centri
aleşi. Pentru determinarea ponderilor stratului liniar de ieşire se foloseşte metoda
pseudoinversei:
w G
d (6.2)
G fiind pseudoinversa matricii G:
Reţele neuronale bazate pe funcţii radiale - 57 -
G
cu:
g
{ g ij }
ji exp
M 2 2 xj ti , i 1 , 2,
(6.3)
M , j 1 , 2, N (6.4)
d Conform teoremei decompoziţiei valorii singulare pseudoinversa matricii G
este definită astfel:
T
G V Σ U (6.5)
în care Σ este ea însăşi o matrice N x N constituită din valorile singulare ale lui G:
1 1 1 diag , ,..., ,0
1 2 k
4. Probleme
,...,0 (6.6)
4.1. Verificaţi capacitatea de predicţie a unei RNA-RBF pentru următoarea serie
haotică: x 3,79x ( 1 x ) cu x[0,1]n n1 n1
Centrii funcţiilor radiale vor fi uniform distribuiţi în intervalul [0,1].
Indicaţie: La implementarea RNA se va folosi funcţia newrb, a cărei descriere este
oferită în continuare:
NEWRB Creează o RNA bazată pe funcţii radiale Sintaxă: net = newrb(P,T,GOAL,SPREAD) în care: P - RxQ matrice de Q vectori de intrare. T - SxQ matrice de Q vectori ţinta. GOAL - Eroarea medie patratică dorită, implicit 0.0. SPREAD - Dispersia funcţiilor radiale, implicit 1.0. Rezolvare:
%Exemplu de implementare a unei RNA-RBF %pentru cazul predictiei functiilor %Catalin-Daniel Caleanu, 2000 clear all close all clc
- 58 - Aplicaţia nr. 6
N=100; % numarul total de esantioane calculatep=50; % fractiunea, in procente, din N pentru care
% se vor constitui datele de antrenament k=5; % pasul predictieieg = 0.02; % eroarea MSE dorita sc = 0.03; % marimea camplului receptiv al functiilor radiale p=p/100; % calculul si reprezentarea grafica a seriei haotice x(1)=0.01; for i=2:N
x(i)=3.79*x(i-1)*(1-x(i-1)); end P=x(1:N*p); % N*p esantioane de antrenament, x(n)T=x(1+k:N*p+k); % N*p esantioane calculate analitic, x(n+k)net=newrb(P,T,eg,sc); % implementarea RNA-RBFtest1=x((N*p)+1:N); % esantioane de testY1=sim(net,test1); % esantioaner prezise de RNA-RBF% reprezentarea grafica a datelor plot(x(1:N-1),x(2:N),'+') xlabel('x(n-1)'); ylabel('x(n)'); figure plot(x,'red','linewidth', 1) hold on plot(N*p+1+k:N+k,Y1,'linewidth', 2) legend('training values','predicted values',0) hold off
4.2. Evaluaţi influenţa dispersiei funcţiilor radiale (în cazul 4.1) asupra procesului de
predicţie. Acelaşi lucru pentru cazul în cazul în care numărul neuronilor ascunşi
variază.
1
1 0.8
0.8
0.6 0.6
0.4
0.2
00 0.2 0.4 0.6 0.8 1
x(n-1)
0.4
0.2 training values
predicted values
00 20 40 60 80 100 120
Fig.6.1 Grafice obţinute în urma rulării programului de la punctul 4.1.
APLICAŢIA NR. 7
Reţele neuronale artificiale recurente
1.Introducere
Se urmăreşte familiarizarea cu o clasă importantă a RNA şi anume acelea care
prezintă o structură recurentă.[11]. RNA recurente sunt caracterizate de:
- unităţi de procesare neliniare;
- simetria conexiunilor sinaptice (wji = wij);
- folosirea intensivă a feedback-ului .
Din această categorie fac parte RNA Boltzmann (RNA-B) şi RNA Hopfield
(RNA-H), cea din urmă fiind detaliată în cele ce urmează.
2. RNA de tip Hopfield (RNA-H)
Poate fi văzută ca o memorie asociativă sau ca o memorie adresabilă
prin
conţinut, a cărei funcţie principală este regăsirea tiparelor stocate în memorie, ca
răspuns la prezentarea unui tipar incomplet sau contaminat cu zgomot. Esenţa
memoriilor adresabile prin conţinut constă în transformarea tiparelor ξ μ în stări stabile
sμ ale sistemului dinamic (proces de codare) şi invers (proces de decodare).
Fiecare neuron al RNA-H (fig.7.1) este caracterizat prin una din cele două stări
posibile: activ (si = 1) , respectiv inactiv (si = -1).
Starea unei RNA-H alcătuită din “N” neuroni este definită de către vectorul:
s = [s1, s2, ..., sN]T (7.1)
- 60 - Aplicaţia nr. 7
Fig.7.1. Arhitectura unei RNA-H cu 3 neuroni.
Potenţialul intern al unui neuron “j” este:
N
v j w ji si ji 1
în care θj reprezintă pragul neuronului.
Neuronul “j” îşi modifică starea conform regulii:
1 , dacã v j 0
(7.2)
s j (7.3) 1 , dacã v j 0
sau echivalent sj = sgn[vj]. Dacă vj = 0 atunci sj poate lua o valoare arbitrară, +1 sau
-1. De exemplu, se poate conveni ca starea neuronului să rămână nemodificată.
În funcţionarea RNA-H se pot distinge două etape:
a) Faza de memorare. Să presupunem că se doreşte stocarea unor vectori “N”
dimensionali {ξ μ | μ = 1, 2, ..., p}. Atunci, conform postulatului lui Hebb:
w 1 p
(7.4)ji N
1
, j , i
Acelaşi lucru poate fi scris în formă matricială astfel:
Reţele neuronale artificiale recurente - 61 -
1 pT p
W N ξμ ξ μ
1
N I (7.5)
în care I reprezintă matricea identică.
b) Faza de utilizare (regăsire). În această fază, un anumit tipar x este impus drept
vector de stare al RNA-H. De regulă el reprezintă o versiune incompletă sau afectată
de zgomot al unui tipar memorat. Apoi fiecare neuron al reţelei, ales în mod aleator,
estimează propriul potenţial de activare şi îşi stabileşte starea finală. Acest proces
asincron (serial) de modificare a stărilor se va opri în momentul în care vectorul de
stare nu se va mai modifica. Aceasta înseamnă că RNA-H a produs un vector de stare
invariant în timp, ale cărui elemente satisfac condiţia de stabilitate:
N
y j sgn( i 1
sau în formă matricială:
y sgn( W
w ji yi i ), j 1 , 2, ...,
y θ )
N (7.6)
(7.7)
RNA-H cu ponderi sinaptice li se poate asocia aşa-numita funcţie de energie:
E
1
2
N N
wi1 j1
ji s i s j (7.8)
Variaţia energiei ΔE ca urmare a variaţiei stării neuronului “j” e dată de expresia:
N
E s j
w ji s i (7.9)i1i j
Astfel, în timpul fazei de regăsire a unui tipar, E descreşte monoton. Schimbarea stării
RNA-H va continua până când se va atinge un minim local al peisajului energetic.
Minimele peisajului energetic corespund unor atractori specifici spaţiului stărilor care în
mod normal reprezintă tipare memorate în faza de memorare.
- 62 - Aplicaţia nr. 7
3. Probleme
3.1. Implementaţi în MATLAB o RNA-H cu N = 120 neuroni (N2 - N = 12280 ponderi
sinaptice!) care, în faza de memorare să fie capabilă să stocheze 10 tipare de
dimensiune 12 x 10 pixeli corespunzătoare numerelor 0...9 binarizate. Pentru faza de
utilizare procedaţi după cum urmează:
Într-o primă etapă, se vor aplica tiparele de antrenament, pentru testarea
capacităţii RNA-H de a regăsi corect datele de antrenament. Notaţi numărul de iteraţii
necesare regăsirii acestora.
Pentru a demonstra capacitatea de corecţie a erorilor pentru RNA-H se vor
folosi versiuni corupte cu zgomot 5%, 15% respectiv 25% ale aceleiaşi baze de date.
Notaţi şi în acest caz numărul de iteraţii necesare regăsirii acestor tipare şi efectuaţi o
comparaţie cu cazul precedent.
Indicaţie: La implementarea RNA se va folosi funcţia newhop, a cărei descriere este
oferită în continuare:
NEWHOP Creează o RNA recurentă de tip Hopfield Sintaxa: net = newhop(T) în care: T - RxQ matrice de Q vectori ţintă (valorile acestora trebuie să fie +1 sau -1)
Rezolvare:
% Exemplu de implementare a unei RNA-Hopfield % pentru cazul regasirii tiparelor % Catalin-Daniel Caleanu, 2000
clear all close all clc
% incarca fisierul tipare.mat % care returneaza variabila tipare de dimensiune 120x10 % coloanele acesteia reprezentand cifrele de la 0 la 9 load tipare disp('Se incarca tiparele de antrenament...') % afiseaza imaginile originale ale cifrelor fig1=figure;
Reţele neuronale artificiale recurente - 63 -
set(fig1,'Position',[200 150 50 50]) imshow(reshape(tipare,10,120)'); truesize(fig1,[200,200]); title('Imagini originale') disp('Tiparele de antrenament incarcate si afisate!') disp(' ')
% creeaza si antreneaza RNA disp('Reteaua se antreneaza...') net=newhop(tipare); disp('Reteaua antrenata!') disp(' ') % verificare stabilitate RNA pentru punctele initiale disp('Se verifica memorarea tiparelor de antrenament...') nr_iteratii = 10; Ai = tipare; Y = sim(net,nr_iteratii,[],Ai);
% afiseaza imaginile furnizate de RNA fig2=figure; set(fig2,'Position',[500 150 50 50]) imshow(reshape(Y,10,120)'); truesize(fig2,[200,200]); title('Iesirea RNA')
disp('Tipare de antrenament afisate. Apasati orice tasta !') pause close all
% faza de utilizare a retelei % se testeaza capacitatea de recunoastere pentru cazul cand tiparele % sunt afectate cu zgomot while(1)
clc cifra=input('Introduceti cifra dorita sau "q" pentru iesire:
','s'); if isletter(cifra) break end close all zgomot=input('Zgomotul dorit [%]: '); nr_iteratii=input('Nr. de iteratii: ');
% s-a definit in prealabil o functie xi = noise2 (xi, zgomot)
% care contamineaza biti matricii "xi" in proportie de "zgomot [%]"
% se afiseaza cifra contaminata cu zgomot cifra_zgomot =
reshape(noise2(tipare(:,str2num(cifra)+1),zgomot),10,12)
- 64 - Aplicaţia nr. 7
fig3=figure; set(fig3,'Position',[200 200 50 50]) imshow(cifra_zgomot') truesize(fig3,[200,200]); title('Imagine cu zgomot')
% se aplica cifra contaminata la intrarea RNA cifra_contaminata=tipare(:,str2num(cifra)+1); cifra_contaminata=noise2(cifra_contaminata,zgomot); Y = sim(net,{1 nr_iteratii},{},{cifra_contaminata});
% se afiseaza raspunsul RNA fig4=figure; set(fig4,'Position',[500 200 50 50]) imshow(reshape(Y{nr_iteratii},10,12)') truesize(fig4,[200,200]); title('Iesirea RNA')
end % end while
close all disp('Program terminat !')
Imagine cu zgomot Iesirea RNA
Fig.7.2 Cifra “1” contaminată cu zgomot 10% este aplicată RNA-H, care după 10 iteraţii, converge spre
unul din tiparele memorate anterior, în acest caz cel al cifrei “1” (problema 3.1).
APLICAŢIA NR. 8
Reţele neuronale cu autoorganizare
1. Introducere
Se prezintă o nouă clasă a RNA şi anume cele cu învăţare de tip
nesupervizat (cu autoorganizare) [12], [13]. Discuţia este restrânsă la cadrul
învăţării de tip competitiv deşi trebuie menţionată existenţa mai multor paradigme
ale învăţării nesupervizate: învăţarea de tip hebbian sau cea bazată pe teoria
informaţiei. În contextul mai sus menţionat este prezentată arhitectura şi algoritmul
standard de antrenament pentru RNA-SOFM (Self Organizing Feature Map)
cunoscută şi sub denumirea de RNA Kohonen. Este discutată şi o versiune modificată
pentru algoritmului standard, denumit algoritmul cu conştiinţă.
2. RNA-SOFM (Kohonen)
Scopul acestui algoritm constă în transformarea unui tipar de intrare de
dimensiune arbitrară într-o hartă de trăsături (spaţiu discret, de regulă 1D sau 2D)
ordonată topologic. Cu alte cuvinte, există o corespondenţă
între tipul (caracteristicile) tiparului aplicat la intrare şi locaţia
spaţială a neuronului care va fi activat. Corespondenţa topologică se
manifestă în sensul în care la tipare similare aplicate la intrarea
RNA vor fi activaţi neuroni situaţi în aceeaşi vecinătate (lob sau
bulb) a stratului de ieşire.
Arhitectura RNA-SOFM 2D este prezentată în fig.8.1.
Algoritmul de antrenament presupune următorii paşi :
a) Iniţializarea ponderilor. Se aleg valori aleatoare mici pentru ponderile sinaptice
wj(0).
- 66 - Aplicaţia nr. 8
Stratul neuronilor de ieşire
w1
x1
wN
Stratul neuronilor de intrarex2 xN
Fig. 8.1. Arhitectura unei RNA-SOFM 2D.
b) Desemnarea neuronului câştigător. Se aplică tiparul x la intrarea RNA, iar pe
baza acestuia este selectat neuronul câştigător al competiţiei:
i (x ) arg
j
c) Ajustarea ponderilor:
min x( n ) w , j 1 ,2 ,..., N (8.1)j
w ( n ) ( n )[ x w ( n )] , daca j )j
w j ( n 1 ) j i(x)
(8.2)0,
în care η(n) reprezintă rata de învăţare, iar i ( x
altfel
) ( n ) reprezintă vecinătatea topologică
a neuronului învingător i(x). Dacă se notează cu j,i (x
topologice, atunci relaţia (8.2) poate fi rescrisă astfel:
w ( n 1 ) w ( n ) ( n ) ( n )[ x ( n )
) amplitudinea vecinătăţii
w (n )] (8.3)j j
De regulă η(n), ( n ) şij, i (x ) j
sunt mărimi dinamice, care variază de-ai (x )
lungul epocilor de antrenament:
d
j,i ( x )
2j, i
j,i exp( 2
2 ) (8.4)
Reţele neuronale cu autoorganizare - 67 -
( n )
n 0 exp (8.5)
1
n (n) 0 exp (8.6)
2
în care dj,i reprezintă distanţa de la neuronul “j” la neuronul câştigător “i” iar , ,0 0
1, 2 sunt constante.
Procedura se repetă de la pasul b) de un număr de ori specificat apriori sau până
când nu se mai înregistrează schimbări notabile în harta de trăsături .
3. Algoritmul de antrenament nesupervizat, cu conştiinţă
Una din problemele cu care este confruntat algoritmul de tip Kohonen
reprezintă faptul că unii neuroni ai RNA pot să câştige foarte rar sau chiar deloc
competiţia. Algoritmul cu conştiinţă elimină acest impediment prin memorarea
numărului de activări pentru fiecare dintre neuronii RNA. Conştiinţa neuronului se
manifestă prin autoeliminarea sa din cursa pentru câştigarea competiţiei în cazul în
care a fost activat (a câştigat competiţia) de un număr de ori prea mare.
Paşii algoritmului sunt următorii:
a) Găsirea ponderii sinaptice wi cea mai apropiată de vectorul de intrare x:
x wi min x w , j 1 ,2 ,..., N
j
b) Memorarea numărului de activări pentru neuronul care a câştigat competiţia:
p
unde 0<B<<1 şi:
y
nouj
j
vechi vechip B ( y p)
j j j
1 , dacã neuronul " j " este câstigator0,altfel
c) Găsirea noului neuron câştigător, conform mecanismului conştiinţei:
x w min( x w b )i j j j
- 68 - Aplicaţia nr. 8
unde bj poate fi văzut ca o deplasare de scară (bias); el este definit după cum urmează:
bj
1 C p
jN
unde “C” este o constantă iar “N” reprezintă numărul total de neuroni dinstratul de ieşire.d) Adaptarea vectorului ponderilor aferente neuronului câştigător:
wnoui
vechi vechiw ( x w )
i i
în care reprezintă rata de învăţare a algoritmului SOFM
4. Probleme
4.1 Pentru a ilustra procesul de formare a bulbilor de-a lungul epocilor de
antrenament, implementaţi o RNA-SOFM tridimensională, 3 x 3 x 3 neuroni, folosind
funcţia newsom. Tiparele de intrare sunt generate de ecuaţia (fig.8.2):
x2y2
1 22 z
2
2 e (8.7)
Folosind funcţia plotsom ilustraţi formarea bulbilor după 0, 3, 20 de iteraţii.
Indicaţie: Pentru implementarea unei RNA-SOFM se va folosi fucţia newsom, a cărei
descriere este oferită în continuare:
NEWSOM Creează o RNA tip hartă de trăsături Sintaxa: net = newsom(PR,[d1,d2,...],tfcn,dfcn,olr,osteps,tlr,tns) în care: PR - Rx2 matrice de valori min şi max pentru R intrări. Di - Dimensiunea (numărul de neuroni) pentru stratul “i”, implicit [5 8]. TFCN - Tipul topologiei, implicit 'hextop'. DFCN - Funcţia distanţă (descrie noţiunea de distanţă dintre neuronii stratului de ieşire), implicit 'linkdist'. OLR - Rata de învăţare în faza de ordonare, implicit 0.9. OSTEPS - Durata (în epoci) a fazei de ordonare, implicit 1000. TLR - Rata de învăţare în faza de ajustare, implicit 0.02 TND - Distanţa dintre vecinătăţi în faza de ajustare, implicit 1.
Reţele neuronale cu autoorganizare - 69 -
Fig.8.2 Distribuţia tiparelor de intrare pentru problema 4.1.
Rezolvare:
% Exemplu de implementare a unei retele neuronale SOFM-3D % pentru cazul extragerii distributiei de probabilitate % dintr-un set de date % Catalin-Daniel Caleanu, 1999
clear all close all clc
% definire constante sigma=1.5; % reprezentare 3D a datelor de antrenament x=-1:.01:1; y=-1:.01:1; [X,Y] = meshgrid(x,y); Z=(1/2*pi*sigma^2)*exp(-(X.^2+Y.^2)/2*sigma^2); mesh(Z) figure Z=Z.*rand(length(x),length(x)); mesh(Z) figure
% definirea unui nor de date 3D cu distributie gaussiana x=2*(rand(1,300)-0.5); y=2*(rand(1,300)-0.5); z=(1/2*pi*sigma^2)*exp(-(x.^2+y.^2)/2*sigma^2); z=z.*rand(1,length(x));
% definirea setului de date de intrare P P = [x;y;z]; % implementarea retelei neuronale SOFM cu trei intrari in gama -1...1, -1...1,
- 70 - Aplicaţia nr. 8
% 0...10 si un strat de iesire tridimensional de 3x3x3 neuroni net = newsom([-1 1;-1 1;0 10],[3 3 3]); % afisarea distributiei initiale a vectorilor pondere plotsom(net.layers{1}.positions) figure
% antrenamentul retelei net.trainParam.epochs=1000; net = train(net,P);
plotsom(net.iw{1,1},net.layers{1}.distances)
Weight Vectors
N euron
1.5
1
0.5
0
2
1
position(2,i) 0 0
Po siti ons 2
1.5
1
0.5
2 -0.5
1
position(1,i)
00.5 0.5
W(i,2)
-0.50
W(i,1)
Fig.8.3 Distribuţiile iniţiale şi finale ale vectorilor pondere obţinute în urma rulării progarmului aferent
pct.4.1.
v
APLICAŢIA NR. 9
Primul experiment cu reţele neuronale celulare: studiul
unor
template-uri simple
1. Chestiuni introductive
Lucrarea de faţă urmăreşte aprofundarea cunoştintelor de reţele neuronale
celulare (RNC) prin studiul experimental, prin simulare, al unor template-uri simple.
Simularea se face utilizând toolbox-ul MATCNN, elaborat exclusiv pentru
acest tip de reţele neuronale şi care este prezentat în ANEXA NR. 1. Sunt analizate
două template-uri, larg utilizate în prelucrările de imagini: template-ul EDGE şi
template-ul THRES. Peste tot în cele ce urmează se are în vedere reţeaua neuronală
simulată în MATCNN, adică o RNC standard, cu vecinataţi 3x3
( N1( i, j) ).
2. Analiza template-urilor EDGE şi THRES
Regimul dinamic al unei celule dintr-o RNC cu vecinătăţi 3x3 este descris de
ecuaţia diferenţială ordinară şi neliniară [7]:
C xij ( t ) R
1v xij t
A ij ,kl v ykl
t B ij ,kl v ukl tI ij (9.1)
kl N 1
iar mărimea la ieşiere ei este data de relaţia:
v (t ) f (v (t )) 0 5( | v ( t )
kl N1
1| | v ( t ) 1| ) (9.2)
yij xij xij
În expesiile de mai sus, v , v , v
xij
reprezintă starea, intrarea şi respectiv
ieşirea unei celule C . Prin N
xij uij yij
a fost notată vecinătatea de raza 1 (vecinătate 3x3) a ij 1
- 72 - Aplicaţia nr.9
unei celule C , definită în sensul celor aratate în [7]. A şi B reprezintă ij ij,kl ij,kl
operatori sinaptici de reacţie şi respectiv de comandă iar I ij este curentul celulei (de
regulă invariant în spatiu). Trebuie observat apoi că funcţia f (.) , ce defineşte
caracteristica de ieşire este funcţia sigmoid aproximată liniar pe porţiuni.
Observaţie: Dacă în rel.(9.1) se iau parametrii R C 1, ecuaţia diferentială care
rezultă caracterizează aşa-numita reţea neuronală standard [7], simulată - aşa cum s-a
arătat mai sus - în MATCNN.
Este limpede că operaţiile de procesare pe care le realizează o RNC sunt
determinate de operatoriiA , B şi respectiv de curentul I . Acest ansamblu de
ij,kl ij,kl ij
mărimi este denumit în literatura de specialitate template-ul* RNC şi elaborarea de
noi template-uri, corespunzatoare unor noi operaţii de prelucrare cu RNC, constituie în
momentul de faţă o preocupare majoră în domeniu.
Vom analiza în continuare template-urile EDGE şi THRES (de la
“threshold”, prag) incluse în biblioteca standard aferentă toolbox-ului MATCNN. Aşa cum
sugerează denumirea, aceste template-uri realizează:
- detecţia muchiilor în cazul unor imagini cu nuanţe de gri;
- respectiv conversia unei imagini cu nuanţe de gri într-o imagine alb-negru (imagine
binară).
Observaţie: Într-un caz mai general, în rel.(9.1) pot interveni şi alţi operatori,
dependent de complexitatea template-urilor utilizate (vezi [7]). În cazul de faţă, aşa cum
va rezulta în continuare, template-urile analizate includ numai operatori liniari de tipul A şi
B, astfel încât rel.(9.1) este acoperitoare.
În cazul ambelor template-uri intereseaza următoarele aspecte:
* Termenul “template” a fost preluat direct din literatura de limbă engleză în lipsa unui
termen potrivit, echivalent, în limba romană. Frecvent, mărimile A , B etc. suntij,kl ij,kl
apelate tot prin termenul “template”. În acord cu semnificaţia reală şi pentru a evita
confuziile, în lucrarea de faţă aceste mărimi vor fi desemnate prin termenul “operatori”.
Primul experiment cu reţele neuronale celulare - 73 -
- forma în care este definit template-ul,
- comportamentul dinamic al reţelei care utilizează template-urile respective,
- satisfacerea de către template-urile analizate a regulilor locale care definesc operaţia de
procesare în cauză (în cazul de faţă detecţia muchiilor respectiv conversia în albnegru a
unei imagini cu nuanţe de gri).
2.1 Template-ul EDGE
În cazul acestui template operatorii A şi B respectiv curentul I sunt de forma:
A: EDGE_A = [0 0 0;
0 2 0;
0 0 0];
B: EDGE_B = [-0.25 -0.25 -0.25; (9.3)
-0.25 2.0 -0.25;
-0.25 -0.25 -0.25];
I: EDGE_I = -1.45;
Celelalte mărimi care caracterizează reţeaua sunt definite după cum urmează:
Intrarea: U(t) = P, unde P reprezintă imaginea statică ce urmeaza a fi
procesată
Starea iniţiala: X(0) = U(t)
Condiţiile de frontieră: Sunt de tipul fix, adică v 0 si v 0 pentru toate
uij xij
celulele virtuale ([U] = [Y] = [0]) [7]
Ieşirea: Y(t) Y(), unde Y() constituie o imagine
binară în care pixelii negri corespund muchiilor nete respectiv
muchiilor vagi din imaginea P.
- 74 - Aplicaţia nr.9
Observaţii: Muchiile vagi reprezinta grupări de pixeli gri care formează segmente de linii
sau arce unidimensionale, astfel încât intensitatea pixelilor de pe o parte a
liniei/arcului diferă semnificativ de intensitatea pixelilor învecinaţi, situaţi de cealaltă parte
a liniei/arcului.
Template-ul EDGE poate fi definit şi pentru cazul în care se pleacă din
condiţii iniţiale nule (X(0) = 0). Forma data în lucrare prezintă avantajul unei
iniţializări uşoare, imaginea P fiind oricum disponibilă.
Reţelele neuronale având operatorul A cu toate elementele nule, cu excepţia
elementului a , se numesc reţele necuplate, deoarece o celulă C nu este conectată00 ij
cu ieşirile celulelor din imediata ei vecinatate.
Vom aborda în continuare problema comportamentului dinamic al RNC
studiate.
Conform celor prezentate în [7], în cazul RNC standard - cum este şi cazul de
faţă, este asigurată existenţa şi unicitatea unei solutii vxij(t) , pentru t 0 şi pentru
orice stare initială vxij(0) R . Afirmaţia de mai sus este importantă din punct de
vedere aplicativ, deoarece ne asigură că după încheierea unui regim tranzitoriu
(teoretic pentru t ) reţeaua ajunge într-o stare stabilă (nu oscilează haotic). În
această situatie, tensiunile la ieşirile celulelor, care reprezintă rezultatul prelucrării
(imaginea Y() ) , nu se mai modifică în timp şi prin urmare pot fi interpretate.
În cele ce urmează vom aprofunda problema stabilităţii urmând o cale mai
simplă, intuitivă. Se are în vedere în acest scop schema din fig.9.1, care reprezintă
structura unei celule C ij din reţeaua analizată.
Această structură a fost elaborată pe baza urmatoarei relaţii:
v
v
Primul experiment cu reţele neuronale celulare - 75 -
U
v uij
I ij
xij
B +v
dt
-1
a 00
xijf(.)
vyij
Fig. 9.1 Schema functională a unei celule
( t ) v ta v ( t ) B v
C ij din RNC studiată
tI *, (9.4)
xij xij 00 yij kl N
1
ij , kl ukl ij
rezultată prin particularizarea ecuaţiei (9.1) pentru cazul template-ului EDGE (în care
numai a00 0 ) şi considerând R C 1. Cu precizarea că vectorul U include
tensiunile de la intrările tuturor celulelor din imediata vecinatate a celulei Cij , legatura
dintre schema functională şi rel.(9.4) este imediată.
Problema stabilităţii poate fi acum abordată pe baza schemei de mai sus. Este
lesne de constatat că atâta timp cât | vxij | 1 , conform rel.(9.2) v v şi în
yij xij
consecinţa circuitul se comportă în esentă ca un integrator cu reacţie pozitivă
( a00 2 1). Prin urmare tensiunea la ieşirea lui creşte sau scade monoton,
dependent de polaritatea tensiunii aplicate la intrare în momentul iniţial t 0 . Odată
cu satisfacerea conditiei | vxij |1 , tensiunea la ieşirea celulei va avea valori ferme,
egale cu +1 sau -1 (vezi rel.(9.2)). Procesul de integrare continuă până când circuitele
componente intră în limitare, fără ca acest lucru să modifice nivelul tensiunii la ieşirea
* În legatură cu notaţiile uzuale pentru elementele operatorilor A şi B ( a00 spe exemplu) a seconsulta [7].
- 76 - Aplicaţia nr.9
celulei. Un asemenea comportament este, evident, stabil.
Schema funcţională prezentată în fig.9.1 permite, totodată, abordarea într-o
manieră simplă a problemei satisfacerii de către template-ul EDGE a regulilor locale
ce definesc operaţia de extragere a muchiilor. Aceste reguli, prezentate în Tab.9.1,
servesc la proiectarea template-ului; în lucrarea de faţă ne vom limita la verificarea
satisfacerii lor de către template-ul analizat, problema proiectării find abordată într-o
altă aplicatie.
Caz v (0) v ()uij yij
1 pixel alb alb, independent de pixelii vecini
2 pixel negru alb, dacă toţi vecinii cei mai apropiaţi sunt negri
3 pixel negru negru, dacă cel puţin unul dintre cei mai apropiaţi vecini este alb
4 pixel gri negru, dacă nuanţa de gri a pixelilor din vecinătatea N1 depăşeşte
în medie un anumit prag, adică pentru
xij(0) 0 , Bij
, kl v
ukl 1,45klN1
5 pixel grialb, dacă pentru xij(0) 0 , Bij,klvukl 1,45
klN 1
Tab.9. 1 Regulile locale pentru template-ul EDGE
Se constată uşor că în Tab.9.1 au fost avute în vedere o serie de situaţii în care se
poate găsi un pixel dintr-o imagine cu nuanţe de gri, împreună cu condiţiile ce se impun a
fi satisfăcute pentru ca ieşirea să aibe o anumita valoare. Unele condiţii, cum sunt - spre
exemplu - cele aferente primelor trei cazuri, sunt evidente: un pixel alb, care nu se
situează pe o muchie, va avea drept corespondent în imaginea de ieşire tot un pixel alb; pe
de alta parte, unui pixel negru trebuie să-i corespundă la ieşire un pixel negru numai dacă
pixelul de intrare se situează pe o muchie, adică are cel puţin un pixel alb printre vecinii
cei mai apropiaţi.
v
v
v
v
Primul experiment cu reţele neuronale celulare - 77 -
În general, decelarea celor mai semnificative situaţii şi a condiţiilor
corespunzatoare, operaţie care determină performanţele template-ului, depinde de
experienta proiectantului aplicaţiei.
Se va verifica în continuare satisfacerea condiţiilor din Tab.9.1 pentru RNC în
discuţie. Se pleacă în acest scop de la observaţia că pentruv (0 ) v [1 ,1 ] ,
din rel.(9.2) rezultă v (0 ) v (0 ) v
xij uij
. În aceste condiţii şi având în vedere căyij xij
a 00 2 , pentru momentul iniţial t
(0 ) v B v
uij
0 ecuaţia (9.4) devine:
I (9.5)xij uij
Cazul 1: În acest caz
kl N
v uij
ij , kl ukl ij1
1 şi din rel.(9.5) se obţine:
xij(0) 1 2 (1) 0 25 vukl 1,45 0 , (9.6)klNklij
pentru orice valoare a pixelilor din vecinatate: vukl [1,1]. O tensiune iniţială
negativă la intrarea intrgratorului va determina, conform celor arătate mai sus, un nivel
la ieşirea celulei v yij ()1; acest nivel corespunde unui pixel alb, aşa cum se
impune conform cerinţei din Tab.9.1.
Cazul 2: Problema poate fi tratată în mod similar celor prezentate la cazul precedent.
Deoarece acum v uij 1 , relaţia (9.5) devine:
(0 ) 1 2 (1 ) 0 , 25 v1 ,45 0 , (9.7)
xij kl Nkl ij
ukl
pentru vukl 1. Integratorul va determina, în consecinţă, un nivel la ieşirea celulei
v yij () 1, corespunzător unui pixel alb.
Cazul3: În aceast caz v1 şi dacă există un v 1 , atunci:
uij u
xij (0 ) 1 2 ( 1 ) 0 , 25 ( 1 ) 0 , 25
kl N
v ukl 1 ,45 0 (9.8)
klij,1 kl
v
v
v
- 78 - Aplicaţia nr.9
pentru orice vukl [1,1] . Relaţia (9.8) probează regula 3.
Cazul 4: Pentru v
rel.(9.4) devine:
(0 )
xij
(0 ) 0 , fapt ce implică în acord cu rel. (9.2) v (0 ) 0 ,yij
B v 1 ,45 (9.9)xij
klN
1
ij ,kl ukl
Dacă avem acum în vedere că B v 1 ,45 , rezulta că (0 ) 0şiklN 1
ij, kl ukl xij
în consecinţă nivelul la ieşirea celulei corespunde unui pixel negru.
Cazul 5: Se are în vedere rel.(9.9), valabilă şi în acest caz.
Condiţia B ij,klvukl 1,45 implică xij(0) 0 , fapt ce determină un nivelklN 1
corespunzător unui pixel alb în imaginea de la ieşire.
2.2 Template-ul THRES
Acest template realizează operaţia de conversie a unei imagini cu nuanţe de gri
într-o imagine binară. Template-ul include operatorul A (operatorul B fiind nul) şi curentul
I al celulei:
A: THRES_A = [0 0 0;
0 2 0;
0 0 0];
B: THRES_B = [0 0 0; (9.10)
0 0 0;
0 0 0];
I: THRES_I = i, -1< i <1;
Celelalte mărimi care caracterizează reţeaua sunt definite după cum urmează:
Intrarea: U(t) = 0 sau arbitrar
Primul experiment cu reţele neuronale celulare - 79 -
Starea iniţială: X(0) = P, unde P reprezintă imaginea ce urmează a fi
procesată
Ieşirea: Y(t) Y(), unde Y() constituie o imagine binară în
care toţi pixelii al căror nivel de gri: pij i devin negri.
Problema stabilităţii dinamice a reţelei se soluţionează în mod similar celor
prezentate în cazul template-ului EDGE. Pentru verificarea regulilor locale se au în
vedere condiţiile specificate în Tab.9.2 şi se procedează analog celor expuse la punctul
precedent.
Regulile de mai sus conduc în mod evident de la o imagine cu nuaţe de gri la o
imagine binară, în care pixelii a căror intensitate luminoasă au depăşit pragul “i” devin
pixeli negri.
Caz v (0) v ()uij yij
1 vxij(0) i alb, independent de pixelii vecini
2 vxij(0) i negru, independent de pixelii vecini
3 vxij(0) i i, pesupunând zgomot nul
Tab.9.2 Reguli locale pentru template-ul THRES
Observaţii: Template-ul THRES din MATCNN are implicit pragul i 0 . Dacă
valoarea pragului este stabilită înafara intervalului [-1,+1] (uzual se ia i 4
respectiv i 4 ), atunci imaginea de ieşire va conţine exclusiv pixeli negri respectiv
albi. Aceste două operaţii, de “umplere cu negru” (FILBLACK) respectiv de “umplere cu
alb” (FILWHITE), îşi găsesc aplicabilitate în prelucrările de imagini.
- 80 - Aplicaţia nr.9
3. Desfăşurarea experimentului
3.1 Prima operaţie ce se impune a fi efectuata o constituie instalarea toolbox-ului
MATCNN în mediul de lucru MATLAB, conform celor prezentate în ANEXA 1. Se
încearcă apoi o familiarizare cu instrumentele de lucru, procedând după cum urmează.
Se deschide şi afişează, în fereastra de editare/depanare a mediului MATLAB,
directorul matcnn (<matlab>\toolbox\matcnn); se va identifica apoi prezenţa
scripturilor menţionate în ANEXA 1.
Se va deschide şi afişa fişierul <matlab>\toolbox\temlib, care conţine
biblioteca de template-uri a toolbox-ului MATCNN. Va fi trecut în revistă conţinutul
acestei biblioteci şi se va reţine forma tipică în care este editat un template.
Utilizînd, în fereastra de comanda a mediului de lucru MATLAB, comanda
“showdpic” vor fi vizualizate cele 8 imagini (pic1, pic2, …, pic8) care constituie
obiectul aplicaţiilor ce urmează.
3.2 Se elaborează prima aplicaţie cu RNC, care detectează muchiile într-o imagine cu
nuanţe de gri, utilizînd template-ul EDGE. Imaginea prelucrată este “pic7”, preferată
deoarece conţine elemente cu forme geometric regulate (în această situaţie
performanţele aplicaţiei pot fi mai lesne evaluate vizual). Secvenţa corespunzătoare de
instrucţiuni este prezentată în cele ce urmează.
%set CNN environment SetEnv; TemGroup='TemLib'; %load to INPUT1 and show image pic7 load pic7; subplot(121);
CNNShow(INPUT1); %initialize layers STATE=INPUT1; %set the simulation parameters Boundary=-1; TimeStep=0.1; IterNum=50; %load and show EDGE template LoadTem('EDGE');
Primul experiment cu reţele neuronale celulare - 81 -
ShowTem; %run template and show result RunTem; subplot(122); CNNShow(OUTPUT);
Se poate lesne constata că pe lângă detecţia muchiilor, programul vizualizează
imaginea iniţială precum şi cea rezultată în urma pelucrării iar în fereastra de comandă
mediului MATLAB este afişată secvenţa corespunzătoare template-ului EDGE.
Inţelegerea scriptului de mai sus este înlesnită de precizările prezentate în ANEXA 1,
la pct. 2.3.
3.3 Pentru a experimenta comportamentul template-ului EDGE în cazul unor imagini
alb-negru, se va binariza imaginea de intrare (“pic7”) şi se va executa apoi template-ul
EDGE. Se completează în acest scop, programul de mai sus, cu următoarele
instrucţiuni:
%%%%%%%run threshold %%%%%%%%%% load pic7; %initialize layers STATE=INPUT1; %set the simulation parameters TimeStep=0.4; IterNum=15; %load and run THRES template loadtem('THRES'); runtem; %show result
subplot (223); CNNShow(OUTPUT); %%%%%%%%run again EDGE template %the OUTPUT is aplied to the INPUT1 of CNN INPUT1=OUTPUT; %initialize layers STATE=INPUT1; %set the simulation parameters Boundary=-1; timeStep=0.1; IterNum=50; %load and run EDGE template LoadTem('EDGE'); RunTem; %show result
- 82 - Aplicaţia nr.9
subplot(224); CNNShow(OUTPUT);
Din scriptul prezentat mai sus rezultă că la început este realizată operaţia de
transformare în imagine binară a imaginii de intrare, utilizând template-ul THRES, după
care sunt extrase muchiile. Sunt vizualizate, totodată, imaginea binară precum şi imaginea
cu muchiile extrase din aceasta.
Imaginea iniţială pic7 Muchiile extrase din pic7
Imaginea binarizată Muchiile extrase
Fig.9.2 Rezultatul prelucrării cu scriptul aferent pct.3.4.
Concluzii: rezultatele prelucrării cu template-ul EDGE a unei imagini cu nuanţe de gri
respectiv a unei imagini alb-negru sunt prezentate în fig.9.2. Este lesne de constatat că
extragerea muchiilor se face cu mai multă acurateţe în cazul imaginii binare, o
concluzie pe deplin în acord cu intuiţia inginerească.
APLICAŢIA NR. 10
Crearea unei interfeţe grafice utilizator pentru o
aplicaţie cu
RNA folosind mediul MATLAB
1. Principiile dezvoltării unei interfeţe grafice utilizator
Interfaţa grafică utilizator, (GUI - Graphical User Interface) are rolul de a
mijloci comunicarea între program şi cel care îl utilizează. Deşi, în aparenţă,
ar putea reprezenta un aspect secundar în realizarea unei aplicaţii, de multe ori
succesul acesteia depinde de calitatea desigului GUI.
S-a considerat utilă formularea unor principii după care se va efectua
proiectarea interfeţei grafice:
Consideraţii privind aspectele statice ale GUI
Principiile pe care trebuie să le indeplinească GUI sunt, cf. [14]:
simplitatea, consistenţa şi familiaritatea (fig.10.1).
SIMPLITATE (eleganţă, claritate, unitate)
CONSISTENŢĂ (aliniere, integritate, armonie)
FAMILIARITATE (prietenoasă, confortabilă)
Fig.10.1 Principiile după care trebuie efectuat designul unei GUI.
- 84 - Aplicaţia nr. 10
Simplitatea. Reprezintă scopul principal în proiectarea GUI. O
interfaţă grafică simplă sporeşte claritatea prezentării şi dă un sens unitar
acesteia. Reprezentarea calitativă, adică sublinierea formei, poate fi mult
mai importantă decât reprezentarea cantitativă, numerică (fig.10.2).
Fig. 10.2 Importanţa reprezentării calitative asupra celei cantitative, în proiectarea GUI.
Tot în acest context se recomandă o arie minimă de interactiune
între utilizator şi program. Se preferă păstrarea unui număr redus de figuri pe ecran.
Introducerea datelor se preferă a fi făcută grafic şi nu numeric.
Consistenţa. Serveşte la eliminarea confuziei şi lipsei orientării
utilizatorului în momentul în care interactionează cu programul.
De exemplu, în fig.10.3 sunt prezentate două programe MATLAB
demonstrative total diferite în fondul problemei. Una se referă la capabilităţile
MATLAB de analiză a sunetului iar cealaltă la posibilităţile de reprezentare
grafică 3D. Se observă însă acelaşi amplasament în pagină a controalelor (în
partea dreaptă a figurilor, cu chenar) şi chiar unele controale comune (“Info”,
GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 85 -
“Close”). Acest aspect înlesneşte utilizarea unor aplicaţii diferite ca fond dar care
îmbracă aceeaşi formă.
Fig.10.3 Deşi cele două aplicaţii MATLAB tratează aspecte cu totul diferite, amplasamentul în pagină
eate identic. Acest fapt elimină confuzia şi dezorientarea utilizatorului.
Familiaritatea. Dacă interfaţa grafică este într-un anumit sens
familiară utilizatorilor aceştia vor învăţa mai repede să o utilizeze. GUI poate
să facă apel la experienţa utilizatorului pentru a grăbi înţelegerea acesteia.
Fig. 10.4. GUI trebuie să introducă elemente familiare utilizatorului
- 86 - Aplicaţia nr. 10
De exemplu, în fig. 10.4 se prezintă forma de undă (sus) şi analiza
spectrală (jos) a tonurilor generate de formarea unui număr de telefon. Pentru
generarea tonurilor se foloseşte chiar reprezentarea grafică a tastaturii acestuia.
Consideraţii privind aspectele dinamice la GUI
În momentul în care se interacţionează cu GUI, acţiunile trebuie să fie:
immediate, continue şi reversibile (fig.10.5).
IMEDIAT (direct)
CONTINUU (lin)
REVERSIBIL (prietenos, încurajator)
Fig.10.5 Principii ale aspectului dinamic al GUI
În acest sens este recomandată manipularea directă a datelor, ca şi când
acestea ar reprezenta un obiect solid. Având în vedere conceptele de acţiune
imediată şi continuă, se recomandă, dacă timpul de calcul o permite, afişarea
instantanee a rezultatului obţinut asupra datelor selectate. Dacă timpul de
calcul necesar unei acţiuni este semnificativ se recomandă folosirea unui buton
pentru invocarea acesteia.
În exemplul din fig.10.6 uitlizatorul are posibilitaea selecţiei directe a
GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 87 -
formei de undă (sus) după care transformata Fourier corespunzătoare acesteia va fi
afişată instantaneu (jos). Se poate ilustra astfel cu uşurinţă relaţia dintre semnal şi
transformata sa Fourier.
În final, reversibilitatea se referă la capacitatea de a anula efectul unei
sau mai multor acţiuni deja efectuate. Este uneori mai greu de implementat, dar
întotdeauna apreciată de utilizator. Capacitatea de anulare încurajează
experimentarea diverselor acţiuni şi dă un confort sporit în utilizarea GUI.
Fig.10.6 Exemplu de manipulare directa a datelor, cu afişarea instantanee
a rezultatului acţiunii
Se poate afirma în concluzie că pe baza principiilor mai sus enunţate,
crearea unei interfeţe grafice utilizator, în general, sau folosind mediul
MATLAB, în particular, presupune existenţa a două faze: proiectare şi
implementare (fig.10.7).
- 88 - Aplicaţia nr. 10
START Definirea Desenarea Testareaprocedurilor GUI designului
PROIECTARE
STOP Testarea Scriereacodului codului
IMPLEMENTARE
Fig. 10.7 Etapele realizării unei interfeţe grafice utilizator
2. Probleme
2.1 Proiectaţi şi implementaţi, folosind mediul MATLAB, o interfaţă grafică
utilizator pentru problema 4.3 din APLICAŢIA NR.4. Această interfaţă trebuie să
permită selecţia interactivă a:
- numărului de neuroni aferenţi stratului ascuns (uicontrol de tip “Edit”);
- ratei de învăţare (uicontrol tip “Slider”);
- funcţiei de antrenament (uicontrol de tip “ListBox”);
- cifrei aplicate la intrare (uicontrol de tip “Popup”);
- nivel zgomot (uicontrol tip “Slider”);
Totodată aplicaţia trebuie să dispună de butoane care să lanseze procesul de
antrenament şi pe cel de recunoaştere (uicontrol tip “Pushbutton”). Se va oferi
posibilitatea de vizualizare a desfăşurării procesului de antrenament şi a
rezultatelor procesului de recunoaştere (obiect de tip “Axes’). Pentru
GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 89 -
individualizarea categoriilor de acţiuni se va folosi un obiect de tip “frame” şi
“Text”.
În final interfaţa grafică utilizator va arăta ca cea din figura de mai jos.
Fig.10.8. Interfaţă grafică utilizator pentru cazul problemei 4.3 din APLICAŢIA nr.4.
Rezolvare:
În general, în construcţia unei interfeţe grafice, se începe, cf. fig. 10.7,
cu definiţia procedurilor pe care aceasta trebuie să le realizeze şi schiţarea, pe
hârtie, a amplasamentului obiectelor (axe, controale, etc.) în figură. Abia după
- 90 - Aplicaţia nr. 10
ce aceste lucruri sunt clare se va trece la etapele ulterioare.
În continuare se trece crearea figurii şi la amplasarea obiectelor în
figură (File → New → Figure). După ce s-a creat figura, se aplează GUIDE
(Graphical User Interface Development Enviroment) tastând guide de la
consolă sau File → Show GUI Layout Tool. Apoi se trece la controlul figurii
(Controlled #1, Apply). Se amplasează obiectele dorite în figură, eventual
activând şi opţiunile aferente figurii curente: Options → Snap Objects to Grid şi
Options → Display Grid (fig.10.9).
Fig.10.9 Guide şi interfaţa grafică care urmează a fi creată.
În final se leagă obiectele cu codul sursă aferent.
GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 91 -
Observaţii:
1. Oricărui obiect grafic MATLAB (vezi fig.10.10 pentru totalitatea
obiectelor disponibile) îi este atribuit un identificator unic,
denumit
handler. O modalitate simplă de determinare a handlerului unui obiect
o reprezintă funcţia findobj în conjuncţie cu nişte parametrii ce
specifică proprietăţi ale acelui obiect. De exemplu, fiecărui obiect i se
poate asocia o etichetă (“Tag”). În aceste condiţii determinarea
handlerului se va face astfel:
» handler_axa = findobj('Tag','Axes1')
2. La executarea acţiunilor permise (creearea, închiderea, accesarea)
asupra unui obiect se pot lansa anumite subrutine (“Callback). Acestea
pot fi incluse în obiectul de tip fereastră sau pot fi scripturi separate.
Fig.10.10 Totalitatea obiectelor grafice din mediul MATLAB.
a) Program principal
% Implementare unui perceptron multistrat pentru % clasificarea numerelor 0...9 % si a unei interfete grafice utilizator (GUI) % Catalin-Daniel Caleanu, 2000
%clear all close all clc
- 92 - Aplicaţia nr. 10
cifre={'0','1','2','3','4','5','6','7','8','9'}; fct_antr={'traingdm','traingdx','trainscg','trainlm'};
% se incarca imaginile binarizate ale cifrelor din fisierul cifre.mat % matricile x0...x9 au dimensiunea 8x5 load cifre
% se formeaza matricea P a vectorilor de intrare P = [x0(:) x1(:) x2(:) x3(:) x4(:) x5(:) x6(:) x7(:) x8(:) x9(:)];
% se formeaza matricea vectorilor de iesire % de exemplu, pentru x0 aplicat la intrare, vectorul de iesire este: % 1 0 0 0 0 0 0 0 0 0 T = eye(10);
% matricea PR specifica valorile min si max pentru cele 40 (8x5) % de intrari ale MLP for i=1:40
PR(i,:)=minmax(P(:)'); end
% apelare GUI fig_l10
b) Faza de antrenament
% se preiau datele din GUI % referitoare la parametrii proc. de antr.
ha1=findobj('Tag','Axes1'); axes(ha1);
handler_edit1 = findobj('Tag','EditText1'); handler_slider1 = findobj('Tag','Slider1'); handler_listbox1 = findobj('Tag','Listbox1');
nr_neur_asc = eval(get(handler_edit1,'String')); rata_inv = get(handler_slider1,'Value'); fct_antr_sel = mat2str(cell2mat(fct_antr(get(handler_listbox1,'Value'))));
% se creeaza obiectul net net= newff(PR,[nr_neur_asc 10],{'tansig' 'logsig'},fct_antr_sel);
GUI pentru o aplicaţie cu RNA folosind mediul MATLAB - 93 -
% se definesc alti parametrii ai RNA (rata de invatare, moment, etc.) net.trainParam.lr=rata_inv; net.trainParam.mc=0.7; net.trainParam.min_grad=1e-10; net.trainParam.show = 1; net.trainParam.epochs = 400; net.trainParam.goal = 0.001;
% incepe procesul de antrenament [net,tr]= train(net,P,T); set(gca,'Tag','Axes1');
c) Etapa de utilizare
% faza de utilizare a retelei % se testeaza capacitatea de recunoastere pentru cazul cand tiparele % sunt afectate cu zgomot
ha2=findobj('Tag','Axes2'); ha3=findobj('Tag','Axes3'); ha4=findobj('Tag','Axes4');
handler_slider2 = findobj('Tag','Slider2'); handler_PopupMenu1 = findobj('Tag','PopupMenu1'); cifra = get(handler_PopupMenu1,'Value'); zgomot = get(handler_slider2,'Value');
axes(ha2); imshow(reshape(P(:,cifra),8,5)); set(gca,'Tag','Axes2');
% s-a definit in prealabil o functie xi = noise (xi, zgomot) % care contamineaza biti matricii "xi" in proportie de "zgomot [%]" cifra_zgomot = reshape(noise(P(:,cifra),zgomot),8,5); axes(ha3); imshow(cifra_zgomot); set(gca,'Tag','Axes3');
[y,i] = max(sim(net,cifra_zgomot(:)),[],1); cifra_recunoscuta=i-1; axes(ha4); imshow(reshape(P(:,cifra_recunoscuta+1),8,5)); set(gca,'Tag','Axes4');
- 94 - Aplicaţia nr. 10
Fig.10.11 Interfaţa grafică funcţională.
În final, prin legătura controalelor la subrutinele corespunzătoare, se obţine o
interfaţă grafică utilizator funcţională (fig.10.11).
ANEXA NR.1
Simulatorul analogic de reţele neuronale
celulare
MATCNN -prezentare generală
1. Introducere
MATCNN [15] este o colecţie de funcţii şi scripturi care permit simularea şi
testarea RNC cu un singur strat. El a fost conceput pe suportul matematic şi de
vizualiare oferit de mediul MATLAB şi în consecinţă poate fi utilizat ca orice alt
"toolbox" din mediul de lucru amintit. Mai mult decât atât, codul sursă al diferitelor
subrutine fiind disponibil utilizatorului, poate fi eventual modificat şi adaptat
cerinţelor aplicaţiei.
Câteva caracteristici ale simulatorului, ce merită a fi subliniate:
MATCNN permite elaborarea de algoritmi analogici şi logici bazaţi pe RNC.
Simulatorul include o bibliotecă predefinită de template-uri* (operatori) utilizate
frecvent în operaţiile cu RNC (fişierul temlib.m); există însă posibilitatea completării
bibliotecii cu noi operatori, definiţi de utilizator.
MATCNN oferă suportul necesar elaborării de fişiere MEX, utile în cazul
folosirii mediului MATLAB sub sistemele de operare MS WINDOWS şi UNIX [15].
Simulatorul MATCNN este conceput pentru a fi utilizat în mediul MATLAB
versiunile 4.2-5.0 şi Image Processing Toolbox 1.0-2.0; cu mici modificări ale
funcţiilor şi scripturilor simulatorului este posibilă utilizarea acestuia şi în versiuni
MATLAB mai recent elaborate (versiunea 5.3).
Ecuaţiile diferenţiale ce intervin în modelul RNC sunt integrate numeric,
utilizând formula directă a lui Euler.
* Termenul “template” a fost preluat direct din literatura de limbă engleză în lipsa unui termen potrivit, echivalent, în limba română.
v
- 96 - Anexa nr.1
Principala aplicaţie a RNC fiind, cel putin pâna în momentul de faţă,
prelucrările de imagini [7], simulatorul MATCNN a fost elaborat pentru a fi utilizat cu
precădere în acest domeniu. Pot fi procesate imagini cu nuanţe de gri, normalizate în
intervalul [-1,+1] respectiv imagini binare, cu valori de -1 şi/sau +1 (-1 corespunde la
alb, +1 la negru, iar nivelurile de gri sunt reprezentate prin valori cuprinse în intervalul
(-1,+1) ).
2. Modelul general de RNC utilizat în MATCNN
Pentru o utilizare corectă şi eficientă a simulatorului MATCNN este necesară
cunoaşterea modelului de RNC ce a stat la baza elaborării lui. Se prezintă în
continuare RNC modelată de acest simulator, împreună cu o serie de noţiuni şi
consideraţii utile din punct de vedere aplicativ.
MATCNN permite implementarea de RNC cu un singur strat, constând
dintr-un tablou bidimensional de celule identice Cij, 1 i M si 1 j N
Comportamentul dinamic al fiecărei celule este descris de următoarea ecuaţie
diferenţială ordinară şi neliniară (pentru aprofundarea chestiunilor a se consulta [7]):
1 (t) R
v t A v t B v tI xij xij ij,kl ykl ij,
kl ukl ijkl N r kl N r
A ˆ ( v ) ˆ B ( v ) ˆ D ( v )(A1.1)
kl N r
ij ,kl yy kl N r
ij ,kl uu kl N r
ij , kl
iar mărimea la ieşiere ei este dată de relaţia:vyi
j(t ) f (v (t )) 0 5( |
xij
v ( t ) 1| | v ( t ) 1| ) , (A1.2)xij xij
cu notaţiile:
v yy v tv t
ykl yiy
v v t v t (A1.3)uu ukl uij
v v t v tu,x,ykl u,x,yij
A
A
A
Simulatorul analogic de reţele neuronale celulare MATCNN - 97 -
|v (t ) | 1 , | v (t ) | 1 , | Iij | v , 1 iM , 1 jN
x ij u ij max
În relaţiile de mai sus tensiunile v , v , v reprezintă starea, intrarea şi xij uij yij
respectiv ieşirea unei celule Cij . În cursul unei operaţii de procesare starea şi ieşirea
variază în timp, pe când intrarea rămâne nemodificată. Prin Nr a fost notată
vecinătatea de raza r a unei celuleC A şi B reprezintă operatori liniari de
ij ij,kl ij,kl
reacţie şi respectiv de comandă iar Iij este curentul celulei (de regulă invariant în
spaţiu).
ˆ , Bˆ şi Dˆ sunt operatori neliniari care se aplică diferenţelorij , kl
generalizate v
ij ,kl
yy , v uu
ij , kl
şi respectiv v . Mai exact, ˆij ,kl
repezintă operator de reacţie
comandat prin diferenţă, B ˆeste operator de comandă comandat prin diferenţă iar
ij,kl
Dˆ este un operator neliniar generalizat (care îl include atât pe ˆ cât şi peij,kl ij,kl
Bˆij,kl ). Trebuie observat apoi că funcţia f, ce defineşte caracteristica de ieşire este
funcţia sigmoid, aproximată liniar pe porţiuni. În fine, RC reprezintă constanta
de timp a unei celule; în cele ce urmează se va considera R 1, C 1 şi deci şi
1 , situaţie ce caracterizează, printre altele, RNC standard (cel mai frecvent
utilizate în aplicaţii [7]).
Din cele expuse până în prezent rezultă că unei RNC i se poate asocia cu
uşurinţă o imagine (câte un pixel pentru fiecare celulă). Pe de altă parte, deoarece
fiecare celulă este caracterizată de anumiţi parametri respectiv semnale (vezi
rel.(A1.1), este convenabil ca aceste mărimi să fie şi ele aşezate ordonat, în tablouri
bidimensionale, în corespondenţă cu stratul de celule Cij.
În consecinţă, RNC cu un singur strat va fi tratată în continuare, din punctul
de vedere al calculelor, ca o structură cu mai multe straturi ("imagini")
bidimensionale. Imaginile notate cu U, X şi Y reprezintă intrarea, starea şi respectiv
- 98 - Anexa nr.1
ieşirea celulelor reţelei. Se utilizează frecvent şi următoarele straturi:
- aşa-numitul strat de polarizare al reţelei, notat cu B, care reprezintă - sub forma unei
imagini cu nuanţe de gri - componenta variant în spaţiu din curentul fiecărei celule;
- aşa-numitul strat mască, notat cu M, care specifică printr-o imagine binară faptul că o
celulă este activă (pixelul corespunzător este egal cu +1) sau este inactivă (pixelul
corespunzător este egal cu -1).
Unii operatori (de exemplu ˆ Dij,kl ) pot avea două valori de intrare, specificate
prin imaginile U1 şi U2 .
Observaţii: Dacă nu sunt precizate explicit valori pentru straturile I şi M, atunci stratul
de polarizare se presupune nul respectiv toate celulele sunt active. Utilizarea celor
două straturi menţionate mai sus permite încorporarea în algoritmii cu RNC a unei
adaptabilităţi spaţiale, liniare în cazul stratului I şi neliniare în cazul stratului M.
3. Modele de RNC cu template-uri liniare şi neliniare
Operaţiile de procesare pe care le realizează o RNC depind în esenţă de natura
operatorilor ce intervin în ecuaţia de stare, dată de rel. (A1.1). Template-urile incluse
implicit în biblioteca MATCNN reprezintă operatori desemnaţi în literatura de
specialitate ca fiind cei mai utili în prelucrarea imaginilor - principalul domeniu
aplicativ al RNC - şi în plus conduc la implementări VLSI de complexitate scăzută
[15]. Template-urile din MATCNN pot fi clasificate după cum urmează:
- template-uri liniare, care includ numai termenii liniari A şi B şi curentul I al
celulei;
- template-uri neliniare de tipul "A-B", care conţin termenii liniari A, B , termenii
neliniari Â, Bˆ şi curentul I al celulei;
- template-uri neliniare de tipul "D", care constau din termenii liniari A, B , termenul
neliniar generalizat Dˆ şi curentul celulei ( I ).
Ne propunem în cele ce urmează o scurtă trecere în revistă a modelelor de
v
Simulatorul analogic de reţele neuronale celulare MATCNN - 99 -
RNC asociate acestor tipuri de template-uri precum şi forma în care sunt reprezenatate
aceste template-uri în MATCNN.
Observaţie: Din considerente practice, template-urile din bibliteca MATCNN
poartă denumiri care sugerează operaţia de procesare pe care o implementează, aşa după
cum va rezulta în continuare.
Template liniar: [A B I]
Ecuaţia de stare asociată este de forma:
tv tA v t B v tI (A1.4)
xij xij kl N r
ig,kl ykl kl N r
ij,kl ukl ij
Forma de reprezentare în biblioteca MATCNN:
Exemplul 1: Template-ul EDGE - operator care realizează detecţia muchiilor într-o
imagine binară.
EDGE_A = [0 0 0;
0 2 0;
0 0 0];
EDGE_B = [-0.25 -0.25 -0.25
-0.25 2 -0.25
-0.25 -0.25 -0.25];
EDGE_I = -1.5;
Exemplul 2: Template-ul DIFFUS - operator care realizează difuzia (are termenul liniar
B nul).
DIFFUS_A = [0.1 0.15 0.1;
0.15 0 0.15;
0.1 0.15 0.1];
Template neliniar de tipul "AB": [A B A
v
ˆv
- 100 - Anexa nr.1
DIFFUS_I = 0;
Ecuaţia de stare asociată:
( t) v t
ˆ Bˆ I]
A v t B v tI
xij xij
kl N r
ˆ A
ij, kl ykl
( v )
kl N r
ij ,kl ukl ij
(A1.5)ˆ B ( v )
kl N r
ij ,kl yy kl N r
ij , kl uu
Forma de reprezentare în MATCNN:
Exemplu: Template-ul GRADIENT - operator care realizează detecţia de contur pe
bază de gradient (termenul liniar B precum şi termenul neliniar  sunt nuli).
GRADT_A = [0 0 0;
0 2 0;
0 0 0];
GRADT_Bb = [1 1 1;
1 0 1;
1 1 1];
GRADT_b = [13 -33 00 33];
GRADT_I = -1.8;
În legatură cu funcţia GRADT_b, care exprimă interacţiunea neliniară, se va reveni în
continuare.
Operatori neliniari de tipul D: [A B D I]
Ecuaţia de stare asociată este de forma:
xij (t) vxij t A ij,kl v ykl t Bij,klvukl t IijDij,kl (v)(A1.6)klNr klNr
Simulatorul analogic de reţele neuronale celulare MATCNN - 101 -
Forma de reprezentare în MATCNN:
Exemplul 1: Template-ul MEDIAN - realizează filtrarea mediană (termenul liniar B şi
curentul I al celulei sunt nuli).
MEDIAN_A = [0 0 0;
0 1 0;
0 0 0];
MEDIAN_Dd = 0.5 * [1 1 1;
1 0 1;
1 1 1];
MEDIAN_d = [ 02 0-1 21 12 ]; (funcţie care exprimă interacţiunea neliniară).
Exemplul 2: NLINDIFF - realizează difuzia neliniară (termenul liniar B şi curentul I
al celulei sunt nuli)
NLINDIFF_A= [0 0 0 ;
0 1 0;
0 0 0];
NLINDIFF_Dd = 0.5 * [1 1 1;
1 0 1;
1 1 1];
NLINDIFF _d = [ 02 0-1 21 12 ]; (funcţie care exprimă interacţiunea neliniară).
Specificarea funcţiilor neliniare în template-urile de tip "AB" respectiv "D"
Din exemplele prezentate s-a putut observa că în operatorii Aˆ , Bˆ şi Dˆ , intervin
funcţiile a,b şi d - care determină interacţiunile neliniare dintre celule. Aceste funcţii
pot fi exprimate prin aproximare pe porţiuni, cu valori constante (piecewise-constant
pwc) sau variaţii liniare (piecewise-liniar pwl). Specificarea lor în MATCNN se face
- 102 - Anexa nr.1
după cum urmează:
Pentru a şi b: [ interp p_num x_1 y_1 x_2 y_2 . . . . x_n y_n ]
unde: interp - indică metoda de interpolare: 0 - pwc şi 1 - pwl
p-num - reprezintă numărul de puncte
x1 y1 - ordonata şi abscisa primului punct
xn yn - ordonata şi abscisa ultimului punct.
Exemplu: în operatorul GRADIENT se declară la un moment dat:
GRADT_b = [13 -33 00 33];
Aest fapt specifică o funcţie neliniară, aproximată prin interpolare liniară între trei
puncte: (-3,3), (0,0), (3,3).
Observaţie: conform rel.(A1.3), funcţiile a şi b se aplica întotdeauna diferenţelor între
intrările sau între ieşirile a două celule învecinatate.
Pentru d: [ interp p_num x_1 y_1 x_2 y_2 ... x_n y_n intspec]
unde: interp - indică metoda de interpolare: 0 - pwc şi 1 - pwl
p-num - reprezintă numărul de puncte
x1 y1 - ordonata şi abscisa primului punct
xn yn - ordonata şi abscisa ultimului punct.
intspec - parametru ce specifica interacţiunea.
Codurile valide pentru parametrul intspec, prin care se precizează argumentul Δv în
funcţia neliniară d(Δv), sunt după cum urmează:
11 Δv = vukl - vuij
12 Δv = vukl - vxij
13 Δv = vukl - vyij
21 Δv = vxkl - vuij
Simulatorul analogic de reţele neuronale celulare MATCNN - 103 -
22 Δv = vxkl - vxij
23 Δv = vxkl - vyij
31 Δv = vykl - vuij
32 Δv = vykl - vxij
33 Δv = vykl - vyij.
Pentru specificarea unor interacţiuni de forma d(Δv)(Δv), se va aduna la codul de
mai sus codul 100.
Observaţii: Se observă uşor că interacţiunile precizate de codurile 11 şi 33 sunt cele
corespunzătoare funcţiilor neliniare a şi b. Din acest motiv Dˆ se numeşte operator
generalizat, el incluzând ambii operatori: Aˆ şi Bˆ.
Interacţiuni, ca cele specificate prin codurile de mai sus, fac cu putinţă
exprimarea unor operatori (cum sunt filtrare statistică, difuzia neliniară, etc.), ca simpli
operatori de RNC.
Pentru clarificarea ideilor se prezintă în continuare câteva exemple.
Exemplul 1: (se referă la template-ul MEDIAN)
MEDIAN_d = [ 02 0-1 21 12 ];
Operaţia specificată mai sus este o limitare cu funcţia treaptă (între punctele (0,-1) şi
(2,1)) aplicată diferenţei între intrările şi stările celulelor învecinatate (cod: 12). O
neliniaritate de tip sigmoidal (interpolare liniara pwl, între 4 puncte) ar necesita o
funcţie de forma:
MEDIAN_d = [ 12 -2-1 -0.5-1 0.51 21 12 ];
Exemplul 2: (are în vedere operatorul NLINDIFF)
NLINDIFF = [ 12 -20 -0.10 01 0.10 20 122 ];
acesta specifică o funcţie neliniară rezultată prin interpolare liniară (pwl) între 5
puncte: (-2,0), (-0.1,0), (0,1), (2,0) şi care se aplică diferenţelor între stările celulelor
învecinate (codul 22 din suma 122 = 22 + 100 ). Adiţionarea codului 100 indică faptul că
rezultatul obţinut la operaţia precedentă trebuie multiplicat cu Δv.
- 104 - Anexa nr.1
4. Simularea unei aplicaţii cu RNC
Elaborarea unui program de simulare a unei aplicaţii cu RNC se conformează
regulilor cunoscute pentru orice alt program ce ruleaza în mediul MATLAB [3]. În
consecinţă, programul va include funcţii şi scripturi şi va face uz de variabile
(globale).
O listă completă cu scripturile, funcţiile şi variabilele globale cu care operează
MATCNN este prezentată la pct.5. În cele ce urmează se va descrie pe scurt,
anticipând, câteva dintre variabilele globale utilizate pe parcursul acestui paragraf.
O primă cartegorie de variabile sunt cele corespunzătoare imaginilor asociate
modelului de RNC utilizat în MATCNN (pct. 2) şi care include variabilele:
INPUT1 - U sau U1 (imagine de intrare primară a modelului de RNC)
INPUT2 - U2 (imagine de intrare secundară a modelului de RNC)
STATE - X (imaginea de starea)
OUTPUT - Y (imaginea aferentă ieşirii modelului de RNC)
BIAS - B (imaginea de polarizare (bias map) a modelului de RNC)
MASK - M (imagine mască a modelului de RNC).
Observaţii:
Se subliniază că suma dintre curentul constant I al unei celule, ce intervine în modelul
dat de rel.(A1.1) şi valorile de polarizare variant în spaţiu, date de Bij , reprezintă
curentul variant în spaţiu din modelul de RNC ( I I B ).
Masca M este o imagine binară ( M ij
celulă este activă ( M 1 ) sau inactivă ( M
ij ij
1 sau -1), care specifică dacă o
1 ). ij ij
Valorile implicite pentru elementele imaginilor BIAS şi MASK sunt 0
(polarizare nulă) respectiv 1 (toate celulele active).
Simulatorul analogic de reţele neuronale celulare MATCNN - 105 -
Operatorii aritmetici, logici şi de tip Dˆ pot avea două valori de intrare: U =
U1 şi U2.
O a doua categorie de variabile globale sunt cele care se impun a fi iniţializate
de către utilizator (înainte de efectuarea simulării propriu-zise). Acestea sunt
următoarele:
UseMask - validează (UseMask = 1) sau invalidează (UseMask = 0 ) utilizarea
imaginii mască M
UseBiasMap - validează (UseBiasMap = 1) sau invalidează (UseBiasMap = 0)
utilizarea imaginii de polarizare
Boundary - variabila prin care se specifică condiţiile de frontieră:
-1 Boundary 1
zero flux (Boundary = 2)
torus (Boundary = 3)
TemGroup - permite precizarea bibliotecii din care vor fi extraşi template-urile
apelate în program; valoarea implicită este TemLib
TimeStep - specifică intervalul dintre două momente discrete de timp la care au
loc doua iteratii succesive; are valoarea implicita TimeStep = 0.2
IterNum - precizează numărul de iteraţii care au loc pentru o simulare.
Observaţii:
Precizări suplimentare privind condiţiile de frontieră, specificate aici prin variabila
globală Boundry, sunt date în [7].
Exista şi o a doua categorie de variabile globale, utilizate şi modificate de
funcţiile şi scripturile MATCNN şi care nu trebuie modificate de către utilizator.
Aceste variabile sunt prezentate la pct. 5.
Se prezintă în continuare etapele de elaborare a unui program pentru simularea
unei aplicaţii cu RNC şi vizualizarea rezultatului obţinut:
se specifică utilizarea mediului de simulare MATCNN şi denumirea
- 106 - Anexa nr.1
bibliotecii de unde vor fi extrase template-urile; spre exemplu:
SetEnv; - se setează mediul de simulare MATCNN
TemGroup = 'MyTemLib'; - operatorii sunt extraşi din biblioteca conţinută în
fişierul mytemlib.m.
Observaţie: În timp ce specificarea mediului de simulare MATCNN este întotdeauna
necesară, declaraţia privind biblioteca utilizată poate lipsi; în acest ultim caz,
simulatorul operează cu biblioteca implicită a mediului (fişierul temlib.m).
se iniţializează imaginile aferente intrării şi respectiv stării modelului de RNC
INPUT1 = LBmp2CNN('Road'); - road.bmp este încărcată la intrare
STATE = zeros(size(INPUT1)); - toate valorile iniţiale ale stării sunt puse pe zero.
Observaţie: Iniţializarea intrării este opţională în timp ce iniţializarea stării este
întotdeauna necesară; în această fază pot fi adiţionate zgomote la imaginile utilizate
(cu scop de testare).
se specifică utilizarea/neutilizarea imaginii de polarizare şi a imaginii mască,
după cum urmează:
UseBiasMap = 1; - s-a setat utilizarea imaginii de polarizare
UseMask = 0; - şi nu se va folosi imaginea mască.
Observaţie: Dacă s-a optat pentru utilizarea imaginii de polarizare/mască, atunci
imaginile respective trebuie mai întâi iniţializate. Scriptul MATCNN SetEnv
iniţializează aceste variabile globale cu zero.
se precizează condiţiile de frontieră; de exemplu:
Boundary = -1; - variabila Boundary se face egală cu -1.
se setează parametrii ce caracterizează procesul de simulare: intervalul de
timp între două iteraţii succesive si numărul de iteraţii aferente întregului
proces de simulare.
Spre exemplu:
TimeStep = 0.1; - intervalul de timp între două iteraţii egal cu 0.1
IterNum = 100; - numărul de iteraţii stabilit la 100.
Observaţii: Valorile implicite TimeStep = 0.2 şi IterNum = 25, conduc la un interval
Simulatorul analogic de reţele neuronale celulare MATCNN - 107 -
de timp, pe durata căruia este simulat comportamentul RNC, egal cu 5 secunde. Pentru
valorile uzuale R = 1, C = 1 şi deci τ = 1, acest interval corespunde la 5τ, situaţie în
care se poate considera că regimurile tranzitorii din reţea sunt practic încheiate şi că
toate celulele au atins regimul staţionar. Prin urmare, valorile implicite pentru
TimeSetup şi IterNum satisfac în situaţiile practice curente. Cu toate acestea, anumiţi
operatori necesită alte valori pentru parametrii procesului de simulare [15].
se încarcă, din biblioteca deja specificată, template-ul care determină efectiv
modelul de RNC. Spre exemplu:
LoadTem('EDGE'); - este încărcat template-ul EDGE.
Observaţie: Este util ca template-urile aferente unei aplicaţii cu reţele neuronale să fie
memorate într-o bibliotecă (fişier-M), care se setează ca biblioteca curentă (utilizind
TemGroup).
se lansează în execuţie procesul de simulare:
RunTem - se execută simularea cu operatorul specificat.
se vizualizează rezultatul simulării:
CNNShow(OUTPUT) - vizualizează imaginea de la ieşirea RNC.
Observaţie: Deoarece atât intrările cât şi ieşirile unei RNC sunt imagini, la evaluarea
peformanţelor reţelei se recomandă utilizarea facilităţilor de procesare (scalări,
modificarea nuanţelor de gri, etc.) oferite de Image Processing Toolbox, din mediul
MATLAB.
5. Lista funcţiilor, scripturilor şi a variabilelor globale din MATCNN
Fişiere - M din MATCNN (scripturi şi funcţii)
Scripturi şi funcţii de bază:
SetEnv - setează mediul MATCNN şi iniţializează variabilele globale
ShowEnv - afişează valorile variabilelor globale din mediul MATCNN
- 108 - Anexa nr.1
ShowTem - afişează template-ul efectiv încărcat în mediul MATCNN
RunTemp - lansează în execuţie template-ul deja încărcat
CNNShow - vizualizează o imagine tip RNC
TemLib - biblioteca implicită cu template-uri a mediului MATCNN
Scripturi şi funcţii diferite
CNN2Gray - converteşte o imagine tip RNC într-o imagine cu nuante de gri
Gray2CNN - converteşte o imagine cu nuanţe de gri într-o imagine tip RNC
CBound - adaugă o frontieră specificată la o imagine tip RNC
CImNoise - suprapune zgomot peste o imagine de tip RNC
LBmp2CNN - încarcă un fişier BMP de pe disc şi îl converteşte într-o imagine tip
RNC
SCNN2Bmp - salvează pe disc, în format BMP, o imagine de tip RNC
Fişire - MEX din MATCNN
Fişiere de bază
tlinear - simulează un operator liniar de RNC
tnlinab - simulează un operator neliniar de tipul “AB”
tnlind - simuleaza un operator neliniar de tip “D”
Fişiere speciale, care implementează diferite filtre speciale:
tmedian - simuleaza un operator care realizează filtrarea mediană
tmedianh - operator pentru filtrarea mediană, cu aplicaţii în studiul sistemelor cu
neliniarităţi de tip histereză
tanisod - simulează operatorul de difuzie anisotropică
modfilt - operator care implementează filtre modale.
Simulatorul analogic de reţele neuronale celulare MATCNN - 109 -
Variabile globale din MATCNN (lista completă) (valorile implicite sunt trecute în
/./ ).
Variabile globale cărora li se asigneaza valori prin program:
UseBiasMap - validează (UseBiasMap = 1) sau invalidează (UseBiasMap = 0)
utilizarea imaginii de polarizare; / 0 /
UseMask - validează (UseMask = 1) sau invalidează (UseMask = 0 ) utilizarea
imaginii mască M / 0 /
Boundary - variabila prin care se specifică condiţiile de frontieră:
-1 Boundary 1
zero flux (Boundary = 2)
torus (Boundary = 3); / 2 /
TemGroup - permite precizarea bibliotecii din care vor fi extrase template-urile
apelate în program; / “TemLib” /
TimeStep - specifică intervalul dintre două iteraţii succesive; / 0.2 /
IterNum - precizează numărul de iteraţii care au loc pentru o simulare; / 25 /.
Variabile globale modificate de funcţiile şi scripturile din MATCNN:
TemName - numele operatorului actual; / ‘’’’’’ /
TemNum - numărul de ordine al operatorului efectiv utilizat în program / 0 /
TemType - tipul operatorului actual: 0- liniar, 1- neliniar de tipul “AB”,
2- neliniar de tipul “D”; / 0 /
Atem - reacţie liniară; / 0 /
Btem - comandă liniară; / 0 /
At_n - reacţie neliniară; / 0 /
nlin_a - funcţia neliniară din reacţie; / 0 /
Bt_n - comandă neliniară; / 0 /
nlin_b - funcţie neliniară de comandă; / 0 /
Dt_n - interacţiune neliniară generalizată; / 0 /
- 110 - Anexa nr.1
Nlin_d - funcţia neliniară din termenul generalizat; / 0 /
I - curentul celulei; / 0 /
Run Text - afişează numele operatorului, numărul lui de ordine, intervalul între
două iteraţii succesive, numărul total de iteraţii şi apelul modulului
de raportare, înainte ca operatorul respectiv să fie lansat în execuţie
INPUT1 - U sau U1 (imagine de intrare primară a modelului de RNC)
INPUT2 - U2 (imagine de intrare secundară a modelului de RNC)
STATE - X (imaginea de stare)
OUTPUT - Y (imaginea aferentă ieşirii modelului de RNC)
BIAS - B (imaginea de polarizare (bias map) a modelului de RNC)
MASK - M (imagine mască a modelului de RNC).
6. Instalarea toolbox-ului MATCNN în mediul MATLAB
Programul MATCNN este disponibil si poate fi încarcat, sub forma arhivată,
de la adresa http://lab.analogic.sztaki.hu/MATCNN/index.html. După dezarhivare se
copiază întreg directorul matcnn în directorul cu toolbox-uri din mediul MATLAB:
(<matlab>\toolbox). Pentru ca noul program să poata fi utilizat la fel ca oricare alt
toolbox, se adaugă în fişierul master matlabrc.m, ce se execută automat la lansarea în
execuţie a mediului MATLAB, calea: addpath('C:\MATLABR11\toolbox\Matcnn');.
Pentru salvarea fişierelor cu aplicaţii se recomandă utilizare directorului work
(<matlab>\work), aflat la dispoziţia utilizatorului.
Bibliografie
[1] * * * - “MATLAB Function Reference”, vol.1: Language, ver.5, The
MATHWORKS Inc., 1999.
[2] www.mathworks.com.- The MATHWORKS Inc.
[3] M. Ghinea, V. Fireţeanu, - “MATLAB. Calcul numeric-Grafică-Aplicaţii”,
Ed.
Teora, 1995.
[4] H. Demuth, M. Beale - “Neural Network Toolbox. User’s Guide”, ver.3.0,
1998. [5] S. Haykin - “Neural Networks: A Comprehensive Foundation”,
Second Edition,
IEEE Press 1999.
[6] G. Toderean, M. Coşteiu, M. Giurgiu - “Reţele neuronale”, Ed. Microinformatica,
Cluj-Napoca, 1994.
[7] V. Tiponuţ, C.D. Căleanu - "Reţele neuronale. Arhitecturi şi
algoritmi", Ed.
Politehnica, Timişoara, 2000.
[8] Cichocki A., Unbehauen R., - “Neural Networks for Optimization and
Signal
Processing”, John Wiley & Sons, 1993.
[9] C.D. Căleanu, L. Petropoulakis - “Improved Training of Multilayer
Feedforward
Neural Networks for Large Input Vectors”, Proc. 8th IEEE Med. Conf. Control
and
Aut., Rio, Patras, Greece, 2000.
[10] H. Demuth, M. Beale - “Neural Network Toolbox. User’s Guide”, ver.3.0,
The
MATHWORKS Inc., 1998.
[11] D. Dumitrescu, H. Costin - “Reţele neuronale. Teorie şi aplicaţii”, Ed.
Teora,
1996.
[12] J. Hertz, A. Krogh, R. Palmer - “Introduction to the Theory of Neural
Computation”, Lectures Notes, Santa Fe Institute, Addison-Wesley Publishing
Company, 1995.
[13] C. Lau (Ed.) - "Neural Networks. Theoretical Foundations and
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 - colecţia anilor 1996-1999.