Rețea neurală | un fel de program informatic, inspirat de neuronii biologici

O rețea neuronală (denumită și RNA sau rețea neuronală artificială) este un fel de program informatic inspirat de neuronii biologici. Creierele biologice sunt capabile să rezolve probleme dificile, dar fiecare neuron este responsabil doar de rezolvarea unei părți foarte mici a problemei. În mod similar, o rețea neuronală este alcătuită din celule care lucrează împreună pentru a produce un rezultat dorit, deși fiecare celulă individuală este responsabilă doar de rezolvarea unei mici părți a problemei. Aceasta este una dintre metodele de a crea programe inteligente în mod artificial.

Rețelele neuronale sunt un exemplu de învățare automată, în care un program se poate schimba pe măsură ce învață să rezolve o problemă. O rețea neuronală poate fi antrenată și îmbunătățită cu fiecare exemplu, dar cu cât rețeaua neuronală este mai mare, cu atât mai multe exemple sunt necesare pentru a obține performanțe bune - de multe ori este nevoie de milioane sau miliarde de exemple în cazul învățării profunde.


 

Prezentare generală

O rețea neuronală modelează o rețea de neuroni, precum cei din creierul uman. Fiecare neuron efectuează operații matematice simple: primește date de la alți neuroni, le modifică și le trimite altor neuroni. Neuronii sunt plasați în "straturi": un neuron dintr-un strat primește date de la neuronii din alte straturi, le modifică și le trimite neuronilor din alte straturi. O rețea neuronală este alcătuită din unul sau mai multe straturi.

Primul strat se numește "strat de intrare" și primește date din lumea exterioară (de exemplu: o imagine sau un text). Ultimul strat se numește "strat de ieșire". Datele de la neuronii din stratul de ieșire sunt citite și utilizate ca ieșire a rețelei. Celelalte straturi se numesc "straturi ascunse".

Într-o rețea simplă de tip "feed-forward", datele gestionate de neuroni sunt numere. Fiecare neuron face o sumă ponderată a valorii neuronilor din stratul anterior ( X i {\displaystyle X_{i}}{\displaystyle X_{i}} în ecuația de mai jos). Apoi adaugă la aceasta o valoare constantă (numită "bias"). În cele din urmă, aplică o funcție matematică acestei valori, numită "funcție de activare". Funcția de activare este, de obicei, o funcție care returnează o valoare între 0 și 1, cum ar fi tanh. Rezultatul funcției de activare ( Y j {\displaystyle Y_{j}}{\displaystyle Y_{j}} în ecuația de mai jos) este apoi trimis către neuronii din stratul următor.

Y j = A c t i v a ț i o n ( ∑ i ∈ I n p u t s W e i g h t ( i , j ) ∗ X i + B i a s ( j ) ) {\displaystyle Y_{j}=Activare(\sum _{i\;\in \;Intrări}{Podere(i,j)}*X_{i}+Bias(j))} {\displaystyle Y_{j}=Activation(\sum _{i\;\in \;Inputs}{Weight(i,j)}*X_{i}+Bias(j))}

Se definește o funcție de pierdere pentru rețea. Funcția de pierdere încearcă să estimeze cât de bine se descurcă rețeaua neuronală în sarcina care i-a fost atribuită. În cele din urmă, se aplică o tehnică de optimizare pentru a minimiza rezultatul funcției de cost prin modificarea ponderilor și a polarizărilor rețelei. Acest proces se numește instruire. Instruirea se face pas cu pas. După mii de pași, rețeaua este, de obicei, capabilă să își îndeplinească destul de bine sarcina atribuită.



 

Exemplu

Luați în considerare un program care verifică dacă o persoană este în viață. Acesta verifică două lucruri - pulsul și respirația. Dacă o persoană are puls sau respiră, programul va afișa "viu", în caz contrar, va afișa "mort". Într-un program care nu învață în timp, acest lucru ar fi scris astfel:

function isAlive(puls, respirație) { if(puls || respirație) { return true; } else { return false; } }

O rețea neuronală foarte simplă, formată dintr-un singur neuron, care rezolvă aceeași problemă, va arăta astfel:

Single neuron which takes the values of pulse (true/false) and breathing (true/false), and outputs value of alive (true/false).

Valorile pulsului, respirației și viu vor fi fie 0, fie 1, reprezentând fals și adevărat. Astfel, dacă acest neuron primește valorile (0,1, (1,0) sau (1,1), ar trebui să emită 1, iar dacă primește (0,0), ar trebui să emită 0. Neuronul face acest lucru aplicând o operație matematică simplă la intrare - adună toate valorile care i-au fost date și apoi adaugă propria valoare ascunsă, care se numește "polarizare". Pentru început, această valoare ascunsă este aleatorie, iar noi o ajustăm în timp dacă neuronii nu ne dau rezultatul dorit.

Dacă adunăm valori precum (1,1), am putea obține numere mai mari decât 1, dar noi vrem ca rezultatul să fie între 0 și 1! Pentru a rezolva acest lucru, putem aplica o funcție care limitează ieșirea noastră reală la 0 sau 1, chiar dacă rezultatul calculului neuronului nu se încadrează în intervalul respectiv. În cazul rețelelor neuronale mai complicate, aplicăm o funcție (cum ar fi sigmoid) neuronului, astfel încât valoarea acestuia să fie cuprinsă între 0 și 1 (cum ar fi 0,66), iar apoi transmitem această valoare următorului neuron până când avem nevoie de ieșirea noastră.



 

Metode de învățare

Există trei moduri în care o rețea neuronală poate învăța: învățarea supravegheată, învățarea nesupravegheată și învățarea prin întărire. Toate aceste metode funcționează fie prin minimizarea, fie prin maximizarea unei funcții de cost, dar fiecare dintre ele este mai bună pentru anumite sarcini.

Recent, o echipă de cercetători de la Universitatea din Hertfordshire, Marea Britanie, a folosit învățarea prin întărire pentru a face un robot umanoid iCub să învețe să rostească cuvinte simple prin bâlbâială.

 

Întrebări și răspunsuri

Î: Ce este o rețea neuronală?


R: O rețea neuronală (denumită și RNA sau rețea neuronală artificială) este un fel de software informatic, inspirat de neuronii biologici. Este alcătuită din celule care lucrează împreună pentru a produce un rezultat dorit, deși fiecare celulă individuală este responsabilă doar de rezolvarea unei mici părți a problemei.

Î: Cum se compară o rețea neuronală cu creierele biologice?


R: Creierele biologice sunt capabile să rezolve probleme dificile, dar fiecare neuron este responsabil doar de rezolvarea unei părți foarte mici a problemei. În mod similar, o rețea neuronală este alcătuită din celule care lucrează împreună pentru a produce un rezultat dorit, deși fiecare celulă individuală este responsabilă doar de rezolvarea unei mici părți a problemei.

Î: Ce tip de program poate crea programe inteligente în mod artificial?


R: Rețelele neuronale sunt un exemplu de învățare automată, în care un program se poate schimba pe măsură ce învață să rezolve o problemă.

Î: Cum puteți să vă antrenați și să vă îmbunătățiți cu fiecare exemplu pentru a utiliza învățarea profundă?


R: O rețea neuronală poate fi antrenată și îmbunătățită cu fiecare exemplu, dar cu cât rețeaua neuronală este mai mare, cu atât mai multe exemple sunt necesare pentru a avea performanțe bune - de multe ori este nevoie de milioane sau miliarde de exemple în cazul învățării profunde.

Î: De ce aveți nevoie pentru ca învățarea profundă să aibă succes?


R: Pentru ca învățarea în profunzime să aibă succes, aveți nevoie de milioane sau miliarde de exemple, în funcție de cât de mare este rețeaua neuronală.

Î: Ce legătură există între învățarea automată și crearea de programe inteligente în mod artificial?



R: Învățarea mecanică are legătură cu crearea de programe inteligente în mod artificial, deoarece permite programelor să se schimbe pe măsură ce învață cum să rezolve problemele.

AlegsaOnline.com - 2020 / 2023 - License CC3