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.
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.
Î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.
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.
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] .
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]
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ă).
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.
Tipuri de rețele neuronale artificiale | |
---|---|
|
Învățare automată și extragerea datelor | |
---|---|
Sarcini | |
Învățarea cu un profesor | |
analiza grupului | |
Reducerea dimensionalității | |
Prognoza structurală | |
Detectarea anomaliilor | |
Modele grafice probabilistice | |
Rețele neuronale | |
Consolidarea învățării |
|
Teorie | |
Reviste și conferințe |
|