Documente Academic
Documente Profesional
Documente Cultură
Laboratori A 13
Laboratori A 13
Laboratorul 13
2. Descrierea algoritmului
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
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
2
yknd ykn .
1 1
E ek2
2K k 2K k n
k f ' ek ,
ex
f ' ( x) f ( x) 1 f ( x) .
1 e
x 2
Vom avea:
k yk 1 yk ek .
w jk w jk y j k .
j y j 1 y j k w jk ,
l
k 1
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:
3. Considerente practice
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
4. Aplicaie
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.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