Clasificarea rețelelor neuronale. Modele de rețele neuronale care sunt cel mai des utilizate în acest moment. Învățare nesupravegheată

Bună ziua, numele meu este Natalia Efremova și sunt cercetător la NtechLab. Astăzi voi vorbi despre tipurile de rețele neuronale și despre aplicațiile acestora.

În primul rând, voi spune câteva cuvinte despre compania noastră. Compania este nouă, poate că mulți dintre voi încă nu știți ce facem. Anul trecut am câștigat concursul MegaFace. Acesta este un concurs internațional de recunoaștere facială. În același an s-a deschis firma noastră, adică suntem pe piață de aproximativ un an, chiar și puțin mai mult. Prin urmare, suntem una dintre companiile lider în recunoașterea facială și procesarea biometrică a imaginilor.

Prima parte a raportului meu va fi îndreptată către cei care nu sunt familiarizați cu rețelele neuronale. Sunt direct implicat în deep learning. Lucrez în acest domeniu de mai bine de 10 ani. Deși a apărut cu puțin mai puțin de un deceniu în urmă, au existat câteva rudimente de rețele neuronale care erau similare cu sistemul de învățare profundă.

În ultimii 10 ani, învățarea profundă și viziunea computerizată s-au dezvoltat într-un ritm incredibil. Tot ceea ce s-a făcut și este semnificativ în acest domeniu s-a întâmplat în anii recenti 6.

O să vă povestesc despre aspecte practice: unde, când, ce să folosesc în ceea ce privește învățarea profundă pentru procesarea imaginilor și video, pentru recunoașterea imaginii și a feței, deoarece lucrez într-o companie care face asta. Vă voi spune puțin despre recunoașterea emoțiilor și ce abordări sunt folosite în jocuri și robotică. Voi vorbi, de asemenea, despre aplicarea non-standard a învățării profunde, ceva care tocmai iese din instituțiile științifice și este încă puțin folosit în practică, cum poate fi aplicat și de ce este dificil de aplicat.

Raportul va consta din două părți. Deoarece majoritatea sunt familiarizați cu rețelele neuronale, mai întâi voi aborda rapid cum funcționează rețelele neuronale, ce sunt rețelele neuronale biologice, de ce este important pentru noi să știm cum funcționează, ce sunt rețelele neuronale artificiale și ce arhitecturi sunt utilizate în ce domenii .

Îmi cer scuze imediat, voi sări puțin la terminologie engleză, pentru că nici măcar nu știu cele mai multe despre cum se numește în rusă. Poate si tu.

Deci, prima parte a raportului va fi dedicată rețelelor neuronale convoluționale. Vă voi spune cum funcționează rețeaua neuronală convoluțională (CNN) și recunoașterea imaginilor folosind un exemplu de recunoaștere facială. Vă voi spune puțin despre rețelele neuronale recurente (RNN) și învățarea prin consolidare folosind exemplul sistemelor de învățare profundă.

La fel de aplicații non-standard rețelele neuronale, voi vorbi despre modul în care CNN funcționează în medicină pentru a recunoaște imaginile voxel, despre cum sunt folosite rețelele neuronale pentru a recunoaște sărăcia în Africa.

Ce sunt rețelele neuronale

Prototipul pentru crearea rețelelor neuronale a fost, în mod ciudat, rețelele neuronale biologice. Mulți dintre voi știți cum să programați o rețea neuronală, dar de unde provine, cred că unii nu știu. Două treimi din toate informațiile senzoriale care vin la noi provin din organele vizuale ale percepției. Mai mult de o treime din suprafața creierului nostru este ocupată de cele mai importante două zone vizuale - calea vizuală dorsală și calea vizuală ventrală.

Calea vizuală dorsală începe în zona vizuală primară, la coroana noastră, și continuă în sus, în timp ce calea ventrală începe în partea din spate a capului și se termină aproximativ în spatele urechilor. Toată recunoașterea importantă a modelelor care ni se întâmplă, tot ceea ce poartă un sens de care suntem conștienți, are loc chiar acolo, în spatele urechilor.

De ce este important? Pentru că deseori este necesar să înțelegem rețelele neuronale. În primul rând, toată lumea vorbește despre asta, iar eu m-am obișnuit deja să se întâmple acest lucru, iar în al doilea rând, adevărul este că toate zonele care sunt utilizate în rețelele neuronale pentru recunoașterea imaginilor au venit la noi tocmai din calea vizuală ventrală, unde fiecare un mic zona este responsabilă pentru funcția sa strict definită.

Imaginea vine la noi din retină, trece printr-o serie de zone vizuale și se termină în zona temporală.

În îndepărtații ani 60 ai secolului trecut, când studiul zonelor vizuale ale creierului abia începea, primele experimente au fost efectuate pe animale, deoarece nu exista fMRI. Creierul a fost studiat folosind electrozi implantați în diferite zone vizuale.

Prima zonă vizuală a fost studiată de David Hubel și Thorsten Wiesel în 1962. Au efectuat experimente pe pisici. Pisicilor li s-au arătat diverse obiecte în mișcare. La ce au răspuns celulele creierului a fost stimulul pe care l-a recunoscut animalul. Chiar și acum multe experimente sunt efectuate în aceste moduri draconice. Dar, cu toate acestea, acesta este cel mai eficient mod de a afla ce face fiecare celulă mică din creierul nostru.

În același mod, au fost descoperite multe mai multe proprietăți importante ale zonelor vizuale, pe care le folosim acum în deep learning. Una dintre cele mai importante proprietăți este creșterea câmpurilor receptive ale celulelor noastre pe măsură ce trecem de la zonele vizuale primare la lobii temporali, adică zonele vizuale ulterioare. Câmpul receptiv este acea parte a imaginii pe care fiecare celulă a creierului nostru o procesează. Fiecare celulă are propriul său câmp receptiv. Aceeași proprietate este păstrată în rețelele neuronale, așa cum probabil știți cu toții.

De asemenea, pe măsură ce câmpurile receptive cresc, la fel cresc și stimulii complexi pe care rețelele neuronale îi recunosc de obicei.

Aici vedeți exemple de complexitate a stimulilor, diferitele forme bidimensionale care sunt recunoscute în zonele V2, V4 și diferite părți ale câmpurilor temporale la maimuțele macac. De asemenea, sunt efectuate o serie de experimente RMN.

Aici puteți vedea cum se desfășoară astfel de experimente. Aceasta este o parte de 1 nanometru din zonele cortexului IT ale maimuței atunci când recunoașteți diferite obiecte este evidențiat.

Să rezumam. O proprietate importantă pe care dorim să o adoptăm din zonele vizuale este aceea că mărimea câmpurilor receptive crește, iar complexitatea obiectelor pe care le recunoaștem crește.

Viziune computerizată

Înainte să învățăm să aplicăm acest lucru în viziunea computerizată, în general, nu exista ca atare. În orice caz, nu a funcționat la fel de bine cum funcționează acum.

Transferăm toate aceste proprietăți în rețeaua neuronală și acum funcționează, dacă nu includeți o mică digresiune asupra setului de date, despre care voi vorbi mai târziu.

Dar mai întâi, puțin despre cel mai simplu perceptron. De asemenea, se formează după imaginea și asemănarea creierului nostru. Cel mai simplu element asemănătoare cu o celulă cerebrală - un neuron. Are elemente de intrare care în mod implicit sunt aranjate de la stânga la dreapta, ocazional de jos în sus. În stânga sunt părțile de intrare ale neuronului, în dreapta sunt părțile de ieșire ale neuronului.

Cel mai simplu perceptron este capabil să efectueze doar cele mai simple operații. Pentru a efectua calcule mai complexe, avem nevoie de o structură cu o cantitate mare straturi ascunse.

În cazul vederii computerizate, avem nevoie de și mai multe straturi ascunse. Și numai atunci sistemul va recunoaște în mod semnificativ ceea ce vede.

Așadar, vă voi spune ce se întâmplă în timpul recunoașterii imaginii folosind exemplul fețelor.

Pentru noi să ne uităm la această poză și să spunem că arată exact fața statuii este destul de simplu. Cu toate acestea, înainte de 2010, aceasta a fost o sarcină incredibil de dificilă pentru viziunea computerizată. Cei care s-au ocupat de această problemă înainte de această dată probabil știu cât de greu a fost să descriem fără cuvinte obiectul pe care vrem să-l găsim în imagine.

Trebuia să facem asta într-un fel geometric, să descriem obiectul, să descriem relațiile obiectului, cum aceste părți se pot relaționa între ele, apoi să găsim această imagine pe obiect, să le comparăm și să obținem ceea ce am recunoscut prost. De obicei era puțin mai bine decât să arunci o monedă. Puțin mai bun decât nivelul de șansă.

Nu așa funcționează acum. Împărțim imaginea noastră fie în pixeli, fie în anumite patch-uri: 2x2, 3x3, 5x5, 11x11 pixeli - așa cum este convenabil pentru creatorii sistemului în care servesc ca strat de intrare în rețeaua neuronală.

Semnalele de la aceste straturi de intrare sunt transmise de la strat la strat folosind sinapse, fiecare strat având coeficienții săi specifici. Așa că trecem din strat în strat, din strat în strat, până obținem că am recunoscut fața.

În mod convențional, toate aceste părți pot fi împărțite în trei clase, le vom desemna X, W și Y, unde X este imaginea noastră de intrare, Y este un set de etichete și trebuie să ne obținem ponderile. Cum calculăm W?

Având în vedere X și Y, acest lucru pare simplu. Totuși, ceea ce este indicat printr-un asterisc este o operație neliniară foarte complexă, care, din păcate, nu are invers. Chiar și cu 2 componente date ale ecuației, este foarte dificil să o calculezi. Prin urmare, trebuie să ne asigurăm treptat, prin încercare și eroare, prin selectarea ponderii W, să ne asigurăm că eroarea scade cât mai mult posibil, de preferință astfel încât să devină egală cu zero.

Acest proces are loc iterativ, reducem constant până găsim valoarea greutății W care ni se potrivește suficient.

Apropo, nici o singură rețea neuronală cu care am lucrat nu a realizat o eroare egală cu zero, dar a funcționat destul de bine.

Aceasta este prima rețea care a câștigat competiția internațională ImageNet în 2012. Acesta este așa-numitul AlexNet. Aceasta este rețeaua care sa declarat prima dată, că există o convoluție rețele neuronale iar de atunci, rețelele neuronale convoluționale nu au renunțat niciodată la pozițiile lor în toate competițiile internaționale.

În ciuda faptului că această rețea este destul de mică (are doar 7 straturi ascunse), conține 650 de mii de neuroni cu 60 de milioane de parametri. Pentru a învăța în mod iterativ să găsim ponderile necesare, avem nevoie de o mulțime de exemple.

Rețeaua neuronală învață din exemplul unei imagini și al unei etichete. Așa cum ni se învață în copilărie „aceasta este o pisică și acesta este un câine”, rețelele neuronale sunt de asemenea antrenate pe cantitati mari poze. Dar adevărul este că până în 2010 nu a existat un set de date suficient de mare care să învețe un astfel de număr de parametri să recunoască imaginile.

Cele mai mari baze de date care existau înainte de această perioadă au fost PASCAL VOC, care avea doar 20 de categorii de obiecte, și Caltech 101, care a fost dezvoltat la Institutul de Tehnologie din California. Ultima avea 101 categorii, și asta a fost mult. Cei care nu au reușit să-și găsească obiectele în niciuna dintre aceste baze de date au trebuit să-și coste bazele de date, ceea ce, voi spune, este teribil de dureros.

Cu toate acestea, în 2010, a apărut baza de date ImageNet, care conținea 15 milioane de imagini, împărțite în 22 de mii de categorii. Acest lucru a rezolvat problema noastră de a antrena rețelele neuronale. Acum, oricine are o adresă academică poate accesa cu ușurință site-ul web al bazei, poate solicita acces și poate primi această bază pentru a-și antrena rețelele neuronale. Ei răspund destul de repede, după părerea mea, a doua zi.

În comparație cu seturile de date anterioare, aceasta este o bază de date foarte mare.

Exemplul arată cât de nesemnificativ a fost tot ce a venit înainte. Concomitent cu baza ImageNet a apărut și competiția ImageNet, o provocare internațională la care pot participa toate echipele care doresc să concureze.

Anul acesta a fost creată rețeaua câștigătoare în China, a avut 269 de straturi. Nu știu câți parametri sunt, bănuiesc că sunt și mulți.

Arhitectura rețelei neuronale profunde

În mod convențional, poate fi împărțit în 2 părți: cei care învață și cei care nu învață.

Negrul indică acele părți care nu învață toate celelalte straturi sunt capabile să învețe. Există multe definiții a ceea ce este în interiorul fiecărui strat convoluțional. Una dintre notațiile acceptate este aceea că un strat cu trei componente este împărțit în stadiul de convoluție, stadiul de detector și stadiul de pooling.

Nu voi intra în detalii; vor exista multe alte rapoarte care vor discuta în detaliu cum funcționează. Vă spun cu un exemplu.

Deoarece organizatorii mi-au cerut să nu mai pomenesc de multe formule, le-am dat afară complet.

Deci, imaginea de intrare se încadrează într-o rețea de straturi, care pot fi numite filtre marimi diferiteși complexitatea variabilă a elementelor pe care le recunosc. Aceste filtre formează propriul index sau set de caracteristici, care apoi intră în clasificator. De obicei, acesta este fie SVM, fie MLP - perceptron multistrat, oricare este convenabil pentru dvs.

La fel ca o rețea neuronală biologică, sunt recunoscute obiecte de complexitate diferită. Pe măsură ce numărul de straturi a crescut, totul a pierdut contactul cu cortexul, deoarece există un număr limitat de zone în rețeaua neuronală. 269 ​​sau multe, multe zone de abstractizare, deci se menține doar o creștere a complexității, a numărului de elemente și a câmpurilor receptive.

Dacă ne uităm la exemplul de recunoaștere a feței, atunci câmpul nostru receptiv al primului strat va fi mic, apoi puțin mai mare, mai mare și așa mai departe până când în sfârșit putem recunoaște întreaga față.

Din punct de vedere a ceea ce este în interiorul filtrelor noastre, mai întâi vor fi bastoane înclinate plus puțină culoare, apoi părți de fețe, iar apoi fețe întregi vor fi recunoscute de fiecare celulă a stratului.

Există oameni care susțin că o persoană recunoaște întotdeauna mai bine decât o rețea. E chiar asa?

În 2014, oamenii de știință au decis să testeze cât de bine recunoaștem în comparație cu rețelele neuronale. Le-au luat pe cele 2 cele mai bune acest moment rețele - aceasta este AlexNet și rețeaua lui Matthew Ziller și Fergus, și în comparație cu răspunsul diferitelor zone ale creierului unui macac, care a fost, de asemenea, învățat să recunoască unele obiecte. Obiectele proveneau din lumea animală, astfel încât maimuța să nu se încurce și s-au efectuat experimente pentru a vedea cine putea recunoaște mai bine.

Deoarece este imposibil să obțineți un răspuns clar de la maimuță, electrozi au fost implantați în ea și răspunsul fiecărui neuron a fost măsurat direct.

S-a dovedit că, în condiții normale, celulele creierului au răspuns la fel ca modelul de ultimă generație din acel moment, adică rețeaua lui Matthew Ziller.

Cu toate acestea, odată cu creșterea vitezei de afișare a obiectelor și o creștere a cantității de zgomot și obiecte din imagine, viteza de recunoaștere și calitatea creierului nostru și a creierului primatelor scade semnificativ. Chiar și cea mai simplă rețea neuronală convoluțională poate recunoaște mai bine obiectele. Adică, oficial rețelele neuronale funcționează mai bine decât creierul nostru.

Probleme clasice ale rețelelor neuronale convoluționale

De fapt, nu sunt mulți dintre ei, ei aparțin la trei clase. Printre acestea se numără sarcini precum identificarea obiectelor, segmentarea semantică, recunoașterea feței, recunoașterea părților corpului uman, detectarea marginilor semantice, evidențierea obiectelor de atenție într-o imagine și evidențierea normalelor de suprafață. Ele pot fi împărțite aproximativ în 3 niveluri: de la sarcinile de cel mai jos nivel la sarcinile de cel mai înalt nivel.

Folosind această imagine ca exemplu, să ne uităm la ce face fiecare sarcină.

  • Definirea limitelor- Aceasta este sarcina de cel mai jos nivel pentru care rețelele neuronale convoluționale sunt deja utilizate în mod clasic.
  • Determinarea vectorului la normal ne permite să reconstruim imagine tridimensională din bidimensional.
  • Proeminență, identificarea obiectelor de atenție- la asta ar fi atentă o persoană când se uită la această imagine.
  • Segmentarea semantică vă permite să împărțiți obiectele în clase în funcție de structura lor, fără a ști nimic despre aceste obiecte, adică chiar înainte de a fi recunoscute.
  • Evidențierea limitelor semantice- aceasta este selecția granițelor împărțite în clase.
  • Evidențierea părților corpului uman.
  • Și sarcina de cel mai înalt nivel este recunoașterea obiectelor în sine, pe care acum îl vom lua în considerare folosind exemplul recunoașterii faciale.

Recunoaștere facială

Primul lucru pe care îl facem este să rulăm detectorul de fețe peste imagine pentru a găsi o față. Apoi, normalizăm, centram fața și o rulăm pentru procesare într-o rețea neuronală, după care obținem un set sau un vector de caracteristici descrie trăsăturile acestui chip.

Apoi putem compara acest vector de caracteristici cu toți vectorii de caracteristici care sunt stocați în baza noastră de date și să obținem o referință la o anumită persoană, la numele său, la profilul său - tot ceea ce putem stoca în baza de date.

Exact așa funcționează produsul nostru FindFace - este un serviciu gratuit care vă ajută să căutați profilurile oamenilor în baza de date VKontakte.

În plus, avem un API pentru companiile care doresc să încerce produsele noastre. Oferim servicii de detectare a feței, verificare și identificare a utilizatorilor.

Acum am dezvoltat 2 scenarii. Prima este identificarea, căutarea unei persoane într-o bază de date. A doua este verificarea, aceasta este o comparație a două imagini cu o anumită probabilitate ca aceasta să fie aceeași persoană. În plus, în prezent dezvoltăm recunoașterea emoțiilor, recunoașterea imaginii pe video și detectarea vieții - aceasta este o înțelegere a dacă persoana din fața camerei sau o fotografie este în viață.

Câteva statistici. La identificare, la căutarea prin 10 mii de fotografii, avem o acuratețe de aproximativ 95%, în funcție de calitatea bazei de date, și o acuratețe a verificării de 99%. Și pe lângă asta acest algoritm foarte rezistent la schimbări - nu trebuie să ne uităm la aparatul de fotografiat, putem avea câteva obiecte obstructive: ochelari, ochelari de soare, o barbă, o mască medicală. În unele cazuri, putem depăși chiar provocările incredibile pentru vederea computerizată, cum ar fi ochelarii și o mască.

Căutare foarte rapidă, procesarea a 1 miliard de fotografii durează 0,5 secunde. Am dezvoltat un index unic de căutare rapidă. Putem lucra și cu imagini De calitate inferioară primite de la camere CCTV. Putem procesa toate acestea în timp real. Puteți încărca fotografii prin interfața web, prin Android, iOS și puteți căuta prin 100 de milioane de utilizatori și prin cele 250 de milioane de fotografii ale acestora.

După cum am spus deja, am ocupat primul loc în competiția MegaFace - un analog pentru ImageNet, dar pentru recunoașterea feței. Funcționează de câțiva ani, anul trecut am fost cei mai buni dintre 100 de echipe din întreaga lume, inclusiv Google.

Rețele neuronale recurente

Folosim rețele neuronale recurente atunci când nu este suficient să recunoaștem doar o imagine. În cazurile în care este important pentru noi să menținem consistența, avem nevoie de ordinea a ceea ce se întâmplă, folosim rețele neuronale recurente obișnuite.

Acesta este folosit pentru recunoașterea limbajului natural, procesarea video, chiar și pentru recunoașterea imaginilor.

Nu voi vorbi despre recunoașterea limbajului natural - după raportul meu vor mai fi două care vor avea ca scop recunoașterea limbajului natural. Prin urmare, voi vorbi despre munca rețelelor recurente folosind exemplul recunoașterii emoțiilor.

Ce sunt rețelele neuronale recurente? Acesta este aproximativ același cu rețelele neuronale obișnuite, dar cu feedback. Avem nevoie de feedback pentru a transmite starea anterioară a sistemului la intrarea rețelei neuronale sau la unele dintre straturile acesteia.

Să presupunem că procesăm emoțiile. Chiar și într-un zâmbet – una dintre cele mai simple emoții – sunt mai multe momente: de la o expresie neutră a feței până la momentul în care avem un zâmbet plin. Ele se succed succesiv. Pentru a înțelege bine acest lucru, trebuie să fim capabili să observăm cum se întâmplă acest lucru și să transferăm ceea ce era în cadrul precedent la pasul următor al sistemului.

În 2005, la competiția Emotion Recognition in the Wild, o echipă din Montreal a prezentat un sistem recurent special pentru recunoașterea emoțiilor, care părea foarte simplu. Avea doar câteva straturi convoluționale și funcționa exclusiv cu videoclipuri. Anul acesta au adăugat, de asemenea, recunoaștere audio și date agregate cadru cu cadru obținute din rețelele neuronale convoluționale, date de semnal audio cu funcționarea unei rețele neuronale recurente (cu revenire a stării) și au primit primul loc în competiție.

Consolidarea învățării

Următorul tip de rețele neuronale, care a fost folosit foarte des în ultima vreme, dar nu a primit atâta publicitate ca cele 2 tipuri anterioare, este învățarea prin consolidare profundă.

Cert este că în cele două cazuri anterioare folosim baze de date. Avem fie date de la chipuri, fie date din imagini, fie date cu emoții din videoclipuri. Dacă nu avem asta, dacă nu îl putem filma, cum putem învăța un robot să ridice obiecte? Facem acest lucru automat - nu știm cum funcționează. Un alt exemplu: compilarea bazelor de date mari în jocurile pe calculator este dificilă și nu este necesară;

Probabil că toată lumea a auzit despre succesul învățării prin consolidare profundă în Atari și Go.

Cine a auzit de Atari? Ei bine, cineva a auzit, bine. Cred că toată lumea a auzit despre AlphaGo, așa că nici nu vă voi spune ce se întâmplă exact acolo.

Ce se întâmplă la Atari? Arhitectura acestei rețele neuronale este prezentată în stânga. Ea învață jucându-se cu ea însăși pentru a obține recompensa maximă. Recompensa maximă este cel mai rapid rezultat posibil al jocului cu cel mai mare scor posibil.

În dreapta sus este ultimul strat al rețelei neuronale, care descrie întregul număr de stări ale sistemului, care s-a jucat împotriva lui însuși timp de doar două ore. Rezultatele dezirabile ale jocului cu recompensă maximă sunt prezentate în roșu, iar cele nedorite sunt reprezentate în albastru. Rețeaua construiește un anumit câmp și se deplasează prin straturile sale antrenate până la starea pe care dorește să o obțină.

În robotică situația este puțin diferită. De ce? Aici avem mai multe dificultăți. În primul rând, nu avem multe baze de date. În al doilea rând, trebuie să coordonăm trei sisteme simultan: percepția robotului, acțiunile acestuia cu ajutorul manipulatorilor și memoria sa - ce s-a făcut în pasul anterior și cum a fost făcut. În general, toate acestea sunt foarte dificile.

Faptul este că nici o singură rețea neuronală, chiar și învățarea profundă în acest moment, nu poate face față acestei sarcini suficient de eficient, așa că învățarea profundă este doar o parte din ceea ce trebuie să facă roboții. De exemplu, Serghei Levin a oferit recent un sistem care învață un robot să apuce obiecte.

Iată experimentele pe care le-a efectuat pe cele 14 brațe robotizate ale sale.

Ce se petrece aici? În aceste lighene pe care le vezi în fața ta sunt diverse obiecte: pixuri, radiere, căni din ce în ce mai mari, cârpe, texturi diferite, durități diferite. Nu este clar cum să înveți un robot să-i captureze. Timp de multe ore și chiar săptămâni, roboții s-au antrenat să poată prinde aceste obiecte și au fost compilate baze de date despre asta.

Bazele de date sunt un fel de răspuns de mediu pe care trebuie să-l acumulăm pentru a putea antrena robotul să facă ceva în viitor. În viitor, roboții vor învăța din acest set de stări ale sistemului.

Aplicații non-standard ale rețelelor neuronale

Din păcate, acesta este sfârșitul, nu am mult timp. O să vă povestesc despre acestea soluții nestandardizate, care există acum și care, conform multor previziuni, va avea ceva aplicație în viitor.

Deci, oamenii de știință de la Stanford au venit recent cu un foarte aplicare neobișnuită Rețeaua neuronală CNN pentru predicția sărăciei. Ce au facut?

Conceptul este de fapt foarte simplu. Cert este că în Africa nivelul sărăciei depășește toate limitele imaginabile și de neconceput. Ei nici măcar nu au capacitatea de a colecta date demografice sociale. Prin urmare, din 2005, nu avem deloc date despre ceea ce se întâmplă acolo.

Oamenii de știință au colectat hărți de zi și de noapte de la sateliți și le-au alimentat într-o rețea neuronală într-o perioadă de timp.

Rețeaua neuronală a fost preconfigurată pe ImageNet, adică primele straturi de filtre au fost configurate astfel încât să poată recunoaște unele lucruri foarte simple, de exemplu, acoperișurile caselor, pentru a căuta așezări pe hărțile de zi în comparație cu iluminarea hărților de noapte a aceleiași zone a suprafeței pentru a spune câți bani are populația pentru a-și lumina casele cel puțin noaptea.

Aici vedeți rezultatele prognozei construite de rețeaua neuronală. Prognoza a fost făcută la diferite rezoluții. Și vedeți - chiar ultimul cadru - date reale culese de guvernul ugandez în 2005.

Puteți observa că rețeaua neuronală a făcut o prognoză destul de precisă, chiar și cu o ușoară schimbare din 2005.

Bineînțeles că au fost efecte secundare. Oamenii de știință care se angajează în învățarea profundă sunt întotdeauna surprinși să descopere diferite efecte secundare. De exemplu, ca și faptul că rețeaua a învățat să recunoască apa, pădurile, șantierele mari, drumurile - toate acestea fără profesori, fără baze de date prefabricate. În general, complet independent. Au existat anumite straturi care au reacționat, de exemplu, la drumuri.

Iar ultima aplicație despre care aș vrea să vorbesc este segmentarea semantică a imaginilor 3D în medicină. În general, imagistica medicală este un domeniu complex cu care este foarte greu de lucrat.

Există mai multe motive pentru aceasta.

  • Avem foarte puține baze de date. Nu este atât de ușor să găsești o imagine a unui creier, mai mult decât atât, a uneia deteriorate și, de asemenea, este imposibil să o ia de oriunde.
  • Chiar dacă avem o astfel de poză, trebuie să luăm un medic și să-l forțăm să plaseze manual toate imaginile cu mai multe straturi, ceea ce consumă foarte mult timp și extrem de ineficient. Nu toți medicii au resursele necesare pentru a face acest lucru.
  • Este necesară o precizie foarte mare. Sistemul medical nu poate face greșeli. La recunoaștere, de exemplu, pisicile nu au fost recunoscute - nu e mare lucru. Și dacă nu am recunoscut tumora, atunci aceasta nu mai este foarte bună. Cerințele pentru fiabilitatea sistemului sunt deosebit de stricte aici.
  • Imaginile sunt în elemente tridimensionale - voxeli, nu pixeli, ceea ce aduce o complexitate suplimentară dezvoltatorilor de sisteme.
Dar cum s-a rezolvat această problemă în acest caz? CNN a fost dual-stream. O parte prelucrată mai mult rezoluție normală, celălalt este o rezoluție ușor degradată pentru a reduce numărul de straturi pe care trebuie să le antrenăm. Din acest motiv, timpul necesar antrenării rețelei a fost ușor redus.

Unde este folosit: identificarea leziunilor după un impact, pentru a căuta o tumoră în creier, în cardiologie pentru a determina cum funcționează inima.

Iată un exemplu pentru determinarea volumului placentei.

Funcționează automat bine, dar nu suficient de bine pentru a fi lansat în producție, așa că abia începe. Există mai multe startup-uri pentru a crea astfel de sisteme medicale de vedere. În general, vor exista o mulțime de startup-uri în deep learning în viitorul apropiat. Ei spun că capitaliștii de risc au alocat mai mult buget startup-urilor de deep learning în ultimele șase luni decât în ​​ultimii 5 ani.

Această zonă se dezvoltă activ, multe direcții interesante. Trăim vremuri interesante. Dacă sunteți implicat în deep learning, atunci probabil că este timpul să vă deschideți propriul startup.

Ei bine, probabil o voi încheia aici. Mulțumesc foarte mult.

Rețelele neuronale sunt clasificate în funcție de următoarele tipuri de antrenament:

  1. rețele neuronale în curs de învățare supravegheată;
  2. rețele neuronale în curs de formare fără profesor.

Să ne uităm puțin mai detaliat la aceste tipuri.

Rețele neuronale în curs de învățare supravegheată.

Învățarea supravegheată presupune că fiecare vector inclus într-un vector țintă existent reprezintă rezultatul dorit. Împreună sunt o pereche de profesori. Rețeaua este antrenată pe mai multe perechi de antrenament.
Este furnizat vectorul de ieșire, ieșirea rețelei este determinată și comparată cu vectorii prezentați.
Apoi, modificați greutățile în conformitate cu algoritm matematic, care caută să reducă erorile.
Vectorii unui set de date de antrenament sunt prezentați secvenţial. Pe măsură ce mergeți, erorile și greutățile sunt calculate și ajustate pentru toți vectorii până când eroarea datelor de antrenament atinge nivelul dorit.

Rețele neuronale care învață fără ajutorul unui profesor.

Învățarea nesupravegheată pare a fi un model de învățare mult mai comun, în special în rețelele neuronale biologice.

Dezvoltat de alți oameni de știință, nu necesită un vector țintă pentru rezultate. De aici rezultă că nu sunt necesare comparații cu cele pregătite anterior. opțiuni ideale răspunsuri. Datele de antrenament constau numai din vectori de intrare.

Algoritmul de învățare modifică greutățile rețelei sale, astfel încât să fie produși vectori de ieșire consecvenți, adică furnizarea de vectori de intrare suficient de similari produce ieșiri similare.
Procesul de învățare, în mod iterativ, determină proprietățile statistice ale datelor de instruire furnizate și grupează vectori similari în clase.

Schimbarea greutăților

Rețelele neuronale sunt, de asemenea, împărțite în următoarele grupuri. CU conexiuni fixe – ale căror greutăți sunt selectate în prealabil în funcție de sarcină și cu conexiuni dinamice– care își rearanjează greutățile în timpul procesului de învățare.

Tip de introducere

Datele de intrare sunt, de asemenea, împărțite în mai multe; date de intrare analogice prezentat sub formă numere realeȘi binar a căror informaţie este reprezentată sub formă de zerouri şi unu.

Modele de rețele neuronale care sunt cel mai des folosite în acest moment

Rețele de distribuție directă– toate conexiunile acestei rețele au o direcție strictă de la neuronii de intrare la ieșirile lor. Dintre astfel de rețele aș dori să remarc: cel mai simplu perceptron al cărui autor este perceptron multistrat.

Rețele neuronale recurente– datele de la neuronii de ieșire sau din stratul ascuns sunt transmise parțial înapoi la neuronii de intrare.

Funcții de bază radială este o rețea neuronală bazată pe prezența unui strat ascuns de elemente radiale și a unui strat de ieșire de elemente liniare. Astfel de rețele sunt destul de compacte și învață destul de repede.

Au fost propuse în lucrări Broomhead și Lowe (1988)Și Moody și Darkin (1989).
Rețea de bază radială folosește următoarele proprietăți unice: un strat ascuns, neuronii doar ai stratului ascuns au o funcție de activare neliniară, iar greutățile sinaptice ale straturilor ascunse și de intrare sunt unitate.

rețele Kohonen sau Hărți auto-organizate– Această clasă de rețele este de obicei instruită fără ajutorul unui profesor și este adesea folosită în problemele legate de recunoașterea imaginilor.
Astfel de rețele sunt capabile să identifice elemente noi în datele de intrare: dacă, după antrenament, rețeaua vede un set de date care este diferit de oricare dintre eșantioanele familiare, atunci va clasifica un astfel de set și nu va detecta noutatea acestuia.
Rețeaua Kohonen are doar două straturi: ieșire și intrare, compuse din elemente radiale.

Din punctele unui plan și conexiunile dintre ele, puteți construi multe figuri grafice numite grafice. Dacă ne imaginăm fiecare punct ca un neuron și conexiunile dintre puncte ca dendrite și sinapse, atunci obținem o rețea neuronală.

Dar nu orice conexiune a neuronilor va fi eficientă sau chiar recomandabilă. Prin urmare, astăzi există doar câteva arhitecturi de rețele neuronale funcționale și implementate prin software. Voi descrie doar pe scurt designul lor și clasele de probleme pe care le rezolvă.

Pe baza arhitecturii conexiunilor, rețelele neuronale pot fi grupate în două clase: rețelele de distribuție directă, în care legăturile nu au bucle Figura 1, și rețele recurente, în care feedback-ul este posibil Figura 3

Figura 2 Rețele neuronale feedforward

Figura 3 Rețele neuronale recurente

Rețelele feedforward sunt împărțite în perceptroni cu un singur strat (rețele) și perceptroni multistrat (rețele). Numele de perceptron pentru rețelele neuronale a fost inventat de neurofiziologul american F. Rosenblatt, care a inventat-o ​​pe prima în 1957. element neuroprocesor (NPE), adică o rețea neuronală. El a demonstrat, de asemenea, convergența regiunii soluției pentru perceptron în timpul antrenamentului său. Imediat după aceasta, au început cercetările rapide în acest domeniu și a fost creat primul neurocomputer, Mark I.

Rețelele multistrat se disting prin faptul că între datele de intrare și de ieșire există mai multe așa-numite straturi ascunse de neuroni, adăugând mai multe conexiuni neliniare modelului.

Să luăm în considerare designul celei mai simple rețele neuronale multistrat. Orice rețea neuronală este formată din stratul de intrare și stratul de ieșire. Variabilele independente și dependente sunt prezentate în consecință. Datele de intrare sunt transformate de neuronii rețelei și comparate cu ieșirea. Dacă abaterea este mai mare decât una dată, atunci ponderile conexiunilor dintre neuroni și valorile de prag ale neuronilor se modifică într-un mod special. Procesul de calcul al valorii de ieșire și compararea acesteia cu standardul are loc din nou. Dacă abaterile sunt mai mici decât eroarea specificată, atunci procesul de învățare se oprește.

În plus față de straturile de intrare și de ieșire într-o rețea multistrat, există așa-numitele straturi ascunse. Sunt neuroni care nu au intrări directe ale datelor originale, ci sunt conectați doar cu ieșirile stratului de intrare și cu intrarea stratului de ieșire. Astfel, straturile ascunse transformă în continuare informațiile și adaugă neliniaritate modelului. Pentru a înțelege mai bine proiectarea unui perceptron multistrat, vezi Figura 4

Figura 4 Perceptron multistrat

Dacă o rețea neuronală cu un singur strat face față foarte bine problemelor de clasificare, deoarece stratul de ieșire al neuronilor compară valorile primite de la stratul anterior cu un prag și produce o valoare fie zero, adică mai mică decât pragul valoare, sau unul, mai mult decât pragul (în cazul unei funcții neuron interne de prag) și nu este capabil să rezolve majoritatea problemelor practice (care a fost dovedit de Minsky și Papert), atunci un perceptron multistrat cu funcții de decizie sigmoide este capabil pentru a aproxima orice dependență funcțională (acest lucru a fost dovedit sub forma unei teoreme). Dar, în același timp, nu se cunoaște nici numărul necesar de straturi, nici numărul necesar de neuroni ascunși, nici timpul necesar antrenării rețelei. Aceste probleme încă se confruntă cercetătorii și dezvoltatorii de rețele neuronale. Personal, mi se pare că tot entuziasmul în utilizarea rețelelor neuronale se bazează tocmai pe demonstrarea acestei teoreme. Ulterior, eu însumi voi arăta cum neuronii pot modela diferite clase de funcții, dar nu pretind că sunt complet în demonstrație.



Clasa de rețele neuronale recurente este mult mai largă, iar rețelele în sine sunt mai complexe în design.

Comportarea rețelelor recurente este descrisă prin ecuații diferențiale sau diferențiale, de obicei de ordinul întâi. Acest lucru extinde foarte mult domeniile de aplicare a rețelelor neuronale și metodele de antrenament a acestora. Rețeaua este organizată astfel încât fiecare neuron să primească input de la alți neuroni, eventual de la sine și de la mediu. Acest tip de rețea are important, deoarece pot fi utilizate pentru a simula sisteme dinamice neliniare.

Printre rețelele recurente putem distinge Rețele Hopfield și rețele Kohonen.

Rețelele Hopfield pot gestiona modele neordonate (litere scrise de mână), temporal (serie temporală) sau ordonate spațial (grafice). O rețea neuronală recurentă de cel mai simplu tip a fost introdusă de Hopfield și a fost construită din N neuroni, fiecare conectat la toată lumea, cu excepția ei însuși, și toți neuronii sunt scoși la ieșire. Rețeaua neuronală Hopfield poate fi folosită ca memorie asociativă. Arhitectura rețelei Hopfield este prezentată în Figura 5

Figura 5 Arhitectura rețelei Hopfield

Rețeaua Kohonen mai este numită și „hartă caracteristică auto-organizată”. Acest tip de rețea este conceput pentru autoeducatieÎn timpul antrenamentului, nu este necesar să-i spui răspunsurile corecte. În timpul procesului de instruire, diferite mostre sunt alimentate la intrarea în rețea. Rețeaua captează caracteristicile structurii lor și împarte eșantioanele în clustere, iar rețeaua deja antrenată atribuie fiecărui exemplu nou sosit unuia dintre clustere, ghidat de un criteriu de „proximitate”. Rețeaua constă dintr-un strat de intrare și unul de ieșire. Numărul de elemente din stratul de ieșire determină direct câte grupuri diferite poate recunoaște rețeaua. Fiecare dintre elementele de ieșire primește întregul vector de intrare ca intrare. Ca în orice rețea neuronală, fiecărei conexiuni i se atribuie o anumită greutate sinaptică. În cele mai multe cazuri, fiecare element de ieșire este, de asemenea, conectat la vecinii săi. Aceste conexiuni intra-strat joacă un rol important în procesul de învățare, deoarece ponderile sunt ajustate doar în vecinătatea elementului care răspunde cel mai bine la următoarea intrare. Elementele de ieșire concurează între ele pentru dreptul de a intra în acțiune și de a „primi o lecție”. Câștigătorul este cel al cărui vector de greutate este cel mai apropiat de vectorul de intrare.

Un neuron artificial este un element simplu care calculează mai întâi o sumă ponderată V a cantităților de intrare xi:

Aici N este dimensiunea spațiului semnalelor de intrare. Suma rezultată este apoi comparată cu valoarea de prag W0, după care intră în vigoare funcția de activare neliniară f. Coeficienții Wi din suma ponderată sunt de obicei numiți coeficienții sinaptici sau solzi. Vom numi însăși suma ponderată V potențialul neuronului i. Semnalul de ieșire are apoi forma f(V). Valoarea barierei de prag poate fi considerată ca un alt factor de ponderare pentru un semnal de intrare constant. În acest caz vorbim despre spațiu de intrare extins: Un neuron cu o intrare N-dimensională are N+1 greutăți. Dacă introducem valoarea de prag W0 în ecuație, aceasta va fi rescrisă astfel:

În funcție de metoda de transformare a semnalului și de natura activării, apar diferite tipuri de structuri neuronale. Exista neuroni determiniști, când funcția de activare calculează în mod unic ieșirea de la intrare și neuroni probabilistici, a cărui stare la momentul t este o funcție aleatorie a potențialului și starea la momentul t-1. Să luăm în considerare neuronii determiniști.

Structura rețelei neuronale

Se utilizează o rețea neuronală cu 3 straturi, a cărei structură este prezentată în Fig. 2.

Orez. 2. Structura rețelei neuronale aplicate (n – numărul de litere recunoscute)

Al treilea strat este format din neuroni de ieșire. În rețeaua neuronală a structurii selectate, fiecare element al stratului inferior își transmite semnalul de ieșire la intrările tuturor elementelor stratului următor. Numărul de elemente din primul și al doilea strat al rețelei neuronale poate varia. În special, în exemplul analizat, al doilea strat conține 8, iar al treilea – 24 de neuroni.

Funcții de activare Neuronii artificiali pot avea diferite functii de activare, dar in programele pe care le folosesc si in literatura cunoscuta sunt indicate doar urmatoarele tipuri de functii: Linear: semnalul de iesire al neuronului este egal cu potentialul sau, prag: neuronul selecteaza o solutie. din două opțiuni: activ/inactiv, Multithreshold: semnalul de ieșire poate lua una dintre valorile q, determinate de pragul (q-1) în limitele valorilor. Sigmoid: sunt luate în considerare două tipuri de funcții sigmoid:

cu valori de ieșire între și

cu valori de ieșire în intervalul [-1,1]. Coeficientul b determină abruptul sigmoidului. Deoarece funcția sigmoidă este o mapare lină a unei funcții infinite pe intervalul (-1,1), panta poate fi luată în considerare prin valorile greutăților și pragurilor și, fără pierderea generalității, se poate presupune că este egal cu unitatea. Imaginile grafice ale celui mai simplu neuron și tipurile de funcții cu graficele lor sunt prezentate în Fig. 2.
FIGURA 2. Un exemplu de neuron simplu sub forma unui model matematic

Tipuri de arhitecturi de rețele neuronale

Din punctele unui plan și conexiunile dintre ele, puteți construi multe figuri grafice numite grafice. Dacă ne imaginăm fiecare punct ca un neuron și conexiunile dintre puncte ca dendrite și sinapse, atunci obținem o rețea neuronală. Dar nu orice conexiune a neuronilor va fi eficientă sau chiar recomandabilă. Prin urmare, astăzi există doar câteva arhitecturi de rețele neuronale funcționale și implementate prin software. Voi descrie doar pe scurt designul lor și clasele de probleme pe care le rezolvă. Pe baza arhitecturii conexiunilor, rețelele neuronale pot fi grupate în două clase: rețelele de distribuție directă, în care conexiunile nu au bucle ( vezi fig. 3), Și rețele recurente, în care feedback-ul este posibil ( vezi fig. 4)

FIGURA 3. Rețele neuronale feedforward FIGURA 4. Rețele neuronale recurente

Rețelele feedforward sunt împărțite în perceptroni cu un singur strat (rețele) și perceptroni multistrat (rețele). Denumirea de perceptron pentru rețelele neuronale a fost inventată de neurofiziologul american F. Rosenblatt, care a inventat-o ​​pe prima în 1957. element neuroprocesor (NPE), adică o rețea neuronală. El a demonstrat, de asemenea, convergența regiunii soluției pentru perceptron în timpul antrenamentului său. Imediat după aceasta, au început cercetări viguroase în acest domeniu și a fost creat primul neurocomputer, Mark I, rețelele multistrat se disting prin faptul că mai multe așa-numite straturi ascunse de neuroni sunt situate între datele de intrare și de ieșire, adăugând mai multe neliniare. conexiuni la model. Să luăm în considerare proiectarea celei mai simple rețele neuronale multistrat. Orice rețea neuronală este formată din stratul de intrare și stratul de ieșire. Variabilele independente și dependente sunt prezentate în consecință. Datele de intrare sunt transformate de neuronii rețelei și comparate cu ieșirea. Dacă abaterea este mai mare decât una dată, atunci ponderile conexiunilor dintre neuroni și valorile de prag ale neuronilor se modifică într-un mod special. Procesul de calcul al valorii de ieșire și compararea acesteia cu standardul are loc din nou. Dacă abaterile sunt mai mici decât eroarea specificată, atunci procesul de învățare se oprește. Pe lângă straturile de intrare și de ieșire dintr-o rețea multistrat, există așa-numitele straturi ascunse. Sunt neuroni care nu au intrări directe ale datelor originale, ci sunt conectați doar cu ieșirile stratului de intrare și cu intrarea stratului de ieșire. Astfel, straturile ascunse transformă în continuare informațiile și adaugă neliniaritate modelului. Pentru a înțelege mai bine structura unui perceptron multistrat, vezi Fig. 5.

FIGURA 5. Perceptron multistrat

Dacă o rețea neuronală cu un singur strat face față foarte bine problemelor de clasificare, deoarece stratul de ieșire al neuronilor compară valorile primite de la stratul anterior cu un prag și produce o valoare fie zero, adică mai mică decât pragul valoare, sau unul, mai mult decât pragul (în cazul unei funcții neuron interne de prag) și nu este capabil să rezolve majoritatea problemelor practice (care a fost dovedit de Minsky și Papert), atunci un perceptron multistrat cu funcții de decizie sigmoide este capabil pentru a aproxima orice dependență funcțională (acest lucru a fost dovedit sub forma unei teoreme). Dar, în același timp, nu se cunoaște nici numărul necesar de straturi, nici numărul necesar de neuroni ascunși, nici timpul necesar antrenării rețelei. Aceste probleme se confruntă încă cercetătorii și dezvoltatorii de rețele neuronale. Personal, mi se pare că tot entuziasmul în utilizarea rețelelor neuronale se bazează tocmai pe demonstrarea acestei teoreme. Clasa de rețele neuronale recurente este mult mai largă, iar rețelele în sine sunt mai complexe în design. Comportarea rețelelor recurente este descrisă prin ecuații diferențiale sau diferențiale, de obicei de ordinul întâi. Acest lucru extinde foarte mult domeniile de aplicare a rețelelor neuronale și metodele de antrenament a acestora. Rețeaua este organizată astfel încât fiecare neuron să primească input de la alți neuroni, eventual de la sine și de la mediu. Acest tip de rețea este important deoarece poate fi folosit pentru modelarea sistemelor dinamice neliniare. Printre rețelele recurente putem distinge Rețele Hopfield și rețele Kohonen. Rețelele Hopfield pot gestiona modele neordonate (litere scrise de mână), temporal (serie temporală) sau ordonate spațial (grafice). O rețea neuronală recurentă de cel mai simplu tip a fost introdusă de Hopfield și a fost construită din N neuroni, fiecare conectat la toată lumea, cu excepția lui însuși, și toți neuronii sunt ieșiți. Rețeaua neuronală Hopfield poate fi folosită ca memorie asociativă. Arhitectura rețelei Hopfield este prezentată în Fig. 6.

FIGURA 6. Arhitectura rețelei Hopfield

Rețeaua Kohonen mai este numită și „hartă caracteristică auto-organizată”. Acest tip de rețea este conceput pentru auto-învățare în timpul antrenamentului, nu este necesar să îi spuneți răspunsurile corecte. În timpul procesului de instruire, diferite mostre sunt alimentate la intrarea în rețea. Rețeaua captează caracteristicile structurii lor și împarte eșantioanele în clustere, iar rețeaua deja antrenată atribuie fiecărui exemplu nou sosit unuia dintre clustere, ghidat de un criteriu de „proximitate”. Rețeaua constă dintr-un strat de intrare și unul de ieșire. Numărul de elemente din stratul de ieșire determină direct câte grupuri diferite poate recunoaște rețeaua. Fiecare dintre elementele de ieșire primește întregul vector de intrare ca intrare. Ca în orice rețea neuronală, fiecărei conexiuni i se atribuie o anumită greutate sinaptică. În cele mai multe cazuri, fiecare element de ieșire este, de asemenea, conectat la vecinii săi. Aceste conexiuni intra-strat joacă un rol important în procesul de învățare, deoarece ponderile sunt ajustate numai în vecinătatea elementului care răspunde cel mai bine la următoarea intrare. Elementele de ieșire concurează între ele pentru dreptul de a intra în acțiune și de a „primi o lecție”. Câștigătorul este cel al cărui vector greutate este cel mai apropiat de vectorul de intrare.

Introducere

Rețele neuronale artificiale (ANN) sunt construite după principiile de organizare și funcționare a analogilor lor biologici. Sunt capabili să rezolve o gamă largă de probleme de recunoaștere a modelelor, identificare, prognoză, optimizare, management obiecte complexe. Creșterile suplimentare ale performanței computerului sunt în mare parte asociate cu ANN-urile, în special cu neurocomputerele (NC), care se bazează pe o rețea neuronală artificială.

Termenul de „rețele neuronale” a fost format la mijlocul anilor 50 ai secolului XX. Principalele rezultate din acest domeniu sunt asociate cu numele lui W. McCulloch, D. Hebb, F. Rosenblatt, M. Minsky, J. Hopfield. Să facem un scurt informatii istorice.

1943 W. McCulloch și W. Pitts au propus un model de neuron și au formulat principiile de bază ale teoriei funcționării creierului.
1949 D. Hebb a exprimat idei despre natura conexiunilor neuronilor creierului și interacțiunile lor (ansambluri celulare, plasticitate sinaptică). Pentru prima dată a propus reguli pentru antrenarea unei rețele neuronale.
1957 F. Rosenblatt a dezvoltat principiile de organizare și funcționare a perceptronilor și a propus o variantă a implementării tehnice a primului neurocomputer Mark din lume.
1959 D. ​​​​Hubel și T. Wiesel au arătat natura distribuită și paralelă a stocării și procesării informațiilor în rețelele neuronale biologice.
1960-1968 Cercetări active în domeniul rețelelor neuronale artificiale, de exemplu, ADALINE și MADALINA de W. Widrow (1960-1962), matrici asociative de K. Steinbuch (1961).
1969 Publicarea cărții „Perceptrons” de M. Minsky și S. Papert, care dovedește limitările fundamentale ale capacităților perceptronilor. Scăderea interesului pentru rețelele neuronale artificiale.
1970-1976 Evoluții active în domeniul perceptronilor în URSS (principalii clienți sunt departamentele militare).
Sfârșitul anilor 1970 Interesul reînnoit pentru rețelele neuronale artificiale este o consecință a acumulării de noi cunoștințe despre activitatea creierului, precum și a progreselor semnificative în domeniul microelectronicii și al tehnologiei informatice.
1982-1985 J. Hopfield a propus o familie de rețele neuronale de optimizare care modelează memoria asociativă.
1985 Apariția primelor neurocomputere comerciale, de exemplu, Mark III de la TRW (SUA).
1987 Începutul finanțării pe scară largă pentru dezvoltări în domeniul ANN și NK în SUA, Japonia și Europa de Vest (programul japonez „Frontiere umane” și programul european „Cercetare de bază în Inteligență adaptivă și neurocalculație”).
1989 Dezvoltarea și cercetarea în domeniul ANN și NDT sunt realizate de aproape toate marile companii de inginerie electrică. Neurocalculatoarele devin unul dintre cele mai dinamice sectoare ale pieței (vânzările au crescut de cinci ori în doi ani). DARPA (Defense Advanced Research Projects Agency) a Departamentului de Apărare al SUA a început să finanțeze un program de creare a probelor NDT de viteză ultra mare pentru o varietate de aplicații.
1990 Activarea Sovietului organizatii de cercetareîn domeniul ANN și NDT (Institutul Glushkov de Cibernetică din Kiev, Institutul de Multiprocesoare sisteme de calculîn Taganrog, Institutul de Neurocibernetică din Rostov-pe-Don). Numărul total de firme specializate în domeniul INS și NK ajunge la trei sute.
1991 Volumul anual de vânzări pe piața INS și NK sa apropiat de 140 de milioane de dolari. Centre de neurocalculatoare sunt create la Moscova, Kiev, Minsk, Novosibirsk și Sankt Petersburg.
1992 Lucrările în domeniul ANN se află în stadiul de dezvoltare intensivă. Zeci de conferințe internaționale si forumuri pe retele neuronale, numarul periodicelor de specialitate pe aceasta tema a ajuns la doua duzini de titluri.
1996 Numărul conferințelor internaționale despre ANN și NDT a ajuns la o sută.
1997 Volumul anual de vânzări pe piața INS și NK a depășit 2 miliarde USD, iar creșterea anuală a fost de 50%.
2000 Tranziția la submicron și nanotehnologii, precum și progresele în tehnologia moleculară și biomoleculară duc la soluții arhitecturale și tehnologice fundamental noi pentru crearea de neurocalculatoare.

Studiul profund al ANN necesită cunoștințe de neurofiziologie, științe cognitive, psihologie, fizică (mecanica statistică), teoria controlului, teoria computațională, probleme inteligenţă artificială, statistică/matematică, recunoaștere a modelelor, viziune computerizată, calcul paralelși hardware (digital și analogic). Pe de altă parte, ANN-urile stimulează și aceste discipline, oferindu-le noi instrumente și perspective. Această simbioză este vitală pentru studiul rețelelor neuronale.

Să ne imaginăm câteva probleme rezolvate de rețelele neuronale artificiale

Clasificarea imaginilor. Sarcina este de a indica apartenența unei imagini de intrare, reprezentată de un vector caracteristic, la una sau mai multe clase predefinite. Aplicațiile notabile includ recunoașterea literelor, recunoașterea vorbirii, clasificarea semnalelor electrocardiogramei și clasificarea celulelor sanguine.

Clustering/categorizare. Când se rezolvă o problemă de grupare, care este cunoscută și sub numele de clasificare a imaginilor nesupravegheate, nu există un set de antrenament cu etichete de clasă. Algoritmul de grupare se bazează pe asemănarea imaginilor și plasează imagini similare într-un singur cluster. Există cazuri cunoscute de utilizare a grupării pentru a extrage cunoștințe, a comprima date și a studia proprietățile datelor.

Aproximarea funcției. Să presupunem că există un eșantion de antrenament ((X 1, Y 2), (X 2, Y 2),..., (X N, Y N)), care este generat de o funcție necunoscută distorsionată de zgomot. Sarcina de aproximare este de a găsi o estimare a acestei funcții.

Previziune/Prognoză. Fie N eșantioane discrete ( y (t 1), y (t 2),..., y(t n)) să fie date în momente succesive de timp t 1, t 2,..., t n. Sarcina este de a prezice valoarea lui y(t n +1) la momentul t n +1. Prognozele au un impact semnificativ asupra luării deciziilor în afaceri, știință și tehnologie.

Optimizare. Numeroase probleme din matematică, statistică, inginerie, știință, medicină și economie pot fi considerate probleme de optimizare. Problema de optimizare este de a găsi o soluție care să satisfacă sistemul de constrângeri și să maximizeze sau să minimizeze funcția obiectiv.

Memorie adresabilă de conținut.În modelul de calcul von Neumann, memoria este accesată doar printr-o adresă, care este independentă de conținutul memoriei. Mai mult, dacă se comite o eroare la calcularea adresei, pot fi găsite informații complet diferite. Memoria adresabilă de conținut sau memoria asociativă este accesată atunci când este specificat conținutul specificat. Conținutul memoriei poate fi rechemat chiar și din conținut parțial sau distorsionat. Memoria asociativă este extrem de dorită atunci când se creează informații promițătoare și sisteme de calcul.

Control. Sa luam in considerare sistem dinamic, specificat de mulțime (u(t), y(t)), unde u(t) este acțiunea de control de intrare și y(t) este ieșirea sistemului la momentul f. În sistemele de control cu model de referinta Scopul controlului este de a calcula acțiunea de intrare u(f) astfel încât sistemul să urmeze traiectoria dorită dictată de modelul de referință.

Cum rezolvă o rețea neuronală toate aceste sarcini adesea neformalizate sau dificil de formalizat? După cum se știe, două abordări principale sunt utilizate în mod tradițional pentru a rezolva astfel de probleme. Primul, bazat pe reguli, este tipic pentru sistemele expert. Se bazează pe o descriere a domeniului subiectului sub forma unui set de reguli (axiome) „dacă..., atunci...” și reguli de inferență. Cunoașterea căutată este reprezentată în acest caz ca o teoremă, al cărei adevăr este dovedit prin construirea unui lanț de inferență. Cu această abordare, însă, este necesar să se cunoască în prealabil întregul set de legi care descriu domeniul subiectului. Când utilizați o altă abordare, bazată pe cazuri, trebuie doar să aveți un număr suficient de exemple pentru a configura sistemul adaptiv cu un anumit grad de încredere. Rețelele neuronale sunt un exemplu clasic al acestei abordări.

PREVEDERI DE BAZĂ ALE TEORIEI REȚELELOR NEURALE ARTIFICIALE

Rețelele neuronale sunt structuri de calcul care modelează procese biologice simple asociate în mod obișnuit creier uman. Sunt distribuite și sisteme paralele, capabil de învățare adaptivă prin analizarea influențelor pozitive și negative. Convertorul elementar din aceste rețele este un neuron artificial sau pur și simplu un neuron, numit așa prin analogie cu prototipul său biologic.

Neuron biologic

Sistemul nervos uman și creierul constau din neuroni conectați prin fibre nervoase. Fibrele nervoase sunt capabile să transmită impulsuri electrice între neuroni. Toate procesele de transmitere a iritațiilor de la piele, urechi și ochi la creier, procesele de gândire și controlul acțiunilor - toate acestea se realizează într-un organism viu ca transmisie de impulsuri electrice între neuroni.

Neuron(celula nervoasă) este o celulă biologică specială care prelucrează informația (Fig. 1.). Se compune din corp(corp celular), sau soms(soma) și procese ale fibrelor nervoase de două tipuri - dendrite(dendritele) de-a lungul cărora se primesc impulsuri, și singurul axon(axo n), prin care neuronul poate transmite un impuls. Corpul neuronului include miez(nucleul), care conține informații despre proprietățile ereditare și plasmă, care are mijloacele moleculare pentru a produce materialele necesare neuronului. Un neuron primește semnale (impulsuri) de la axonii altor neuroni prin dendrite (receptori) și transmite semnale generate de corpul celular de-a lungul axonului său (transmițător), care la capăt se ramifică în fibre (fibre). La capetele acestor fibre există formațiuni speciale - sinapse, care afectează magnitudinea impulsurilor.

Orez. 1. Interconectarea neuronilor biologici

O sinapsa este o structura elementara si o unitate functionala intre doi neuroni (o fibra axona a unui neuron si o dendrita a altuia). Când impulsul ajunge la terminalul sinaptic, ele sunt eliberate substanțe chimice, numiți neurotransmițători. Neurotransmițătorii difuzează prin fanta sinaptică, stimulând sau inhibând, în funcție de tipul de sinapsă, capacitatea neuronului receptor de a genera impulsuri electrice. Eficiența transmiterii impulsurilor de către o sinapsă poate fi reglată de semnalele care trec prin ea, astfel încât sinapsele să poată învăța în funcție de activitatea proceselor la care participă. Această dependență de fundal acționează ca memorie, care este posibil responsabilă pentru memoria umană. Este important de menționat că greutățile sinapselor se pot modifica în timp, ceea ce înseamnă că se modifică și comportamentul neuronilor corespunzători.

Cortexul cerebral uman conține aproximativ 1011 neuroni și este o suprafață extinsă cu o grosime de 2 până la 3 mm cu o suprafață de aproximativ 2200 cm 2. Fiecare neuron este conectat cu alți 103-104 neuroni. În general, creierul uman conține aproximativ 1014 până la 1015 conexiuni.

Neuronii comunică în rafale scurte de impulsuri care durează de obicei câteva milisecunde. Mesajul este transmis utilizând modularea în frecvență a impulsurilor. Frecvența poate varia de la câțiva herți la sute de herți, ceea ce este de un milion de ori mai lentă decât comutarea de mare viteză circuite electronice. Cu toate acestea, o persoană rezolvă probleme complexe de recunoaștere în câteva sute de milisecunde. Aceste decizii sunt controlate de o rețea de neuroni care au o viteză de doar câteva milisecunde. Aceasta înseamnă că calculul necesită nu mai mult de 100 de etape consecutive. Cu alte cuvinte, pentru sarcini atât de complexe, creierul „se declanșează” programe paralele, conținând aproximativ 100 de pași. Raționând într-un mod similar, se poate constata că cantitatea de informații transmise de la un neuron la altul trebuie să fie foarte mică (câțiva biți). Rezultă că informația principală nu este transmisă direct, ci este capturată și distribuită în conexiuni între neuroni.

Structura și proprietățile unui neuron artificial

Un neuron este o parte integrantă a unei rețele neuronale. În fig. 2 arată structura acestuia. Este alcătuit din trei tipuri de elemente: multiplicatori (sinapse), un adunator și un convertor neliniar. Sinapsele comunică între neuroni și înmulțesc semnalul de intrare cu un număr care caracterizează puterea conexiunii (greutatea sinapsei). Adderul efectuează adăugarea de semnale care sosesc prin conexiuni sinaptice de la alți neuroni și semnale de intrare externe. Un convertor neliniar implementează o funcție neliniară a unui argument - ieșirea sumatorului. Această funcție se numește funcția de activare sau funcția de transfer a neuronului.

Orez. 2. Structura unui neuron artificial

Neuronul ca întreg implementează o funcție scalară a unui argument vectorial. Modelul matematic al unui neuron:

unde w i, este greutatea sinapsei, i = 1...n; b - valoarea de părtinire; s - rezultatul însumării (suma); x, - componenta vectorului de intrare (semnal de intrare), x i = 1... n ; y este semnalul de ieșire al neuronului; n este numărul de intrări de neuroni; f - transformare neliniară (funcție de activare).

În general, semnalul de intrare, coeficienții de ponderare și offset-ul pot lua valori reale și în multe probleme practice- doar niste valori fixe. Ieșirea (y) este determinată de tipul funcției de activare și poate fi reală sau întreagă.

Se numesc conexiuni sinaptice cu greutăți pozitive captivant, cu ponderi negative - inhibatoare.

Elementul de calcul descris poate fi considerat simplificat model matematic neuroni biologici. Pentru a sublinia diferența dintre neuronii biologici și artificiali, aceștia din urmă sunt uneori numiți elemente asemănătoare neuronilor sau neuroni formali.

Traductorul neliniar răspunde la semnalul (s) de intrare cu un semnal de ieșire f(s), care este ieșirea neuronului. Exemple de funcții de activare sunt prezentate în tabel. 1. iar în fig. 3.

tabelul 1

Orez. 3. Exemple de funcții de activare
a este funcția unui singur salt; b - pragul liniar (histereza);
c - sigmoid (funcția logistică); z - sigmoid (tangentă hiperbolică)

Una dintre cele mai comune este funcția de activare neliniară cu saturație, așa-numita funcție logistică sau sigmoid (funcția în formă de S):

Trebuie remarcat faptul că funcția sigmoidă este diferențiabilă de-a lungul întregii axe x, care este utilizată în unii algoritmi de învățare. În plus, are proprietatea de a spori semnale slabe mai bine decât cele mari și previne saturația de la semnale mari, deoarece acestea corespund regiunilor de argument în care sigmoidul are o pantă mică.

Clasificarea rețelelor neuronale și proprietățile acestora

O rețea neuronală este o colecție de elemente asemănătoare neuronilor conectate într-un anumit mod între ele și la mediul extern folosind conexiuni determinate de coeficienți de ponderare. În funcție de funcțiile îndeplinite de neuroni în rețea, se pot distinge trei tipuri:

neuronii de intrare, căruia îi este furnizat un vector care codifică influența de intrare sau imaginea mediului extern; de obicei nu efectuează proceduri de calcul, iar informațiile sunt transferate de la intrare la ieșire prin modificarea activării acestora;
neuroni de iesire, ale căror valori de ieșire reprezintă ieșirile rețelei neuronale; transformările în ele se realizează conform expresiilor (1.1) și (1.2);
interneuroni, formând baza rețelelor neuronale, transformări în care se realizează și conform expresiilor (1.1) și (1.2).

În majoritatea modelelor neuronale, tipul de neuron este legat de locația sa în rețea. Dacă un neuron are doar conexiuni de ieșire, atunci este un neuron de intrare dacă, dimpotrivă, este un neuron de ieșire; Cu toate acestea, o serie este posibilă atunci când ieșirea unui neuron topologic intern este considerată ca parte a ieșirii rețelei. În timpul funcționării rețelei, vectorul de intrare este convertit într-un vector de ieșire și se efectuează o anumită prelucrare a informațiilor. Tipul specific de transformare a datelor realizat de rețea este determinat nu numai de caracteristicile elementelor de tip neuron, ci și de caracteristicile arhitecturii sale, și anume topologia conexiunilor interneuronice, alegerea anumitor subseturi de elemente de tip neuron pentru intrarea și ieșirea informațiilor, metodele de antrenare a rețelei, prezența sau absența competiției între neuroni, direcția și metodele de control și sincronizare a transferului de informații între neuroni.

Din punct de vedere topologic, se pot distinge trei tipuri principale de rețele neuronale:

Complet conectat (Fig. 4, a);
multistrat sau stratificat (Fig. 4, b);
slab conectat (cu conexiuni locale) (Fig. 4, c).

Orez. 4. Arhitecturi de rețele neuronale:
a - rețea complet conectată, b - rețea multistrat cu conexiuni secvențiale, c - rețele slab conectate

ÎN rețele neuronale complet conectate fiecare neuron își transmite semnalul de ieșire altor neuroni, inclusiv el însuși. Toate semnalele de intrare sunt date tuturor neuronilor. Semnalele de ieșire ale rețelei pot fi toate sau unele dintre semnalele de ieșire ale neuronilor după mai multe cicluri de funcționare a rețelei.

ÎN rețele neuronale multistrat neuronii sunt combinați în straturi. Stratul conține o colecție de neuroni cu semnale de intrare comune. Numărul de neuroni dintr-un strat poate fi oricare și nu depinde de numărul de neuroni din alte straturi. În general, rețeaua este formată din straturi Q, numerotate de la stânga la dreapta. Semnalele de intrare externe sunt alimentate la intrările neuronilor din stratul de intrare (deseori numerotate cu zero), iar ieșirile rețelei sunt semnalele de ieșire ale ultimului strat. Pe lângă straturile de intrare și de ieșire, o rețea neuronală multistrat are unul sau mai multe straturi ascunse. Conexiunile de la ieșirile neuronilor unui anumit strat q la intrările neuronilor din următorul strat (q +1) se numesc seriale.

La rândul lor, printre rețelele neuronale multistrat se disting următoarele tipuri.

1) Monoton. Acesta este un caz special de rețele stratificate cu conditii suplimentare pe conexiuni și neuroni. Fiecare strat, cu excepția ultimului (ieșire), este împărțit în două blocuri: excitator și inhibitor. Conexiunile dintre blocuri sunt, de asemenea, împărțite în inhibitorii și excitatorii. Dacă numai conexiunile excitatorii conduc de la neuronii blocului A la neuronii blocului B, atunci aceasta înseamnă că orice semnal de ieșire al blocului este o funcție monotonă necrescătoare a oricărui semnal de ieșire al blocului A. Dacă aceste conexiuni sunt doar inhibitoare, atunci orice semnal de ieșire al blocului B este o funcție necrescătoare a oricărui semnal de ieșire al blocului A. Pentru neuronii rețelelor monotone, este necesară o dependență monotonă a semnalului de ieșire al neuronului de parametrii semnalelor de intrare.

2) Rețele fără feedback.În astfel de rețele, neuronii din stratul de intrare primesc semnale de intrare, le convertesc și le transmit neuronilor din primul strat ascuns și așa mai departe până la nivelul de ieșire, care produce semnale pentru interpret și utilizator. Dacă nu se specifică altfel, fiecare semnal de ieșire al stratului q va fi alimentat la intrarea tuturor neuronilor stratului (q+1); cu toate acestea, este posibil să se conecteze stratul q cu un strat arbitrar (q+p).

Printre rețelele multistrat fără feedback, se face o distincție între complet conectat (ieșirea fiecărui neuron al stratului q este conectat la intrarea fiecărui neuron al stratului (q+1)) și parțial complet conectat. Opțiune clasică rețelele stratificate sunt rețele feed-forward complet conectate (Fig. 5).

Orez. 5. Rețea de tip feed-forward multistrat (cu două straturi).

3) Rețele cu părere . În rețelele cu feedback, informațiile din straturile ulterioare sunt transferate la cele anterioare. Printre acestea, la rândul lor, se disting următoarele:

Stratificat-ciclic, caracterizat prin aceea că straturile sunt închise într-un inel: ultimul strat transmite semnalele sale de ieșire către primul; toate straturile au drepturi egale și pot atât să primească semnale de intrare, cât și să producă semnale de ieșire;
stratificat-complet conectat constau din straturi, fiecare dintre acestea reprezentând o rețea complet conectată, iar semnalele sunt transmise atât de la strat la strat, cât și în interiorul stratului; în fiecare strat, ciclul de lucru este împărțit în trei părți: primirea semnalelor de la stratul anterior, schimbul de semnale în interiorul stratului, generarea unui semnal de ieșire și transmiterea către stratul următor;
complet conectate-stratificate, asemănătoare ca structură cu cele stratificate-complet conectate, dar funcționând diferit: nu separă fazele de schimb în cadrul unui strat și transmiterea la următorul ciclu de ceas, neuronii tuturor straturilor primesc semnale de la neuroni; atât a stratului propriu cât și a celor ulterioare.

Ca exemplu de rețele cu feedback în Fig. Figura 6 prezintă rețele parțial recurente Elman și Jordan.

Orez. 6. Rețele parțial recurente: a - Elman, b - Iordania

În rețelele neuronale slab conectate neuronii sunt localizați la nodurile unei rețele dreptunghiulare sau hexagonale. Fiecare neuron este conectat la patru (cartierul von Neumann), șase (cartierul Golay) sau opt (cartierul Moore) dintre cei mai apropiați vecini ai săi.

Rețelele neuronale cunoscute pot fi împărțite în funcție de tipurile de structuri neuronale în omogene (omogene) și eterogene. Rețelele omogene constau din neuroni de același tip cu o singură funcție de activare, în timp ce o rețea eterogenă include neuroni cu diverse funcții activare.

Există rețele binare și analogice. Primul dintre ele operează numai cu semnale binare, iar ieșirea fiecărui neuron poate lua fie valoarea unui zero logic (stare inhibată), fie a unuia logic (stare excitată).

O altă clasificare împarte rețelele neuronale în sincrone și asincrone. În primul caz, în fiecare moment de timp, un singur neuron își schimbă starea, în al doilea, starea se schimbă imediat într-un întreg grup de neuroni, de regulă, în întregul strat. Din punct de vedere algoritmic, trecerea timpului în rețelele neuronale este determinată de executarea iterativă a unor acțiuni similare asupra neuronilor. În cele ce urmează, vor fi luate în considerare numai rețelele sincrone.

Rețelele pot fi clasificate și după numărul de straturi. Teoretic, numărul de straturi și numărul de neuroni din fiecare strat pot fi arbitrare, dar de fapt este limitat de resursele computerului sau de cipurile specializate pe care este de obicei implementată rețeaua neuronală. Cum rețea mai complexă, cu atât problemele mai complexe le poate rezolva.

Alegerea structurii rețelei neuronale se efectuează în conformitate cu caracteristicile și complexitatea sarcinii. Pentru a rezolva anumite tipuri de probleme, există deja configurații optime, descrise în anexă. Dacă problema nu poate fi redusă la niciunul dintre tipurile cunoscute, trebuie rezolvată problema complexă a sintetizării unei noi configurații. În acest caz, trebuie să vă ghidați după următoarele reguli de bază:

Capacitățile rețelei cresc odată cu numărul de neuroni din rețea, cu densitatea conexiunilor dintre ei și cu numărul de straturi;
introducerea legăturilor de feedback împreună cu creșterea capacităților rețelei ridică problema stabilității dinamice a rețelei;
complexitatea algoritmilor de funcționare a rețelei și introducerea mai multor tipuri de sinapse ajută la sporirea puterii rețelei neuronale.

Problema proprietăților necesare și suficiente ale unei rețele pentru rezolvarea unor probleme de un fel sau altul reprezintă o întreagă zonă a neuroinformaticii. Deoarece problema sintezei rețelei neuronale depinde în mare măsură de problema rezolvată, dați general recomandări detaliate dificil. În cele mai multe cazuri cea mai buna varianta se obține pe baza unei selecții intuitive, deși literatura oferă dovezi că pentru orice algoritm există o rețea neuronală care o poate implementa. Să ne uităm la asta mai detaliat.

Multe probleme de recunoaștere a imaginilor (vizuale, de vorbire), realizarea transformărilor funcționale în timpul procesării semnalului, controlului, prognozării și identificării sistemelor complexe se reduc la următoarea formulare matematică. Este necesar să se construiască o mapare X -> Y astfel încât pentru fiecare semnal de intrare posibil X să fie generat un semnal corect de ieșire Y. Maparea este specificată de un set finit de perechi (.<вход>, <известный выход>). Numărul acestor perechi (exemple de antrenament) este semnificativ mai mic decât numărul total de combinații posibile de valori ale semnalului de intrare și de ieșire. Setul tuturor exemplelor de antrenament se numește setul de antrenament.

ÎN sarcini de recunoaștere a modelelor X este o reprezentare a imaginii (imagine, vector), Y este numărul clasei căreia îi aparține imaginea de intrare.

ÎN sarcini de management X este un set de parametri controlați ai obiectului controlat, Y este un cod care determină acțiunea de control corespunzătoare valorilor curente ale parametrilor controlați.

ÎN probleme de prognoză Ca semnale de intrare sunt utilizate serii temporale reprezentând valorile variabilelor controlate pe un anumit interval de timp. Semnalul de ieșire este un set de variabile care este un subset al variabilelor semnalului de intrare.

În identificare, X și Y reprezintă semnalele de intrare și respectiv de ieșire ale sistemului.

În general, majoritatea problemelor aplicate pot fi reduse la implementarea unei transformări funcționale multidimensionale complexe.
Ca urmare a mapării X -> Y, este necesar să se asigure formarea semnalelor de ieșire corecte în conformitate cu:
cu toate exemplele setului de antrenament;
cu toate semnalele de intrare posibile care nu au fost incluse în setul de antrenament.

A doua cerință complică foarte mult sarcina de a forma un eșantion de antrenament. În general, această problemă nu a fost încă rezolvată, dar în toate cazurile cunoscute se poate găsi o soluție specială.

Teorema Kolmogorov-Arnold

Pentru a construi o mapare multidimensională X -> Y - aceasta înseamnă reprezentarea ei folosind operatii matematice peste cel mult două variabile.

Problema reprezentării funcțiilor mai multor variabile ca o suprapunere de funcții a mai puține variabile se întoarce la a 13-a problemă a lui Hilbert. Ca urmare a multor ani de controverse științifice dintre A. N. Kolmogorov și V. I. Arnold, s-au obținut o serie de rezultate teoretice importante care infirmă teza nereprezentabilității funcției multor funcții variabile mai putine variabile:

Teoremă privind posibilitatea reprezentării funcţiilor continue ale mai multor variabile prin suprapuneri de funcţii continue ale unui număr mai mic de variabile (1956);
teorema privind reprezentarea oricărei funcții continue a trei variabile ca sumă de funcții a cel mult două variabile (1957);
o teoremă privind reprezentarea funcțiilor continue ale mai multor variabile ca suprapoziții ale funcțiilor continue ale unei variabile și adunarea (1957).

opera lui Hecht-Nielsen

Teorema privind reprezentarea funcțiilor continue ale mai multor variabile ca suprapuneri ale funcțiilor continue ale unei variabile și adunări a fost tradusă în 1987 de Hecht-Nielsen pentru rețele neuronale.

Teorema Hecht-Nielsen demonstrează suficient reprezentabilitatea unei funcții a mai multor variabile vedere generala folosind o rețea neuronală cu două straturi cu direct conexiuni complete cu n neuroni ai stratului de intrare, (2 n +1) neuroni ai stratului ascuns cu funcții de activare limitate cunoscute anterior (de exemplu, sigmoidal) și m neuroni ai stratului de ieșire cu funcții de activare necunoscute.

Teorema, așadar, într-o formă neconstructivă dovedește solubilitatea problemei reprezentării unei funcții de tip arbitrar pe o rețea neuronală și indică pentru fiecare problemă numărul minim de neuroni din rețea necesar pentru rezolvarea acesteia.

Corolare din teorema Kolmogorov-Arnold-Hecht-Nielsen

Corolarul 1. Din teorema Hecht-Nielsen rezultă că orice funcție multidimensională a mai multor variabile poate fi reprezentată printr-o rețea neuronală de dimensiune fixă. Următoarele caracteristici ale funcțiilor de activare neuronală rămân necunoscute:

Limitări ale intervalului de valori (coordonatele asimptotelor) ale funcțiilor de activare sigmoidală a neuronilor stratului ascuns;
panta funcțiilor de activare sigmoidală;
tipul funcțiilor de activare ale neuronilor stratului de ieșire.

Tot ceea ce se știe despre funcțiile de activare ale neuronilor din stratul de ieșire din teorema Hecht-Nielsen este că sunt funcții neliniare de formă generală. Într-una din lucrările care continuă dezvoltarea teoriei legate de teorema luată în considerare, se demonstrează că funcțiile de activare ale neuronilor din stratul de ieșire ar trebui să crească monoton. Această declarație restrânge într-o oarecare măsură clasa de funcții care pot fi utilizate atunci când se implementează maparea folosind o rețea neuronală cu două straturi.

În practică, cerințele teoremei Hecht-Nielsen pentru funcțiile de activare sunt îndeplinite după cum urmează. În rețelele neuronale, funcțiile de transfer sigmoidal cu parametri personalizabili sunt utilizate atât pentru primul (ascuns) cât și pentru al doilea (de ieșire). Adică, în timpul procesului de învățare, valorile maxime și minime, precum și panta funcției sigmoide, sunt stabilite individual pentru fiecare neuron.

Corolarul 2. Pentru orice set de perechi (X k, Y k) (unde Y k este un scalar), există o rețea neuronală de ordinul întâi omogenă cu două straturi (cu funcții de activare identice), cu conexiuni secvențiale și un număr finit de neuroni, care realizează maparea X -> Y, emiterea fiecărui semnal de intrare X k este un semnal de ieșire corect Y k. Neuronii dintr-o astfel de rețea neuronală cu două straturi ar trebui să aibă funcții de transfer sigmoidal.

Din păcate, această teoremă nu este constructivă. Nu conține o metodă pentru determinarea numărului de neuroni din rețea pentru un anumit eșantion de antrenament.

Pentru multe probleme, o singură dimensiune a semnalului de ieșire nu este suficientă. Este necesar să se poată construi funcții X -> Y folosind rețele neuronale, unde Y are o dimensiune arbitrară. Următoarea afirmație este baza teoretica pentru construirea unor astfel de funcţii bazate pe reţele neuronale omogene.

Afirmație. Pentru orice set de perechi de vectori intrare-ieșire de dimensiune arbitrară ((X k, У k), k = 1... N) există o rețea neuronală omogenă cu două straturi, cu conexiuni secvențiale, cu funcții de transfer sigmoidale și cu o număr finit de neuroni, care pentru fiecare vector de intrare X k formează vectorul de ieșire corespunzător Y k.

Astfel, o rețea neuronală omogenă cu două straturi cu funcții de transfer sigmoidal poate fi utilizată pentru a reprezenta funcții multivariate ale multor variabile.

Pentru a estima numărul de neuroni din straturile ascunse ale rețelelor neuronale omogene, puteți utiliza formula pentru a estima numărul necesar de greutăți sinaptice L w într-o rețea multistrat cu funcții de transfer sigmoidal:

mN / (1+log 2N)< L w < m (1+ N/m)(n+m+1)+m (1.5)

unde n este dimensiunea semnalului de intrare, m este dimensiunea semnalului de ieșire, N este numărul de elemente ale setului de antrenament.

După ce ați estimat numărul necesar de greutăți, puteți calcula numărul de neuroni din straturile ascunse. De exemplu, pentru o rețea cu două straturi, acest număr va fi:

Sunt cunoscute și alte formule de evaluare, de exemplu:

2 (n + L + m)< N < 10 (n + L+ m),
N/10 - n - m< L < N/2 - n – m

Uneori este recomandabil să folosiți rețele cu un numar mare straturi. Astfel de rețele neuronale multistrat pot avea matrice mai mici de greutăți sinaptice ale neuronilor într-un singur strat decât rețelele cu două straturi care implementează aceeași mapare. Cu toate acestea, nu există încă o metodologie strictă pentru construirea unor astfel de rețele.

O situație similară apare și în cazul rețelelor neuronale multistrat, în care, pe lângă conexiunile secvențiale, sunt utilizate și conexiuni directe (conexiuni de la numărul de strat q la numărul de strat (q+p), unde p > 1). Nu există o teorie strictă care să arate posibilitatea și fezabilitatea construirii unor astfel de rețele.

Cele mai mari probleme apar atunci când se utilizează rețele ciclice. Acest grup include rețele multistrat cu feedback (de la stratul cu numărul q la stratul cu numărul (q+p), unde p< 0), а также полносвязные сети. Для успешного функционирования таких сетей необходимо соблюдение условий динамической устойчивости, иначе сеть может не сойтись к decizia corectă, sau, după ce a atins valoarea corectă a semnalului de ieșire la o anumită iterație, după mai multe iterații se îndepărtează de această valoare. Problema stabilității dinamice a fost studiată în detaliu, poate, doar pentru un model din grupul luat în considerare - rețeaua neuronală Hopfield.

Lipsa unei teorii riguroase pentru modelele de rețele neuronale enumerate nu împiedică studiul posibilităților de aplicare a acestora.

Rețineți că cititorul rus cunoaște rezultatele prezentate într-o formă mai fragmentară - sub forma așa-numitei teoreme de completitudine.

Teorema completității. Orice functie continua pe o mulțime mărginită închisă poate fi uniform aproximată prin funcții calculate de rețele neuronale dacă funcția de activare a neuronului este de două ori continuu diferențiabilă și continuă.

Astfel, rețelele neuronale sunt structuri universale care permit implementarea oricărui algoritm de calcul.