Rețele neuronale profunde: ce sunt și cum funcționează
Rețelele neuronale profunde sunt un concept care constituie principala arhitectură tehnologică utilizată în modelele Deep Learning. Aceste structuri nu pot fi înțelese fără a înțelege ideea generală a rețelelor neuronale artificiale, fundamentale pentru Inteligența Artificială.
Rețelele neuronale sunt folosite pentru o mie de lucruri: recunoașterea numerelor de înmatriculare, a cântecelor, a fețelor, a vocilor sau chiar a fructelor din bucătăria noastră. Sunt o tehnologie deosebit de utilă și, în ciuda faptului că abia recent au devenit practice, ele vor fi viitorul umanității.
Următorul Vom vedea în profunzime ideea de rețele neuronale artificiale și profunde, înțelegând cum funcționează, cum sunt antrenați și cum se produc interacțiunile dintre diferiții neuroni care îi constituie.
- Articol înrudit: „Ce este știința cognitivă? Ideile sale de bază și fazele de dezvoltare”
Ce sunt rețelele neuronale profunde și ce le caracterizează?
Rețelele neuronale profunde sunt una dintre cele mai importante arhitecturi tehnologice utilizate în Deep Learning sau Deep Learning
. Aceste rețele artificiale particulare au avut o creștere amețitoare în ultimii ani, deoarece constituie un aspect fundamental atunci când vine vorba de recunoașterea a tot felul de tipare. Inteligența artificială există datorită funcționării acestor rețele particulare care, în În esență, ele ajung să fie o replică a modului în care funcționează creierul nostru, deși într-un mod tehnologic și matematica.Înainte de a merge mai departe în ce sunt rețelele neuronale profunde, trebuie mai întâi să înțelegem cum funcționează rețelele neuronale artificiale în general și pentru ce sunt acestea. Lrețelele neuronale sunt o ramură a „învățării automate” care au avut un impact uriaș în ultimii ani, ajutând programatorii și informaticienii să construiască lucruri precum chatbot-uri care, atunci când vorbim cu ei, ne fac să credem că vorbim cu ființe umane reale.
Rețelele neuronale artificiale au fost, de asemenea, folosite cu mașinile care se conduc singure, aplicații mobile care ne recunosc fața și o transformă în ceea ce ne dorim și multe altele funcții. Aplicabilitatea sa este foarte extinsă, servind drept bază a Inteligenței Artificiale moderne și având nenumărate utilizări benefice pentru ziua noastră.
rețele neuronale artificiale
Să ne imaginăm că suntem în bucătăria noastră și decidem să căutăm o portocală, o sarcină foarte simplă.. Stim sa identificam foarte usor o portocala si stim sa o diferentiem si de alte fructe pe care le gasim in bucatarie, precum bananele, merele si perele. La fel de? Pentru că în creierul nostru am asimilat foarte mult care sunt proprietățile tipice ale unei portocale: ea mărimea, forma, culoarea pe care o are, cum miroase... Aceștia sunt toți parametrii pe care îi folosim pentru a găsi un portocale.
Este o sarcină simplă pentru oameni, dar... Poate un computer să o facă și el? Raspunsul este da. În principiu, ar fi suficient să definim aceiași parametri și să atribuim o valoare unui nod sau ceva pe care l-am putea numi „neuron artificial”. I-am spune acel neuron cum sunt portocalele, indicându-le mărimea, greutatea, forma, culoarea sau orice alt parametru pe care îl atribuim acestui fruct. Având aceste informații, este de așteptat ca neuronul să știe să identifice o portocală atunci când i se prezintă una.
Dacă am ales bine parametrii, îți va fi ușor să faci diferența între portocale și lucrurile care nu sunt portocale pur și simplu ținând cont de acele caracteristici. Când i se prezintă o imagine a oricărui fruct, acel neuron va căuta caracteristicile asociat portocaliului și decideți dacă îl includeți în categoria „orange” sau în categoria „altele fruct”. În termeni statistici, ar fi să găsim o regiune într-un grafic al parametrilor care să corespundă cu ceea ce este în căutarea unei regiuni care să cuprindă toate bucățile de fructe care au aceeași dimensiune, formă, culoare, greutate și aromă pe care portocale.
La început, totul sună foarte ușor de codificat și, de fapt, este. Funcționează foarte bine pentru a diferenția o portocală de o banană sau un măr, deoarece au culori și forme diferite. Dar dacă ți-am oferi un grapefruit? si o mandarina foarte mare? Sunt fructe care pot fi perfect confundate cu o portocală. Va reuși neuronul artificial să diferențieze singur între portocale și grepfrut? Răspunsul este nu și, de fapt, probabil că se crede că sunt la fel.
Problema cu utilizarea unui singur strat de neuroni artificiali, sau ceea ce este același, folosind doar neuroni simpli mai întâi, este că generați limite de decizie foarte imprecise atunci când vi se prezintă ceva care are multe caracteristici în comun cu ceea ce ar trebui să puteți recunoaște, dar în realitate nu este. Dacă prezentăm ceva care arată ca o portocală, cum ar fi un grapefruit, chiar dacă nu este acel fruct, îl va identifica ca atare.
Aceste margini de decizie, dacă sunt reprezentate sub formă de grafic, vor fi întotdeauna liniare. Folosind un singur neuron artificial, adică un singur nod care are parametri integrați concrete, dar nu pot învăța dincolo de ele, se vor obține limite de decizie foarte apropiate. difuz. Principala sa limitare este că folosește două metode statistice, în special regresia multiclasă și regresie logistică, ceea ce înseamnă că atunci când aveți îndoieli, include ceva care nu este ceea ce ne așteptam să fie. va identifica.
Dacă ar fi să împărțim toate fructele în „portocale” și „nu portocale”, folosind un singur neuron este clar că bananele, perele, mere, pepeni verzi si orice fruct care nu corespunde ca marime, culoare, forma, aroma si asa mai departe cu portocale le-as pune in categoria „nu”. portocale”. Grapefruit-urile și mandarinele le-ar pune însă în categoria „portocale”, făcând treaba pentru care au fost concepute prost.
Și când vorbim despre portocale și grepfrut, am putea vorbi bine despre câini și lupi, găini și găini, cărți și caiete... Toate Aceste situații sunt cazuri în care o simplă serie de „dacă...” („dacă...”) nu ar fi suficientă pentru a distinge clar între unul și celălalt. alte. Este nevoie de un sistem mai complex, neliniar, care să fie mai precis atunci când vine vorba de diferențierea între diferitele elemente. Ceva care ține cont de faptul că între asemănări pot exista diferențe. Aici intervin rețelele neuronale.
Mai multe straturi, mai asemănătoare cu creierul uman
Rețelele neuronale artificiale, după cum sugerează și numele lor, sunt modele artificiale computaționale inspirate de în rețelele neuronale ale creierului uman, rețele care imită de fapt funcționarea acestui organ biologic. Acest sistem este inspirat de funcționarea neuronală și principala sa aplicație este recunoașterea modele de toate tipurile: identificare facială, recunoaștere a vocii, amprentă, scris de mână, plăcuțe de înmatriculare… Recunoașterea modelelor funcționează pentru aproape orice..
Întrucât există neuroni diferiți, parametrii care se aplică sunt diverși și se obține un grad mai mare de precizie. Aceste rețele neuronale sunt sisteme care ne permit să separăm elementele în categorii atunci când diferența poate fi subtilă, separându-le într-un mod neliniar, ceva ce ar fi imposibil de făcut altfel manieră.
Cu un singur nod, cu un singur neuron, ceea ce se face atunci când se manipulează informația este o regresie multiclasă. Prin adăugarea mai multor neuroni, deoarece fiecare dintre ei are propria sa funcție de activare neliniară care, tradusă într-un limbaj mai simplu, îi face să aibă granițe de decizie care sunt mai precis, fiind reprezentat grafic într-o formă curbă și ținând cont de mai multe caracteristici la diferențierea între „portocale” și „nu portocale”, pentru a continua cu acel exemplu.
Curbura acestor granițe de decizie va depinde direct de câte straturi de neuroni adăugăm rețelei noastre neuronale. Acele straturi de neuroni, care fac sistemul mai complex și mai precis, sunt, de fapt, rețele neuronale profunde. În principiu, cu cât avem mai multe straturi de rețele neuronale profunde, cu atât programul va fi mai precis și mai asemănător cu creierul uman.
Pe scurt, rețelele neuronale nu sunt altceva decât un sistem inteligent care permite luarea unor decizii mai precise, într-un mod foarte asemănător cu modul în care o facem noi, ființele umane. Ființele umane se bazează pe experiență, învățând din mediul nostru. De exemplu, revenind la cazul portocalei și grapefruit-ului, dacă nu am văzut niciodată unul, îl vom confunda perfect cu o portocală. Când ne vom familiariza cu ea, va fi atunci când știm deja să o identificăm și să o diferențiem de portocale.
Primul lucru care se face este să dăm niște parametri rețelelor neuronale, astfel încât acestea să știe cum este ceea ce vrem să învețe să identifice. Urmează apoi faza de învățare sau formare, astfel încât să fie din ce în ce mai precisă și să aibă progresiv o marjă de eroare mai mică. Acesta este momentul în care ne-am prezenta rețeaua neuronală cu o portocală și alte fructe. În faza de instruire li se vor da cazuri în care sunt portocalii și cazuri în care nu sunt portocalii, căutând să vadă dacă au primit răspunsul corect și spunându-le răspunsul corect.
Vom încerca să facem numeroase încercări și cât mai aproape de realitate.. În acest fel, ajutăm rețeaua neuronală să funcționeze atunci când ajung cazuri reale și știe să discrimineze în mod corespunzător, în același mod în care ar face o ființă umană în viața reală. Dacă pregătirea a fost adecvată, având ales parametrii de recunoaștere buni și s-au clasificat bine, rețeaua neuronală va avea o rată de succes foarte mare în recunoașterea modelelor. înalt.
- Ați putea fi interesat de: „Cum funcționează neuronii?”
Ce sunt și cum funcționează exact?
Acum că am văzut ideea generală a ce sunt rețelele neuronale și vom înțelege mai pe deplin ce sunt și cum acești emulatori ai neuronilor creierului uman și unde lucrează rețelele neuronale profunde în toate acestea proces.
Să ne imaginăm că avem următoarea rețea neuronală: avem trei straturi de neuroni artificiali. Să presupunem că primul strat are 4 neuroni sau noduri, al doilea 3, iar ultimul are doar 2. Acesta este tot un exemplu de rețea neuronală artificială, destul de ușor de înțeles.
Primul strat este cel care primește datele., adică informația care poate veni sub formă de sunet, imagine, arome, impulsuri electrice... Aceasta prima stratul este stratul de intrare și este responsabil de primirea tuturor datelor pentru a le putea trimite ulterior către următorii straturi. În timpul antrenamentului rețelei noastre neuronale, acesta va fi stratul cu care vom lucra mai întâi, dându-l date pe care le vom folosi pentru a vedea cât de bine vă faceți predicții sau identificați informațiile care vi se oferă dă.
Al doilea strat al modelului nostru ipotetic este stratul ascuns, care se află chiar în mijlocul primului și ultimului strat., de parcă rețeaua noastră neuronală ar fi un sandviș. În acest exemplu avem un singur strat ascuns, dar ar putea fi atâtea câte dorim. Am putea vorbi despre 50, 100, 1000 sau chiar 50.000 de straturi. În esență, aceste straturi ascunse sunt partea rețelei neuronale pe care am numi-o rețea neuronală profundă. Cu cât adâncimea este mai mare, cu atât rețeaua neuronală este mai complexă.
În cele din urmă, avem al treilea strat al exemplului nostru, care este stratul de ieșire. Acest strat, după cum indică numele, se ocupă de a primi informații de la straturile anterioare, de a lua o decizie și de a ne oferi un răspuns sau un rezultat.
În rețeaua neuronală fiecare neuron artificial este conectat la toți următorii. În exemplul nostru, unde am comentat că avem trei straturi de 4, 3 și 2 neuroni, cele 4 din stratul de intrare sunt conectat cu 3 din stratul ascuns, iar 3 din stratul ascuns cu 2 din ieșire, oferindu-ne un total de 18 conexiuni.
Toți acești neuroni sunt conectați cu cei ai următorului strat, trimițând informația în direcția de intrare->ascuns->ieșire.. Dacă ar fi mai multe straturi ascunse, am vorbi despre un număr mai mare de conexiuni, trimițând informația din strat ascuns în strat ascuns până ajunge la nivelul de ieșire. Stratul de ieșire, odată ce a primit informația, ceea ce va face este să ne dea un rezultat pe baza informațiilor pe care le-a primit și a modului său de procesare.
Când ne antrenăm algoritmul, adică rețeaua neuronală, acest proces pe care tocmai l-am explicat se va face de multe ori. Vom livra niște date în rețea, vom vedea ce ne oferă rezultatul și o să-l analizăm și să le comparăm cu ceea ce ne așteptam să ne dea rezultatul. Dacă există o diferență mare între ceea ce se așteaptă și ceea ce se obține, înseamnă că există o marjă mare de eroare și că, prin urmare, este necesar să se facă câteva modificări.
Cum funcționează neuronii artificiali?
Acum vom înțelege funcționarea individuală a neuronilor care lucrează în cadrul unei rețele neuronale. Neuronul primește o intrare de informații de la neuronul anterior. Să presupunem că acest neuron primește trei intrări de informații, fiecare provenind de la cei trei neuroni ai stratului anterior. La rândul său, acest neuron generează ieșiri, în acest caz să spunem că este conectat doar la un neuron din următorul strat.
Fiecare conexiune pe care acest neuron o are cu cei trei neuroni ai stratului anterior aduce o valoare „x”, care este valoarea pe care ne-o trimite neuronul anterior.; și are, de asemenea, o valoare „w”, care este greutatea acestei conexiuni. Greutatea este o valoare care ne ajută să acordăm mai multă importanță unei conexiuni față de altele. Pe scurt, fiecare conexiune cu neuronii anteriori are o valoare „x” și o valoare „w”, care sunt înmulțite (x·w).
O să avem și noi o valoare numită „bias” sau bias reprezentată cu „b” care este numărul de erori care încurajează anumiți neuroni să se activeze mai ușor decât alții. În plus, avem o funcție de activare în cadrul neuronului, ceea ce face ca gradul său de clasificare a diferitelor elemente (p. de ex., portocale) nu este liniară. Pe cont propriu, fiecare neuron are diferiți parametri de luat în considerare, ceea ce face ca întregul sistem, aceasta este rețeaua neuronală, să se clasifice într-un mod neliniar.
De unde știe neuronul dacă trebuie să se activeze sau nu? adică când știi dacă trebuie să trimiți informații la stratul următor? Ei bine, această decizie este guvernată de următoarea ecuație:

Această formulă vine să însemne că trebuie făcută suma tuturor greutăților „w” înmulțite cu toate valorile lui „x” pe care neuronul le primește din stratul anterior. La acestea se adaugă părtinirea „b”.
Rezultatul acestei ecuații este trimis unei funcții de activare, care este pur și simplu o funcție care ne spune că, dacă rezultatul acestei ecuații este mai mare decât a un anumit număr, neuronul va trimite un semnal la stratul următor și, dacă este mai mic, atunci nu să-l trimită Astfel, un neuron artificial decide dacă trimite sau nu informații neuronilor, după cum urmează: strat prin intermediul unei ieșiri pe care o vom numi „y”, o ieșire care, la rândul ei, este intrarea „x” a următoarelor neuron.
Și cum antrenezi o întreagă rețea?
Primul lucru care se face este să livreze date la primul strat, așa cum am comentat anterior. Acest strat va trimite informații către următoarele straturi, care sunt straturile ascunse sau rețeaua neuronală profundă. Neuronii acestor straturi se vor activa sau nu in functie de informatiile primite. În cele din urmă, stratul de ieșire ne va oferi un rezultat, pe care îl vom compara cu valoarea pe care o așteptam pentru a vedea dacă rețeaua neuronală a învățat ce trebuie să facă corect.
Dacă nu a învățat bine, atunci vom realiza o altă interacțiune, adică vă vom prezenta din nou informații și vom vedea cum se comportă rețeaua neuronală. În funcție de rezultatele obținute, se vor ajusta valorile „b”, adică părtinirea fiecărui neuron, iar „w”, aceasta este greutatea fiecărei conexiuni cu fiecare neuron pentru a reduce eroarea. Pentru a afla cât de mare este această eroare, vom folosi o altă ecuație, care este următoarea:

Această ecuație este eroarea pătratică medie. Vom face suma lui y (x) care este valoarea pe care ne-a dat-o rețeaua noastră în interacțiune minus „a”, care este valoarea pe care ne așteptam să ne-o dea, ridicată la pătrat. În cele din urmă, vom înmulți această sumă cu 1/2n, fiind acel „n” numărul de interacțiuni pe care le-am trimis pentru a ne antrena rețeaua neuronală.
De exemplu, să presupunem că avem următoarele valori

Prima coloană „y (x)” reprezintă ceea ce ne-a oferit rețeaua noastră în fiecare dintre cele patru interacțiuni pe care le-am testat. Valorile pe care le-am obținut, după cum se poate observa, nu corespund cu cele din a doua coloană „a”, care sunt valorile dorite pentru fiecare dintre interacțiunile testate. Ultima coloană reprezintă eroarea fiecărei interacțiuni.
Aplicând formula de mai sus și folosind aceste date aici, ținând cont că în acest caz n = 4 (4 interacțiuni) ne oferă o valoare de 3,87, care este eroarea pătratică medie pe care o are rețeaua noastră neuronală în aceste momente. Cunoscând eroarea, ceea ce trebuie să facem acum este, așa cum am comentat mai înainte, să schimbăm părtinirea și greutățile fiecăruia dintre neuroni și interacțiunile lor cu intenția ca în acest fel eroarea să fie reduce.
În acest moment, inginerii și informaticienii aplică un algoritm numit coborâre gradient cu care pot obține valori pentru a testa și modifica părtinirea și greutatea fiecărui neuron artificial astfel incat, in acest fel, se obtine o eroare din ce in ce mai mica, apropiindu-se de predictie sau de rezultat dorit. Este o chestiune de testare și cu cât se fac mai multe interacțiuni, cu atât va fi mai mult antrenament și rețeaua va învăța mai mult.
Odată ce rețeaua neuronală este antrenată adecvat, va fi momentul în care ne va oferi predicții și identificări precise și fiabile. În acest moment vom avea o rețea care va avea în fiecare dintre neuronii săi o valoare de pondere definită, cu o părtinire controlată și cu o capacitate de decizie care va face sistemul muncă.
Referințe bibliografice:
- Puig, A. [AMP Tech] (28 iulie 2017). Cum funcționează rețelele neuronale? [Fișier video]. Recuperat din https://www.youtube.com/watch? v=IQMoglp-fBk&ab_channel=AMPTech
- Santaolalla, J. [Give yourself a Vlog] (2017, 11 aprilie) CienciaClip Challenge - Ce sunt rețelele neuronale? [Fișier video]. https://www.youtube.com/watch? v=rTpr6DuY4LU&ab_channel=DateunVlog
- Schmidhuber, J. (2015). „Învățare profundă în rețelele neuronale: o privire de ansamblu”. Rețele neuronale. 61: 85–117. arXiv: 1404,7828. doi: 10.1016/j.nenet.2014.09.003. PMID 25462637. S2CID 11715509