Rețele neurale convoluționale

Finalizat

Deși puteți utiliza modele de învățare profundă pentru orice tip de învățare programată, acestea sunt utile în special pentru a trata datele care constau în matrice mari de valori numerice, cum ar fi imagini. Modelele de învățare programată care funcționează cu imagini sunt baza unei inteligențe artificiale din zonă numită vedere a computeruluiși tehnicile de învățare profundă au fost responsabile pentru a conduce progrese uimitoare în această zonă în ultimii ani.

În inima succesului deep learning în această zonă este un tip de model numit rețea neurală convoluționalăsau CNN. Un CNN funcționează de obicei prin extragerea caracteristicilor din imagini, apoi alimentarea acestor caracteristici într-o rețea neurală complet conectată pentru a genera o predicție. Straturile de extragere a caracteristicilor din rețea au efectul de reducere a numărului de caracteristici din matricea potențial imensă de valori individuale de pixeli la un set de caracteristici mai mic care acceptă predicția etichetelor.

Straturi într-un CNN

CNN-urile constau din mai multe straturi, fiecare efectuând o anumită activitate în extragerea caracteristicilor sau estimarea etichetelor.

Straturi convoluție

Unul dintre tipurile de straturi principale este un strat convoluțional care extrage caracteristici importante din imagini. Un strat convolutional funcționează prin aplicarea unui filtru la imagini. Filtrul este definit de un kernel care constă într-o matrice de valori de greutate.

De exemplu, un filtru 3x3 poate fi definit astfel:

 1  -1   1
-1   0  -1
 1  -1   1

O imagine este, de asemenea, doar o matrice de valori în pixeli. Pentru a aplica filtrul, îl "suprapuneți" pe o imagine și calculați o sumă ponderată valorilor corespondente de pixeli de imagine sub kernelul de filtrare. Rezultatul este apoi atribuit celulei centrale a unei corecții 3x3 echivalente într-o matrice nouă de valori care are aceeași dimensiune ca imaginea. De exemplu, să presupunem că o imagine 6 x 6 are următoarele valori pixeli:

255 255 255 255 255 255 
255 255 100 255 255 255
255 100 100 100 255 255
100 100 100 100 100 255
255 255 255 255 255 255
255 255 255 255 255 255

Aplicarea filtrului la corecția 3x3 sus a imaginii ar funcționa astfel:

255 255 255      1  -1   1    (255 x 1)+(255 x -1)+(255 x 1) +
255 255 100  x  -1   0  -1  = (255 x -1)+(255 x 0)+(100 x -1) +   = 155
255 100 100      1  -1   1    (255 x1 )+(100 x -1)+(100 x 1)

Rezultatul este atribuit valorii corespondente de pixeli din noua matrice, astfel:

 ?   ?   ?   ?   ?   ?  
 ?  155  ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?

Acum, filtrul este mutat de-a lungul (convolved), de obicei, utilizând un pas dimensiunea de 1 (astfel încât se deplasează de-a lungul unui pixel la dreapta) și valoarea pentru următorul pixel este calculată

255 255 255      1  -1   1    (255 x 1)+(255 x -1)+(255 x 1) +
255 100 255  x  -1   0  -1  = (255 x -1)+(100 x 0)+(255 x -1) +   = -155
100 100 100      1  -1   1    (100 x1 )+(100 x -1)+(100 x 1)

Deci acum putem completa următoarea valoare a noii matrice.

 ?   ?   ?   ?   ?   ?  
 ?  155 -155 ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?

Procesul se repetă până când am aplicat filtrul în toate corecțiile 3x3 ale imaginii, pentru a produce o nouă matrice de valori, ca aceasta:

?   ?   ?    ?    ?   ?
?  155 -155 155 -155  ?
? -155 310 -155  155  ?
?  310 155  310   0   ?
? -155 -155 -155  0   ?
?   ?   ?    ?    ?   ?

Din cauza dimensiunii kernelului de filtrare, nu putem calcula valorile pentru pixelii de la margine; deci, de obicei, aplicăm doar o completare valoare (adesea 0):

0   0   0    0    0   0
0  155 -155 155 -155  0
0 -155 310 -155  155  0
0  310 155  310   0   0
0 -155 -155 -155  0   0
0   0   0    0    0   0

Rezultatul convoluției este transmis de obicei unei funcții de activare, care este adesea o funcție de Unitate liniară rectificată (ReLU), care asigură că valorile negative sunt setate la 0:

0   0   0    0    0   0
0  155  0   155   0   0
0   0  310   0   155  0
0  310 155  310   0   0
0   0   0    0    0   0
0   0   0    0    0   0

Matricea rezultată este o hartă de caracteristici de valori de caracteristici care pot fi utilizate pentru a instrui un model de învățare programată.

Notă: valorile din harta caracteristicilor pot fi mai mari decât valoarea maximă pentru un pixel (255), așadar, dacă doriți să vizualizați harta caracteristicii ca imagine, ar trebui să normaliza valorile caracteristicii între 0 și 255.

Procesul de convoluție se afișează în animația de mai jos.

Un kernel de filtrare este convolvat într-o imagine a unui triunghi, extragerea caracteristicilor care evidențiază cele trei margini și colțuri

  1. O imagine este transmisă la stratul convoluțional. În acest caz, imaginea este o formă geometrică simplă.
  2. Imaginea este compusă dintr-o matrice de pixeli cu valori între 0 și 255 (pentru imaginile color, aceasta este de obicei o matrice tridimensională cu valori pentru canalele roșii, verzi și albastre).
  3. Un kernel de filtrare este inițializat în general cu greutăți aleatoare (în acest exemplu, am ales valori pentru a evidenția efectul pe care un filtru poate avea asupra valorilor pixelilor; dar într-un CNN real, greutățile inițiale ar fi generate de obicei dintr-o distribuție gaussiană aleatoare). Acest filtru va fi utilizat pentru a extrage o hartă de caracteristici din datele de imagine.
  4. Filtrul este convolat în imagine, calculând valori de caracteristici aplicând o sumă a greutăților înmulțite cu valorile corespondente de pixeli din fiecare poziție. Se aplică o funcție de activare a unității liniare rectificate (ReLU) pentru a vă asigura că valorile negative sunt setate la 0.
  5. După convoluție, harta caracteristicii conține valorile de caracteristici extrase, care evidențiază adesea atributele vizuale cheie ale imaginii. În acest caz, harta caracteristicii evidențiază marginile și colțurile triunghiului din imagine.

De obicei, un strat convolutional aplică mai multe nuclee de filtrare. Fiecare filtru produce o hartă de caracteristici diferită, iar toate hărțile de caracteristici sunt transmise pe următorul nivel al rețelei.

Straturi de grupare

După extragerea valorilor caracteristicilor din imagini, se utilizează gruparea (sau desampling) straturilor ) pentru a reduce numărul de valori ale caracteristicilor, păstrând în același timp caracteristicile care au fost extrase.

Unul dintre cele mai comune tipuri de grupare este maxim de grupare în care se aplică un filtru la imagine și se păstrează numai valoarea maximă de pixeli din zona de filtrare. Așadar, de exemplu, aplicarea unui kernel de grupare 2x2 la următoarea corecție a unei imagini ar produce rezultatul 155.

0   0
0  155

Rețineți că efectul filtrului de grupare 2x2 este reducerea numărului de valori de la 4 la 1.

La fel ca în ceea ce privește straturile convoluționale, straturile comune funcționează aplicând filtrul pe întreaga hartă a caracteristicilor. Animația de mai jos afișează un exemplu de grupare maximă pentru o hartă de imagini.

Un kernel de filtrare este convolat peste o imagine a unui triunghi, extragerea caracteristicilor care evidențiază cele trei margini și colțuri, maximul de grupare pentru o hartă de imagini.

  1. Harta caracteristicii extrasă de un filtru dintr-un strat convolutional conține o matrice de valori de caracteristici.
  2. Un kernel de grupare este utilizat pentru a reduce numărul de valori de caracteristici. În acest caz, dimensiunea kernelului este 2x2, deci va produce o matrice cu trimestrul numărului de valori de caracteristici.
  3. Kernelul de grupare este comutat pe harta caracteristicii, păstrând doar cea mai mare valoare de pixeli din fiecare poziție.

Fixarea straturilor

Una dintre cele mai dificile provocări într-un CNN este evitarea suprapunerea, în cazul în care modelul rezultat funcționează bine cu datele de instruire, dar nu generalizează bine la date noi pe care nu a fost instruit. O tehnică pe care o puteți utiliza pentru a atenua suprapunerea este să includeți straturile în care procesul de instruire elimină aleatoriu (sau "picături") hărți de caracteristici. Acest lucru poate părea contraintuitiv, dar este un mod eficient de a vă asigura că modelul nu învață să fie supra-dependent de imaginile de instruire.

Alte tehnici pe care le puteți utiliza pentru a atenua suprapunerea includ răsturnarea aleatorie, reproducerea în oglindă sau asimetria imaginilor de instruire pentru a genera date care variază între epocile de instruire.

Straturi de aplatizare

După utilizarea straturilor convoluționale și de grupare pentru a extrage caracteristicile saliente din imagini, hărțile de caracteristici rezultate sunt matrice multidimensionale de valori pixeli. Un strat de aplatizare este utilizat pentru a aplatiza caracteristica hărți într-un vector de valori care pot fi utilizate ca intrare într-un strat complet conectat.

Straturi complet conectate

De obicei, un CNN se termină cu o rețea complet conectată în care valorile caracteristicii sunt transmise într-un strat de intrare, printr-unul sau mai multe straturi ascunse și generează valori estimate într-un strat de ieșire.

O arhitectură CNN de bază ar putea arăta asemănător cu aceasta:

Un CNN constând dintr-un strat convolutional, un strat de grupare, un strat de fixare, un strat de aplatizare și un strat complet conectat

  1. Imaginile sunt alimentate într-un strat convolutional. În acest caz, există două filtre, astfel încât fiecare imagine să producă două hărți de caracteristici.
  2. Hărțile de caracteristici sunt transmise la un strat de grupare, unde un kernel de grupare 2x2 reduce dimensiunea hărților de caracteristici.
  3. Un strat de fixare fixează aleator unele dintre hărțile de caracteristici, pentru a contribui la prevenirea suprapunerii.
  4. Un strat de aplatizare preia matricele de hărți de caracteristici rămase și le aplatizează într-un vector.
  5. Elementele vectoriale sunt alimentate într-o rețea complet conectată, ceea ce generează predicțiile. În acest caz, rețeaua este un model de clasificare care anticipează probabilitățile pentru trei clase de imagini posibile (triunghi, pătrat și cerc).

Instruirea unui model CNN

La fel ca în ceea ce privește orice rețea neuronală profundă, un CNN este instruit prin trecerea unor grupuri de date de instruire prin ea pe mai multe epoci, ajustarea greutăților și a valorilor de prejudecăți pe baza pierderii calculate pentru fiecare epocă. În cazul unui CNN, propagarea inversă a greutăților ajustate include ponderile kernel de filtrare utilizate în straturi convoluționale, precum și greutățile utilizate în straturi complet conectate.