Sunteți pe pagina 1din 10

APLICAŢIA NR.

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

yM
xN

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:
e j ( n) " d j ( n) ! y j ( n) (4.1)

Astfel, suma erorilor pătratice pentru toţi neuronii stratului de ieşire, este:
1
E ( n) " #
2 j$C
e 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:
%E (n)
&w ji (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 ji (n) " ') j (n) y i (n) " '[e j (n)( *j (v j (n))] y i (n) (4.4)

î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 ji (n) " '[( *j (v j (n))# ) k (n)wkj (n)] y i (n) (4.5)
k

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 j (n) " ( *j (v j (n)) " ( ( # w ji (n) y i (n)) (4.6)
i$Cl !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 ji (n) " +&w ji (n ! 1) , ') j (n) y i (n) (4.7)

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 SAU-


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

Perform ance is 0.000976277, Goal is 0.001


Training-B lue Goal-B lack

0
10

-2
10

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(2-x))
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
Antrenament . Test + Iesire MLP --

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.

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