Bazele rețelei neuronale convoluționale: Ce trebuie să știți
Publicat: 2024-09-10Rețelele neuronale convoluționale (CNN) sunt instrumente fundamentale în analiza datelor și învățarea automată (ML). Acest ghid explică modul în care funcționează CNN-urile, cum diferă de alte rețele neuronale, aplicațiile lor și avantajele și dezavantajele asociate cu utilizarea lor.
Cuprins
- Ce este un CNN?
- Cum funcționează CNN-urile
- CNN-uri vs. RNN-uri și transformatoare
- Aplicații ale CNN-urilor
- Avantaje
- Dezavantaje
Ce este o rețea neuronală convoluțională?
O rețea neuronală convoluțională (CNN) este o rețea neuronală integrantă a învățării profunde, concepută pentru a procesa și analiza date spațiale. Folosește straturi convoluționale cu filtre pentru a detecta și învăța automat caracteristici importante din intrare, făcându-l deosebit de eficient pentru sarcini precum recunoașterea imaginilor și video.
Să despachetăm puțin această definiție. Datele spațiale sunt date în care părțile se raportează între ele prin poziția lor. Imaginile sunt cel mai bun exemplu în acest sens.
În fiecare imagine de mai sus, fiecare pixel alb este conectat la fiecare pixel alb din jur: ei formează cifra. Locațiile pixelilor indică, de asemenea, unui spectator unde se află cifra în imagine.
Caracteristicile sunt atribute prezente în imagine. Aceste atribute pot fi orice, de la o margine ușor înclinată la prezența unui nas sau a unui ochi până la o compoziție de ochi, guri și nasuri. În mod esențial, caracteristicile pot fi compuse din caracteristici mai simple (de exemplu, un ochi este compus din câteva margini curbate și o pată întunecată centrală).
Filtrele sunt partea a modelului care detectează aceste caracteristici în imagine. Fiecare filtru caută o caracteristică specifică (de exemplu, o margine curbată de la stânga la dreapta) în întreaga imagine.
În cele din urmă, „convoluționalul” din rețeaua neuronală convoluțională se referă la modul în care un filtru este aplicat unei imagini. Vom explica asta în secțiunea următoare.
CNN-urile au demonstrat performanțe puternice la diferite sarcini de imagine, cum ar fi detectarea obiectelor și segmentarea imaginii. Un model CNN (AlexNet) a jucat un rol semnificativ în creșterea învățării profunde în 2012.
Cum funcționează CNN-urile
Să explorăm arhitectura generală a unui CNN utilizând exemplul de determinare a numărului (0–9) într-o imagine.
Înainte de a alimenta imaginea în model, imaginea trebuie transformată într-o reprezentare numerică (sau codare). Pentru imaginile alb-negru, fiecărui pixel i se atribuie un număr: 255 dacă este complet alb și 0 dacă este complet negru (uneori normalizat la 1 și 0). Pentru imaginile color, fiecărui pixel i se atribuie trei numere: unul pentru cât de mult roșu, verde și albastru conține, cunoscut sub numele de valoarea RGB. Deci, o imagine de 256×256 pixeli (cu 65.536 pixeli) ar avea 65.536 de valori în codificarea alb-negru și 196.608 de valori în codificarea color.
Modelul procesează apoi imaginea prin trei tipuri de straturi:
1 Strat convoluțional:Acest strat aplică filtre la intrarea sa. Fiecare filtru este o grilă de numere de o dimensiune definită (de exemplu, 3×3). Această grilă este suprapusă pe imagine începând din stânga sus; se vor folosi valorile pixelilor din rândurile 1–3 din coloanele 1–3. Aceste valori de pixeli sunt înmulțite cu valorile din filtru și apoi însumate. Această sumă este apoi plasată în grila de ieșire a filtrului în rândul 1, coloana 1. Apoi filtrul glisează un pixel spre dreapta și repetă procesul până când a acoperit toate rândurile și coloanele din imagine. Prin glisarea câte un pixel la un moment dat, filtrul poate găsi caracteristici oriunde în imagine, o proprietate cunoscută sub numele de invarianță translațională. Fiecare filtru își creează propria grilă de ieșire, care este apoi trimisă la stratul următor.
2 Strat de grupare: Acest strat rezumă informațiile caracteristice din stratul de convoluție. Stratul convoluțional returnează o ieșire mai mare decât intrarea sa (fiecare filtru returnează o hartă de caracteristici de aproximativ aceeași dimensiune cu cea de intrare și există mai multe filtre). Stratul de grupare preia fiecare hartă caracteristică și îi aplică încă o grilă. Această grilă ia fie media, fie valoarea maximă a valorilor din ea și emite asta. Cu toate acestea, această grilă nu se mișcă un pixel la un moment dat; va trece la următorul patch de pixeli. De exemplu, o grilă de grupare 3×3 va funcționa mai întâi pe pixelii din rândurile 1–3 și coloanele 1–3. Apoi, va rămâne pe același rând, dar va trece la coloanele 4–6. După ce a acoperit toate coloanele din primul set de rânduri (1–3), se va deplasa în jos la rândurile 4–6 și va aborda acele coloane. Acest lucru reduce efectiv numărul de rânduri și coloane din ieșire. Stratul de punere în comun ajută la reducerea complexității, face modelul mai rezistent la zgomot și modificări mici și ajută modelul să se concentreze pe cele mai semnificative caracteristici.
3 Strat complet conectat: După mai multe runde de straturi convoluționale și de grupare, hărțile finale ale caracteristicilor sunt transmise unui strat de rețea neuronală complet conectat, care returnează rezultatul care ne interesează (de exemplu, probabilitatea ca imaginea să fie un anumit număr). Hărțile de caracteristici trebuie să fie aplatizate (fiecare rând al unei hărți de caracteristici este concatenat într-un rând lung) și apoi combinate (fiecare rând lung de hărți de caracteristici este concatenat într-un mega rând).
Iată o reprezentare vizuală a arhitecturii CNN, ilustrând modul în care fiecare strat procesează imaginea de intrare și contribuie la rezultatul final:
Câteva note suplimentare despre proces:
- Fiecare strat convoluțional succesiv găsește caracteristici de nivel superior. Primul strat convoluțional detectează margini, pete sau modele simple. Următorul strat convoluțional ia ieșirea grupată a primului strat convoluțional ca intrare, permițându-i să detecteze compozițiile caracteristicilor de la pârghia inferioară care formează caracteristici de nivel superior, cum ar fi un nas sau un ochi.
- Modelul necesită pregătire. În timpul antrenamentului, o imagine este trecută prin toate straturile (cu greutăți aleatorii la început), iar rezultatul este generat. Diferența dintre rezultat și răspunsul real este folosită pentru a ajusta ușor ponderile, făcând modelul mai probabil să răspundă corect în viitor. Acest lucru se face prin coborâre în gradient, în care algoritmul de antrenament calculează cât de mult contribuie fiecare pondere a modelului la răspunsul final (folosind derivate parțiale) și îl deplasează ușor în direcția răspunsului corect. Stratul de pooling nu are nicio greutate, deci nu este afectat de procesul de antrenament.
- CNN-urile pot lucra numai pe imagini de aceeași dimensiune cu cele pentru care au fost instruiți. Dacă un model a fost antrenat pe imagini cu 256×256 pixeli, atunci orice imagine mai mare va trebui să fie subeșantionată, iar orice imagine mai mică va trebui să fie supraeșantionată.
CNN-uri vs. RNN-uri și transformatoare
Rețelele neuronale convoluționale sunt adesea menționate alături de rețelele neuronale recurente (RNN) și transformatoarele. Deci, cum diferă ele?
CNN-uri vs. RNN-uri
RNN-urile și CNN-urile operează în domenii diferite. RNN-urile sunt cele mai potrivite pentru date secvențiale, cum ar fi text, în timp ce CNN-urile excelează cu date spațiale, cum ar fi imagini. RNN-urile au un modul de memorie care ține evidența părților văzute anterior ale unei intrări pentru a contextualiza următoarea parte. În schimb, CNN-urile contextualizează părți ale intrării uitându-se la vecinii săi imediati. Deoarece CNN-urilor le lipsește un modul de memorie, nu sunt potrivite pentru sarcinile text: ar uita primul cuvânt dintr-o propoziție până când ajung la ultimul cuvânt.
CNN-uri vs. transformatoare
Transformatoarele sunt, de asemenea, foarte utilizate pentru sarcini secvențiale. Ei pot folosi orice parte a intrării pentru a contextualiza noua intrare, făcându-le populare pentru sarcinile de procesare a limbajului natural (NLP). Cu toate acestea, transformatoarele au fost aplicate și imaginilor recent, sub formă de transformatoare de vedere. Aceste modele preiau o imagine, o despart în patch-uri, pun atenția (mecanismul de bază în arhitecturile transformatoarelor) peste patch-uri și apoi clasifică imaginea. Transformatoarele de vedere pot depăși CNN-urile pe seturi mari de date, dar le lipsește invarianța translațională inerentă CNN-urilor. Invarianța translațională a CNN-urilor permite modelului să recunoască obiecte indiferent de poziția lor în imagine, făcând CNN-urile extrem de eficiente pentru sarcinile în care relația spațială a caracteristicilor este importantă.
Aplicații ale CNN-urilor
CNN-urile sunt adesea folosite cu imagini datorită invarianței lor translaționale și a caracteristicilor spațiale. Dar, cu o procesare inteligentă, CNN-urile pot lucra pe alte domenii (adesea prin conversia lor în imagini).
Clasificarea imaginilor
Clasificarea imaginilor este utilizarea principală a CNN-urilor. CNN-urile mari bine instruite pot recunoaște milioane de obiecte diferite și pot lucra la aproape orice imagine care le este dată. În ciuda creșterii transformatoarelor, eficiența de calcul a CNN-urilor le face o opțiune viabilă.
Recunoașterea vorbirii
Audio înregistrat poate fi transformat în date spațiale prin spectrograme, care sunt reprezentări vizuale ale sunetului. Un CNN poate lua o spectrogramă ca intrare și poate învăța să mapeze diferite forme de undă în cuvinte diferite. În mod similar, un CNN poate recunoaște ritmurile și mostrele muzicale.
Segmentarea imaginii
Segmentarea imaginii implică identificarea și trasarea limitelor în jurul diferitelor obiecte dintr-o imagine. CNN-urile sunt populare pentru această sarcină datorită performanței lor puternice în recunoașterea diferitelor obiecte. Odată ce o imagine este segmentată, putem înțelege mai bine conținutul acesteia. De exemplu, un alt model de învățare profundă ar putea analiza segmentele și descrie această scenă: „Două persoane se plimbă într-un parc. Există un stâlp de lampă în dreapta lor și o mașină în fața lor.” În domeniul medical, segmentarea imaginii poate diferenția tumorile de celulele normale în scanări. Pentru vehiculele autonome, poate identifica marcajele benzii, semnele rutiere și alte vehicule.
Avantajele CNN-urilor
CNN-urile sunt utilizate pe scară largă în industrie din mai multe motive.
Performanță puternică a imaginii
Datorită abundenței de date de imagine disponibile, sunt necesare modele care funcționează bine pe diferite tipuri de imagini. CNN-urile sunt potrivite pentru acest scop. Invarianța lor translațională și capacitatea de a crea caracteristici mai mari din cele mai mici le permit să detecteze caracteristici în întreaga imagine. Nu sunt necesare arhitecturi diferite pentru diferite tipuri de imagini, deoarece un CNN de bază poate fi aplicat la toate tipurile de date de imagine.
Fără inginerie manuală a caracteristicilor
Înainte de CNN, cele mai performante modele de imagine necesitau un efort manual semnificativ. Experții în domeniu au fost nevoiți să creeze module pentru a detecta tipuri specifice de caracteristici (de exemplu, filtre pentru margini), un proces consumatoare de timp, care nu avea flexibilitate pentru diverse imagini. Fiecare set de imagini avea nevoie de propriul set de caracteristici. În schimb, primul celebru CNN (AlexNet) ar putea clasifica automat 20.000 de tipuri de imagini, reducând nevoia de inginerie manuală a caracteristicilor.
Dezavantajele CNN-urilor
Desigur, există compromisuri pentru utilizarea CNN-urilor.
Mulți hiperparametri
Antrenarea unui CNN presupune selectarea multor hiperparametri. Ca orice rețea neuronală, există hiperparametri precum numărul de straturi, dimensiunea lotului și rata de învățare. În plus, fiecare filtru necesită propriul set de hiperparametri: dimensiunea filtrului (de exemplu, 3×3, 5×5) și pas (numărul de pixeli de mișcat după fiecare pas). Hiperparametrii nu pot fi reglați cu ușurință în timpul procesului de antrenament. În schimb, trebuie să antrenați mai multe modele cu seturi de hiperparametri diferite (de exemplu, setul A și setul B) și să le comparați performanța pentru a determina cele mai bune alegeri.
Sensibilitate la dimensiunea de intrare
Fiecare CNN este instruit să accepte o imagine de o anumită dimensiune (de exemplu, 256×256 pixeli). Este posibil ca multe imagini pe care doriți să le procesați să nu se potrivească cu această dimensiune. Pentru a rezolva acest lucru, vă puteți mări sau reduce imaginile. Cu toate acestea, această redimensionare poate duce la pierderea de informații valoroase și poate degrada performanța modelului.