AI-basisprincipes
Wat zijn CNN’s (Convolutional Neural Networks)?
Misschien hebt u zich afgevraagd hoe Facebook (META ) of Instagram automatisch gezichten in een afbeelding kan herkennen, of hoe Google (GOOGL ) u laat zoeken naar vergelijkbare foto’s door alleen een foto van uzelf te uploaden. Deze functies zijn voorbeelden van computer visie en worden aangedreven door convolutional neural networks (CNN’s). Maar wat zijn convolutional neural networks precies? Laten we een diepe duik nemen in de architectuur van een CNN en begrijpen hoe ze werken.
Wat zijn Neurale Netwerken?
Voordat we beginnen over convolutional neural networks, laten we even definiëren wat een regulier neuronaal netwerk is. Er is een ander artikel over neurale netwerken beschikbaar, dus we gaan hier niet te diep op in. Echter, om ze kort te definiëren, zijn het computationele modellen geïnspireerd door de menselijke hersenen. Een neuronaal netwerk werkt door gegevens in te voeren en de gegevens te manipuleren door “gewichten” aan te passen, die aannamen zijn over hoe de invoerfuncties met elkaar en de klasse van het object verwant zijn. Terwijl het netwerk getraind wordt, worden de waarden van de gewichten aangepast en zullen ze hopelijk convergeren naar gewichten die de relaties tussen functies nauwkeurig vastleggen.
Dit is hoe een feed-forward neuronaal netwerk werkt, en CNN’s bestaan uit twee helften: een feed-forward neuronaal netwerk en een groep convolutional lagen.
Wat zijn Convolutional Neural Networks (CNN’s)?
Wat zijn de “convoluties” die plaatsvinden in een convolutional neural network? Een convolutie is een wiskundige bewerking die een set gewichten creëert, wat in wezen een weergave is van delen van de afbeelding. Deze set gewichten wordt een kernel of filter genoemd. Het filter dat wordt gemaakt is kleiner dan de hele invoer afbeelding, en bedekt alleen een deel van de afbeelding. De waarden in het filter worden vermenigvuldigd met de waarden in de afbeelding. Het filter wordt dan verplaatst om een weergave te vormen van een nieuw deel van de afbeelding, en het proces wordt herhaald totdat de hele afbeelding is bedekt.
Een andere manier om hierover na te denken is om een bakstenen muur te visualiseren, waarbij de stenen de pixels in de invoer afbeelding vertegenwoordigen. Een “venster” wordt heen en weer geschoven langs de muur, wat het filter is. De stenen die zichtbaar zijn door het venster zijn de pixels waarvan de waarde wordt vermenigvuldigd met de waarden in het filter. Om deze reden wordt deze methode van het creëren van gewichten met een filter vaak de “schuiframen”-techniek genoemd.
De uitvoer van de filters die over de hele invoer afbeelding worden verplaatst is een tweedimensionale array die de hele afbeelding vertegenwoordigt. Deze array wordt een “functiekaart” genoemd.
Waarom zijn Convolutions Essentieel
Wat is het doel van het creëren van convoluties? Convolutions zijn nodig omdat een neuronaal netwerk in staat moet zijn om de pixels in een afbeelding te interpreteren als numerieke waarden. De functie van de convolutional lagen is om de afbeelding om te zetten in numerieke waarden die het neuronaal netwerk kan interpreteren en vervolgens relevante patronen uit kan halen. De taak van de filters in het convolutional netwerk is om een tweedimensionale array van waarden te creëren die kunnen worden doorgegeven aan de latere lagen van een neuronaal netwerk, die de patronen in de afbeelding zullen leren.
Filters en Kanalen

Foto: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)
CNN’s gebruiken niet alleen één filter om patronen te leren uit de invoer afbeeldingen. Meerdere filters worden gebruikt, omdat de verschillende arrays die worden gecreëerd door de verschillende filters leiden tot een complexere, rijkere weergave van de invoer afbeelding. Gewone aantallen filters voor CNN’s zijn 32, 64, 128 en 512. Hoe meer filters er zijn, hoe meer kansen de CNN heeft om de invoer gegevens te onderzoeken en er van te leren.
Een CNN analyseert de verschillen in pixel waarden om de grenzen van objecten te bepalen. In een grijswaarden afbeelding zou de CNN alleen naar de verschillen in zwart en wit, licht-donker termen kijken. Wanneer de afbeeldingen kleur afbeeldingen zijn, houdt de CNN niet alleen donker en licht in ogenschouw, maar moet het ook de drie verschillende kleur kanalen – rood, groen en blauw – in ogenschouw nemen. In dit geval hebben de filters 3 kanalen, net zoals de afbeelding zelf. Het aantal kanalen dat een filter heeft, wordt de diepte genoemd, en het aantal kanalen in het filter moet overeenkomen met het aantal kanalen in de afbeelding.
Convolutional Neural Network (CNN) Architectuur
Laten we een kijk nemen naar de complete architectuur van een convolutional neural network. Een convolutional laag wordt gevonden aan het begin van elk convolutional netwerk, omdat het noodzakelijk is om de afbeeldings gegevens om te zetten in numerieke arrays. Echter, convolutional lagen kunnen ook na andere convolutional lagen komen, wat betekent dat deze lagen op elkaar gestapeld kunnen worden. Meerdere convolutional lagen hebben betekent dat de uitvoer van de ene laag verder kan worden geconvolueerd en in relevante patronen kunnen worden gegroepeerd. In de praktijk betekent dit dat terwijl de afbeeldings gegevens door de convolutional lagen gaan, het netwerk begint “complexere functies” van de afbeelding te “herkennen”.
De vroege lagen van een ConvNet zijn verantwoordelijk voor het extraheren van de laagste niveau functies, zoals de pixels die eenvoudige lijnen vormen. Latere lagen van de ConvNet zullen deze lijnen samenvoegen tot vormen. Dit proces van oppervlakte-niveau analyse naar diepe analyse gaat door totdat de ConvNet complexe vormen zoals dieren, menselijke gezichten en auto’s herkent.
Nadat de gegevens door alle convolutional lagen zijn gegaan, gaan ze verder naar de dicht verbonden delen van de CNN. De dicht verbonden lagen zijn wat een traditioneel feed-forward neuronaal netwerk lijkt, een reeks knooppunten gerangschikt in lagen die met elkaar verbonden zijn. De gegevens gaan door deze dicht verbonden lagen, die de patronen leren die door de convolutional lagen werden geëxtraheerd, en daardoor wordt het netwerk in staat gesteld om objecten te herkennen.












