Metode de optimizare a [613211]

Metode de optimizare a
funct iilor aplicate ^ n
conducerea autonom a a
autovehiculelor
Dima Drago s-Matei
17 iunie 2020

Cuprins
1 Introducere 2
1.1 Motivat ie pentru alegerea temei . . . . . . . . . . . . . . . . . 2
2 Not iuni teoretice ale ret elelor neuronale 3
2.1 Ce este o ret ,ea neuronal a . . . . . . . . . . . . . . . . . . . . . 3
2.2 Ret ,ele neuronale biologice . . . . . . . . . . . . . . . . . . . . 3
2.3 Arhitectura s ,i componentele ret ,elelor neuronale . . . . . . . . 4
2.4 Cum funct ,ioneaz a o ret ,ea neuronal a . . . . . . . . . . . . . . . 8
3 Algoritmi de implementare  si aplicat ii 24
3.1 Metode de optimizare . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Ret ,ele neuronale optimizate prin S.G.D. . . . . . . . . . . . . 30
3.3 Conceptul de autonomie ^ n conducerea autovehiculelor . . . . 34
1

Capitolul 1
Introducere
1.1 Motivat ie pentru alegerea temei
Numele lucr arii mele de licent , a este"Metode de optimizare a funct ,iilor
aplicate in conducerea autonoma a autovehiculelor".
Motivul alegerii acestei teme deriv a din curiozitate si dorint ,a de a ^ nt ,elege
mai bine metodele de optimizare deoarece ele sunt foarte importante, at^ at la
nivelul conducerii autonome, c^ at s ,i^ n aproxim ari computat ,ionale matematice
folosite in diferite domenii.
Aceste metode de optimizare reprezint a ^ n larg un concept numit "ret ,ele
neuronale" prin care se introduc date de intrare iar utiliz^ and algoritmii co-
respunz atori, obt ,inem date de ies ,ire relevante.
Din punct de vedere teoretic, aceast a lucrare dores ,te s a aduc a un plus de
cunoas ,tere asupra conceptului de "ret ,ele neuronale" deoarece acestea sunt
tot mai mult folosite odat a cu cres ,terea capacit at ,ilor computat ,ionale a cal-
culatoarelor moderne.
Din punct de vedere aplicativ, rezultatele obt ,inute vor aduce o noua per-
spectiv a asupra optimiz arii funct ,iilor matematice s ,i de a ar ata capabilitatea
inteligent ,ei arti ciale, comparativ cu cea uman a.
2

Capitolul 2
Not iuni teoretice ale ret elelor
neuronale
2.1 Ce este o ret ,ea neuronal a
O ret ,ea neuronal a biologic a reprezint a un ansamblu de neuroni ce pot
forma structuri de o complexitate deosebit a. Aceste structuri sunt formate
din milioane de neuroni interconectat ,i prin sinapse.
De aici apare conceptul de "ret ,ea neuronal a arti cial a", care este inspirat a
de ret ,elele neuronale biologice care constituie creierul uman. Componenta
de baza a acestei ret ,ele este neuronul arti cial, care modeleaz a neuroni bio-
logici, dar av^ and o complexitate mult mai mic a, utiliz^ and funct ,ii matematice
comparativ cu impulsurile electrice.
2.2 Ret ,ele neuronale biologice
^In biologie, activitatea creierului uman este deterinat a de transferul de
informat ,ii prezent ^ n t ,esutul nervos.
T,esutul nervos este format din dou a componente:
ˆNeuronul – acesta are rolul de a transmite informat ,iile c atre alt ,i neuroni
prin conexiuni numite sinapse
ˆCelulele gliale – acestea au rol de suport structural
3

Transmiterea informat ,iilor se face prin sinapse, iar acestea sunt de dou a
feluri:
ˆSinapse electrice
ˆSinapse chimice
Sinapsele electrice utilizeaz a ioni de sodiu sau calciu pentru transmiterea
impulsului electric de la un neuron la altul. Atunci c^ and doi neuroni sunt
cuplat ,i electric, o s a existe o diferent , a de potent ,ial, iar o cantitate mic a de
curent ionic va trece de la un neuron la cel alalt.
Sinapsele chimice se bazeaz a^ n principal pe neurotransmit , atori sau neuro-
mediatori chimici. Aces ,tia pot avea efect de excitare precum acidul glutamic
sau de inhibare ca s ,i glicina. Transferul se realizeaz a printr-o fant a sinaptic a
^ ntre cei doi neuroni.
2.3 Arhitectura s ,i componentele ret ,elelor ne-
uronale
Arhitectura ret ,elelor neuronale arti ciale este modelat a ^ n principal dup a
cea a ret ,elelor neuronale biologice. Principalul motiv este simularea capa-
cit at ,ii de ^ nv at ,are pentru a rezolva probleme mult prea complicate pentru
algoritmi convent ,ionali.
Majoritatea ret ,elelor neuronale arti ciale folosesc neuronul arti cial McCulloch-
Pitts, acest model dispune de anumite valori numerice numite "greut at ,i" s ,i
"deplasare" (bias) ale leg aturilor neuronale, simul^ and intensitatea impulsuri-
lor electrice ce se transmit prin sinapsele neuronilor biologici. Folosind aceste
greut at ,i ^ mpreun a cu un vector de date de intrare, se calculeaz a combinat ,ia
liniar a a acestora, iar apoi se aplic a o funct ,ie de activare pentru a determina
dac a neuronul va transmite datele mai departe.
Exist a o multitudine de arhitecturi de ret ,ele neuronale arti ciale, dar cele
mai populare sunt cele de tip unidirect ,ional (ca de exemplu, perceptron-ul
multistrati cat) unde avem un strat de neuroni pentru datele de intrare, unul
sau mai multe straturi de neuroni "ascunse" pentru procesarea datelor s ,i un
strat de neuroni pentru datele de ies ,ire.
4

Figura 2.1: Modelul unei ret ,ele neuronale arti ciale
Tipuri de ret ,ele:
1. Dup a tipul de conexiuni:
(a) Mono strati cate { avem doar intr ari s ,i ies ,iri ce formeaz a un strat
(b) Multistrati cate { avem straturi pentru intr ari, procesare s ,i ies ,iri
2. Dup a direct ,ia semnalului
(a) Ret ,ele unidirect ,ionale { datele se deplaseaz a^ ntr-o singur a direct ,ie
(b) Ret ,ele feedback { unde straturile superioare interact ,ioneaz a cu
cele anterioare
^In aceste ret ,ele, tot ,i neuronii sunt interconectat ,i.
As,a putem s a^ nt ,elegem c a o ret ,ea neuronal a este format a dintr-o mult ,ime
de funct ,ii interconectate. Funct ,iile de activare determin a dac a neuronul are
su cient a "putere" pentru a transmite datele mai departe.
5

Figura 2.2: Exemplu ret ,ea neuronal a unidirect ,ional a
Exemple de funct ,ii de activare:
ˆFunct ,ia sigmoid a:
(2.1) f(x) =1
1 +ex
ˆFunct ,ia treapt a:
(2.2) f(x) =0x0
1x0
ˆFunct ,ia ReLU:
(2.3) f(x) = max(0;x)
Cele mai populare funct ,ii de activare sunt ReLU si Sigmoid deoarece ele
simuleaz a cel mai bine transmiterea informat ,iilor ca ^ n neuronii biologici.
Adesea, funct ,ia ReLU este favorizat a deoarece aceasta imit a "acumularea"
de impuls electric a neuronilor biologici.
6

Figura 2.3: Funct ,ia sigmoid a
Figura 2.4: Funct ,ia treapt a
7

Figura 2.5: Funct ,ia ReLU
2.4 Cum funct ,ioneaz a o ret ,ea neuronal a
Ret ,elele neuronale arti ciale au abilitatea de a "^ nv at ,a", reus ,ind s a-s ,i
adapteze propriul algoritm de procesare a datelor pentru a rezolva problema.
^In ansamblu, mecanismele de ^ nv at ,are a ret ,elelor neuronale se pot ^ mp art ,i
in dou a clase:
1. Supravegheate – avem un set de exemple ^ mpreun a cu clasi carea lor
corect a
2. Nesupravegheate – avem un set de exemple f ar a clasi c ari
^Inv at ,area ret ,elelor neuronale:
Cel mai important proces ^ l reprezint a metoda de ^ nv at ,are prin care orice
ret,ea neuronal a reus ,es,te s a rezolve probleme. Exist a o multitudine de me-
tode de ^ nv at ,are, dar ^ n general toate pot privite ca ind o regresie a unei
funct ,ii matematice.
Ret ,elele neuronale pot considerate ca un mecanism general pentru aproxi-
marea funct ,iilor de orice fel. Cea mai simpl a metod a de ^ nv at ,are reprezint a
8

utilizarea regresiei liniare s ,i a funct ,iei de cost. Vrem s a g asim dou a valori a
s,ibastfel ^ nc^ at y=ax+bs a e cea mai bun a aproximare a unei funct ,ii.
Init ,ial, vom lua 2 valori oarecare, spre exemplu (1.3, -3.9):
Bine^ nt ,eles, aceast a aproximare nu este prea bun a. Avem nevoie de un algo-
ritm care s a modi ce valorile a s ,i b astfel ^ nc^ at sa avem o linie care reprezint a
cel mai bine punctele de pe graf. Aici putem folosi funct ,ia de cost, unde cos-
tul reprezint a eroarea funct ,iei, sau mai bine zis, diferent ,a dintre valoarea
corect a s ,i cea dat a.
O funct ,ie de cost destul de popular a ar :
(2.4) C(a;b) =1
2nnX
i=0(z(xi;a;b)yi)2
Undez(xi;a;b) =axi+breprezint a linia de pe graf.
Aceast a funct ,ie de cost calculeaz a diferent ,a sau "eroarea" medie a tuturor
punctelor de pe graf.
Trebuie s a g asim o metod a pentru a minimiza aceast a funct ,ie de cost
astfel ^ nc^ at valoarea ei sa e cat mai aproape de 0. Deoarece funct ,ia depinde
de 2 parametri reali, funct ,ia nu este o "linie" ci o "p atur a" atunci c^ and este
reprezentat a pe graf. S ,tim din liceu c a puteam g asi minimul unei funct ,ii folo-
sind derivata. ^In acest caz, deoarece funct ,ia noastr a de cost are 2 parametri,
vom folosi un concept numit gradient.
Gradientul unei funct ,ii scalaref(x) ^ n raport cu o variabil a vectorial a
x= (x1; x2; :::xn) reprezint a un c^ amp vectorial ale c arui componente sunt
derivatele part ,iale ale luif.
(2.5) rf=@f
@x1; ::: ;@f
@xn
Acest vector este ^ ndreptat, in ecare punct, ^ n direct ,ia celei mai mari
rate de cres ,tere a c^ ampului scalar.
Utiliz^ and de nit ,ia gradientului, putem deduce c a pentru a a
a minimul unei
funct ,ii cu 2 sau mai mult ,i parametri, putem merge ^ mpotriva sensului de
cres ,tere.
(2.6) ai+1=ai@C
@a=ai1
nnX
i=0(z(xi;a;b)yi)xi
9

(2.7) bi+1=bi@C
@b=bi1
nnX
i=0z(xi;a;b)yi
{ reprezint a o rat a de ^ nv at ,are care ne spune c^ at de repede ajungem
c atre minim. Dac a valoarea ei e prea mare, vom rata minimul, iar dac a este
prea mic a vom ajunge foarte greu la minim. Dac a utiliz am o rat a de ^ nv at ,are
neadecvat a s-ar putea s a r am^ anem blocat ,i ^ ntr-un minim local.
Exemplu – Recunoas ,terea cifrelor scrise:
Cel mai simplu si des utilizat exemplu de ret ,ea neuronal a este un percep-
tron multistrati cat care recunoas ,te cifrele scrise de m^ an a.
Aceast a ret ,ea va utiliza funct ,ia de activare sigmoid, deoarece este o funct ,ie
"neted a" iar mici modi c ari la greut at ,i s,i deplas ari vor rezulta ^ n mici modi-
c ari la rezultatul nal al funct ,iei. Ret ,eaua noastr a va de tip unidirect ,ional
s,i compus a din 3 straturi:
ˆ784 de neuroni pentru stratul de intrare
ˆ15 neuroni pentru stratul ascuns
ˆ10 neuroni pentru stratul de ies ,ire
Datele de intrare reprezint a imagini de dimensiuni 28 x 28 pixeli, deci
784, unde ecare neuron de intrare va primi valoarea unui pixel, intre 0 si
255, unde 0 reprezint a un pixel alb, s ,i 255 un pixel negru.
Num arul neuronilor din stratul ascuns poate s a varieze, iar 15 reprezint a o
valoare oarecare.
^In stratul de ies ,ire avem 10 neuroni deoarece ecare este asociat cu o cifr a
^ ntre 0 s ,i 9. Aces ,ti neuroni vor cont ,ine rezultatul funct ,iei de activare sig-
moid, as ,adar o valoare real a ^ ntre 0 s ,i 1. Spre exemplu, dac a al 6-lea neuron
cont ,ine valoarea 0.97, putem spune c a ret ,eaua consider a cifra scris a ca ind
"5", iar restul neuronilor au valori aproape de 0.
Metoda de ^ nv at ,are va una supravegheat a folosind setul de date MNIST
care cont ,ine 70,000 de imagini de 28 x 28 pixeli ^ mpreun a cu exemplele de
clasi care.
10

Acest set de date este ^ mp art ,it ^ n dou a:
Primul set este cel de "antrenare", format din 60,000 de imagini 28 x 28,
^ mpreun a cu 60,000 de exemple de clasi care, utilizat pentru a antrena
ret,eaua neuronal a s a recunoasc a cifrele scrise de m^ an a.
Al doilea set este cel de "testare", format din 10,000 de imagini 28 x 28,
^ mpreun a cu 10,000 de exemple de clasi care, utilizat pentru a determina
acuratet ,ea ret ,elei neuronale atunci c^ and primes ,te cifre noi ca date de in-
trare.
Din punct de vedere matematic:
Imaginile sunt matrice de 28 x 28, unde ecare valoare este un num ar
natural ^ ntre 0 s ,i 255. Exemplele de clasi care sunt vectori cu 10 elemente,
ecare element av^ and o valoare real a ^ ntre 0 s ,i 1.
Exemplu: Dac a ret ,eaua neuronal a a recunoscut cifra ca ind "4", rezul-
tatul va :
a= (0;0;0;0;1;0;0;0;0;0)
Scopul nostru este de a g asi un algoritm care determin a greut at ,ile s ,i de-
plas arile necesare astfel ^ nc^ at rezultatul ret ,elei neuronale:::as a e c^ at mai
apropiat de cel al exemplului de clasi care. Pentru a cuanti ca c^ at de bine
reus ,im s a facem asta, vom utiliza o funct ,ie de cost.
(2.8) C(w;b) =1
2nX
xjy(x)aj2
w- greut at ,ile ret ,elei (num ar real)
b- deplasarea ret ,elei (num ar real)
n- num arul total de date de intrare (num ar natural)
x- set de matrice 28 x 28 care reprezint a imaginea unei cifre scrise de m^ an a
(matrice 28 x 28)
y(x) { rezultatul corect (exemplul de clasi care) pentru o anumit a imagine
din setul x (vector cu 10 elemente)
a- rezultatul ret ,elei noastre pentru o anumit a imagine din setul x (vector cu
10 elemente)
11

Aceast a funct ,ie de cost se numes ,te MSE (Mean-Squared-Error) care cu-
anti c a media erorii unei funct ,ii.
Observ am ca aceast a funct ,ie este strict pozitiv a, iar aceasta se apropie
de valoarea 0 atunci c^ and rezultatul ret ,elei noastre a se apropie de valoarea
corect ay(x) din exemplul de clasi care.
As,adar algoritmul nostru a determinat valorile corecte ale greut at ,ilor s ,i
deplas arilor atunci c^ and C(w;b)0.
Pe de alt a parte, c^ and C(w;b) este foarte mare, atunci valoarea noastr a
a nu este nici pe departe apropiat a valorii corecte y(x). Un exemplu ar
atunci c^ and s ,tim c a exemplul de clasi care ne spune c a cifra este "3" deci
y(x) = (0;0;0;1;0;0;0;0;0;0)
dar rezultatul ret ,elei noastre este:
a= (0:01;0:004;0:05;0:004;0:004;0:02;0:0043;0:1;0:91;0:001),
adic a a determinat c a cifra cu cea mai mare probabilitate este "8".
As,adar scopul nostru este de a utiliza un algoritm de minimizare a funct ,iei
de cost. Algoritmul pe care ^ l vom folosi se numes ,te "gradient descent".
O metod a de rezolvare ar utilizarea analizei matematice pentru a g asi mi-
nimul global al funct ,iei de cost, dar aceast a metod a funct ,ioneaz a doar pentru
funct ,iile cu c^ at ,iva parametri. Ret ,elele neuronale mai complicate pot depinde
de milioane sau chiar miliarde de parametrii iar calcularea derivatelor part ,iale
a miliardelor de posibile variabile nu este fezabil a.
Din fericire, exist a o frumoas a analogie care sugereaz a un algoritm de rezol-
vare destul de e cient. S a presupunem c a funct ,ia noastr a de cost reprezint a
o vale. Apoi ne imagin am o minge care se rostogoles ,te pe fundul v aii. Pu-
tem utiliza aceast a idee s a g asim minimul funct ,iei prin alegerea unui punct
aleatoriu ca s ,i punct de plecare al mingii. Putem simula "cobor^ area" mingii
pur s ,i simplu prin calcularea derivatelor funct ,iei. Aceast a rat a de schim-
bare a funct ,iei se numes ,te gradient. Deoarece gradientul reprezint a vectorul
^ ndreptat spre rata de schimbare maxim a, vom merge ^ n direct ,ia opus a aces-
12

tuia pentru a g asi minimul funct ,iei.
As,adar valoarea cu care se schimb a funct ,ia de cost poate calculat a ca
ind:
(2.9)  C=rCv
C- valoarea cu care se schimb a funct ,ia de cost
rC- gradientul funct ,iei de cost
v- vector de schimbare
Deoarece noi mergem invers sensului gradientului, avem:
(2.10)  v=rC
- rata de ^ nv at ,are
^In general, metoda "gradient descent" funct ,ioneaz a prin calcularea re-
petat a a gradientului funct ,iei s ,i apoi mis ,carea ^ n direct ,ia opus a. Avantajul
acestei metode este c a poate aplicata asupra oric arei funct ,ii, e cu 2 e cu
un milion de variabile.
Dac a ne ^ ntoarcem la problema noastr a original a, avem de g asit valori optime
pentru greut at ,i s,i deplas ari astfel ^ nc^ at funct ,ia noastr a de cost sa e c^ at mai
aproape de 0, as ,adar ^ mp art ,ind metoda "gradient descent" pe componentele
funct ,iei, rezult a:
(2.11) w0
k=wk@C
@wk
(2.12) b0
l=bl@C
@bl
13

@C
@wk{ rata de schimbare a funct ,iei de cost ^ n funct ,ie de greut at ,i
@C
@bl{ rata de schimbare a funct ,iei de cost ^ n funct ,ie de deplas ari
Deoarece funct ,ia noastr a de cost este o sum a de forma C=1
nP
xCx,
aceasta reprezint a media costurilor.
(2.13) Cx=1
2jy(x)aj2
^In practic a trebuie s a calcul am gradientul ec arei imagini iar apoi s a le
facem media. Pentru multe date de intrare, acest proces poate s a dureze
foarte mult timp.
Exist a totus ,i o metod a numit a "stochastic gradient descent" care ne poate
ajuta. Ideea este s a estim am gradientul rCprin calcularearCxpentru
un num ar mic de imagini din x. Chiar s ,i pentru un num ar mic de imagini
putem obt ,ine o estimare destul de bun a. Pentru a pus a ^ n aplicare, ale-
gem aleatoriu un num ar mde imagini, etichetate X1; X 2; ::: ; X mnumite
"mini-batch", iar pentru un num ar su cient mavem:
(2.14) rC1
mmX
j=1Cx
(2.15) w0
k=wk
mX
j@CXj
@wk
(2.16) b0
l=bl
mX
j@CXj
@bl
Dup a ce am calculat gradientul acestui "mini-batch", alegem altul, s ,i tot
as,a p^ an a folosim toate imaginile, atunci punem zice ca am efectuat o "epoc a"
de antrenare. ^In cazul nostru cu setul MNIST, avem n= 60;000 iar mini-
batch-ul poate avea m= 15 spre exemplu.
Implementarea algoritmului de "gradient descent" utiliz^ and Python^ mpreun a
cu libr aria Numpy:
14

class Network(object):
def __init__(self, sizes):
self.num_layers = len(sizes)
self.sizes = sizes
self.biases = [np.random.randn(y, 1) for y in sizes[1:]]
self.weights = [np.random.randn(y, x)
for x, y in zip(sizes[:-1], sizes[1:])]
^In acest obiect "Network" avem 3 variabile relevante:
ˆ- num arul de straturi
ˆ- deplas arile
ˆ- greut at ,ile
Funct ,ia np.random.randn genereaz a o matrice cu valori aleatorii pentru
deplas ari s ,i greut at ,i astfel ^ nc^ at noi nu trebuie sa init ,ializ am manual nicio
variabil a.
Dup a, trebuie s a de nim funct ,ia de activare sigmoid:
def sigmoid(z):
return 1.0 / (1.0 + np.exp(-z))
Apoi, ad aug am funct ,ia "feedforward" care va aplica funct ,ia de activare asu-
pra datelor de intrare.
def feedforward(self, a):
for b, w in zip(self.biases, self.weights):
a = sigmoid(np.dot(w, a)+b)
return a
Desigur, principalul obiectiv al clasei "Network" este s a ^ nvet ,e, as ,a c a vom
ad auga funct ,ia de stochastic gradient descent, prescurtat SGD pentru a fa-
cilita acest lucru.
15

def SGD(self, training_data, epochs, mini_batch_size, eta,
test_data=None):
"""Antren am ret ,eaua folosind mini-batch stochastic
gradient descent. Parametrul "training_data" este o lista de
tuple "(x, y)" care reprezint a datele de intrare x s ,i exemplele
de clasificare y.
Dac a introducem parametrul opt ,ional "test_data", atunci
ret ,eaua va evalua acuratet ,ea folosind setul de testare"""
if test_data: n_test = len(test_data)
n = len(training_data)
for j in xrange(epochs):
random.shuffle(training_data)
mini_batches = [training_data[k:k+mini_batch_size] for k in xrange(0, n, mini_batch_size)]
for mini_batch in mini_batches:
self.update_mini_batch(mini_batch, eta)
if test_data:
print "Epoca {0}: {1} / {2}".format(j, self.evaluate(test_data), n_test)
else:
print "Epoca {0} complet a".format(j)
Funct ,ia random.shue amestec a matricea datelor de intrare, astfel ^ nc^ at la
ecare epoc a nou a, sa avem alt a ordine a imaginilor.
Funct ,ia update mini batch aplic a SGD pe ecare mini set de mimagini.
def update_mini_batch(self, mini_batch, eta):
nabla_b = [np.zeros(b.shape) for b in self.biases]
nabla_w = [np.zeros(w.shape) for w in self.weights]
for x, y in mini_batch:
delta_nabla_b, delta_nabla_w = self.backprop(x, y)
nabla_b = [nb+dnb for nb, dnb in zip(nabla_b, delta_nabla_b)]
nabla_w = [nw+dnw for nw, dnw in zip(nabla_w, delta_nabla_w)]
self.weights = [w-(eta/len(mini_batch))*nw
for w, nw in zip(self.weights, nabla_w)]
self.biases = [b-(eta/len(mini_batch))*nb
for b, nb in zip(self.biases, nabla_b)]
Funct ,ia cea mai important a este self.backprop(x, y) care returneaz a valo-
rile cu care trebuie ajustate toate greut at ,ile s ,i deplas arile ret ,elei neuronale.
16

Cum funct ,ioneaz a algoritmul "backpropagation":
S a presupunem ca avem o ret ,ea neuronal a unidirect ,ional a cu 3 straturi.
Toate cele 3 straturi au c^ ate 2 neuroni. Funct ,ia de activare pe care o vom
folosi este cea sigmoid a. Funct ,ia de eroare va MSE.
Figura 2.6: Ret ,ea neuronal a cu 3 straturi
Aici am init ,ializat valorile:
i1 = 0.05, w3 = 0.25, w7 = 0.5
i2 = 0.1, w4 = 0.3, w8 = 0.55
w1 = 0.15, w5 = 0.4, training o1 = 0.01
w2 = 0.2, w6 = 0.45, training o2 = 0.99
17

Pentru a ^ nt ,elege algoritmul backpropagation, trebuie mai ^ nt^ ai s a proces am
setul de date de intrare i1 s ,i i2. De exemplu, valoarea transmis a neuronului
h1 va :
(2.17) neth1=w1i1+w2i2+b1= 0:3775
Apoi ^ i aplic am funct ,ia sigmoid a.
(2.18) outh1=1
1 +eneth1= 0:59326
La fel calcul am s ,i pentru neuronul h2:
(2.19) outh2= 0:77292
Fiindc a funct ,ia noastr a de eroare este MSE, avem:
(2.20) Etotal=X1
2(targetoutput )2
Funct ,ia are coe cientul1
2pentru a-i anula puterea atunci c^ and o vom deriva.
As,adar, eroarea total a este suma erorilor neuronilor o1 s ,i o2.
(2.21) Eo1=1
2(targeto1outputo1)2= 0:274811
(2.22) Eo2=1
2(targeto2outputo2)2= 0:02356
(2.23) Etotal=Eo1+Eo2= 0:29837
Acum c a am procesat eroarea total a a ret ,elei neuronale, urmeaz a pasul
cel mai important, ajustarea greut at ,ilor anterioare. Spre exemplu vrem s a
ajust am valoarea greut at ,ii w5, adic a s a a
 am cum o anumit a schimbare a
18

valorii lui w5 afecteaz a eroarea total a, as ,adar:
@Etotal
@w5= valoarea cu care trebuie ajustat a greutatea w5
Folosind un concept din analiza matematic a numit "chain rule", avem c a:
(2.24)@Etotal
@w5=@Etotal
@outo1@outo1
@neto1@neto1
@w5
Am ajuns la aceast a formul a merg^ and invers senului de procesare a datelor:
Figura 2.7: Procesul de backpropagation asupra unui neuron
Acum trebuie s a calcul am ecare component a:
@Etotal
@out o1= 21
2(targeto1outo1)211 + 0 =(targeto1outo1)
@Etotal
@out o1=(0:010:75136) = 0:74136
@out o1
@net o1=outo1(1outo1) = 0:75136(10:75136) = 0:18681
@net o1
@w5= 1outh1w(11)
5 =outh1= 0:59326
19

^In nal, valoarea cu care trebuie sa ajust am greutatea w5 este:
@Etotal
@w5= 0:741360:186810:59326 = 0:08216
Pentru o rat a de ^ nv at ,are= 0:5 avem:
w0
5=w5@Etotal
@w5= 0:40:50:08216 = 0:35892
Apoi, repet am acest proces s ,i pentru greut at ,ile w6, w7, w8:
w0
6= 0:40866
w0
7= 0:5113
w0
8= 0:56137
Important este s a t ,inem minte faptul c a vom actualiza greut at ,ile ret ,elei dup a
ce am calculat toate noile greut at ,i.
Urm atorul pas este s a actualiz am greut at ,ile w1, w2, w3 s ,i w4 din stratul
ascuns:
S a luam w1 spre exemplu:
@Etotal
@w1=@Etotal
@out h1@out h1
@net h1@net h1
@w1
Deoarece funct ,ia eroare se aplic a numai neuronilor de ies ,ire, nu ^ i putem
calcula direct derivata part ,ial a, dar s ,tim c a eroarea total a este suma erorilor
neuronilor o1 s ,i o2:
@Etotal
@out h1=@Eo1
@out h1+@Eo2
@out h1
@Eo1
@out h1=@Eo1
@net o1@net o1
@out h1
@Eo1
@net o1=@Eo1
@out o1@out o1
@net o1= 0:741360:18681 = 0:13849
@net o1
@out h1=w5= 0:4
@Eo1
@out h1= 0:138490:4 = 0:05539
Urm^ and acelas ,i procedeu pentru@Eo2
@out h1avem:
20

@Eo2
@out h1=0:01904
@Etotal
@out h1= 0:055390:01904 = 0:03635
@out h1
@net h1=outh1(1outh1) = 0:593269(10:593269) = 0 :24130
neth1=w1i1+w3i3+b1
@net h1
@w1=i1= 0:05
^In nal:
@Etotal
@w1= 0:036350:241300:05 = 0:0004385
w0
1=w1@Etotal
@w1= 0:150:50:0004385 = 0 :1497807
Repet^ and acest proces s ,i pentru w2, w3 s ,i w4 avem:
w0
2= 0:199561
w0
3= 0:249751
w0
4= 0:299502
Bine^ nt ,eles dac a dorim s a actualiz am s ,i deplas arile ret ,elei, procesul va
aproape identic.
Exemplu de clasi care a cifrelor utiliz^ and Keras s ,i Tensor
ow ^ n Python:
^In exemplul precedent, s-a pus mult accent pe partea matematic a a ret ,elei
neuronale. Libr ariile moderne precum Keras au abstractizate aceste calcule,
l as^ andu-ne la dispozit ,ie o interfat , a mult mai simpl a s ,i care poate foarte us ,or
con gurat a.
Spre deosebire de codul precedent, libr aria Keras ne permite s a imple-
ment am o ret ,ea neuronal a unidirect ,ional a multistrati cat a ^ n mai put ,in de
20 de linii de cod:
Cum funct ,ioneaz a codul:
^In primul r^ and, avem nevoie de seturile de date MNIST pentru cifre scrise,
acestea se pot reg asi ^ n structura "datasets" din libr aria Keras.
Apoi ^ mp art ,im aceste seturi in 2 tuple, una care cont ,ine setul de antrenare
^ mpreun a cu exemplele de clasi care, iar cealalt a care cont ,ine setul de testare
21

Figura 2.8: Ret ,ea neuronal a arti cial a implementat a ^ n Python
cu exemplele de clasi care.
Cel mai important pas este crearea ret ,elei neuronale. Folosim modelul secvent ,ial
deoarece folosim o ret ,ea unidirect ,ional a. C^ at despre componentele ret ,elei, am
optat pentru un strat de intrare cu 784 de neuroni, unul de ies ,ire cu 10 ne-
uroni, si 2 straturi de procesare, ecare cu 100 de neuroni. De asemenea,
funct ,ia de activare va "ReLU".
Dup a ce am creat ret ,eaua utiliz^ and funct ,ia "compile", putem s a o antren am
cu ajutorul funct ,iei " t".
Dup a aproximativ 5 epoci de rulare, observ am c a acuratet ,ea ret ,elei este de
aproximativ 98.51%:
Iar dup a evaluarea cu cele 10,000 de imagini din setul de testare, observ am
ca avem o acuratet ,e de 97.15% pentru date de intrare noi.
22

Figura 2.9: Rezultatul antren arii ret ,elei cu 60,000 de imagini
Figura 2.10: Rezultatul evalu arii ret ,elei cu 10,000 de imagini
23

Capitolul 3
Algoritmi de implementare  si
aplicat ii
3.1 Metode de optimizare
Gradient descent
Algoritmul "Gradient descent" este unul din cele mai populare metode
pentru optimizarea ret ,elelor neuronale arti ciale. ^In principiu, acest algo-
ritm minimizeaz a o funct ,ief() unde2Rdsunt parametrii modelului
matematic. Aceast a minimizare este efectuat a prin actualizarea parametri-
lor ^ n direct ,ia opus a gradientului funct ,ieirf(). Coe cientul de ^ nv at ,are
determin a m arimea pas ,ilor luat ,i pentru a atinge minimul. Cu alte cuvinte,
urm am direct ,ia pantei suprafet ,ei funct ,iei ^ n jos p^ an a atingem un minim, e
local sau global. Acest algoritm se mai numes ,te "Batch gradient descent"
deoarece calculeaz a gradientul funct ,iei cu tot setul de date de intrare.
(3.1) 0=rf()
Deoarece proces am ^ ntregul set de date de intrare, unul c^ ate unul, timpul
de calculare este destul de lung pentru seturi de date mari. De asemenea
nu putem actualiza modelul matematic utiliz^ and date noi p^ an a c^ and nu am
terminat de procesat setul vechi de date.
24

Stochastic gradient descent (SGD)
O alt a variant a a algoritmului "Gradient descent" se numes ,te "Stochas-
tic gradient descent", iar acesta actualizeaz a parametrii dup a ecare item de
antrenarex(i)s,i etichet ay(i).
(3.2) 0=rf(;x(i);y(i))
Mini-batch Stochastic gradient descent
Acest algoritm alege un num ar mde itemi de antrenare x(i)s,i etichetey(i),
numit "mini-batch", proceseaz a gradientul lor s ,i pentru un num ar su cient
de marem, media aritmetic a a acestor gradiente reprezint a o aproximare
su cient de precis a comparativ cu gradientul funct ,iei pe tot setul de date de
intrare.
(3.3) 0=rf(;x(i:i+m);y(i:i+m))
Acest num ar mde obicei este ^ ntre 50 s ,i 256, dar poate varia ^ n funct ,ie de
problem a s ,i complexitatea setului de date de intrare.
Pentru funct ,ionarea optim a a algoritmului "Gradient descent" este nece-
sar a alegerea corect a a coe cientului de ^ nv at ,are. Dac a acesta este prea mic,
atunci cobor^ area va prea lent a s ,i dimpotriv a, dac a acesta este prea mare,
cobor^ area va prea rapid a s ,i va exista riscul de a omite punctul de minim.
25

Algoritmi de optimizare pentru "Gradient descent"
Momentum
SGD prezint a de cient ,e ^ n parcurgerea suprafet ,elor abrupte, astfel ^ nc^ at ade-
sea oscileaz a de-a lungul muchiilor, ^ ncetinind cobor^ area c atre minim.
Metoda "Momentum" accelereaz a SGD ^ n direct ,ia relevant a s ,i amortizeaz a
oscilat ,iile.
Aceast a optimizare este realizat a ^ n felul urm ator:
Introducem o variabil a nou a zcare reprezint a pasul precedent de cobor^ are.
De asemenea vom utiliza o alt a variabil a
numit a "momentum".
(3.4) z0=
z+rf()
(3.5) 0=z0
Variabila "momentum" are implicit valoarea 0.9 dar poate varia. Apoi
dup a ce am calculat aceast a variabil a, actualiz am parametrii funct ,iei.
Nesterov accelerated gradient
^In acest algoritm, calcul am gradientul pasului urm ator utiliz^ and parame-
trul part ,ial actualizat.
(3.6) ^=
z
(3.7) z0=
z+r^f
^
26

(3.8) 0=z0
Deoarece am calculat gradientul pasului urm ator, ^ l putem utiliza pentru a
evita oscilarea.
Adagrad
Algoritmul Adagrad adapteaz a coe cientul de ^ nv at ,are ^ n funct ,ie de c^ at de
dispersate sunt datele de intrare.
SGD actualizeaz a parametrii cu aceeas ,i coe cient de ^ nv at ,are, Adagrad
modi c a acest coe cient ^ n funct ,ie de num arul pas ,ilor efectuat ,i.
(3.9) gt; i=rtf(t;i)
(3.10) t+1;i=t;ip
Gt;ii+gt; i
Gt;iireprezint a o matrice diagonal a unde ecare element de pe diagonala
principal a este suma p atratelor gradientelor ^ n funct ,ie deip^ an a la pasul t11
s,ireprezint a o variabil a care previne ^ mp art ,irea cu 0.
Principalul avantaj a acestui algoritm este faptul c a nu avem nevoie s a
ajust am manual coe cientul de ^ nv at ,are, dar dezavantajul este c a voma avea
o acumulare de valori ale gradientelor precedente, iar valoarea coe cientului
de ^ nv at ,are va tinde c atre 0.
Adam
Adaptive Moment Estimation este algoritm de optimizare recent ap arut
(2015) care adapteaz a coe cientul de ^ nv at ,are pentru ecare parametru.
Adam poate considerat ca ind o combinat ,ie dintre SGD s ,i alt algoritm de
27

optimizare numit RMSProp.
(3.11) vt= 1vt1(1 1)gt
(3.12) st= 2st1(1 2)g2
t
(3.13)  !t=vtpst+gt
(3.14) !t+1=!t+ !t
{ coe cientul de ^ nv at ,are
gt- gradientul pasului curent
!- greut at ,ile ret ,elei neuronale
vt- medie exponent ,ial a a gradientelor lui !
st- medie exponent ,ial a a p atratelor gradientelor lui ! 1; 2- hiperparamteri
Ce algoritm de optimizare ar trebui utilizat?
Fiecare dintre aces ,ti algoritmi prezint a diverse avantaje s ,i dezavantaje, dar
^ n general, dac a datele de intrare sunt destul de ^ mpr as ,tiate, este recomandat
s a utiliz am un algoritm cu coe cient de ^ nv at ,are variabil precum Adam sau
Adagrad.
SGD este utilizat adesea pentru simplicitate iar singurul dezavantaj poate
timpul de rulare ^ ndelungat atunci c^ and avem o cantitate mare de date de
intrare.
28

Accelerarea timpului de procesare prin Tensor
ow
Procesarea milioanelor de calcule matematice poate un proces destul
de laborios, mai ales dac a este executat de c atre procesor, care proceseaz a
datele ^ n serie.
Tensor
ow este un framework open-source dezvoltat de Google care este uti-
lizat pentru implementarea modelelor ret ,elelor neuronale arti ciale pe tot
felul de dispozitive, de la supercomputere la telefoane mobile. De asemenea
exist a s ,i varianta Tensor
ow-GPU care poate utiliza puterea de procesare ^ n
paralel a pl acilor gra ce, ceea ce reduce foarte drastic timpul de procesare a
calculelor matematice.
Alte metode de optimizare pentru SGD
Amestecarea datelor
Aceasta este una din cele mai folosite metode de optimizare pentru SGD,
ea presupune amestecarea setului de date dup a ecare epoc a de ^ nv at ,are.
Aceast a optimizare este necesar a deoarece ret ,eaua neuronal a poate s a ^ nvet ,e
ordinea datelor de intrare s ,i s a ^ nvet ,e pur s ,i simplu din rezultatele anterioare.
Batch normalization
Aceast a metod a de optimizare normalizeaz a datele de intrare, spre exem-
plu dac a unele date de intrare au valori ^ ntre 0 s ,i 30 iar altele ^ ntre 0 s ,i 500,
le vom normaliza s a aib a valori comune, cum ar ^ ntre 0 s ,i 1. Acest lucru
accelereaz a procesul de ^ nv at ,are al ret ,elei.
De asemenea putem utiliza coe cient ,i de ^ nv at ,are mai mari deoarece prin
normalizarea datelor de intrare, nicio funct ,ie de activare precum cea sig-
moid a nu va da valori prea mari sau prea mici.
29

Oprirea devreme
Dac a dup a c^ ateva epoci, eroarea total a a ret ,elei neuronale nu a sc azut
su cient, atunci este recomandat a oprirea ^ ntregului proces de ^ nv at ,are s ,i re-
luarea de la cap at. Adesea, cauza ^ nv at , arii lente poate init ,ializarea gres ,it a
a greut at ,ilor s ,i a deplas arilor ret ,elei.
3.2 Ret ,ele neuronale optimizate prin S.G.D.
Pentru a vedea mai bine o ret ,ea neuronal a ^ n act ,iune, am decis s a ^ ncep
cu un model destul de simplu care utilizeaz a baza de date fashion MNSIT.
Aceast a baz a de date cont ,ine imagini ale unor articole de ^ mbr ac aminte,
^ mpreun a cu etichete sub forma unor vectori cu care sunt clasi cate. De
asemenea este ^ mp art ,it a ^ n dou a seturi, unul de antrenare s ,i unul de testare.
Setul de antrenare cont ,ine 60,000 de imagini s ,i etichete, iar cel de testare
cont ,ine 10,000 de imagini s ,i etichete. Imaginile sunt reprezentate ca s ,i ma-
trici de 28 x 28 unde ecare element are o valoare ^ ntre 0 (alb) s ,i 255 (negru).
Etichetele sunt reprezentate de un vector cu elemente de la 0 la 9, ecare re-
prezent^ and un articol de ^ mbr ac aminte.
Utiliz^ and libr aria matplotlib, putem vizualiza imaginile din datele de in-
trare. Spre exemplu, imaginea num arul 28323 reprezint a o pereche de blugi,
iar eticheta sa este valoarea 1.
Primul pas care trebuie efectuat este preprocesarea datelor. Deoarece
imaginile au valori ^ ntre 0 s ,i 255, vrem s a normaliz am valorile s a e ^ ntre 0
s,i 1.
Deoarece utiliz am un perceptron, doar neuronii din straturile de proce-
sare vor avea funct ,ii de activare, ^ n cazul acesta vom folosi funct ,ia ReLU.
Apoi vom compila modelul utiliz^ and optimizatorul SGD, o funct ,ie eroare
numit a CategoricalSparseEntropy s ,i vom m asura acuratet ,ea ^ n procente.
Ultimii pas ,i vor antrenarea s ,i testarea modelului creat utiliz^ and datele de
antrenare s ,i testare.
30

Figura 3.1: Tabel cu etichetele articolelor de ^ mbr ac aminte
31

Figura 3.2: Articolul de ^ mbr ac aminte num arul 28323 din setul de antrenare
Figura 3.3: Normalizarea datelor de intrare
Dup a aproximativ 10 epoci de antrenare, am obt ,inut o acuratet ,e de 87.7%
Iar dup a testarea cu 10,000 de imagini noi, obt ,inem o acuratet ,e de 86.3%
32

Figura 3.4: Structura ret ,elei neuronale
Figura 3.5: Compilarea modelului matematic al ret ,elei
Figura 3.6: Antrenarea s ,i evaluarea ret ,elei
Figura 3.7: Acuratet ,ea ret ,elei dup a antrenare
Figura 3.8: Acuratet ,ea ret ,elei dup a evaluare
33

3.3 Conceptul de autonomie ^ n conducerea
autovehiculelor
Conducerea autonom a a autovehiculelor a constituit s ,i constituie t ,inta
de atins pentru produc atorii de autovehicule. Pornind cu entuziasm, la
^ nceputul anului 2014, Societatea de Ingineri Automotive a f acut primii pas ,i
concret ,i, dezvolt^ and 6 niveluri de autonomie concrete.
Nivelul 0
S,oferul trebuie implicat 100% ^ n conducerea autovehiculului.
Nivelul 1
Sistemul de condus autonom poate prelua controlul asupra direct ,iei sau
accelerat ,iei ^ n scenarii limitate. Mas ,inile care ^ ndeplinesc speci cat ,iile de
nivel 1 incorporeaz a urm atoarele tehnologii:
1. Lane Departure Prevention (LDP)
2. Adaptive Crusie Control (ACC)
Nivelul 2
At^ at direct ,ia c^ at s ,i accelerat ,ia pot controlate simultan de c atre sistemul
de conducere Implic a atent ,ia s ,oferului pentru a prelua controlul ^ n cazuri
except ,ionale.
Nivelul 3
Similar cu nivelul 2, dar sistemul poate s a-s ,i identi ce propriile limite din
timp s ,i s a atent ,ioneze s ,oferul s a preia controlul.
Nivelul 4
^Intregul sistem de conducere al mas ,inii poate funct ,iona independent de s ,ofer,
^ n limita unor scenarii date.
Nivelul 5
Mas ,ina este complet autonom a, ne ind nevoie de s ,ofer, volan sau pedale.
34

Conducerea autonom a, prezent s ,i viitor
^In ziua de ast azi, mas ,inile autonome dispun de inteligent , a arti cial a^ mpreun a
cu senzori RADAR s ,i LiDAR, camere de ^ nalt a rezolut ,ie, ^ mpreun a cu actu-
alizarea over-the-air (OTA).
La momentul actual, nivelul de autonomie atins de c atre majoritatea
produc atorilor auto este nivelul 2, tinz^ and treptat spre atingerea nivelului 3.
La nivelul 3 mas ,inile vor avea un mod autopilot care va atent ,iona s ,oferul ^ n
anumite situat ,ii c^ and trebuie s a ^ nlocuiasc a sistemul autopilot. Acest sistem
autopilot include urm atoarele funct ,ii:
1. Funct ,ia care adapteaz a viteza de croazier a ^ mpreun a cu funct ,ia oprit-
pornit
2. Funct ,ia de ment ,inere a benzii de circulat ,ie
3. Funct ,ia de schimbare a benzii de mers
Mas ,inile care utilizeaz a sistemul autopilot de asemenea implementeaz a sis-
teme ADAS (Advanced Driver Assistance System). Aceast a tehnologie poate
detecta s ,i clasi ca diferite obiecte, poate avertiza s ,oferul, poate modi ca vi-
teza autovehiculului iar ^ n unele cazuri poate act ,iona sistemul de fr^ anare.
Cele mai utilizate funct ,ii ale sistemului ADAS sunt:
1. Funct ,ia care monitorizeaz a unghiul mort
2. Funct ,ia care avertizare ^ n cazul ies ,irii de pe band a de circulat ,ie
3. Funct ,ia de avertizare ^ n cazul unei coliziuni frontale
4. Fr^ anare automat a pentru evitarea coliziunii frontale
35

Bibliogra e
[1] Tariq Rashid, Make Your Own Neural Network . CreateSpace Independent
Publishing Platform, 2016
[2] David Kriesel, A Brief Introduction to Neural Networks .
http://www.dkriesel.com , 2017
[3] Radu Fritea, Transmiterea Sinaptic a
http://psihoteca.ro/transmiterea-sinaptica , 2019
[4] Matt Nedrich, An Introduction to Gradient Descent and Linear Regres-
sion
https://spin.atomicobject.com/2014/06/24/gradient-descent-linear-regression ,
2014
[5] Sebastian Raschka, Single-Layer Neural Networks and Gradient Descent
http://sebastianraschka.com/Articles/2015 singlelayer neurons.html ,
2015
[6] Michael A. Nielsen, Neural Networks and Deep Learning Determination
Press, 2015
[7] S ,tef anescu Marian, Introducere ^ n ret ,ele neuronale { Teorie s ,i aplicat ,ii
https://www.code-it.ro/introducere-in-retele-neuronale-teorie-si-aplicatii ,
2018
36

Similar Posts