Salt la conținut

Rețele neuronale

O rețea neuronală (neural network) este un model de învățare automată (machine learning) alcătuit din unități simple conectate între ele. Fiecare unitate transformă valori numerice, iar rețeaua combină aceste transformări pentru a produce o predicție. Prin antrenare, conexiunile ajung să reprezinte tipare din date.

Folosirea rețelelor neuronale cu mai multe straturi este numită, în mod obișnuit, învățare profundă (deep learning). Aceste rețele stau la baza multor sisteme de recunoaștere a imaginilor, prelucrare a limbajului și generare de conținut. Ele fac parte din învățarea automată, nu sunt o copie fidelă a creierului biologic.

Un neuron artificial (artificial neuron) primește valori de intrare x1,x2,…,xnx_1, x_2, \ldots, x_n. Fiecărei intrări îi corespunde o pondere (weight) wiw_i, care stabilește cât de mult contribuie acea intrare. Mai întâi se calculează suma ponderată zz:

z=∑i=1nwixi+bz = \sum_{i=1}^{n} w_i x_i + b

În formulă, nn este numărul de intrări, iar bb este bias-ul, o valoare care poate deplasa pragul neuronului. Rezultatul trece apoi printr-o funcție de activare (activation function), care introduce o transformare neliniară:

a=f(z)a = f(z)

unde aa este ieșirea neuronului, iar ff este funcția de activare. O alegere frecventă este funcția liniară rectificată (rectified linear unit, ReLU):

ReLU⁡(z)=max⁡(0,z)\operatorname{ReLU}(z) = \max(0, z)
Graficul funcției ReLUFuncția ReLU este zero pentru toate intrările negative și crește liniar pentru intrările pozitive.−3−2−10123123Intrare zIeșire ReLU(z)
La stânga lui zero, ieșirea rămâne zero. La dreapta, funcția crește cu aceeași valoare ca intrarea.

ReLU păstrează valorile pozitive și transformă valorile negative în zero. Această neliniaritate permite rețelei să modeleze relații pe care o singură combinație liniară nu le poate reprezenta.

Neuronii sunt organizați în straturi. Stratul de intrare (input layer) primește datele, unul sau mai multe straturi ascunse (hidden layers) le transformă, iar stratul de ieșire (output layer) produce predicția. Calculul valorilor de la intrare către ieșire se numește propagare înainte (forward propagation).

O rețea neuronală cu un strat ascunsTrei valori de intrare sunt conectate la trei neuroni dintr-un strat ascuns, care sunt conectați la un neuron de ieșire.Strat de intrareStrat ascunsStrat de ieșirex₁x₂x₃h₁h₂h₃ŷdatereprezentăripredicție
Fiecare conexiune are o pondere. Prin straturile ascunse, modelul poate transforma datele în reprezentări utile pentru predicție.

Într-un strat, fiecare neuron aplică aceeași structură matematică, dar cu ponderi și bias-uri proprii. Ieșirile unui strat devin intrările celui următor. Astfel, fiecare strat poate construi reprezentări mai potrivite pentru sarcina finală.

Demo-ul de mai jos arată un neuron cu două intrări și ReLU. Glisoarele modifică intrările, ponderile și bias-ul. Suma ponderată și ieșirea sunt actualizate imediat.

Un neuron cu funcția ReLU

Suma ponderată și ieșirea se recalculează la fiecare modificare a valorilor.

Parametrii neuronului
Calculul unui neuron artificialDouă intrări și un bias intră într-un neuron. Neuronul aplică funcția ReLU și produce o ieșire.x₁1,0x₂0,5w₁ = 0,8w₂ = −0,4b = 0,2ΣReLUa0,8

Suma ponderată 0,8

Ieșirea ReLU 0,8

0,8 × 1,0 + −0,4 × 0,5 + 0,2 = 0,8

Dacă suma ponderată este negativă, ReLU produce zero. Dacă este pozitivă, ieșirea este chiar suma ponderată. Într-o rețea, același calcul are loc pentru mulți neuroni și pentru multe exemple de date.

La început, ponderile sunt de obicei inițializate cu valori mici. Pentru un exemplu de antrenare, predicția rețelei se compară cu valoarea așteptată printr-o funcție de pierdere (loss function) LL. O pondere poate fi actualizată prin coborâre pe gradient:

w←w−η∂L∂ww \leftarrow w - \eta \frac{\partial L}{\partial w}

În această regulă, ww este ponderea actualizată, η\eta este rata de învățare, iar ∂L∂w\frac{\partial L}{\partial w} arată cum se schimbă pierderea atunci când se schimbă ponderea. Pentru rețele cu multe straturi, derivatele se calculează eficient de la ieșire spre intrare prin retropropagare.

Antrenarea nu garantează rezultate bune pe date noi. Rețeaua trebuie evaluată pe exemple separate de cele folosite pentru antrenare, iar arhitectura și datele trebuie alese în raport cu problema rezolvată.