Professional Documents
Culture Documents
Autorii
Cuprins
Aplicaţia 10. Crearea unei interfeţe grafice utilizator pentru o aplicaţie cu RNA
(C.D. Căleanu) folosind mediul MATLAB……………………………………...pag.83
Bibliografie…………………………………………………...………...pag.111
APLICAŢIA NR. 1
Introducere în MATLAB
1. Generalităţi
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.
Fig.1.3 Apelul funcţiei sumă, cu parametrii (6,4). Logic, rezultatul returnat va fi 6+4 = 10.
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 .
!∀ 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
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.
3. Experimente
Rezolvare:
%Operatii cu matrici
%Catalin-Daniel Caleanu, 2000
clear all
close all
clc
pause
disp('referirea unui element al unei matrici: A(2,1)')
A(2,1)
pause
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
Rezolvare:
%Instructiuni de control
%Catalin-Daniel Caleanu, 2000
Introducere în MATLAB - 17 -
clear all
close all
clc
disp(' ')
disp('executarea conditionata a instructiunilor: IF, ELSEIF,
ELSE')
disp(' ')
nr = input('introduceti un numar: ')
if nr > 10
disp('nr > 10')
elseif nr < 10
disp('nr < 10')
else
disp ('nr = 10')
end
pause
disp(' ')
disp('Repetarea unui grup de instructiuni de un numar nedefinit
de ori: WHILE')
disp(' ')
i=4
while i>0
i=i-1
end
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
1. Introducere
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ă
axon
nucleu
corpul celulei
dendrite
x1
x2 uk yk
Σ φ
xN θk
N
y k ( ∀ w kj x j ) (2.2)
# % j# 0
cu x0 = -1 şi wk0 = ! k.
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
Î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).
5. Probleme
Rezolvare:
%Reprezentare functii de activare
%Catalin-Daniel Caleanu, 2000
clear all
close all
clc
n = -4:0.001:4;
subplot(1,4,1)
plot(n,a1,'linewidth',2,'color','b');
Modele ale neuronilor şi ale reţelelor neuronale artificiale - 25 -
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')
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
% x = vector de intrare
x = [0.1 0.3 -0.8 0.5]
- 26 - Aplicaţia nr. 2
% y = iesirea neuronului
y1 = purelin(x*w'-theta)
y2 = logsig(x*w'-theta)
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
-1
x1 -1 1
0,5
0,2
-0,2 y
x2 1 -2
-0,1
-1
Fig.2.7 Reţea neuronală feedforward (pentru problema 5.4).
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)
» 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).
0 1 2
Input
5.6 Evidenţiaţi comparativ avantajele şi dezavantajele RNA total conectate faţă de RNA
parţial conecte.
1. Introducere
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
N w1 I
T x2 y E
R Ş
Ă I
R θ R
wN E
I xN
-1
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
∃ w#
i!1
i xi ∀ % ! 0 (3.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
∋ 1 )! w (n ) ∋ &[ d (n ) ∀ y (n )])x (n )
în care :
∗ ∋ 1 , dac ã x ( n )
+ C1
d( n ! )
)
( ∀ 1, dacãx(n) + C2
d) Incrementarea lui n cu o unitate şi salt la pct.b)
Perceptronul simplu. Algoritmul LMS - 31 -
e( n) ! d (n ) ∀ y
(n )
e ( n )x ( n), k ! 1 ,2,..., N
w (n ∋ 1)! w (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 T
∀ 1 ),..., x( 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
w1
x2 y
Σ
wN e
xN Σ
θ
4. Probleme
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)
-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
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].
x1
y1
x2
yM
xN
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:
e
j (n ) ∀ d (n ) ! y (n ) (4.1)
j j
Astfel, suma erorilor pătratice pentru toţi neuronii stratului de ieşire, este:
1
E (n ) # 2
j (n ) (4.2)
∀ 2
e
j∃ C
& 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 -
în care ) j (n) reprezintă valoarea gradientului local al erorii iar vj(n) intrarea netă a
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∃ Cl
ji i
! 1
î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 )
1 ), ∋) (n ) y (n ) (4.7)
∀ +& w (n !
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
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:
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]
100
10-2
Fig.4.2 Evoluţia erorii medii pătratice de-alungul procesului de antrenamet (problema 4.1)
Rezolvare:
% Implementare unui perceptron multistrat pentru %
cazul interpolarii unei functii
% Catalin-Daniel Caleanu, 2000
clear all
close all
clc
% antrenarea retelei
[net1,tr1]= train(net1,P,T);
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')
0.8
0.6
0.4
0.2
0
0 0.2 0.4 0.6 0.8 1
x
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
Rezolvare:
% Implementare unui perceptron multistrat pentru %
clasificarea numerelor 0...9
% Catalin-Daniel Caleanu, 2000
clear all
close all
clc
(8x5)
% de intrari ale MLP
for i=1:40
PR(i,:)=minmax(P(:)');
end
Rezolvare:
- 44 - Aplicaţia nr. 4
1. Introducere
2. Metoda Darken-Moody
2
100 101 102 103
Nr. de epoci
3. Regula delta-delta
( c 1 ∗ ∀( k ) 1
perf ( w ( k )) , perf ( w ( k ) 1 )
), if
%
∀ ( k) ∃ c∗ ∀ ( k if perf ( w ( k )) + c ∗ perf ( w ( k ) 1 )(5.2)
) 1 ),
∋ 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 -
p(n perf ( n )
)∃ (5.3)
perf ( n ) 1 )
şi variaţia relativă a p(n):
perf ( n perf ( n ) 1 )
−p ( n ) ) (5.4)
) perf ( n ) 2)
∃
perf ( n
) 1)
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.
î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 g(n# 1)
# 1 T (5.9)
) g(n)
g(
n)
b) Formula Polak-Ribière:
. ( n) g ( T
[ g ( n # 1 )) g ( n )]
∃ 1 ) (5.10)
n# g T
(n ) g (n )
Î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 -
−w
/ E / E
∃) ∀ ) ∃) ∀ (5.12)
1 2 ) 1
H [/ E # 0I]
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].
T
−w ∃ ) ∀ T J e ) 1
(5.13)
[J J #0 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:
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));
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);
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];
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
3
4
2
2
1
0 0
1 2 3 4 1 2 3 4
traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4
traingdm 1 traingdx 2 trainfuzzy 3 trainlm 4
TIP PROBLEMĂ
INTERPOLARE CLASIFICARE
EPM Nr. Timp EPM Nr. Timp
METODĂ [%] 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.
1.Introducere
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
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:
) M &
G! x ∀
2 2
# exp ∋ ∗ x ∃ , i # 1 ,2, M (6.1)
∗ t ∗ t
i 2 i
( 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 # { g ij } (6.3)
cu:
) M 2&
g ji # exp 2 xj ∗ ti ∃ , i # 1 ,
M , j # 1 ,2, N (6.4)
∋ ∗ 2,
( 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 ,...,0 ∃ (6.6)
%
4. Probleme
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
0.8
0.8
0.6
0.6
0.4 0.4
0.2
0.2 training values
0 predicted values
0 0.2 0.4 0.6 0.8 1
0
x(n-1) 0 20 40 60 80 100 120
1.Introducere
( + 1 ,dacã v j ∗ 0
sj ∀ ∋ (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:
1 p
w ∀ − − (7.4)
ji N ! ,, j , , i
,∀ 1
Acelaşi lucru poate fi scris în formă matricială astfel:
Reţele neuronale artificiale recurente - 61 -
1 p T p
W ∀ N ! ξμ ξ μ N I (7.5)
#
, ∀1
î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
w ji yi # ∃ i ), j ∀ 1 , N (7.6)
∀ 2, ...,
1
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
Rezolvare:
% Exemplu de implementare a unei RNA-Hopfield %
pentru cazul regasirii tiparelor
% Catalin-Daniel Caleanu, 2000
clear all
close all
clc
fig3=figure;
set(fig3,'Position',[200 200 50 50])
imshow(cifra_zgomot')
truesize(fig3,[200,200]);
title('Imagine cu zgomot')
close all
disp('Program terminat !')
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
1. Introducere
2. RNA-SOFM (Kohonen)
w1 wN
i (x )
! arg min x( n ) ∀ w , j ! 1 ,2 ,..., N (8.1)
j
j
c) Ajustarea ponderilor:
% w ( n ) ( ) ( n )[ x ∀ w ( n )] , daca j ∋ & )
j j i(x)
w j( n ( 1 ) ! ∃ (8.2)
# 0, altfel
în care η(n) reprezintă rata de învăţare, iar & i ( x) ( n ) reprezintă vecinătatea topologică
d 2j, i
∗ j,i ! exp( 2 ) (8.4)
∀ 2
+
Reţele neuronale cu autoorganizare - 67 -
1 n.
) ( n )) 0 exp ∀ (8.5)
!
/ ,
0 21 −
1 n.
+ (n) ! + 0 exp ∀ (8.6)
/ 2 ,
0 2−
în care dj,i reprezintă distanţa de la neuronul “j” la neuronul câştigător “i” iar ) ,+ ,
0 0
x∀w
i ! min x ∀ w , j ! 1 ,2 ,..., N
j
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ă:
b 1 1 .
! C/ ∀p,
j
j
0N −
unde “C” este o constantă iar “N” reprezintă numărul total de neuroni din
stratul de ieşire.
d) Adaptarea vectorului ponderilor aferente neuronului câ ştigător:
w no vechi vechi
u! w ( ) (x ∀ w )
i i i
în care ) reprezintă rata de învăţare a algoritmului SOFM
4. Probleme
∗+
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:
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
% antrenamentul retelei
net.trainParam.epochs=1000;
net = train(net,P);
plotsom(net.iw{1,1},net.layers{1}.distances)
Weight Vectors
1.5
1.5
1
1
0.5
0.5
0
2
2 -0.5 -0.5
0 0
1 0.5 0.5
1
W(i,1)
position(2,i) 0 0 position(1,i) W(i,2)
Fig.8.3 Distribuţiile iniţiale şi finale ale vectorilor pondere obţinute în urma rulării progarmului aferent
pct.4.1.
APLICAŢIA NR. 9
1. Chestiuni introductive
Regimul dinamic al unei celule dintr-o RNC cu vecinătăţi 3x3 este descris de
v
ecuaţia diferenţială ordinară şi neliniară [7]:
C ∃ xij ( t )
&% R
%1
∃ v xij A ij ,kl v ykl B ij ,kl v ukl !t∀ # I ij (9.1)
!t∀ # ∋ !t∀ #
kl ( N 1
∋
kl ( N1
ieşirea unei celule C . Prin N a fost notată vecinătatea de raza 1 (vecinătate 3x3) a
ij 1
- 72 - Aplicaţia nr.9
operatori sinaptici de reacţie şi respectiv de comandă iar I ij este curentul celulei (de
*
Termenul “template” a fost preluat direct din literatura de limbă engleză în lipsa unui
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ă:
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
orice stare initială vxij (0) ( R . Afirmaţia de mai sus este importantă din punct de
I ij
U
v xij vxij v
v uij
B +
−dt f(.) yij
-1
a 00
1
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 | v
xij | / 1 , conform rel.(9.2) v & v şi în
yij xij
( a00 & 2 0 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 se
consulta [7].
- 76 - Aplicaţia nr.9
5 pixel gri
alb, dacă pentru xij (0) & 0 , ∋
kl( N
Bij,klvukl 1 1,45
1
(0 ) & v # B v # I (9.5)
xij uij
∋
kl
1
ij , kl ukl ij
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.
v
Deoarece acum v uij & #1 , relaţia (9.5) devine:
(0 ) & 1 # 2 ∃ (# 1 ) % 0 ,25 v
% 1 ,45 1 0, (9.7)
xij
kl
∋ ukl
( N
kl . ij
pentru vukl & #1. Integratorul va determina, în consecinţă, un nivel la ieşirea celulei
v
v yij (∗) &%1, corespunzător unui pixel alb.
Cazul 4: Pentru
v xi (0 ) & 0 , fapt ce implică în acord cu rel. (9.2) v (0 ) & 0 ,
yij
j
rel.(9.4) devine:
v
(0 ) B v % 1 ,45 (9.9)
xij
& ∋
kl (N
ij ,kl ukl
v
1
Condiţia ∋
kl(N
B ij,kl vukl 1 1,45 implică
1
xij(0) 1 0 , fapt ce determină un nivel
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ă:
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.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ă.
ShowTem;
%run template and show result
RunTem;
subplot(122);
CNNShow(OUTPUT);
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.
Fig. 10.2 Importanţa reprezentării calitative asupra celei cantitative, în proiectarea GUI.
“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.
IMEDIAT (direct)
CONTINUU (lin)
PROIECTARE
IMPLEMENTARE
2. Probleme
Fig.10.8. Interfaţă grafică utilizator pentru cazul problemei 4.3 din APLICAŢIA nr.4.
Rezolvare:
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.
a) Program principal
%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'};
% apelare GUI
fig_l10
b) Faza de antrenament
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'))));
c) Etapa de utilizare
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');
[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
1. Introducere
*
Termenul “template” a fost preluat direct din literatura de limbă engleză în lipsa unui termen
potrivit, echivalent, în limba română.
- 96 - Anexa nr.1
kl kl ∋ N
∋ N r ∋ N r r
iar mărimea la ieşiere ei este dată de relaţia:
vyi (t ) + f (v (t )) + 0 v ( t ) ∗ 1| ( | v ( t ) ( 1| ) , (A1.2)
xij xij
j
5( |
xij
cu notaţiile:
)
+ v ∃ t% ( v ∃ %t
v yy
ykl yiy
)v + v ∃ t%( v ∃ % t (A1.3)
uu ukl uij
)v + v ∃ t%( v ∃ %t
u,x,ykl u,x,yij
Simulatorul analogic de reţele neuronale celulare MATCNN - 97 -
|v (t ) | # 1 , | v (t ) |
#1 , | Iij | # v , 1 # i# M , 1 # j# N
x ij u ij max
respectiv ieşirea unei celule Cij . În cursul unei operaţii de procesare starea şi ieşirea
reacţie şi respectiv de comandă iar Iij este curentul celulei (de regulă invariant în
spaţiu).A
ˆ , Bˆ şi Dˆ sunt operatori neliniari
ij , kl ij ,kl ij , kl A care se aplic ă diferenţelor
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.
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]
∋ N r ∋ N r
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_I = 0;
kl
∋ N r ∋ N r
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;
v ˆ
Ecuaţia de stare asociată este de forma:
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ă).
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.
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
Observaţii:
Se subliniază că suma dintre curentul constant I al unei celule, ce intervine în modelul
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
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.
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”
Variabile globale din MATCNN (lista completă) (valorile implicite sunt trecute în
/./ ).
[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.