Sunteți pe pagina 1din 7

Inteligen artificial

Laboratorul 13

Algoritmul de retro-propagare (backpropagation)

Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm


1. Obiectiv

Obiectivul acestui laborator este prezentarea algoritmului de retro-propagare (engl.


backpropagation), utilizat pentru antrenarea reelelor neuronale de tip perceptron multistrat.

2. Descrierea algoritmului

Reelele neuronale au capacitatea de a nva, ns modalitatea concret n care se realizeaz


acest proces este dat de algoritmul folosit pentru antrenare. O reea se consider antrenat dac
aplicarea unui vector de intrare conduce la obinerea unei ieiri dorite, sau foarte apropiate de
aceasta.
Antrenarea const n aplicarea secvenial a diferii vectori de intrare i ajustarea ponderilor
din reea n raport cu o procedur predeterminat. n acest timp, ponderile conexiunilor converg
gradual spre anumite valori pentru care fiecare vector de intrare produce vectorul de ieire dorit.
nvarea supervizat presupune aplicarea unei perechi vector de intrare vector de ieire
dorit. Dup aplicarea unei intrri, se compar ieirea calculat cu ieirea dorit, dup care diferena
este folosit pentru modificarea ponderilor cu scopul minimizrii erorii la un nivel acceptabil.
Algoritmul backpropagation este cel mai cunoscut i utilizat algoritm de nvare
supervizat. Numit i algoritmul delta generalizat, el se bazeaz pe minimizarea diferenei dintre
ieirea dorit i ieirea real, prin metoda gradientului descendent. Se definete gradientul unei
funcii F(x,y,z,...) drept:

F F F
F i j k ...
x y z

Gradientul ne spune cum variaz funcia n diferite direcii. Ideea algoritmului este gsirea
minimului funciei de eroare n raport cu ponderile conexiunilor. Eroarea este dat de diferena
dintre ieirea dorit i ieirea efectiv a reelei. Cea mai utilizat funcie de eroare este cea a celor
mai mici ptrate. Dac avem n mulimea de antrenare K vectori iar reeaua are N ieiri, atunci:

2
yknd ykn ,
1
E
2K k n

unde yknd este valoarea dorit pe ieirea n a reelei pentru vectorul k, iar ykn este ieirea efectiv a
reelei.
Algoritmul pentru un perceptron multistrat cu un singur strat ascuns este urmtorul:

1
Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm
Pasul 1: Iniializarea

Toate ponderile i pragurile reelei sunt iniializate cu valori aleatorii nenule, distribuite
uniform ntr-un mic interval, de exemplu 2.4 / Fi , 2.4 / Fi , unde Fi este numrul total de intrri
ale neuronului i, sau mai simplu ( 0.1, 0.1).
Dac valorile acestea sunt 0, gradienii care vor fi calculai pe parcursul antrenrii vor fi tot
0 (dac nu exist o legtur direct ntre intrare i ieire) i reeaua nu va nva. Este chiar indicat

Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm


ncercarea mai multor antrenri, cu ponderi iniiale diferite, pentru gsirea celei mai bune valori
pentru funcia cost (minimul erorii). Dimpotriv, dac valorile iniiale sunt mari, ele tind s satureze
unitile respective. n acest caz, derivata funciei sigmoide este foarte mic. Ea acioneaz ca un
factor de multiplicare n timpul nvrii i deci unitile saturate vor fi aproape blocate, ceea ce face
nvarea foarte lent.

Pasul 2: O nou epoc de antrenare

O epoc reprezint prezentarea tuturor exemplelor din mulimea de antrenare. n majoritatea


cazurilor, antrenarea reelei presupune mai multe epoci de antrenare.
Pentru a pstra rigoarea matematic, ponderile vor fi ajustate numai dup ce toi vectorii de
test vor fi aplicai reelei. n acest scop, gradienii ponderilor trebuie memorai i ajustai dup
fiecare vector din mulimea de antrenare, iar la sfritul unei epoci de antrenare, se vor modifica
ponderile o singur dat. Exist i varianta on-line, mai simpl, n care ponderile sunt actualizate
direct; n acest caz, poate conta ordinea n care sunt prezentai reelei vectorii de test.
Se iniializeaz coreciile ponderilor i eroarea curent cu 0: wij 0 , E = 0.

Pasul 3: Propagarea semnalului nainte

3.1. La intrrile reelei se aplic un vector din mulimea de antrenare.

3.2. Se calculeaz ieirile neuronilor din stratul ascuns:

n
y j f xi wij j ,
i 1

unde n este numrul de intrri ale neuronului j din stratul ascuns, iar f este funcia de activare
sigmoid.
Pentru simplitate, pragul este considerat ca fiind ponderea unei conexiuni suplimentare a
crei intrare este ntotdeauna egal cu 1. Expresia de mai sus devine acum:

n 1
y j f xi wij .
i 1

2
Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm
3.3. Se calculeaz ieirile reale ale reelei:

m1
yk f y j w jk ,
j 1

unde m este numrul de intrri ale neuronului k din stratul de ieire.

Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm


3.4. Se actualizeaz eroarea pe epoc:

2
yknd ykn .
1 1
E ek2
2K k 2K k n

Pasul 4: Propagarea erorilor napoi i ajustarea ponderilor

4.1. Se calculeaz gradienii erorilor pentru neuronii din stratul de ieire:

k f ' ek ,

unde f ' este derivata funciei de activare iar eroarea ek ykd yk .


Dac folosim sigmoida unipolar, derivata acesteia este:

ex
f ' ( x) f ( x) 1 f ( x) .
1 e
x 2

Vom avea:

k yk 1 yk ek .

4.2. Se actualizeaz coreciile ponderilor dintre stratul ascuns i stratul de ieire:

w jk w jk y j k .

4.3. Se calculeaz gradienii erorilor pentru neuronii din stratul ascuns:

j y j 1 y j k w jk ,
l

k 1

unde l este numrul de ieiri ale reelei.

4.4. Se actualizeaz coreciile ponderilor dintre stratul de intrare i stratul ascuns:

wij wij xi j .

3
Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm
Pasul 5. O nou iteraie

Dac mai sunt vectori de test n epoca de antrenare curent, se trece la pasul 3.
Dac nu, se actualizeaz ponderile tuturor conexiunilor pe baza coreciilor ponderilor:

wij wij wij ,

Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm


unde este rata de nvare.
Dac s-a ncheiat o epoc, se testeaz dac s-a ndeplinit criteriul de terminare ( E Emax sau
atingerea unui numr maxim de epoci de antrenare).
Dac nu, se trece la pasul 2.
Dac da, algoritmul se termin.

3. Considerente practice

n implementarea algoritmului, apar o serie de probleme practice, legate n special de


alegerea parametrilor antrenrii i a configuraiei reelei.
n primul rnd, o rat de nvare mic determin o convergen lent a algoritmului, pe
cnd una prea mare poate cauza eecul (algoritmul va sri peste soluie). Pentru probleme relativ
simple, o rat de nvare = 0.7 este acceptabil, ns n general se recomand rate de nvare n
jur de 0.2.
Este recomandat preprocesarea i postprocesarea datelor, astfel nct reeaua s opereze cu
valori scalate, de exemplu n intervalul [0.1, 0.9] pentru sigmoida unipolar.
O alt problem caracteristic acestui mod de antrenare este dat de minimele locale. ntr-un
minim local, gradienii erorii devin 0 i nvarea nu mai continu. O soluie este ncercarea mai
multor antrenri independente, cu ponderi iniializate diferit la nceput, ceea ce crete probabilitatea
gsirii minimului global. Pentru probleme mari, acest lucru poate fi greu de realizat i atunci pot fi
acceptate i minime locale, cu condiia ca erorile s fie suficient de mici. De asemenea, se pot
ncerca diferite configuraii ale reelei, cu un numr mai mare de neuroni n stratul ascuns sau cu
mai multe straturi ascunse, care n general conduc la minime locale mai mici. Totui, dei minimele
locale sunt ntr-adevr o problem, n practic nu reprezint dificulti de nesoluionat.
O chestiune important este alegerea unei configuraii ct mai bune pentru reea din punct de
vedere al numrului de neuroni n straturile ascunse. n multe situaii, un singur strat ascuns este
suficient. Nu exist nite reguli precise de alegere a numrului de neuroni. n general, reeaua poate
fi vzut ca un sistem n care numrul vectorilor de test nmulit cu numrul de ieiri reprezint
numrul de ecuaii iar numrul ponderilor reprezint numrul necunoscutelor. Ecuaiile sistemului
sunt n general neliniare i foarte complexe i deci este foarte dificil rezolvarea lor exact prin
mijloace convenionale. Algoritmul de antrenare urmrete tocmai gsirea unor soluii aproximative
care s minimizeze erorile.
O reea neuronal trebuie s fie capabil de generalizare. Dac reeaua aproximeaz bine
mulimea de antrenare, aceasta nu este o garanie c va gsi soluii la fel de bune i pentru datele din
alt mulime, cea de test. Generalizarea presupune existena n date a unor regulariti, a unui model
care poate fi nvat. n analogie cu sistemele liniare clasice, aceasta ar nsemna nite ecuaii
redundante. Astfel, dac numrul de ponderi este mai mic dect numrul de vectori de test, pentru o

4
Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm
aproximare corect reeaua trebuie s se bazeze pe modelele intrinseci din date, modele care se vor
regsi i n datele de test. O regul euristic afirm c numrul de ponderi trebuie s fie n jur sau
sub o zecime din produsul dintre numrul de vectori de antrenare i numrul de ieiri. n unele
situaii ns (de exemplu, dac datele de antrenare sunt relativ puine), numrul de ponderi poate fi
chiar jumtate din produs.
Pentru un perceptron multistrat se consider c numrul de neuroni dintr-un strat trebuie s
fie suficient de mare pentru ca acest strat s furnizeze trei sau mai multe laturi pentru fiecare

Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm


regiune convex identificat de stratul urmtor. Deci numrul de neuroni dintr-un strat ar trebui s
fie aproximativ de trei ori mai mare dect cel din stratul urmtor.
Dup cum am menionat, un numr insuficient de ponderi conduce la sub-potrivire
(engl. underfitting), n timp ce un numr prea mare de ponderi conduce la supra-potrivire
(engl. overfitting), fenomene prezentate n figura 1. Acelai lucru apare dac numrul de epoci de
antrenare este prea mic sau prea mare.

Figura 1. Capacitatea de generalizare

O metod de rezolvare a acestei probleme este oprirea antrenrii n momentul n care se


atinge cea mai bun generalizare. Pentru o reea suficient de mare, eroarea de antrenare scade n
mod continuu pe msur ce crete numrul epocilor de antrenare. Totui, pentru date diferite de cele
din mulimea de antrenare, se constat c eroarea scade la nceput pn la un punct n care ncepe
din nou s creasc. De aceea, oprirea antrenrii trebuie fcut n momentul cnd eroarea pentru
mulimea de validare este minim. Acest lucru se face mprind datele de antrenare n dou: n jur
de 90% din date vor fi utilizate pentru antrenarea propriu-zis iar restul, numit mulime de validare
ncruciat (engl. cross-validation) este folosit pentru msurarea erorii. Antrenarea se oprete
atunci cnd ncepe s creasc eroarea pentru mulimea de validare, moment numit punct de
maxim generalizare.
n funcie de performanele reelei n acest moment, se pot ncerca apoi diferite configuraii,
crescnd sau micornd numrul de neuroni din stratul (sau straturile) ascuns(e).

4. Aplicaie

Implementai algoritmul backpropagation pentru o reea neuronal de tip perceptron


multistrat, cu un singur strat ascuns i cu un numr variabil de uniti n stratul ascuns.
Se d un prototip de aplicaie care i propune recunoaterea cifrelor formate de utilizator pe
un afiaj cu 7 led-uri.

5
Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm
Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm
Mulimea de antrenare, citit din fiierul segments.data, conine 7 intrri (starea celor 7 led-
uri), 10 ieiri (1 pentru cifra format, 0 n rest) i 10 vectori (cifrele 0-9):

7 10 10
1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0
1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0
0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0
1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1

6
Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm
Trebuie implementate urmtoarele metode, corespunztoare algoritmului backpropagation:

NeuralNetwork.Train(int maxEpochs, double maxError)


Metoda de antrenare a reelei. Antrenarea se realizeaz pn la atingerea unui numr maxim
de epoci (maxEpochs) sau pn la atingerea unei erori acceptabile (maxError). Apeleaz metoda
TrainOneEpoch, care implementeaz o epoc de antrenare pentru toi vectorii de antrenare i
returneaz eroarea medie ptratic obinut la finalul epocii.

Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm


NeuralNetwork.ForwardPass(double[] vector)
Pasul de propagare nainte al algoritmului backpropagation.

NeuralNetwork.BackwardPass(double[] vector)
Pasul de propagare napoi al algoritmului backpropagation.

NeuralNetwork.SigmoidDerivative(double f) : double
Expresia derivatei funciei sigmoide unipolare.

7
Florin Leon, Inteligenta artificiala - Laborator, http://florinleon.byethost24.com/lab_ia.htm

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