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 articiale, 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 articial a", care este inspirat a
de ret ,elele neuronale biologice care constituie creierul uman. Componenta
de baza a acestei ret ,ele este neuronul articial, 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 articiale 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 articiale folosesc neuronul articial 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 articiale, dar cele
mai populare sunt cele de tip unidirect ,ional (ca de exemplu, perceptron-ul
multistraticat) 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 articiale
Tipuri de ret ,ele:
1. Dup a tipul de conexiuni:
(a) Mono straticate { avem doar intr ari s ,i ies ,iri ce formeaz a un strat
(b) Multistraticate { 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
sucient 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 +e x
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 articiale 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 clasicarea lor
corect a
2. Nesupravegheate – avem un set de exemple f ar a clasic 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 modice 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 denit ,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=ai 1
nnX
i=0(z(xi;a;b) yi)xi
9
(2.7) bi+1=bi @C
@b=bi 1
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 multistraticat 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 modic 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
clasicare.
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 clasicare, 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 clasicare, 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 clasicare 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 clasicare. Pentru a cuantica 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 clasicare) 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-
antic 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 clasicare.
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 clasicare 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 ecient. 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 sucient 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 denim 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 +e neth1= 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(target output )2
Funct ,ia are coecientul1
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(targeto1 outputo1)2= 0:274811
(2.22) Eo2=1
2(targeto2 outputo2)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(targeto1 outo1)2 1 1 + 0 = (targeto1 outo1)
@Etotal
@out o1= (0:01 0:75136) = 0:74136
@out o1
@net o1=outo1(1 outo1) = 0:75136(1 0:75136) = 0:18681
@net o1
@w5= 1outh1w(1 1)
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:4 0: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:05539 0:01904 = 0:03635
@out h1
@net h1=outh1(1 outh1) = 0:593269(1 0: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:15 0: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 clasicare 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
congurat a.
Spre deosebire de codul precedent, libr aria Keras ne permite s a imple-
ment am o ret ,ea neuronal a unidirect ,ional a multistraticat 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 clasicare, iar cealalt a care cont ,ine setul de testare
21
Figura 2.8: Ret ,ea neuronal a articial a implementat a ^ n Python
cu exemplele de clasicare.
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 articiale. ^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(). Coecientul 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 sucient
de marem, media aritmetic a a acestor gradiente reprezint a o aproximare
sucient 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 coecientului 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 decient ,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 coecientul de ^ nv at ,are ^ n funct ,ie de c^ at de
dispersate sunt datele de intrare.
SGD actualizeaz a parametrii cu aceeas ,i coecient de ^ nv at ,are, Adagrad
modic a acest coecient ^ n funct ,ie de num arul pas ,ilor efectuat ,i.
(3.9) gt; i=rtf(t;i)
(3.10) t+1;i=t;i p
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 coecientul de ^ nv at ,are, dar dezavantajul este c a voma avea
o acumulare de valori ale gradientelor precedente, iar valoarea coecientului
de ^ nv at ,are va tinde c atre 0.
Adam
Adaptive Moment Estimation este algoritm de optimizare recent ap arut
(2015) care adapteaz a coecientul 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=1vt 1 (1 1)gt
(3.12) st=2st 1 (1 2)g2
t
(3.13) !t= vtpst+gt
(3.14) !t+1=!t+ !t
{ coecientul 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 coecient 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 articiale 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 grace, 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 coecient ,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
sucient, 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 clasicate. 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 specicat ,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 identice 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, neind 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 articial 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 clasica diferite obiecte, poate avertiza s ,oferul, poate modica 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
Bibliograe
[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
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Metode de optimizare a [613211] (ID: 613211)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
