Wat is Convolutioneel neuraal netwerk (CNN)?

Een neuraal netwerk dat vooral bestaat uit convolutielagen, die kleine filters (kernels) over de invoer schuiven en sommen van producten berekenen, gestapeld met onder meer poolinglagen. Omdat hetzelfde filter over de hele invoer wordt hergebruikt, heeft het veel minder parameters dan volledig verbonden lagen en extraheert het lokale kenmerken, zoals randen en texturen in een beeld, ongeacht hun positie. Het wordt gebruikt voor beeldherkenning, objectdetectie, audioverwerking en meer.

Japanse benaming: 畳み込みニューラルネットワーク(CNN)

“Convolutioneel neuraal netwerk (CNN)” komt voor in 2 oefenvragen uit 2 onderwerpen, bijv. AI-hardware en softwarestack, Basis van machine learning.

Vakgebied: Basis van machine learning

De berekening in een convolutielaag

Een convolutielaag schuift bijvoorbeeld een filter van 3×3 met een vaste stap (de stride) vanaf linksboven over het beeld en berekent de som van de producten van de overlappende pixels en de gewichten van het filter om een feature map op te bouwen. De uitvoergrootte is (N + 2P − F) ÷ S + 1 voor invoergrootte N, filtergrootte F, padding P en stride S. Elke laag gebruikt meerdere filters, die elk een ander kenmerk extraheren, zoals verticale randen, horizontale randen of kleurveranderingen. Diepere lagen reageren op grotere, complexere kenmerken zoals ogen of wielen.

Waarom er weinig parameters nodig zijn

Een convolutielaag die 64 filters van 3×3 toepast op een invoer met 3 kanalen, heeft 3 × 3 × 3 × 64 + 64 = 1792 parameters, ongeacht de grootte van het beeld. Hetzelfde beeld van 32×32×3 verbinden met een volledig verbonden laag met 64 uitgangen vergt 32 × 32 × 3 × 64 + 64 = 196.672 parameters. Door alleen naar nabije pixels te kijken (lokale connectiviteit) en overal hetzelfde filter te hergebruiken (gedeelde gewichten), leert het netwerk efficiënt met weinig parameters.

Pooling en de totale opbouw

Een poolinglaag neemt het maximum (max-pooling) of het gemiddelde over gebieden zoals 2×2 om de gegevens te verkleinen, wat rekenwerk bespaart en het netwerk minder gevoelig maakt voor kleine verschuivingen in positie. Een typisch CNN stapelt meerdere groepen van convolutielaag, activatiefunctie (zoals ReLU) en poolinglaag, en classificeert ten slotte met volledig verbonden lagen en een softmaxfunctie. Met residuele verbindingen, die signalen langs lagen heen doorgeven, kunnen netwerken van meer dan 100 lagen diep worden getraind.

Nu oefenen: vragen over Convolutioneel neuraal netwerk (CNN)

Waarom wordt bij convolutionele neurale netwerken de convolutie soms met methoden zoals im2col omgezet in een matrixproduct?

  1. AOmdat het aantal bewerkingen na omzetting tien keer kleiner wordt
  2. BOmdat sterk geoptimaliseerde matrixproductbibliotheken en matrixrekeneenheden zoals tensor cores kunnen worden gebruikt
  3. COmdat het geheugengebruik na omzetting altijd afneemt
Antwoord en toelichting tonen

Antwoord: B. Omdat sterk geoptimaliseerde matrixproductbibliotheken en matrixrekeneenheden zoals tensor cores kunnen worden gebruikt

im2col maakt een grote matrix waarin de ingangswaarden van elk convolutievenster in een kolom staan en berekent de convolutie als product met de matrix van gerangschikte filters. Doordat de vensters overlappen wordt de ingang gedupliceerd en neemt het geheugen toe, maar omdat matrixproductbibliotheken die al tientallen jaren zijn geoptimaliseerd en matrixrekeneenheden zoals tensor cores rechtstreeks kunnen worden gebruikt, wordt het over het geheel vaak sneller. Er bestaan ook implementaties die hetzelfde doen zonder duplicatie.

Veelgestelde vragen

Is de berekening in een convolutielaag hetzelfde als wiskundige convolutie?

De meeste frameworks noemen convolutie wat strikt genomen kruiscorrelatie is: een som van producten zonder het filter om te keren. Omdat de gewichten van het filter worden geleerd, maakt het voor de prestaties van het model niet uit of het filter wordt omgekeerd.

Kunnen CNN's ook voor andere dingen dan beelden worden gebruikt?

Ja. Eendimensionale convoluties worden gebruikt voor audiogolfvormen en tijdreeksgegevens, en driedimensionale convoluties voor video en volumetrische medische beelden. Ze zijn geschikt voor gegevens die op een rooster zijn gerangschikt en waarin naburige waarden met elkaar samenhangen.

“Convolutioneel neuraal netwerk (CNN)” in de toelichting

Vragen met “Convolutioneel neuraal netwerk (CNN)” (2)

  1. Waarom wordt bij convolutionele neurale netwerken de convolutie soms met methoden zoals im2col omgezet in een matrixproduct?
  2. Welke beschrijving van transfer learning, waarbij een model dat op een grote hoeveelheid gegevens is getraind met weinig gegevens voor een andere taak wordt gebruikt, is juist?

Verwante termen

Convolutie Transfer learning (overdrachtsleren) Activatiefunctie Gesuperviseerd leren (supervised learning) Gradiëntafdaling (gradient descent) Hoofdcomponentenanalyse (PCA) k-means-clustering Kruisvalidatie (cross-validation) Ongesuperviseerd leren (unsupervised learning) Overfitting (overaanpassing)

Naar de woordenlijst