Rețeaua neuronală convoluțională

O  rețea neuronală convoluțională ( CNN ) este o arhitectură specială a rețelelor neuronale artificiale propusă de Jan LeCun în 1988 [1] și care vizează recunoașterea eficientă a modelelor [2] , face parte din tehnologiile de învățare profundă  ( deep learning ). Utilizează unele caracteristici ale cortexului vizual [3], în care au fost descoperite așa-numitele celule simple, care reacționează la linii drepte în diferite unghiuri, și celule complexe, a căror reacție este asociată cu activarea unui anumit set de celule simple. Astfel, ideea rețelelor neuronale convoluționale este de a intercala straturi convoluționale ( ing.  straturi de convoluție ) și straturi de subeșantionare ( ing.  straturi de subeșantionare sau ing.  straturi de pooling , straturi de subeșantionare). Structura rețelei este unidirecțională (fără feedback), fundamental multistratificată. Pentru antrenament, se folosesc metode standard, cel mai adesea metoda backpropagation . Funcția de activare a neuronilor (funcția de transfer) este oricare, la alegerea cercetătorului.

Denumirea arhitecturii de rețea s-a datorat prezenței operației de convoluție , a cărei esență este că fiecare fragment de imagine este înmulțit cu matricea de convoluție (nucleu) element cu element, iar rezultatul este însumat și scris într-o poziție similară în imaginea de ieșire.

Interpretare

Funcționarea unei rețele neuronale convoluționale este de obicei interpretată ca trecerea de la caracteristicile specifice ale unei imagini la detalii mai abstracte și mai departe la detalii și mai abstracte până la extragerea conceptelor de nivel înalt. În același timp, rețeaua se autoajustează și dezvoltă ierarhia necesară a caracteristicilor abstracte (secvențe de hărți de caracteristici) de la sine, filtrănd detaliile neimportante și evidențiind esențialul.

O astfel de interpretare este mai degrabă metaforică sau ilustrativă. De fapt, „trăsăturile” produse de o rețea complexă sunt obscure și greu de interpretat atât de mult încât în ​​practică nici măcar nu încearcă să înțeleagă esența acestor caracteristici, cu atât mai puțin „corecte”, ci, în schimb, să îmbunătățească rezultatele recunoașterii. , schimbă structura și arhitectura rețelei. Astfel, ignorarea sistemului unor fenomene semnificative poate indica faptul că fie nu există suficiente date pentru antrenament, fie structura rețelei are defecte, iar sistemul nu poate dezvolta caracteristici eficiente pentru aceste fenomene.

Arhitectura și principiul de funcționare

Într-un perceptron obișnuit , care este o rețea neuronală complet conectată, fiecare neuron este conectat la toți neuronii stratului anterior și fiecare conexiune are propriul coeficient de greutate personal. Într-o rețea neuronală convoluțională, operația de convoluție folosește doar o matrice de greutate limitată de dimensiuni reduse, care este „deplasată” pe întregul strat procesat (la început, direct peste imaginea de intrare), formând după fiecare schimbare un semnal de activare. pentru neuronul următorului strat cu o poziție similară. Adică, aceeași matrice de greutate este utilizată pentru diferiți neuroni ai stratului de ieșire, care este numit și nucleul de convoluție . Este interpretată ca o codificare grafică a unor caracteristici, de exemplu, prezența unei linii oblice la un anumit unghi. Apoi stratul următor, rezultat în urma operației de convoluție cu o astfel de matrice de greutate, arată prezența acestei caracteristici în stratul prelucrat și coordonatele sale, formând așa-numita hartă a caracteristicilor .  Desigur, într-o rețea neuronală convoluțională, nu există un set de greutăți, ci o întreagă gamă care codifică elemente de imagine (de exemplu, linii și arce în unghiuri diferite). În același timp, astfel de nuclee de convoluție nu sunt stabilite de către cercetător în avans, ci sunt formate independent prin antrenarea rețelei folosind metoda clasică de propagare inversă a erorilor . Trecerea fiecărui set de ponderi generează propria sa instanță de hărți de caracteristici, făcând rețeaua neuronală multicanal (multe hărți de caracteristici independente pe un singur strat). De asemenea, trebuie remarcat faptul că atunci când se repetă peste un strat cu o matrice de greutate, acesta este de obicei mutat nu cu un pas complet (dimensiunea acestei matrice), ci cu o distanță mică. Deci, de exemplu, atunci când dimensiunea matricei de greutate este 5 × 5, aceasta este deplasată cu unul sau doi neuroni (pixeli) în loc de cinci, pentru a nu „trece peste” caracteristica dorită.

Operația de subeșantionare ( ing.  subsampling , ing.  pooling , tradusă și ca „operație de subeșantionare” sau operație de pooling), realizează o reducere a dimensiunii hărților caracteristice generate. În această arhitectură de rețea, se consideră că informațiile despre prezența caracteristicii dorite sunt mai importante decât cunoașterea exactă a coordonatelor acesteia, prin urmare, din mai mulți neuroni vecini ai hărții caracteristicilor, cel maxim este selectat și luat ca un neuron al hărții de caracteristici compactate de o dimensiune mai mică. Datorită acestei operațiuni, pe lângă accelerarea calculelor ulterioare, rețeaua devine mai invariabilă la scara imaginii de intrare.

Luați în considerare structura tipică a unei rețele neuronale convoluționale mai detaliat. Rețeaua constă dintr-un număr mare de straturi. După stratul inițial (imaginea de intrare), semnalul trece printr-o serie de straturi convoluționale, în care alternează convoluția în sine și subeșantionarea (pooling). Straturile alternative vă permite să faceți „hărți de caracteristici” din hărți de caracteristici, pe fiecare strat următor harta scade în dimensiune, dar numărul de canale crește. În practică, aceasta înseamnă capacitatea de a recunoaște ierarhii complexe de caracteristici. De obicei, după trecerea prin mai multe straturi, harta caracteristicilor degenerează într-un vector sau chiar într-un scalar, dar există sute de astfel de hărți caracteristici. La ieșirea straturilor convoluționale ale rețelei, sunt instalate suplimentar mai multe straturi ale unei rețele neuronale complet conectate (perceptron), la intrarea cărora sunt alimentate hărțile caracteristicilor finale.

Strat de convoluție

Stratul convoluțional este blocul principal al unei rețele neuronale convoluționale .  Stratul de convoluție include propriul filtru pentru fiecare canal, al cărui nucleu de convoluție procesează stratul anterior fragment cu fragment (însumând rezultatele produsului în funcție de element pentru fiecare fragment). Greutățile nucleului de convoluție (matrice mică) sunt necunoscute și sunt stabilite în timpul antrenamentului.

O caracteristică a stratului convoluțional este un număr relativ mic de parametri care sunt setați în timpul antrenamentului. Deci, de exemplu, dacă imaginea originală are o dimensiune de 100x100 pixeli în trei canale (ceea ce înseamnă 30.000 de neuroni de intrare), iar stratul convoluțional folosește filtre cu un nucleu de 3x3 pixeli cu o ieșire de 6 canale, atunci sunt determinate doar 9 greutăți ale nucleului în procesul de învățare, totuși, pentru toate combinațiile de canale, adică 9×3×6=162, în acest caz, acest strat necesită găsirea a doar 162 de parametri, ceea ce este semnificativ mai mic decât numărul de parametri necesari unui dispozitiv complet conectat. Retea neurala.

Stratul de activare

Rezultatul scalar al fiecărei convoluții cade pe funcția de activare , care este un fel de funcție neliniară. Stratul de activare este de obicei combinat logic cu stratul de convoluție (se consideră că funcția de activare este încorporată în stratul de convoluție). Funcția de neliniaritate poate fi oricare la alegerea cercetătorului; în mod tradițional, funcții precum tangenta hiperbolică ( , ) sau sigmoid ( ) au fost utilizate pentru aceasta. Cu toate acestea, în anii 2000, a fost propusă și studiată o nouă funcție de activare [4] și studiată [5] - ReLU (prescurtare de la engleză rectified linear unit ), care a permis accelerarea semnificativă a procesului de învățare și, în același timp, simplificarea calculelor (datorită simplitatea funcției în sine) [6] , ceea ce înseamnă blocul de rectificare liniară care calculează funcția . Adică, în esență, aceasta este o operație de tăiere a părții negative a unei valori scalare. Din 2017, această funcție și modificările ei (Noisy ReLU, Leaky ReLU și altele) sunt cele mai frecvent utilizate funcții de activare în rețelele neuronale profunde, în special în cele convoluționale. Există o metodă pentru determinarea numărului optim de blocuri de rectificare liniară [7] .  

Strat de grupare sau subeșantionare

Stratul de pooling (altfel subeșantionare, subeșantionare) este o compactare neliniară a unei hărți de caracteristici, în timp ce un grup de pixeli (de obicei 2 × 2 în dimensiune) este compactat la un pixel, suferind o transformare neliniară. În acest caz, funcția maximă este utilizată cel mai frecvent. Transformările afectează dreptunghiuri sau pătrate care nu se suprapun, fiecare dintre acestea fiind comprimat într-un pixel, iar pixelul cu valoarea maximă este selectat. Operația de pooling poate reduce semnificativ volumul spațial al imaginii. Adunarea este interpretată astfel: dacă unele caracteristici au fost deja identificate în timpul operației de convoluție anterioare, atunci o astfel de imagine detaliată nu mai este necesară pentru procesarea ulterioară și este compactată la una mai puțin detaliată. În plus, filtrarea detaliilor inutile vă ajută să nu vă reeducați . Stratul de grupare este de obicei inserat după stratul de convoluție înainte de următorul strat de convoluție.

Pe lângă combinarea cu o funcție maximă, pot fi utilizate și alte funcții - de exemplu, valoarea medie sau normalizarea L2 . Cu toate acestea, practica a arătat avantajele grupării cu funcția maximă, care este inclusă în sistemele tipice.

Pentru a reduce mai agresiv dimensiunea reprezentărilor rezultate, ideile de utilizare a filtrelor mai mici [8] sau eliminarea completă a straturilor de pooling devin din ce în ce mai populare . [9]

Rețea neuronală complet conectată

După mai multe treceri de convoluție a imaginii și compresie de grupare, sistemul este reconstruit dintr-o grilă specifică de pixeli de înaltă rezoluție la hărți de caracteristici mai abstracte, de regulă, pe fiecare strat ulterior, numărul de canale crește și dimensiunea imaginii din fiecare canal scade. . În cele din urmă, rămâne un set mare de canale care stochează o cantitate mică de date (chiar și un singur parametru), care sunt interpretate ca fiind cele mai abstracte concepte relevate din imaginea originală.

Aceste date sunt combinate și transmise la o rețea neuronală convențională complet conectată, care poate consta și din mai multe straturi. În același timp, straturile complet conectate își pierd deja structura spațială a pixelilor și au o dimensiune relativ mică (în raport cu numărul de pixeli din imaginea originală).

Antrenament

Cel mai simplu și mai popular mod de învățare este metoda de învățare cu un profesor (pe date etichetate) - metoda de propagare înapoi a unei erori și modificările acesteia. Dar există și o serie de tehnici de învățare nesupravegheată pentru o rețea convoluțională. De exemplu, filtrele de operare de convoluție pot fi antrenate separat și autonom, alimentându-le cu bucăți tăiate aleatoriu din imaginile originale ale eșantionului de antrenament și aplicând pentru ele orice algoritm de învățare nesupravegheat cunoscut (de exemplu, un auto- asociator sau chiar metoda k-means ). ) - această tehnică este cunoscută sub numele de antrenament bazat pe plasturi . În consecință, următorul strat al convoluției rețelei va fi antrenat pe piese din primul strat deja antrenat al rețelei. De asemenea, este posibilă combinarea unei rețele neuronale convoluționale cu alte tehnologii de învățare profundă . De exemplu, pentru a face un auto-asociator convoluțional [10] , o versiune convoluțională a mașinilor Boltzmann limitate în cascadă care învață folosind un aparat matematic probabilistic [11] , o versiune convoluțională a codării rare ( ing.  codificare rară ), numită rețele deconvoluționale ( „desfășurarea” rețelelor) [12 ] .

Pentru a îmbunătăți performanța rețelei, a crește stabilitatea acesteia și a preveni supraadaptarea , se utilizează, de asemenea, o excepție (abandon) - o metodă de antrenare a subrețelei cu ejectarea unor neuroni unici aleatoriu.

Beneficii

Dezavantaje

Note

  1. ^ Y. LeCun , B. Boser, JS Denker, D. Henderson, RE Howard, W. Hubbard și LD Jackel: Backpropagation Applied to Handwritten Zip Code Recognition, Neural Computation, 1(4):541-551, iarna 1989.
  2. Rețele neuronale convoluționale (LeNet) - documentație DeepLearning 0.1 . DeepLearning 0.1 . Laboratorul LISA. Preluat la 31 august 2013. Arhivat din original la 28 decembrie 2017.
  3. Matusugu, Masakazu; Katsuhiko Mori; Yusuke Mitari; Yuji Kaneda. Recunoașterea expresiei faciale independentă de subiect cu detectarea robustă a feței folosind o rețea neuronală convoluțională  //  Neural Networks : journal. - 2003. - Vol. 16 , nr. 5 . - P. 555-559 . - doi : 10.1016/S0893-6080(03)00115-1 . Arhivat din original pe 13 decembrie 2013.
  4. R Hahnloser, R. Sarpeshkar, M. A. Mahowald, R. J. Douglas, H. S. Seung (2000). Selecția digitală și amplificarea analogică coexistă într-un circuit de siliciu inspirat de cortex . natura . 405 . pp. 947-951.
  5. Xavier Glorot, Antoine Bordes și Yoshua Bengio (2011). Rețele neuronale de redresor rare (PDF) . AISTATS. Arhivat (PDF) din original pe 2016-12-13 . Consultat 2017-12-29 . Parametrul depreciat folosit |deadlink=( ajutor )
  6. Vinod Nair și Geoffrey Hinton (2010). Unitățile liniare rectificate îmbunătățesc mașinile Boltzmann restricționate (PDF) . ICML . Arhivat din original (PDF) la 24.03.2014 . Accesat 2016-12-22 . Parametrul depreciat folosit |deadlink=( ajutor ) Arhivat pe 24 martie 2014 la Wayback Machine
  7. Romanuke, Vadim. Numărul adecvat și alocarea ReLU-urilor în rețelele neuronale convoluționale  (engleză)  // Buletinul de cercetare al NTUU „Institutul Politehnic Kyiv” : jurnal. - 2017. - Vol. 1 . - P. 69-78 . - doi : 10.20535/1810-0546.2017.1.88156 . Arhivat din original pe 18 februarie 2019.
  8. Graham, Benjamin (18.12.2014), Fractional Max-Pooling, arΧiv : 1412.6071 [cs.CV]. 
  9. Springenberg, Jost Tobias; Dosovitskiy, Alexey; Brox, Thomas & Riedmiller, Martin (2014-12-21), Striving for Simplicity: The All Convolutional Net, arΧiv : 1412.6806 [cs.LG]. 
  10. Jain, V. și Seung, SH (2008). Dezgomot natural de imagini cu rețele convoluționale. În NIPS'2008.
  11. Lee, H., Grosse, R., Ranganath, R. și Ng, A.Y. (2009a). Rețele convoluționale de credință profundă pentru învățarea scalabilă nesupravegheată a reprezentărilor ierarhice. În ICML'2009.
  12. Zeiler, M., Krishnan, D., Taylor, G. și Fergus, R. (2010). rețele deconvoluționale. În CVPR'2010.

Link -uri