Laborator 2 (11) [623170]

1 . 1 .
INTRODUCERE ÎN REȚELE NEUR ONALE .
PREZENTAREA PACHETUL UI
NEURAL NETWORK TOOLBOX
Obiectivele lucrării
 însușirea noțiunilor de bază din domeniul rețelel or neuronale artificiale ;
 prezentarea pachetului Neural Network Toolbox al mediului MATLAB .
Noțiuni teoretice
O rețea neuronală (neurală) artificiale constă dintr -o mulțime de elemente de prelucrare,
denumite neuroni sau unități de calcul, puternic interconectate în diferite configurații c are
permit propagarea și prelucrarea de informație numerică. Indi vidual, neuronii realizează
operații relativ simple, însă numărul unităților din rețea și arhitectura acesteia conduce la
realizarea unui calcul mult mai complex.
Caracteristic a principală a rețelelor neuronale este capacitatea de a învăța pe bază de exem ple.
Învățarea determină modificarea parametrilor tuturor unităților de prelucrarea din rețea în așa
fel încât valorile acestora să cuprindă informația utilă din exemplele disponibile. Informația
este memorată difuz și abstract în toată rețeaua, adică est e “conținută” în valorile numerice ale
parametrilor neuronilor. De cele mai multe ori, aceste valori nu reflectă valorile numerice din
exemplele pe care se bazează învățarea, iar f uncționarea rețelei este influențată de parametri
într-o manieră neclară.
Descrierea completă a unei rețele neuronale curpinde descrierea modelului neuronal (modelul
unităților funcționale din rețea) , a arhitecturii rețelei și a algoritmului de învățare folosit.

Tehnici de inteligen ță artificială. Îndrumar de laborator

2 Modelul neuronului artificial
Neuronul artificial constituie element ul fundamental din structura unei rețele neurale. Acesta
este o unitate de calcul ce realizează o operație relativ simplă , folosind semnalel e de intrare,
dar care contribuie la un calcul mult mai complex realizat de întreaga rețea.
Structura generală a unui neuron artificial este prezentată în Figura 1.1. Acesta are
n semnale
de intrare , pe care le vom nota
ix , cu
n i,…,1 , și un semnal de ieșire , notat
y .
Semnal ele de intrare sunt conectat e la neuron prin intermediul sinapse lor, caracterizate de
factor ii
iw , denumiți ponder i sinaptic e (sau simplu ponderi ; eng. weights ). Parametrul
notat
b se numește deplasare sau prag (eng. bias) și este asimilat ca pondere a unei
intrări suplimentare având valoarea fixată 1.

Figura 1.1. Modelul general al neuronului artificial.
Prin însumarea semnalel or de intrare ponderate, împreună cu valoarea pragului, se obține
activarea totală sau starea internă a neuronului , notată
s , adică :
bxw s in
ii
1
(1.1)
Termenul parametrii neuronului se referă la variabilele
iw și
b în comun. Valorile lor sunt
ajustabile pe parcursul antrenării neuronului, iar pe ajustarea adecvată a acestora se bazează
capacitatea de învățare a rețelei neuronale .
Cu valoarea activării totale, ieșirea este calculată prin funcția de activare (funcția de transfer ,
funcție de ieșire , funcție neuronală , eng. transfer function ) a neuronului
:f :
)(sfy
(1.2)
Aceasta este o funcție analitică, care poate fi liniară sau neliniară (vezi secțiunea următoare).
Relațiile (1.1) și (1.2) formează modelul neuronal și descriu calculul realizat de o unitat e din
rețea ua neuronală. Prima relație reprezintă partea liniară a neuronului, iar a doua definește
nodul acestuia.

Introducere în rețele neuronale . Prezentarea pa chetului Neural Network Toolbox

3 Deseori, în prezentarea algoritmilor de instruire, semnalele d e intrare și ponderile lor sunt
scrise în form a vectorial ă. Astfel, avem vectorul intr ărilor
1 T
1 ] … [ n
nx x  x și
vectorul ponderilor
n
nw w 1
1 ] … [  w . Cu aceste notații , activarea totală a neuronului
se scrie
b swx
(1.3)
Observație . Intrarea suplimentară cu valoare fixă 1, ca semnal ponderat cu valoare a deplasării
b
, nu este o intrare efectivă, întrucât aceasta nu reprezintă o mărime concretă disponibilă în
setul de date de antrenare. P entru descrierea algoritmilor este mai convenabil să introducem
convenția de notație
10x și
b w0 , ceea ce permite o scriere mai compactă. Astfel, vom
scrie activarea totală și ieșirea neuronului:
in
iixw s

0wx
(1.4)
)(wxfy
(1.5)
Observație . Pentru a putea efectua înmulțirea matriceală, vect orul ponderilor
w este linie, iar
vectorul intrărilor
x este coloană.

Tipuri de f uncții de activare
Funcțiile de activare uzuale sunt următoarele:
1. Funcția treaptă asimetrică (Heaviside)

0,10,0)(sssf

2. Funcția treaptă simetrică (signum)

0,10,1)(sssf

3. Funcția liniară (identitate)

Tehnici de inteligen ță artificială. Îndrumar de laborator

4
ssf)(

4. Funcția liniară cu saturație asimetrică



1,11 0,0,0
)(
ss ss
sf

5. Funcția liniară cu saturație simetrică



1,11 1,1 ,1
)(
ss ss
sf

6. Funcția s igmoidală asimetrică
sesf
11)(

7. Funcția sigmoidală simetrică (tangentă hiperbolică)
s ss s
eeeesf
)(

Arhitecturi de rețele neuronale
Modalitățile de interconectare a neuronilor artificiali într -o rețea sunt numeroase și variate,
însă se pot identifica două clase:

Introducere în rețele neuronale . Prezentarea pa chetului Neural Network Toolbox

5 a) Rețele feed -forward , unde semnalele se transmit prin rețea într -o singură direcție, de la
intrare spre ieșire. În această structură, se definesc ușor straturi de neuroni, fiecare
strat cuprinzând neuronii aflați la aceeași d istanță de intrările rețelei. Nu există bucle și
nici conexiuni între neuroni aflați pe același strat.
b) Rețele feed -back sau rețele recurente , în care semnalele se pot transmite în ambele
direcții, introducând conexiuni de reacție în arhitectura rețelei. Ac este tipuri de rețele
sunt foarte puternice și pot fi extrem de complicate.
Există câteva structuri de rețele neuronale artificiale consacrate și foarte des utilizate,
deoarece au oferit rezultate încurajatoare în diverse aplicații :
 rețele feed -forward: perceptronul, re țeaua AdaLiNe, memorii asociative liniare;
 rețele recurente: mașina Boltzmann, learning vector quantization, rețele Hopfield,
memorii asociative bidirecționale, rețele Kohonen cu auto -organizare.
În multe aplicații, rețelele prezintă mai multe unități funcționale la ieșire (semnale de ieșire).
Din acest motiv, introducem aici o notație suplimentară, necesară pentru o rețea neuronală cu
m
semnale de ieșire și anume vectorul mărimilor de ieșire
1my .
Instruirea rețelelor neuronale
Caracteristica principală a rețelelor neuronale este capacitatea de a învăța sau de a extrage
informație din date de antrenare, care pot fi incomplete, parțial eronate , afectate de perturbații
etc. Cunoașterea pe care o dobând ește rețeaua este memorată în ponderile sinaptice ce
caracterizează intrările rețelei și conexiunile dintre neuroni.
Datele de antrenare se prezintă rețelei în mod secvențial și repetitiv, iar ponderile rețelei sunt
ajustate în mod iterativ, conform unei proceduri prestabilite numită algoritm de instruire
(antrenare , învățare ). Algoritmul de instruire determină convergența ponderilor spre valori
care să producă ieșirea dorită pentru majoritatea datelor de antrenare. O rețea neuronală este
antrenată dacă fu ncționarea ei în faza de lucru, descrisă prin valorile calculate ale semnalelor
de ieșire, este în limitele unor erori admise.
Există două tipuri fundamentale de învățare utilizate în rețelele neuronale: învățarea
supervizată și învățarea nesupervizată .
În cazul instruirii supervizate, datele de antrenare conțin valori ale semnalelor de intrare și
valorile corespunzătoare (impuse, corecte) ale semnalelor de ieșire. Aceste perechi formează
mulțimea datelor de antrenare,
Pkk
,1}),{(
 dx P
(1.6)

Tehnici de inteligen ță artificială. Îndrumar de laborator

6 în car e
1nx este vectorul celor
n datelor de intrare,
1md este vectorul ce conține
valorile corespunzătoare (impuse, considerate corecte) ale celor
m semnale de ieșire ale
rețelei, i ar
P reprezintă numărul de perechi de date.
În faza de antrenare, valorile mărimilor de ieșire ale rețelei ,
1my , obținute pe baza
valorilor mărimilor de intrare ,
1nx , diferă de valorile cele impuse ,
1md , diferența
fiind o eroare de antrenare . Pentru un exemplu de antrenare, eroarea este

m
jj jy d e
1) (
(1.7)
iar pentru întregul set de date de antrenare

   P
kk
jk
jP
kky d e E
12
12) (21)(21
(1.8)
Această mărime de eroare depinde de vectoru l tuturor ponderilor sinaptice, notat
w , și este o
funcție criteriu pe care algoritmii de antrenare caută să o minimizeze. Așadar , algoritmii de
antrenare supervizată sunt bazați pe metode de căutare a punctului de minim al unei funcții
criteriu care conține eroarea de antrenare totală, calculată pentru toate exemplele de antrenare .
În instruirea nesupervizată datele de antrenare n u conțin valori impuse ale mărimilor de ieșire ,
iar învățare a se desfășoară fără o cunoaștere specifică a ceea ce ar putea să fie un răspuns
corect. Datele de antrenare sunt în forma
Pkk
,1}){(
x P
(1.9)
În decursul instruirii, prin ajustarea ponde rilor, se realizează o grupare a datelor de antrenare
în clase . Răspunsul pe care îl va produce o clasă nu poate fi determinat înainte de încheierea
procesului de instruire. Prin urmare, ieșirile unei rețele instruit e cu o metodă nesupervizată
trebuie, în general, să fie interpretate.
Desfășurarea lucrării. Exemple
Implementarea în MATLAB a rețelelor neuronale . Neural Network Toolbox
Pachetul Neural Network Toolbox (NN) conține un ansamblu de funcții care implementează
algoritmi specifici domeniului sau car e realizează operații utile în aplicații specifice. Sunt
disponibile funcții pentru inițializarea rețelelor, antrenarea lor, simularea funcționării,

Introducere în rețele neuronale . Prezentarea pa chetului Neural Network Toolbox

7 reprezentarea grafică a rezultatelor etc. Funcțiile sunt flexibile permițând utilizatorului s ă
specifice ar hitectura rețelei , tipul func ției de activare, modul de conectare între unit ăți sau să
aleag ă între mai multe variante de algoritmi de învățare.
Lista funcțiilor cuprinse în pachet se obține cu comanda :
help nnet
Sunt incluse , de asemenea, o serie de apl icații demonstrative , accesibile prin comanda:
nnd
care prezintă principalele categorii de rețele ce pot simulate. Între aplicațiile demonstrative
avem: identificarea semnalelor folosind modele liniare ( applin1 ), predic ții în serii temporale
(applin2 ), recunoa șterea șabloanelor temporale ( appelm1 ), recunoa șterea caracterelor
(appcr1 ). Alte exemple sunt prezentate prin interfețe grafice: recunoa șterea șabloanelor
(nprtool ), aproximarea datelor (nftool ), clasificare a nesupervizat ă (nctool ).
Funcțiile de acti vare
Funcțiile de activare uzuale în MATLAB sunt:
 Funcția treaptă asimetrică: hardlim
 Funcția treaptă simetrică: hardlims
 Funcția liniară: purelin
 Funcția liniară cu saturație asimetrică: satlin
 Funcția liniară cu saturație simetrică: satlins
 Funcția sigmo idală asimetrică: logsig
 Funcția sigmoidală simetrică: tansig
Structura de date a unei rețele neuronale
Indiferent de arhitectura ei, o re țea neuronală implementat ă în NN toolbox este o structură de
date neomogenă ce conține toate informațiile privind rețe aua. Componentele ei sunt matricile
parametrilor neuronali pentru toate unitățile din rețea, parametrii privind variantele de
implementare ale proceselor de simulare și de antrenare, parametrii de control etc. Printre
câmpurile acestei structuri se află ve ctorii de celule [ 1] ce conțin: matricea ponderilor,
vectorul pragurilor, vectorul semnalelor de ieșire.
Pentru exemplificare, să considerăm o rețea formată dintr -o singură unitate de calcul, având
două mărimi de intrare, inițializată prin comanda
net = ne wp([0 1;0 1], 1);

Tehnici de inteligen ță artificială. Îndrumar de laborator

8 (funcția newp este prezentată în lucrarea următoare). Componentele structurii pot fi accesate
în fereastra “Workspace”. În “Command window” sau în programe, v ectorul ponderilor
semnalelor de intrare este accesibil prin:
net.IW{1}
iar dep lasarea
net.b{1}
Parametrii de control se stabilesc prin atribuire a unor valori. De exemplu, pentru antrenarea
rețelei, se poate defini eroarea maxim admisă a erorii de antrenare
net.trainParam.goal = 0 .1;
(care trebuie să fie o valoare foarte mică în r aport cu valorile din setul de date de antrenare)
sau numarul maxim de parcurgeri ale setului de date de antrenare
net.adaptParam.passes = 10;
Antrenarea rețelelor neuronale în MATLAB
În MATLAB sunt disponibile două funcții pentru antrenarea unei rețele n euronale anterior
inițializată: adapt și train . Funcția adapt [2] realizează o antrenare serială (incrementale,
eng. sequential learning ) în sensul că ajustarea ponderilor rețelei se efectuează după
prezentarea fiecărui exemplu din setul de antrenare. Func ția train [3] realizează o antrenare
pe lot (eng. batch learning ), adică ajustarea ponderilor rețelei se face după o parcurgere a
setului de date.
Sintaxa minimală a celor două funcții este similară :
retea_antrenata = adapt(retea, date_de_intrare, date_de _iesire)
retea_antrenata = train(retea, date_de_intrare, date_de_iesire)
unde:
– “retea ” este rețeaua neuronală obținută în urma inițializării ,
– “date_de_intrare ” este o matrice conținând valorile semnalelor de intrare din setul de
date de antrenare,
– “date_ de_iesire ” este o matrice conținând valorile impuse semnalelor de ieșire
corespunzătoare .
Evident, ambele funcții implementează algoritmi de instruire supervizată.

Introducere în rețele neuronale . Prezentarea pa chetului Neural Network Toolbox

9 Simularea unei rețele
După antrenare, rețeaua neuronală este testată folosind fie setul de date de antrenare sau o
parte a acestuia, fie un set de date de verificare distrinct. Simularea rețelei se face cu funcția
sim, a cărei sintaxă este:
iesiri = sim(retea_antrenata, intrari)
unde:
– “intrari ” este o matrice conținând valorile semnalelor de int rare din setul de date de
testare,
– “iesiri ” este o matrice conținând valorile mărimilor de ieșire obținute de rețeaua
antrenată.
Dacă rețeaua este corect antrenată, atunci valorile semnalelor de ieșire obținute sunt egale cu
cele impuse (sau sunt acceptab il de apropiate).
Observație . În MATLAB sunt definite mai multe funcții cu numele sim în diferite pachete,
identificabile prin tipul argumentelor transmise. Pentru a afla detalii privind funcția care
simulează funcționarea unei rețele neuronale, se scrie comanda
help network/sim
Exemple
 Exemplul 1.1 .
Reprezentarea grafică a funcțiilor de activare uzuale.
 Rezol vare
Programul următor prezintă grafic toate cele 7 funcții de activare uzuale enumerate în tabelul
1.1.
% Domeniul de definitie pentru care se reprezinta grafic functiile
x = -5:0.01:5;

% Calculam valorile functiilor de activare pe domeniul stabilit
y1 = hardlim(x);
y2 = hardlims(x);
y3 = purelin(x);
y4 = satlin(x);

Tehnici de inteligen ță artificială. Îndrumar de laborator

10 y5 = satlins(x);
y6 = logsig(x);
y7 = tansig(x);

% Afisam fiecare functie intr -un "subgrafic"
grid on
subplot(2,4,1); plot(x,y1); title('Treapta asimetrica (hardlim)');
subplot(2,4,2); plo t(x,y2); title('Treapta simetrica (hardlims)');
subplot(2,4,3); plot(x,y3); title('Liniara (purelin)');
subplot(2,4,4); plot(x,y4); title('Liniara cu saturatie asimetrica (satlin)');
subplot(2,4,5); plot(x,y5); title('Liniara cu saturatie simetrica (satlin s)');
subplot(2,4,6); plot(x,y6); title('Sigmoidala asimetrica (logsig)');
subplot(2,4,7); plot(x,y7); title('Sigmoidala simetrica (tansig)');
Exerciții propuse
 Problema 1.1
Să se scrie câte o funcție MATLAB sau C/C++ pentru implementarea funcțiilor de act ivare
uzuale.
 Problema 1.2
Studiați influența pragului de activare (deplasării) asupra ieșirii produse de funcția de activare.
Indicație : Se vor reprezenta pe același grafic funcțiile
)(sf ,
) ( 1bsf ,
) ( 2bsf , …, unde
f
este o funcție de activare uzuală, iar
1b ,
2b, … sunt diverse valori ale pragului de activare.
 Problema 1.3
Să se scrie un program MATLAB sau C/C++ pentru implementarea modelului ne uronal
(descris în figura 1.1 și relațiile 1.1 – 1.2) și ilustrarea calculelor efectuate de acesta. Realizați
mai multe variante folosind funcții de activare diferite.
Indicație : Se va stabili o structura de date pentru parametrii neuronului și se va scrie o funcție
pentru simularea funcționării acestuia. Funcția va primi ca argument vectorul semnalelor de
intrare și va returna valoarea mărimii de ieșire.

Introducere în rețele neuronale . Prezentarea pa chetului Neural Network Toolbox

11  Problema 1.4
Studiați programele demonstrative nnd2n1 și nnd2n2 cuprinse în pachetul Neural Network.

Referințe
[1] ***, https://www.mathworks.com/help/matlab/cell -arrays.html
[2] ***, https://www.mathworks.com/help/nnet/ref/a dapt.html
[3] ***, https://www.mathworks.com/help/nnet/ref/train.html

Similar Posts