Cum funcționează o rețea neuronală. Algoritmi, instruire, activare și funcții de pierdere

Cum funcționează o rețea neuronală

Sub un Retea neurala se înțelege încercarea de a reproduce parțial munca creierului uman pentru a elabora mecanisme cu inteligență artificială.

Pentru a atinge aceste obiective, este necesar un set de instruire (set de date). În mod ideal, acest set constă din exemple cu valori reale: etichete, clase, măsuri.

De exemplu, dacă propoziția de antrenament analizează tonalitatea textului, atunci este necesară lista propozițiilor cu evaluările emoționale respective. Să ne referim la propoziții ca X și etichete ca Da. O funcție determină relația dintre acestea. În cazul analizei tonalității textului, acestea sunt caracteristici precum cuvinte, fraze, structura propoziției care fac propoziția să sune negativ sau pozitiv.

În trecut, aceste caracteristici erau generate manual, acest proces se numește inginerie de caracteristici sau crearea de caracteristici. În ultimii ani acest proces a fost automatizat de rețeaua neuronală.

funcționează

Cele mai importante trei componente ale unei rețele neuronale artificiale sunt:

  • Stratul de intrare;
  • Straturi ascunse (de calcul);
  • Stratul de ieșire.

Antrenarea rețelelor neuronale se desfășoară în două etape:

  • Propagarea directă
  • Propagarea înapoi

Cu propagare directă, se prezice un răspuns. Particularitatea backpagation-ului este minimizarea erorii dintre răspunsul real și cel prezis.

Propagarea directă

Să dăm greutățile inițiale la întâmplare:

  • w1
  • w2

Să multiplicăm apoi datele de intrare cu greutățile pentru a crea stratul ascuns:

  • h1 = (x1 * w1) + (x2 * w1)
  • h2 = (x1 * w2) + (x2 * w2)
  • h3 = (x1 * w3) + (x2 * w3)

Funcția neliniară (funcția de activare) transferă datele de ieșire din stratul ascuns pentru a obține ieșirea din rețea:

  • y_ = fn (h1, h2, h3)

Propagarea înapoi

  • Eroarea totală (total_error) este diferența dintre valoarea așteptată „y” (din setul de antrenament) și valoarea obținută „y_” (adică este calculată în faza de propagare directă) prin care trece funcția de pierdere (funcția de cost).
  • Derivata parțială a erorii este calculată pentru fiecare greutate. Aceste diferențiale parțiale sunt considerate a reflecta contribuția fiecărei ponderi la eroarea totală (total_loss).
  • În faza următoare, aceste diferențiale sunt înmulțite cu un număr numit viteza de învățare sau rata de învățare (η).

În cele din urmă, rezultatul este scăzut din ponderile corespunzătoare.

Rezultatul este următoarele greutăți actualizate:

  • w1 = w1 - (η * ∂ (err)/∂ (w1))
  • w2 = w2 - (η * ∂ (err)/∂ (w2))
  • w3 = w3 - (η * ∂ (err)/∂ (w3))

Există o contradicție de remarcat aici: deși ponderile sunt asumate și inițializate aleatoriu, ele oferă răspunsuri precise. Acest lucru nu pare complet rezonabil, dar funcționează bine.

Propagarea înapoi poate fi comparată cu seria Taylor: rezultatele finale sunt aceleași. Cu toate acestea, diferența este că nu este seria infinită, ci primul său membru care este optimizat.

Deplasările sunt greutăți care se adaugă straturilor ascunse. De asemenea, acestea sunt inițializate și actualizate aleatoriu, precum stratul ascuns. Dar în ce se deosebesc? Rolul stratului ascuns este de a determina forma funcției de bază în date. Rolul deplasării, pe de altă parte, este de a compensa funcția principală astfel încât să se potrivească parțial cu funcția de ieșire.

Derivate parțiale

Derivatele parțiale pot fi calculate. Prin urmare, este cunoscută contribuția la eroare pentru fiecare greutate. Nevoia de derivări este evidentă. De exemplu, se poate cita o rețea neuronală care încearcă să determine viteza optimă a unui vehicul fără pilot. Dacă mașina stabilește că călătorește mai repede sau mai lent decât viteza necesară, rețeaua neuronală ajustează viteza accelerând sau încetinind mașina. Ce se accelerează/încetinește? Vitezele derivate.

Se consideră câteva exemple pentru a analiza necesitatea derivatelor parțiale.

De exemplu, copiilor li se atribuie sarcina de a arunca o săgeată asupra unei ținte, țintind spre centru. Iată rezultatele:

Când se găsește o greșeală obișnuită și se scade pur și simplu din toate greutățile, greșelile făcute de fiecare copil sunt generalizate. Să presupunem că un copil a aruncat prea jos chiar dacă toți copiii au fost rugați să facă eforturi pentru a atinge ținta. Acest lucru duce la următoarele rezultate:

Eroarea unor copii poate fi redusă, dar eroarea generală continuă să crească.

Dacă se găsesc derivate parțiale, pot fi identificate erorile care corespund fiecărei ponderi în detaliu. Dacă ponderările sunt corectate aleatoriu, se obține următorul rezultat:

Hiperparametrele

Rețeaua neuronală este utilizată pentru a automatiza selectarea caracteristicilor. Cu toate acestea, unii parametri sunt setați manual.

Rata de învățare

Viteza de învățare este unul dintre hiperparametrii foarte importanți. Dacă viteza de învățare este lentă, rețeaua neuronală nu obține rezultate optime nici după antrenament continuu. Rezultatele pot fi prezentate după cum urmează:

Pe de altă parte, rețeaua neuronală oferă răspunsurile foarte rapid la viteze mari de învățare. Iată rezultatele:

Funcția de activare

Funcția de activare este unul dintre cele mai puternice instrumente, deoarece afectează performanța atribuită rețelelor neuronale. În parte, determină ce neuroni sunt activați; H. ce informații sunt transmise schimbărilor ulterioare.

Fără funcții de activare, rețelele profunde își pierd o mare parte din capacitatea lor de a învăța. Deoarece neliniaritatea acestor funcții este responsabilă pentru creșterea gradului de libertate, problemele de dimensiune înaltă pot fi generalizate la dimensiuni mai mici. Următoarele sunt exemple de funcții de activare comune:

Funcția de pierdere

Funcția de pierdere se află în mijlocul rețelei neuronale. Este folosit pentru a calcula eroarea dintre răspunsurile reale și cele primite. Scopul nostru global este de a minimiza aceste erori. În acest fel, funcția de pierdere apropie efectiv rețeaua neuronală de acest obiectiv.

Funcția de pierdere măsoară „cât de bună” este rețeaua neuronală în raport cu aceste date de antrenament și răspunsurile așteptate. De asemenea, poate depinde de variabile precum greutăți și schimbări.

Funcția de pierdere este unidimensională și nu un vector, deoarece măsoară cât de bine funcționează rețeaua neuronală ca întreg.

Unele funcții de pierdere cunoscute sunt:

  • Cadratic (deviația pătrată medie)
  • Entropie încrucișată
  • Exponențiale (AdaBoost/Adaptive Boosting)
  • Divergența Kullback-Leibler sau câștigul de informații.

Deviația pătrată medie rădăcină este cea mai simplă și cea mai frecvent utilizată funcție de pierdere. Este stabilit astfel:

Există două condiții pe care trebuie să le îndeplinească funcția de pierdere într-o rețea neuronală:

  • Funcția de pierdere este afișată ca medie.
  • Funcția de pierdere nu depinde de nici o valoare de activare a rețelei neuronale. Excepția sunt valorile care sunt emise la ieșire.

Rețele neuronale profunde

Învățarea profundă se referă la o clasă de algoritmi de învățare automată care sunt instruiți cu scopul de a înțelege datele mai profund (mai abstract). Schema de mai jos reprezintă algoritmi populari de rețea neuronală de învățare profundă:

Câteva detalii despre învățarea profundă:

  • O cascadă este utilizată pentru a extrage și transforma caracteristici din mai multe straturi de procesare (neliniare); o conductă ca un flux transmis secvențial.
  • Învățarea profundă se bazează pe caracteristici de învățare (reprezentarea informațiilor) în date fără învățare supravegheată. Funcțiile unui nivel superior, care sunt în ultimele straturi, sunt obținute din funcțiile nivelului inferior, care sunt în straturile de pornire.
  • Învățarea profundă explorează reprezentări stratificate care corespund diferitelor niveluri de abstractizare. Aceste niveluri formează o ierarhie de afișare.

exemplu

Mai jos este reprezentarea unei rețele neuronale cu un singur strat:

Trebuie remarcat faptul că în acest caz doar primul strat (neuroni verzi) este antrenat și pur și simplu trecut la ieșire.

În timp ce în cazul rețelei neuronale cu două straturi, indiferent de modul în care este antrenat stratul verde ascuns, acesta este transferat în stratul ascuns albastru unde continuă antrenamentul:

În consecință, se poate trage următoarea concluzie: cu cât este mai mare numărul de straturi ascunse, cu atât sunt mai mari posibilitățile de instruire ale rețelei.

Nu trebuie confundat cu o rețea neuronală largă, unde un număr mare de neuroni dintr-un strat nu provoacă o înțelegere profundă a datelor, ci duce la învățarea unui număr mai mare de caracteristici.

Când înveți gramatica germană, trebuie să cunoști o varietate de termeni. În acest caz, este mai logic să folosiți o rețea neuronală cu un singur strat decât o rețea neuronală profundă, care este mult mai mică.

În învățarea Transformatei Fourier, rețeaua neuronală trebuie să fie profundă, deoarece nu există atât de mulți termeni de știut, dar fiecare dintre ei este destul de complicat și necesită o înțelegere profundă.

Cel mai important este echilibrul

Este foarte util să folosiți rețele neuronale profunde și largi pentru orice sarcină. Iată câteva motive pentru care aceasta nu este întotdeauna o idee bună:

  • Pentru ambele rețele, este necesară o cantitate mult mai mare de date pentru instruire, pentru a atinge precizia minimă dorită.
  • Complexitatea exponențială este tipică pentru ambele rețele.
  • O rețea neuronală prea adâncă va încerca să distrugă noțiunile de bază. Procedând astfel, va face predicții greșite și va găsi pseudo-dependențe care nu există deloc.
  • O rețea neuronală prea largă va încerca să găsească mai multe caracteristici decât există. La fel ca o rețea profundă, va face predicții false despre date.

Blestemul dimensionalității

Blestemul dimensiunii este termenul folosit pentru a se referi la diverse fenomene atunci când se analizează și se organizează date în spații multidimensionale (adesea cu sute sau mii de dimensiuni). Nu apare în situații cu dimensiuni reduse.

Gramatica limbii germane are un număr mare de atribute care o influențează. În învățarea automată, acestea sunt reprezentate ca caracteristici sub forma unei matrice/matrice de lungime finită și mult mai scurtă decât numărul de caracteristici existente. În acest scop, rețelele generalizează aceste caracteristici. Acest lucru duce la două probleme:

  • Ipotezele greșite provoacă schimbări. O schimbare mare poate duce la algoritmul care nu observă o relație esențială între caracteristici și variabile țintă. Acest fenomen se numește subinstruire.
  • Abaterile mici ale numărului mare de date de antrenament cresc variația, deoarece caracteristicile sunt insuficient învățate. Varianța ridicată determină supraentrenarea, erorile sunt percepute ca informații fiabile.

Compromite

În faza de pregătire timpurie, schimbarea este mare, deoarece ieșirea rețelei este departe de rezultatul necesar. Și varianța este prea mică din cauza impactului scăzut al datelor în prezent.

La sfârșitul antrenamentului, schimbarea este mică, deoarece funcția principală a fost găsită în datele din rețea. Cu o formare continuă, rețeaua explorează, de asemenea, zgomotul tipic acestui set de date. Acest lucru determină variații mari ale rezultatelor la testarea diferitelor majorități, deoarece zgomotul se schimbă de la setul de date la setul de date.

De fapt, algoritmii de compensare mare se bazează de obicei pe modele simple care nu sunt predispuse la supraentrenare. Cu toate acestea, pot fi sub-instruiți și nu reușesc să determine regularități sau proprietăți importante ale caracteristicilor. Modelele cu deplasare mică, varianță mare tind să fie mai complexe în ceea ce privește structura lor, ceea ce permite o reprezentare mai precisă a setului de antrenament. Deoarece pot face o mulțime de zgomot din setul de antrenament, predicțiile lor sunt mai puțin exacte, în ciuda complexității lor adăugate.

Din aceasta se poate concluziona că existența simultană a unei mici schimbări și a unei mici varianțe este de obicei imposibilă.

În zilele noastre există multe instrumente care facilitează crearea unor modele complicate de învățare automată, primele formări fiind preluate. Când rețeaua primește informații insuficiente, are loc schimbarea. Cu cât sunt instruite mai multe exemple, cu atât mai multe variante de dependențe și variabilități apar în aceste corelații.