Ghid pentru începători pentru rețeaua neuronală convoluțională (CNN)
Publicat: 2021-07-05Ultimul deceniu a cunoscut o creștere extraordinară a inteligenței artificiale și a mașinilor mai inteligente. Domeniul a dat naștere multor sub-discipline care se specializează în aspecte distincte ale inteligenței umane. De exemplu, procesarea limbajului natural încearcă să înțeleagă și să modeleze vorbirea umană, în timp ce viziunea computerizată își propune să ofere mașinilor o viziune asemănătoare omului.
Deoarece vom vorbi despre rețelele neuronale convoluționale, accentul nostru se va concentra în principal pe viziunea computerizată. Viziunea computerizată își propune să permită mașinilor să vadă lumea așa cum o vedem noi și să rezolve probleme legate de recunoașterea imaginilor, clasificarea imaginilor și multe altele. Rețelele neuronale convoluționale sunt utilizate pentru a realiza diverse sarcini ale vederii computerizate. Cunoscuți și sub denumirea de CNN sau ConvNet, ele urmează o arhitectură care seamănă cu tiparele și conexiunile neuronilor din creierul uman și sunt inspirate de diferite procese biologice care au loc în creier pentru a face comunicarea.
Cuprins
Semnificația biologică a unei rețele neuronale contorsionate
CNN-urile sunt inspirate de cortexul nostru vizual. Este zona cortexului cerebral care este implicată în procesarea vizuală a creierului nostru. Cortexul vizual are diverse regiuni celulare mici care sunt sensibile la stimulii vizuali.
Această idee a fost extinsă în 1962 de Hubel și Wiesel într-un experiment în care s-a descoperit că diferite celule neuronale distincte răspund (sunt concediate) la prezența unor margini distincte ale unei orientări specifice. De exemplu, unii neuroni s-ar declanșa la detectarea marginilor orizontale, alții la detectarea marginilor diagonale, iar alții s-ar declanșa atunci când detectează marginile verticale. Prin acest experiment. Hubel și Wiesel au descoperit că neuronii sunt organizați într-o manieră modulară și că toate modulele împreună sunt necesare pentru producerea percepției vizuale.
Această abordare modulară – ideea că componentele specializate din interiorul unui sistem au sarcini specifice – este cea care formează baza CNN-urilor.
După ce s-a rezolvat, să trecem la modul în care CNN-urile învață să perceapă intrările vizuale.
Învățarea rețelelor neuronale convoluționale
Imaginile sunt compuse din pixeli individuali, care este o reprezentare între numerele 0 și 255. Deci, orice imagine pe care o vedeți poate fi convertită într-o reprezentare digitală adecvată utilizând aceste numere - și așa lucrează și computerele cu imagini.
Iată câteva operațiuni majore care fac ca un CNN să învețe pentru detectarea sau clasificarea imaginilor. Acest lucru vă va oferi o idee despre cum are loc învățarea în CNN-uri.
1. Convoluție
Convoluția poate fi înțeleasă din punct de vedere matematic ca integrarea combinată a două funcții diferite pentru a afla cum influențează funcția diferită sau se modifică una pe cealaltă. Iată cum poate fi definit în termeni matematici:
Scopul convoluției este de a detecta diferite caracteristici vizuale în imagini, cum ar fi linii, margini, culori, umbre și multe altele. Aceasta este o proprietate foarte utilă deoarece, odată ce CNN-ul dvs. a învățat caracteristicile unei anumite caracteristici din imagine, poate recunoaște ulterior acea caracteristică în orice altă parte a imaginii.
CNN-urile folosesc nuclee sau filtre pentru a detecta diferitele caracteristici care sunt prezente în orice imagine. Kernel-urile sunt doar o matrice de valori distincte (cunoscute ca ponderi în lumea rețelelor neuronale artificiale) antrenate pentru a detecta caracteristici specifice. Filtrul se deplasează pe întreaga imagine pentru a verifica dacă prezența oricărei caracteristici este detectată sau nu. Filtrul efectuează operația de convoluție pentru a oferi o valoare finală care reprezintă cât de sigur este că o anumită caracteristică este prezentă.
Dacă o caracteristică este prezentă în imagine, rezultatul operației de convoluție este un număr pozitiv cu o valoare mare. Dacă caracteristica este absentă, operația de convoluție are ca rezultat fie 0, fie un număr cu valori foarte mici.
Să înțelegem asta mai bine folosind un exemplu. În imaginea de mai jos, un filtru a fost antrenat pentru detectarea unui semn plus. Apoi, filtrul este trecut peste imaginea originală. Deoarece o parte a imaginii originale conține aceleași caracteristici pentru care este antrenat filtrul, valorile din fiecare celulă în care există caracteristica sunt un număr pozitiv. De asemenea, rezultatul unei operații de convoluție va avea ca rezultat, de asemenea, un număr mare.
Cu toate acestea, atunci când același filtru este trecut peste o imagine cu un set diferit de caracteristici și margini, rezultatul unei operații de convoluție va fi mai mic - ceea ce înseamnă că nu a existat nicio prezență puternică a vreunui semn plus în imagine.
Deci, în cazul imaginilor complexe cu diverse caracteristici, cum ar fi curbe, margini, culori și așa mai departe, vom avea nevoie de un număr N de astfel de detectoare de caracteristici.
Când acest filtru este trecut prin imagine, este generată o hartă de caracteristici care este practic matricea de ieșire care stochează convoluțiile acestui filtru pe diferite părți ale imaginii. În cazul multor filtre, vom ajunge cu o ieșire 3D. Acest filtru ar trebui să aibă același număr de canale ca imaginea de intrare pentru ca operația de convoluție să aibă loc.
În plus, un filtru poate fi glisat peste imaginea de intrare la intervale diferite, folosind o valoare de pas. Valoarea pasului informează cât de mult ar trebui să se miște filtrul la fiecare pas.
Prin urmare, numărul de straturi de ieșire ale unui bloc convoluțional dat poate fi determinat folosind următoarea formulă:
2. Captuseala
O problemă în timpul lucrului cu straturi convoluționale este că unii pixeli tind să se piardă pe perimetrul imaginii originale. Deoarece, în general, filtrele folosite sunt mici, pixelii pierduți pe filtru ar putea fi câțiva, dar acest lucru se adună pe măsură ce aplicăm straturi convoluționale diferite, rezultând mulți pixeli pierduti.
Conceptul de umplutură se referă la adăugarea de pixeli suplimentari la imagine în timp ce un filtru al unui CNN o procesează. Aceasta este o soluție pentru a ajuta filtrul în procesarea imaginii - prin umplerea imaginii cu zerouri pentru a permite nucleului mai mult spațiu pentru a acoperi întreaga imagine. Adăugând zero padding la filtre, procesarea imaginii de către CNN este mult mai precisă și mai exactă.
Verificați imaginea de mai sus - completarea a fost făcută prin adăugarea de zerouri suplimentare la limita imaginii de intrare. Acest lucru permite capturarea tuturor caracteristicilor distincte fără a pierde niciun pixel.
3. Harta de activare
Hărțile caracteristicilor trebuie să fie trecute printr-o funcție de mapare care este de natură neliniară. Hărțile de caracteristici sunt incluse cu un termen de părtinire și apoi trecute prin funcția de activare (ReLu), care este neliniară. Această funcție își propune să aducă o oarecare cantitate de neliniaritate în CNN, deoarece imaginile care sunt detectate și examinate sunt, de asemenea, de natură neliniară, fiind compuse din diferite obiecte.
4. Etapa de pooling
Odată ce faza de activare s-a încheiat, trecem la pasul de pooling, în care CNN-ul eșantionează în jos caracteristicile convoluate, ceea ce ajută la economisirea timpului de procesare. Acest lucru ajută, de asemenea, la reducerea dimensiunii totale a imaginii, supraadaptarea și alte probleme care ar apărea dacă rețelele neuronale convolute sunt alimentate cu o mulțime de informații – mai ales dacă aceste informații nu sunt prea relevante în clasificarea sau detectarea imaginii.
Pooling-ul este practic de două tipuri - pooling maxim și pooling minim. În prima, o fereastră este trecută peste imagine în funcție de o valoare de pas stabilită, iar la fiecare pas, valoarea maximă inclusă în fereastră este grupată în matricea de ieșire. În gruparea minimă, valorile minime sunt reunite în matricea de ieșire.
Noua matrice care se formează ca rezultat al rezultatelor se numește o hartă de caracteristici grupate.
Din grupul minim și maxim, un beneficiu al poolingului maxim este că permite CNN să se concentreze pe câțiva neuroni care au valori mari în loc să se concentreze pe toți neuronii. O astfel de abordare face să fie foarte puțin probabil să supraajusteze datele de antrenament și face ca predicția generală și generalizarea să meargă bine.
5. Aplatizare
După ce s-a încheiat punerea în comun, reprezentarea 3D a imaginii a fost acum convertită într-un vector caracteristic. Acesta este apoi trecut într-un perceptron cu mai multe straturi pentru a produce rezultatul. Consultați imaginea de mai jos pentru a înțelege mai bine operația de aplatizare:
După cum puteți vedea, rândurile matricei sunt concatenate într-un singur vector caracteristic. Dacă sunt prezente mai multe straturi de intrare, toate rândurile sunt conectate pentru a forma un vector caracteristic mai aplatizat.
6. Strat complet conectat (FCL)
În acest pas, harta aplatizată este transmisă unei rețele neuronale. Conexiunea completă a unei rețele neuronale include un strat de intrare, FCL și un strat final de ieșire. Stratul complet conectat poate fi înțeles ca straturi ascunse în rețelele neuronale artificiale, cu excepția faptului că, spre deosebire de straturile ascunse, aceste straturi sunt complet conectate. Informația trece prin întreaga rețea și se calculează o eroare de predicție. Această eroare este apoi trimisă ca feedback (backpropagation) prin sisteme pentru a ajusta greutățile și pentru a îmbunătăți rezultatul final, pentru a o face mai precisă.
Ieșirea finală obținută din stratul de mai sus al rețelei neuronale nu se adună, în general, la unul. Aceste rezultate trebuie reduse la numere în intervalul [0,1] – care vor reprezenta apoi probabilitățile fiecărei clase. Pentru aceasta se folosește funcția Softmax.
Ieșirea obținută din stratul dens este alimentată la funcția de activare Softmax. Prin aceasta, toate ieșirile finale sunt mapate la un vector în care suma tuturor elementelor iese a fi una.
Stratul complet conectat funcționează analizând rezultatul stratului anterior și apoi determinând care caracteristică se corelează cel mai mult cu o anumită clasă. Astfel, dacă programul prezice dacă o imagine conține sau nu o pisică, aceasta va avea valori mari în hărțile de activare care reprezintă caracteristici precum patru picioare, labe, coadă și așa mai departe. La fel, dacă programul prezice altceva, va avea diferite tipuri de hărți de activare. Un strat complet conectat are grijă de diferitele caracteristici care se corelează puternic cu anumite clase și ponderi, astfel încât calculul dintre ponderi și stratul anterior să fie precis și să obțineți probabilități corecte pentru clase distincte de ieșire.
Un rezumat rapid al funcționării CNN-urilor
Iată un rezumat rapid al întregului proces despre cum funcționează CNN și ajută la viziunea computerizată:
- Diferiții pixeli din imagine sunt alimentați în stratul convoluțional, unde se efectuează o operație de convoluție.
- Pasul anterior are ca rezultat o hartă complicată.
- Această hartă este trecută printr-o funcție de redresare pentru a da naștere unei hărți rectificate.
- Imaginea este procesată cu diferite convoluții și funcții de activare pentru localizarea și detectarea diferitelor caracteristici.
- Straturile de grupare sunt utilizate pentru a identifica părți specifice, distincte ale imaginii.
- Stratul reunit este aplatizat și utilizat ca intrare pentru stratul complet conectat.
- Stratul complet conectat calculează probabilitățile și oferă o ieșire în intervalul [0,1].
În concluzie
Funcționarea interioară a CNN este foarte interesantă și deschide o mulțime de posibilități pentru inovație și creație. La fel, alte tehnologii sub umbrela Inteligenței Artificiale sunt fascinante și încearcă să lucreze între capacitățile umane și inteligența mașinilor. În consecință, oameni din întreaga lume, aparținând unor domenii diferite, își realizează interesul pentru acest domeniu și fac primii pași.
Din fericire, industria AI este excepțional de primitoare și nu se distinge pe baza experienței tale academice. Tot ce ai nevoie este cunoștințe de lucru ale tehnologiilor, precum și calificări de bază și ești gata!
Dacă doriți să stăpâniți esențialul ML și AI, cursul ideal de acțiune ar fi să vă înscrieți într-un program profesional AI/ML. De exemplu, programul nostru executiv în Machine Learning și AI este cursul perfect pentru aspiranții la știința datelor. Programul acoperă subiecte precum statistica și analiza exploratorie a datelor, învățarea automată și procesarea limbajului natural. De asemenea, include peste 13 proiecte industriale, peste 25 de sesiuni live și 6 proiecte capstone. Cea mai bună parte a acestui curs este că poți interacționa cu colegi din întreaga lume. Facilitează schimbul de idei și ajută cursanții să construiască conexiuni durabile cu oameni din medii diverse. Asistența noastră în carieră la 360 de grade este exact ceea ce aveți nevoie pentru a excela în călătoria dumneavoastră ML și AI!