O rețea neuronală artificială sau rețea neuronală artificială este un sistem al cărui design a fost inițial inspirat schematic de funcționarea neuronilor biologici și care a abordat ulterior metodele statistice.
Rețelele neuronale sunt în general optimizate prin metode de învățare de tip probabilistic, în special bayesian . Ele sunt plasate, pe de o parte, în familia de aplicații statistice , pe care le îmbogățesc cu un set de paradigme, făcând posibilă crearea unor clasificări rapide ( în special rețelele Kohonen ) și, pe de altă parte, în familia metodelor de inteligență artificială. la care oferă un mecanism perceptiv independent de ideile proprii ale implementatorului și introduc informații în raționamentul logic formal (vezi Învățarea profundă ).
În modelarea circuitelor biologice, acestea fac posibilă testarea unor ipoteze funcționale din neurofiziologie sau consecințele acestor ipoteze pentru a le compara cu realitatea.
Rețelele neuronale sunt construite pe o biologică paradigmă , cea a neuronului formale (ca algoritmi genetici sunt pe selecția naturală ). Aceste tipuri de metafore biologice au devenit comune cu ideile de cibernetică și biocibernetică . Conform formulei lui Yann Le Cun , el nu pretinde să descrie creierul decât o aripă de avion, de exemplu, o copie pe cea a unei păsări . În special, rolul celulelor gliale nu este simulat.
Neurologii Warren McCulloch și Walter Pitts au publicat prima lucrare pe rețelele neuronale la sfârșitul anilor 1950, cu un articol seminal: Ce spune ochiul broaștei creierului broaștei ). Apoi au format un model simplificat al unui neuron biologic denumit în mod obișnuit un neuron formal . Au arătat că rețelele neuronale formale simple pot îndeplini teoretic funcții logice , aritmetice și simbolice complexe.
Neuronul formal este conceput ca un automat dotat cu o funcție de transfer care își transformă intrările în ieșiri conform unor reguli precise. De exemplu, un neuron își însumează intrările, compară suma rezultată cu o valoare prag și răspunde prin emiterea unui semnal dacă această sumă este mai mare sau egală cu acest prag (model ultra-simplificat al funcționării unui neuron biologic). Acești neuroni sunt asociați și în rețele a căror topologie de conexiune este variabilă: rețele proactive, recurente etc. În cele din urmă, eficiența transmiterii semnalului de la un neuron la altul poate varia: vorbim de „greutate sinaptică” , iar aceste greutăți pot fi modulate prin reguli de învățare (care imită plasticitatea sinaptică a rețelelor. Biologice).
O funcție a rețelelor neuronale formale, precum modelul live, este de a face rapid clasificări și de a învăța cum să le îmbunătățească. Spre deosebire de metodele tradiționale de rezolvare a computerului , nu trebuie să construiți un program pas cu pas pe baza înțelegerii acestuia. Parametrii importanți ai acestui model sunt coeficienții sinaptici și pragul fiecărui neuron și modul de ajustare a acestora. Ei sunt cei care determină evoluția rețelei în funcție de informațiile de intrare ale acesteia. Este necesar să se aleagă un mecanism care să le permită să le calculeze și să le facă să convergă, dacă este posibil, către o valoare care să asigure o clasificare cât mai apropiată de cea optimă. Aceasta se numește faza de învățare a rețelei. Într-un model de rețele neuronale formale, învățarea echivalează, prin urmare, cu determinarea coeficienților sinaptici cei mai potriviți pentru clasificarea exemplelor prezentate.
Lucrările lui McCulloch și Pitts nu au dat nicio indicație asupra unei metode de adaptare a coeficienților sinaptici. La această întrebare aflată în centrul reflecțiilor asupra învățării a fost răspuns mai întâi datorită muncii fiziologului canadian Donald Hebb privind învățarea din 1949 descrisă în cartea sa Organizația comportamentului . Hebb a propus o regulă simplă care face posibilă modificarea valorii coeficienților sinaptici în funcție de activitatea unităților pe care le conectează. Această regulă cunoscută acum sub numele de „ regula Hebb ” este prezentă aproape peste tot în modelele actuale, chiar și în cele mai sofisticate.
Din acest articol, ideea a luat-o de-a lungul timpului în minte și a germinat în mintea lui Frank Rosenblatt în 1957 cu modelul perceptronului . Este primul sistem artificial capabil să învețe din experiență, chiar și atunci când instructorul său face unele greșeli (ceea ce este clar diferit de un sistem formal de învățare logică).
În 1969 , comunitatea științifică care se învârtea în jurul rețelelor neuronale a dat o lovitură gravă: Marvin Lee Minsky și Seymour Papert au publicat o lucrare care evidențiază unele limitări teoretice ale perceptronului și, mai general , clasificatori liniari , în special imposibilitatea de a trata problemele neliniare sau de conexiune. . Ei au extins implicit aceste limitări la toate modelele de rețele neuronale artificiale. Se pare că se află într-un impas, cercetarea privind rețelele neuronale a pierdut o mare parte din finanțarea sa publică, iar sectorul industrial s -a îndepărtat de aceasta. Fondurile destinate inteligenței artificiale au fost mai degrabă redirecționate către logica formală . Cu toate acestea, calitățile solide ale anumitor rețele neuronale în materii adaptive (de exemplu, Adaline ), care le permit să modeleze într-un mod evolutiv fenomene care sunt ele însele evolutive, le vor determina să fie integrate în forme mai mult sau mai puțin explicite în corpusul sistemelor adaptive. ; utilizat în telecomunicații sau controlul proceselor industriale.
În 1982 , John Joseph Hopfield , fizician recunoscut, a dat o nouă viață neuronalului publicând un articol care introduce un nou model de rețea neuronală (complet recurent). Acest articol a avut succes din mai multe motive, principalul fiind acela de a nuanța teoria rețelelor neuronale cu rigoarea specifică fizicienilor. Neuralul a devenit din nou un subiect acceptabil de studiu, deși modelul Hopfield a suferit principalele limitări ale modelelor anilor 1960 , în special incapacitatea de a face față problemelor neliniare.
La aceeași dată, abordările algoritmice ale inteligenței artificiale au făcut obiectul deziluziei, aplicațiile lor neîndeplinind așteptările. Această deziluzie a motivat o reorientare a cercetării în inteligența artificială către rețelele neuronale (deși aceste rețele privesc percepția artificială mai mult decât inteligența artificială strict vorbind). Cercetările au fost relansate, iar industria și-a recăpătat un anumit interes neuronal (în special pentru aplicații precum ghidarea rachetelor de croazieră ). În 1984 (?), Sistemul de propagare înapoi în gradient a fost subiectul cel mai dezbătut în domeniu.
Apare apoi o revoluție în domeniul rețelelor neuronale artificiale: o nouă generație de rețele neuronale, capabile să proceseze cu succes fenomene neliniare: perceptronul multistrat nu are defectele evidențiate de Marvin Minsky . Propus pentru prima dată de Paul Werbos , perceptronul cu mai multe straturi apare în 1986, introdus de David Rumelhart și, simultan, sub un nume similar, la Yann Le Cun . Aceste sisteme se bazează pe propagarea înapoi a gradientului de eroare în sisteme cu mai multe straturi, fiecare de tipul Bernard Widrow Adaline, aproape de perceptronul lui Rumelhart.
Rețelele neuronale au cunoscut ulterior un boom considerabil și au fost printre primele sisteme care au beneficiat de înțelegerea teoriei „regularizării statistice” introdusă de Vladimir Vapnik în Uniunea Sovietică și popularizată în Occident de la căderea zidului Uniunii Sovietice . Această teorie, una dintre cele mai importante din domeniul statisticii , face posibilă anticiparea, studierea și reglarea fenomenelor legate de supra-dotare . Putem astfel reglementa un sistem de învățare astfel încât să arbitreze cel mai bine între modelarea slabă (exemplu: media ) și modelarea prea bogată, care ar fi optimizată iluzoriu pe un număr prea mic de exemple și ar fi inoperantă pentru exemplele care nu au fost încă învățate, chiar aproape de exemplele învățate. Suprapunerea este o dificultate cu care se confruntă toate exemplele de sisteme de învățare, indiferent dacă folosesc metode de optimizare directă (de exemplu regresie liniară ), iterativă (de exemplu, algoritmul de gradient ) sau iterativă semi-directă ( gradient conjugat , maximizare-așteptare ...) și dacă acestea sunt aplicate modelelor statistice clasice, modelelor ascunse Markov sau rețelelor neuronale formale.
Rețelele neuronale evoluează cu un nou tip de rețea care nu este complet conectată, pentru a ușura modelele în ceea ce privește numărul de parametri și pentru a îmbunătăți performanța și capacitatea lor de generalizare. Una dintre primele aplicații a fost recunoașterea automată a codurilor poștale din SUA, cu rețeaua LeNet-5. În învățarea automată, o rețea neuronală convoluțională sau o rețea neuronală convoluțională (CNN sau ConvNet for Convolutional Neural Networks) este un tip de rețea neuronală artificială aciclică (feed-forward), în care modelul de conexiune dintre neuroni este inspirat de cortexul vizual al animalelor . Neuronii din această regiune a creierului sunt aranjați astfel încât să corespundă regiunilor care se suprapun atunci când placează câmpul vizual. Funcționarea lor este inspirată de procesele biologice, acestea constând dintr-un teanc multistrat de perceptroni, al căror scop este preprocesarea unor cantități mici de informații. Rețelele neuronale convoluționale au aplicații largi în recunoașterea imaginilor și a videoclipurilor, sisteme de recomandare și procesare a limbajului natural.
Rețelele neuronale, ca sisteme capabile să învețe, pun în aplicare principiul inducției, adică învățarea prin experiență. Prin comparație cu situații specifice, ele deduc un sistem de decizie integrat al cărui caracter generic depinde de numărul de cazuri de învățare întâlnite și de complexitatea acestora în raport cu complexitatea problemei de rezolvat. În schimb, sistemele simbolice capabile să învețe, dacă implementează și inducția, o fac pe baza logicii algoritmice, făcând un set de reguli deductive mai complex ( Prolog de exemplu).
Datorită capacității lor de a clasifica și generaliza, rețelele neuronale sunt de obicei utilizate în probleme de natură statistică, cum ar fi clasificarea automată a codurilor poștale sau luarea unei decizii cu privire la o achiziție de acțiuni pe baza mișcărilor de preț. Un alt exemplu, o bancă poate crea un set de date despre clienții care au contractat un împrumut constând din: venitul lor, vârsta lor, numărul copiilor aflați în întreținere ... și dacă sunt clienți buni. Dacă acest set de date este suficient de mare, acesta poate fi utilizat pentru antrenarea unei rețele neuronale. Banca va putea apoi să prezinte caracteristicile unui potențial client nou, iar rețeaua va răspunde indiferent dacă va fi un client bun sau nu, generalizând pe baza cazurilor pe care le cunoaște.
Dacă rețeaua neuronală funcționează cu numere reale, răspunsul reflectă o probabilitate de certitudine. De exemplu: 1 pentru „sigur că va fi un client bun”, -1 pentru „sigur că va fi un client rău”, 0 pentru „nici o idee”, 0,9 pentru „aproape sigur că va fi un client bun”.
Rețeaua neuronală nu oferă întotdeauna o regulă care poate fi utilizată de un om. Rețeaua rămâne adesea o cutie neagră care oferă un răspuns atunci când este prezentată cu o bucată de date, dar rețeaua nu oferă o justificare ușor de interpretat.
Rețelele neuronale sunt de fapt utilizate, de exemplu:
Rețelele neuronale artificiale au nevoie de cazuri reale care să servească drept exemple pentru învățarea lor (aceasta se numește baza de învățare ). Aceste cazuri trebuie să fie cu atât mai numeroase cu cât problema este complexă, iar topologia sa este nestructurată. Astfel, un sistem de citire a caracterelor neuronale poate fi optimizat utilizând împărțirea manuală a unui număr mare de cuvinte scrise manual de multe persoane. Fiecare personaj poate fi apoi prezentat sub forma unei imagini brute, având o topologie spațială bidimensională sau o serie de aproape toate segmentele legate. Topologia reținută, complexitatea fenomenului modelat și numărul de exemple trebuie să fie corelate. La nivel practic, acest lucru nu este întotdeauna ușor, deoarece exemplele pot fi fie în cantitate absolut limitată, fie prea scumpe pentru a fi colectate în număr suficient.
Există probleme care funcționează bine cu rețelele neuronale, în special cele de clasificare în domenii convexe (adică astfel încât dacă punctele A și B fac parte din domeniu, atunci întregul segment AB din este, de asemenea, parte). Probleme precum „ Numărul de intrări este 1 (sau zero) impar sau par?” Sunt foarte slab rezolvate: pentru a afirma astfel de lucruri pe 2 puncte N de putere, dacă suntem mulțumiți de o abordare naivă, dar omogenă, avem nevoie exact de straturi N-1 de neuroni intermediari, ceea ce este în detrimentul generalității procesului.
O caricatură, dar un exemplu semnificativ este următorul: având ca intrare doar greutatea unei persoane, rețeaua trebuie să stabilească dacă această persoană este o femeie sau un bărbat. Întrucât femeile sunt statistic puțin mai ușoare decât bărbații, rețeaua va merge întotdeauna puțin mai bine decât o simplă tragere aleatorie: acest exemplu despuiat arată simplitatea și limitările acestor modele, dar arată, de asemenea, cum să-l extindă: informațiile despre fustă, dacă le adăugăm, ar avea în mod clar un coeficient sinaptic mai mare decât informațiile despre greutatea simplă.
Rețelele neuronale artificiale complexe, în general, nu își pot explica singuri modul de „gândire”. Calculele care rezultă într-un rezultat nu sunt vizibile pentru programatorii care au creat rețeaua neuronală. Prin urmare, a fost creată o „neuroștiință a inteligenței artificiale” pentru a studia cutia neagră formată din rețelele neuronale, o știință care ar putea face posibilă creșterea încrederii în rezultatele produse de aceste rețele sau de inteligențele artificiale care le folosesc.
O rețea neuronală este în general alcătuită dintr-o succesiune de straturi, fiecare dintre care își ia intrările din ieșirile celei anterioare. Fiecare strat (i) este alcătuit din neuroni N i , preluându-și intrările din neuronii N i-1 ai stratului anterior. Fiecare sinapsă are o greutate sinaptică asociată, astfel încât N i-1 se înmulțesc cu această greutate, apoi se adaugă cu neuroni de nivel i, ceea ce echivalează cu înmulțirea vectorului de intrare cu o matrice de transformare. Punerea diferitelor straturi ale unei rețele neuronale unul în spatele celuilalt ar echivala cu mai multe matrice de transformare și ar putea fi redusă la o singură matrice, produsul celorlalte, dacă nu ar exista la fiecare strat, funcția de ieșire care introduce o neliniaritate la fiecare pas. Acest lucru arată importanța alegerii judicioase a unei bune funcții de ieșire: o rețea neuronală ale cărei ieșiri ar fi liniare nu ar avea niciun interes.
Dincolo de această structură simplă, rețeaua neuronală poate conține și bucle care schimbă radical posibilitățile, dar și complexitatea. Așa cum buclele pot transforma logica combinatorie în logică secvențială , buclele dintr-o rețea neuronală transformă un dispozitiv simplu de recunoaștere a intrărilor într-o mașină complexă capabilă de tot felul de comportamente.
Luați în considerare orice neuron.
Primește o serie de valori de la neuronii din amonte prin conexiunile sale sinaptice și produce o anumită valoare utilizând o funcție de combinație . Prin urmare, această funcție poate fi formalizată ca fiind o funcție vectorială -to- scalară , în special:
Funcția de activare (sau funcția de prag , sau chiar funcția de transfer ) este utilizată pentru a introduce o neliniaritate în funcționarea neuronului.
Funcțiile prag au în general trei intervale:
Exemple tipice de funcții de activare sunt:
Logica bayesiană, din care teorema Cox-Jaynes formalizează întrebările de învățare, implică și o funcție în S care apare în mod repetat:
Odată ce acest calcul este făcut, neuronul își propagă noua stare internă pe axon. Într-un model simplu, funcția neuronală este pur și simplu o funcție de prag: este egală cu 1 dacă suma ponderată depășește un anumit prag; 0 altfel. Într-un model mai bogat, neuronul funcționează cu numere reale (adesea în intervalul [0.1] sau [-1.1]). Spunem că rețeaua neuronală trece de la o stare la alta atunci când toți neuronii ei își recalculează starea internă în paralel, în funcție de intrările lor.
Noțiunea de învățare , deși deja cunoscută de la Sumer , nu poate fi modelată în cadrul logicii deductive : aceasta provine, de fapt, din cunoștințe deja stabilite din care se trag cunoștințe derivate. Cu toate acestea, acesta este procesul invers: prin observații limitate, trasând generalizări plauzibile: este un proces prin inducție .
Noțiunea de învățare acoperă două realități adesea tratate succesiv:
În cazul sistemelor de învățare statistică, utilizate pentru optimizarea modelelor statistice clasice, a rețelelor neuronale și a automatelor markoviene, generalizarea este obiectul întregii atenții.
Această noțiune de generalizare este tratată mai mult sau mai puțin complet de mai multe abordări teoretice.
În funcție de structura rețelei, diferite tipuri de funcții pot fi abordate datorită rețelelor neuronale:
Funcții reprezentabile de un perceptronUn perceptron (o rețea cu o unitate) poate reprezenta următoarele funcții booleene: și, sau, nand, nici dar nu xor. Deoarece orice funcție booleană este reprezentabilă folosind aceste funcții, o rețea perceptron este capabilă să reprezinte toate funcțiile booleene. Într-adevăr, funcțiile nand și nor se spun că sunt universale: combinând una dintre aceste funcții, putem să le reprezentăm pe toate celelalte.
Funcții reprezentabile de rețelele neuronale multistrat acicliceMarea majoritate a rețelelor neuronale au un algoritm de „antrenament” care constă în modificarea greutăților sinaptice în conformitate cu un set de date prezentate la intrarea rețelei. Scopul acestui antrenament este de a permite rețelei neuronale să „învețe” din exemple. Dacă antrenamentul este efectuat corect, rețeaua este capabilă să ofere răspunsuri de ieșire foarte apropiate de valorile originale ale setului de date de antrenament. Dar întregul punct al rețelelor neuronale constă în capacitatea lor de a generaliza din setul de testare. Prin urmare, este posibil să se utilizeze o rețea neuronală pentru a produce o memorie; vorbim apoi de memoria neuronală .
Vederea topologică a unei învățări corespunde determinării suprafeței pe unde este setul de numere reale și numărul de intrări ale rețelei.
Se spune că o învățare este supravegheată atunci când rețeaua este forțată să convergă către o stare finală precisă, în același timp cu prezentarea unui model.
În schimb, în timpul învățării nesupravegheate, rețeaua este lăsată liberă să convergă către orice stare finală atunci când i se prezintă un model.
SuprapunereaSe întâmplă adesea ca exemplele bazei de învățare să includă valori aproximative sau zgomotoase. Dacă forțăm rețeaua să răspundă aproape perfect la aceste exemple, putem obține o rețea care este părtinită de valori eronate.
De exemplu, imaginați-vă că prezentăm rețelei cupluri situate pe o linie de ecuație , dar zgomotoase, astfel încât punctele să nu fie exact pe linie. Dacă există o învățare bună, rețeaua răspunde pentru orice valoare prezentată. Dacă există supra-dotare , rețeaua răspunde puțin mai mult sau puțin mai puțin, deoarece fiecare cuplu poziționat în afara dreptului va influența decizia: va fi învățat zgomotul în plus, ceea ce nu este de dorit.
Pentru a evita supraadaptarea, există o metodă simplă: este suficient să împărțiți baza exemplelor în 2 subseturi. Primul este pentru învățare și al doilea este pentru evaluarea învățării. Atâta timp cât eroarea obținută la al doilea set scade, putem continua să învățăm, altfel ne oprim.
Propagarea înapoi este de a rétropropager eroarea de sinapse si neuroni conectate la un neuron lui. Pentru rețelele neuronale, folosim de obicei propagarea înapoi a gradientului de eroare , care constă în corectarea erorilor în funcție de importanța elementelor care au participat precis la realizarea acestor erori: greutățile sinaptice care contribuie la generarea unei erori. modificate într-un mod mai semnificativ decât greutățile care au generat o eroare marginală.
Tunderea ( tăierea , engleza) este o metodă care evită supraentrenarea , limitând în același timp complexitatea modelului. Acesta constă în eliminarea conexiunilor (sau sinapselor), intrărilor sau neuronilor din rețea, odată ce învățarea este finalizată. În practică, elementele care au cea mai mică influență asupra erorii de ieșire a rețelei sunt suprimate. Două exemple de algoritmi de tăiere sunt:
Setul de greutăți ale legăturilor sinaptice determină funcționarea rețelei neuronale. Modelele sunt prezentate unui subset al rețelei neuronale: stratul de intrare. Atunci când un model este aplicat unei rețele, acesta caută să ajungă la o stare stabilă. Când este atins, valorile de activare ale neuronilor de ieșire constituie rezultatul. Se spune că neuronii care nu fac parte nici din stratul de intrare, nici din stratul de ieșire sunt neuroni ascunși .
Tipurile de rețea neuronală diferă în mai mulți parametri:
Este posibil ca mulți alți parametri să fie implementați în cadrul formării acestor rețele neuronale, de exemplu:
Rețeaua ADALINE este aproape de modelul perceptron , doar funcția sa de activare este diferită, deoarece folosește o funcție liniară. Pentru a reduce interferența primită la intrare, rețelele ADALINE utilizează metoda celor mai mici pătrate .
Rețeaua realizează o sumă ponderată a valorilor sale de intrare și le adaugă o valoare prag predefinită. Funcția de transfer liniar este apoi utilizată pentru activarea neuronului. La învățare, coeficienții sinaptici ai diferitelor intrări sunt modificați utilizând legea lui Widrow-Hoff (în) . Aceste rețele sunt adesea utilizate în procesarea semnalului, în special pentru reducerea zgomotului.
Mașină cauchyO mașină Cauchy este o rețea neuronală artificială destul de similară în funcționarea unei mașini Boltzmann . Cu toate acestea, legile probabilităților utilizate nu sunt aceleași.
NespecificatÎn acest tip de învățare nesupravegheată, neuronii concurează pentru a fi activi. Sunt ieșiri binare și spunem că sunt active atunci când ieșirea lor este egală cu 1. În timp ce în celelalte reguli mai multe ieșiri de neuroni pot fi active simultan, în cazul învățării competitive, doar un neuron este activ la un moment dat. . Fiecare neuron de ieșire este specializat pentru a „detecta” o serie de forme similare și apoi devine un detector de caracteristici. Funcția de intrare este, în acest caz, unde și , respectiv, sunt pragul, greutățile sinaptice și vectorii de intrare. Neuronul câștigător este cel pentru care h este maxim, deci dacă pragurile sunt identice, cel ale cărui greutăți sunt cele mai apropiate de intrări. Neuronul cu ieșirea maximă va fi câștigător, iar ieșirea acestuia va fi setată la 1, în timp ce perdanții vor avea ieșirea setată la 0. Un neuron învață deplasându-și greutățile la valorile intrărilor care îl activează pentru a crește șanse de câștig. Dacă un neuron nu răspunde la o intrare, nu are loc ajustarea greutății. Dacă un neuron câștigă, o parte din greutățile tuturor intrărilor este redistribuită la greutățile intrărilor active. Aplicarea regulii oferă următoarele rezultate (Grossberg):
Această regulă are ca efect apropierea vectorului de greutate sinaptică mai aproape de forma de intrare .
Exemplu: ia în considerare două nori de puncte ale planului pe care dorim să le separăm în două clase. și sunt cele două intrări și sunt greutățile neuronului 1 care pot fi considerate coordonatele unui punct „greutatea neuronului 1” și și sunt greutățile neuronului 2. Dacă pragurile sunt zero, hi va fi distanța dintre punctele care trebuie clasificate și punctele de greutate. Regula anterioară tinde să scadă această distanță față de punctul de eșantionare atunci când neuronul câștigă. Prin urmare, trebuie să permită fiecărui punct de greutate să se poziționeze în mijlocul unui nor. Dacă stabilim greutățile inițial la întâmplare, este posibil ca unul dintre neuroni să fie poziționat lângă cei doi nori, iar celălalt să fie poziționat departe, astfel încât să nu câștige niciodată. Greutățile sale nu vor putea evolua niciodată, în timp ce cele ale celuilalt neuron îl vor poziționa în mijlocul celor doi nori. Problema acestor neuroni pe care îi calificăm ca morți poate fi rezolvată jucând la praguri. Într-adevăr, este suficient să crească pragul acestor neuroni pentru ca aceștia să înceapă să câștige.
Aplicații: acest tip de rețea și metoda de învățare corespunzătoare pot fi utilizate în analiza datelor pentru a evidenția similitudinile dintre anumite date.
Fiind un model, rețelele neuronale sunt utilizate în general în contextul simulării software. IMSL și Matlab au astfel biblioteci dedicate rețelelor neuronale. Cu toate acestea, există câteva implementări hardware ale modelelor mai simple, cum ar fi cipul ZISC .