De beste verklaring voor convolutie neurale netwerken op internet!

CNN's hebben brede toepassingen in beeld- en videoherkenning, aanbevelingssystemen en natuurlijke taalverwerking. In dit artikel is het voorbeeld dat ik zal nemen gerelateerd aan Computer Vision. Het basisconcept blijft echter hetzelfde en kan op elke andere use-case worden toegepast!

Voor een korte samenvatting van neurale netwerken, hier is een zeer duidelijk verklaarde artikelenreeks.

CNN's, zoals neurale netwerken, bestaan ​​uit neuronen met leerbare gewichten en vooroordelen. Elk neuron ontvangt verschillende ingangen, neemt er een gewogen som overheen, doorloopt het door een activeringsfunctie en reageert met een uitgang. Het hele netwerk heeft een verliesfunctie en alle tips en trucs die we voor neurale netwerken hebben ontwikkeld, zijn nog steeds van toepassing op CNN's. Vrij eenvoudig, toch?

Dus, hoe verschillen convolutionele neurale netwerken dan neurale netwerken?

CNN's werken via volumes!

Wat bedoelen we hiermee?

1. Voorbeeld van een RGB-afbeelding (laten we het 'invoerafbeelding' noemen)

In tegenstelling tot neurale netwerken, waarbij de invoer een vector is, is de invoer hier een meerkanaals beeld (in dit geval 3 kanalen).

Er zijn nog andere verschillen waar we het over een tijdje over zullen hebben.

Voordat we dieper gaan, laten we eerst begrijpen wat convolutie betekent.

kronkeling

2. Een afbeelding convolueren met een filter

We nemen het 5 * 5 * 3-filter en schuiven het over de volledige afbeelding en nemen onderweg het puntproduct tussen het filter en brokken van de invoerafbeelding.

3. Zo ziet het eruit

Voor elk genomen puntproduct is het resultaat een scalair.

Wat gebeurt er als we het volledige beeld convolueren met het filter?

4. Dit!

Ik laat het aan jou over om uit te zoeken hoe de ‘28’ komt. (Hint: er zijn 28 * 28 unieke posities waar het filter op de afbeelding kan worden geplaatst)

Nu terug naar CNN's

De convolutielaag is de belangrijkste bouwsteen van een convolutioneel neuraal netwerk.

5. Convolutielaag

De convolutielaag bestaat uit een reeks onafhankelijke filters (6 in het getoonde voorbeeld). Elk filter is onafhankelijk geconvolueerd met de afbeelding en we eindigen met 6 functiekaarten met vorm 28 * 28 * 1.

Stel dat we een aantal convolutielagen na elkaar hebben. Wat gebeurt er dan?

6. Convolutielagen na elkaar

Al deze filters worden willekeurig geïnitialiseerd en worden onze parameters die vervolgens door het netwerk worden geleerd.

Ik zal je een voorbeeld laten zien van een getraind netwerk.

7. Filters in een getraind netwerk

Bekijk de filters in de allereerste laag (dit zijn onze 5 * 5 * 3 filters). Door middel van rugvoortplanting hebben ze zichzelf afgestemd om klodders van gekleurde stukjes en randen te worden. Naarmate we dieper ingaan op andere convolutielagen, doen de filters puntproducten aan de invoer van de vorige convolutielagen. Dus nemen ze de kleinere gekleurde stukken of randen en maken er grotere stukken van.

Bekijk afbeelding 4 en stel je het 28 * 28 * 1-raster voor als een raster van 28 * 28 neuronen. Voor een bepaald kenmerkoverzicht (de output die wordt ontvangen bij het convolueren van het beeld met een bepaald filter wordt een kenmerkoverzicht genoemd), is elk neuron alleen verbonden met een klein deel van het invoerbeeld en hebben alle neuronen dezelfde verbindingsgewichten. Dus opnieuw komend op de verschillen tussen CNN en een neuraal netwerk.

CNN's hebben een aantal concepten genaamd parameter sharing en lokale connectiviteit

Het delen van parameters is het delen van gewichten door alle neuronen in een bepaalde functiekaart.

Lokale connectiviteit is het concept van elke neurale verbonden alleen met een subset van het invoerbeeld (in tegenstelling tot een neuraal netwerk waar alle neuronen volledig zijn verbonden)

Dit helpt het aantal parameters in het hele systeem te verminderen en maakt de berekening efficiënter.

Ik zal het hier niet hebben over het concept van nulvulling, omdat het de bedoeling is om het simpel te houden. Geïnteresseerde mensen kunnen er afzonderlijk over lezen!

Lagen poolen

Een poollaag is een andere bouwsteen van een CNN.

pooling

Zijn functie is om de ruimtelijke grootte van de weergave geleidelijk te verminderen om het aantal parameters en berekeningen in het netwerk te verminderen. De poollaag werkt onafhankelijk op elke functiekaart.

De meest gebruikte benadering bij poolen is max pooling.

Max poolen

Typische architectuur van een CNN

Typische architectuur van CNN

We hebben al gesproken over convolutielagen (aangeduid met CONV) en poolingslagen (aangeduid met POOL).

RELU is slechts een niet-lineariteit die op vergelijkbare wijze wordt toegepast als neurale netwerken.

De FC is de volledig verbonden laag neuronen aan het einde van CNN. Neuronen in een volledig verbonden laag hebben volledige verbindingen met alle activeringen in de vorige laag, zoals te zien in reguliere neurale netwerken en werken op een vergelijkbare manier.

Ik hoop dat je nu de architectuur van een CNN begrijpt. Er zijn veel variaties in deze architectuur, maar zoals ik al eerder zei, het basisconcept blijft hetzelfde. Mocht u twijfels / feedback hebben, geef dan een reactie.

Je liefde voedt me! Dus, als je dit artikel leuk vond, klik dan op de kleine groene hartknop!

Je kunt me volgen om meer TechnologyMadeEasy-artikelen te lezen!

En als je wilt dat je vrienden dit ook lezen, klik dan op delen!

Referenties: http://cs231n.github.io/convolutional-networks/#overview