Documente Academic
Documente Profesional
Documente Cultură
-Aplicație in Matlab-
1) Introducere……………………………………………….………….pag 1.
2) Dezvoltarea teoretica…………………………………….……….…pag 2.
3) Dezvoltarea practica……………………………….….…………….pag 3.
4) Graficele pentru performanta, starea de pregatire, regresie si histograma
erorilor……………………………………………………………...pag 10.
5) Codul in Matlab…………………………………………………….pag 13.
6) Testari………………………………………………………………pag 15.
7) Graficul erorilor de invatare………………………………………..pag 26.
8) Concluziile lucrarii…………………………………………………pag 28.
9) Bibliografie…………………………………………………………pag 29.
Introducere
O rețea neuronală artificială (ANN) este piesa unui sistem de calcul conceput pentru a
simula modul în care creierul uman analizează și procesează informațiile. Este fundamentul
inteligenței artificiale (AI) și rezolvă probleme care s-ar dovedi imposibile sau dificile de
In aceasta lucrare voi studia daca o retea neuronala poate invata din exemplele primite sa
deduca valori corecte, in felul urmator: reteauta va primi doi vectori cu date pentru intrare si
un vector cu date pentru iesire si reteaua va trebui sa deduca legatura dintre vectorii de la
intrare si vectorul de la iesire, astfel incat sa creeze valori asemanatoare la iesire, prin
y1, y2 sunt semnalele de intrare, care vor fi reprezentate de doi vectori, fiecare dintre ei
avand cate 20 de valori.
W1, W2 sunt ponderile sinaptice, care vor modela permeabilitatea sinaptica.
B va fi considerat pragul de activare al neuronului si va fi reprezentat de o functie
sigmoidala (hiperbolica).
Functia de transfer pe care o voi folosi va fi: a = 2 ./ (1 + exp(-2*n)) – 1
1
Dezvoltarea teoretica
generale”, deoarece aceasta poate aproxima orice funcție cu un număr finit de discontinuități,
în mod arbitrar, foarte bine, daca i se dau suficienți neuroni în stratul ascuns. Pentru aceasta
Avand in vedere ca circuitul de mai sus se aseamana foarte bine cu urmatoarea schema, am
folosit in Matlab functia “Fitting Neural Network” pentru rezolvarea acestei lucrari.
2
Dezvoltarea practica
Intr-o firma, angajatii trebuie sa relizeze un anumit numar de sarcini. Toate aceste sarcini
se pot realiza intr-un interval de timp delta T, care este egal cu diferenta dintre ora la care
angajatul ajunge in firma si incepe sa munceasca si ora la care angajatul paraseste firma,
deoarece acesta si-a terminat sarcinile pe care le-a avut de indeplinit. Cu totii stim ca pentru a
munci, iti trebuie o anumita putere de munca si am putea considera ca puterea unui angajat de
a munci este egala cu munca efectuata impartita la delta T.
Puterea = Munca / Delta T
Am considerat ca fiecare angajat are un anumit numar de sarcini si am trecut numarul de
sarcini ale fiecarui angajat intr-un vector, pe care l-am denumit „Munca efectuata”, dupa cum
urmeaza:
Munca_efectuata=[10.3; 20.5; 30.4; 40.2; 50.6; 60.4; 70.3; 80.2; 90.6; 100.1; 110.7;
120.3; 130.8; 140.5; 150.2; 160.9; 170.4; 180.6; 190.1; 200.3]
Apoi, intr-un alt vector, am trecut valorile pentru intervalul de timp delta T, in care se
realizeaza munca fiecarui angajat, in functie de numarul de sarcini primite. Toate valorile din
vectorul Timpul_delta_t se masoara in ore:
Timpul_delta_t=[2.4; 4.8; 6.3; 8.9; 10.6; 12.2; 14.5; 16.1; 18.3; 20.4; 22.6; 24.2; 26.3;
28.8; 30.7; 32.4; 34.2; 36.5; 38.9; 40.3]
Dupa aceea, am creat un vector denumit „Puterea_de_a_realiza_activitati_a_persoanei” si
in acest vector, fiecare valoare este calculata conform formulei: Puterea = Munca / Delta T.
Puterea_de_a_realiza_activitati_a_persoanei=[4.2916; 4.2708; 4.8253; 4.5168; 4.7735;
4.9508; 4.8482; 4.9813; 4.9508; 4.9068; 4.8982; 4.9710; 4.9733; 4.8784; 4.8925; 4.9660;
4.9824; 4.9479; 4.8868; 4.9702]
Toate aceste valori au fost trecute intr-un tabel Excel, dupa cum urmeaza:
3
Apoi, am deschis aplicatia Matlab si in Workspace am creat doua tabele. Pe un tabel l-am
denumit „Intrare” si pe celalalt l-am denumit „Iesire” Aceste doua tabele reprezinta intrarea si
iesirea din reteaua neuronala pe care o voi crea.
In tabelul denumit „Intrare” am introdus datele pe care le-am avut salvate anterior pe cele
doua coloane din tabelul Excel: „Munca efectuata” si „Timpul delta T”, iar in tabelul denumit
„Iesire” am introdus datele pe care le-am avut salvate anterior pe coloana din tabelul Excel:
„Puterea de a realiza activitati a persoanei”.
4
Am apelat functia „nnstart” in Command Window, in Matlab, ca sa incep sa creez
reteaua neuronala.
5
In fereastra in care s-a deschis, am selectat „Fitting app”:
6
Am selectat vectorul pentru intrarea in reteaua neuronala si vectorul pentru iesirea din
reateaua neuronala si am selectat „Matrix rows”:
7
Am selectat un numar de 5 neuroni ascunsi pentru reteaua neuronala pe care urmeaza sa o
creez:
8
La finalul instruirii, in Matlab, a aparut o fereastra in care erau specificate valorile pentru:
ciclurile de timp efectuate (7 repetari), timpul (1 secunda), performanta (0.000944), variatia in
functie de timp (gradientul = 0.00207), numarul de verificari validate (6):
9
Graficul pentru performanta:
10
Histograma erorilor:
Regresia:
11
Dupa ce am vizualizat si am analizat aceste grafice, am realizat pasii urmatori:
12
Si apasand pe acel buton, s-a generat urmatorul program intr-un mod automat, in Matlab:
function [y1] = myNeuralNetworkFunction(x1)
%MYNEURALNETWORKFUNCTION neural network simulation function.
%
% Auto-generated by MATLAB
%
% [y1] = myNeuralNetworkFunction(x1) takes these arguments:
% x = Qx2 matrix, input #1
% and returns:
% y = Qx1 matrix, output #1
% where Q is the number of samples.
%#ok<*RPMT0>
% Input 1
x1_step1.xoffset = [10.3;2.4];
x1_step1.gain = [0.0105263157894737;0.0527704485488127];
x1_step1.ymin = -1;
% Layer 1
b1 = [-3.1328942747978536509;-1.4565339417612903627;-
0.15273005944223722041;1.552780217055454326;3.0148431719086712377];
IW1_1 = [1.9256048427446372795 -2.4682146185599260768;2.6043807534262195524 -
1.70315796266956343;-2.9561732280980121956
0.49720140972002457858;2.1059530577038798604
2.3305940374128142345;0.95960570480107065805 3.1073415837336688661];
% Layer 2
b2 = -0.48156312516106758448;
LW2_1 = [-0.91768408531128897732 0.71590477957822040711 0.31323971951569262728
0.18313763042768282929 1.0552138770856311911];
% Output 1
y1_step1.ymin = -1;
y1_step1.gain = 2.81047765800457;
y1_step1.xoffset = 4.270833333;
% Dimensions
Q = size(x1,1); % samples
% Input 1
x1 = x1';
xp1 = mapminmax_apply(x1,x1_step1);
% Layer 1
a1 = tansig_apply(repmat(b1,1,Q) + IW1_1*xp1);
13
% Layer 2
a2 = repmat(b2,1,Q) + LW2_1*a1;
% Output 1
y1 = mapminmax_reverse(a2,y1_step1);
y1 = y1';
end
14
Am inceput sa introduc valori in vectorul de intrare x1, din functia
“myNeuralNetworkFunction.m”, pentru a verifica daca reteaua neuronala imi calculeaza
vectorul de iesire (care este reprezentat de valorile puterii de a realiza activitati a fiecarei
persoane din firma) intr-un mod correct.
Valorile introduse in vectorul de intrare x1 au fost preluate din urmatoarele doua coloane:
15
Testul 2)
Testul 3)
16
Testul 4)
Testul 5)
17
Testul 6)
Testul 7)
18
Testul 8)
Testul 9)
19
Testul 10)
Testul 11)
20
Testul 12)
Testul 13)
21
Testul 14)
Testul 15)
22
Testul 16)
Testul 17)
23
Testul 18)
Testul 19)
24
Testul 20)
Am creat un nou vector, sub forma unei coloane, pe care am denumit-o „Puterea calculata
cu ajutorul retelei neuronale”, in care am introdus valorile obtinute in urma testelor realizate.
Acea coloana am alaturat-o tabelului initial din Excel (care continea valorile initiale), pentru a
putea vizualiza usor comparatiile dintre valori:
25
Am creat un nou tabel in Excel, care pe prima coloana (denumita „Puterea calculata cu
ajutorul retelei neuronale) are valorile obtinute in urma testarii retelei, pe a doua coloana
(denumita „Puterea calculata folosind formula Puterea=Munca/Timp) are valorile initiale ale
Puterii si pe ultima coloana (denumita „Diferenta dintre cele doua puteri calculate”) am
introdus valorile, in modul, a diferentei dintre cele doua puteri:
Se remarca faptul ca majoritatea diferentelor dintre cele doua puteri tind spre zero,
ceea ce inseamna ca reteaua neuronala a invatat foarte repede (intr-o secunda) si foarte bine sa
realizeze calculul puterii.
26
La finalul aplicatiei practice, am salvat toate datele oferite de programul Matlab si am
apasat butonul „Finish”.
27
Concluziile lucrarii
28
Bibliografie
29