{count, plural, one {Cursus} other {Cursussen}}
Deep neural networks hebben het landschap van kunstmatige intelligentie in het moderne tijdperk veranderd. De laatste tijd zijn er verschillende onderzoeksdoorbraken geweest in zowel deep learning als neurale netwerken, die de kwaliteit van AI‑gerelateerde projecten drastisch verhogen.
Deze deep neural networks helpen ontwikkelaars duurzamere en hoogwaardige resultaten te behalen. Daardoor vervangen ze zelfs een aantal traditionele machine‑learningtechnieken.
Maar wat zijn deep neural networks precies, en waarom zijn ze de meest optimale keuze voor een breed scala aan taken? En welke bibliotheken en tools zijn er om met deep neural networks aan de slag te gaan?
Dit artikel legt uit wat deep neural networks zijn, aan welke bibliotheken je behoefte hebt, en hoe je vanaf nul een basisarchitectuur voor een deep neural network opzet.
Wat zijn deep neural networks?
Een artificial neural network (ANN) of een eenvoudig traditioneel neuraal netwerk is bedoeld om eenvoudige taken op te lossen met een rechtlijnige netwerkopzet. Een artificieel neuraal netwerk is losjes geïnspireerd op biologische neurale netwerken. Het bestaat uit een verzameling lagen die samen een specifieke taak uitvoeren. Elke laag bestaat uit een verzameling knooppunten die samenwerken.
Deze netwerken bestaan meestal uit een invoerlaag, één à twee verborgen lagen en een uitvoerlaag. Hoewel ze eenvoudige wiskundige vraagstukken en computerproblemen kunnen oplossen, zoals basale poortstructuren met bijbehorende waarheidstabellen, is het voor deze netwerken lastig om complexe beeldverwerking, computervisie en natural language processing‑taken op te lossen.
Voor dit soort problemen gebruiken we deep neural networks, die vaak een complexe structuur van verborgen lagen hebben met uiteenlopende soorten lagen, zoals een convolutionele laag, max‑poolinglaag, dense laag en andere specifieke lagen. Deze extra lagen helpen het model om problemen beter te begrijpen en optimale oplossingen te bieden voor complexe projecten. Een deep neural network heeft meer lagen (meer diepte) dan een ANN en elke laag voegt complexiteit toe aan het model, terwijl het model in staat wordt gesteld de invoer beknopt te verwerken om de ideale oplossing te produceren.

Deep neural networks hebben enorm aan populariteit gewonnen dankzij hun hoge efficiëntie bij het realiseren van talloze soorten deep‑learningprojecten. Ontdek de verschillen tussen machine learning en deep learning in een apart artikel.
Waarom een DNN gebruiken?
Na training kunnen goed opgebouwde deep neural networks de gewenste resultaten met hoge nauwkeurigheid behalen. Ze zijn populair in alle aspecten van deep learning, waaronder computervisie, natural language processing en transfer learning.
Toonaangevende voorbeelden van de prominente rol van deep neural networks zijn hun inzet bij objectdetectie met modellen zoals YOLO (You Only Look Once), bij vertaaltaken met BERT‑modellen (Bidirectional Encoder Representations from Transformers), bij transfer‑learningmodellen zoals VGG‑19, RESNET‑50, EfficientNet en andere vergelijkbare netwerken voor beeldverwerkingsprojecten.
Om deze deep‑learningconcepten van kunstmatige intelligentie intuïtiever te begrijpen, raad ik DataCamp’s cursus Deep Learning in Python aan.
Deep‑learningtools en -bibliotheken
Neurale netwerken vanaf nul opbouwen helpt programmeurs om concepten te begrijpen en eenvoudige taken op te lossen door deze netwerken te manipuleren. Maar netwerken vanaf nul bouwen kost veel tijd en vergt enorme inspanning. Om deep learning eenvoudiger te maken, hebben we diverse tools en bibliotheken tot onze beschikking om met een paar regels code een effectief deep‑neural‑networkmodel te creëren dat complexe problemen kan oplossen.
De populairste deep‑learningbibliotheken en -tools voor het bouwen van deep neural networks zijn TensorFlow, Keras en PyTorch. De Keras‑ en TensorFlow‑bibliotheken zijn sinds de komst van TensorFlow 2.0 nauw met elkaar verbonden. Deze integratie stelt gebruikers in staat complexe neurale netwerken te ontwikkelen met high‑level codestructuren via Keras binnen het TensorFlow‑ecosysteem.
PyTorch
De PyTorch‑bibliotheek is een andere zeer populaire machine‑learningframework die gebruikers in staat stelt high‑end onderzoeksprojecten te ontwikkelen.
Hoewel het op visualisatiegebied iets tekortschiet, compenseert PyTorch dit met compacte en snelle prestaties, met relatief snellere en eenvoudigere GPU‑installaties voor het bouwen van deep‑neural‑networkmodellen.
DataCamp’s cursus Introduction to Deep Learning with PyTorch is het beste startpunt om meer over PyTorch te leren.
TensorFlow en Keras
Het TensorFlow‑framework biedt ontwikkelaars een breed scala aan fantastische opties voor visualisatietools voor deep‑learningtaken. Het TensorBoard‑dashboard is een uitstekende keuze om de gegevens en resultaten van een project te visualiseren, analyseren en interpreteren.
Dankzij de integratie met de Keras‑bibliotheek kunnen projecten sneller worden opgebouwd met eenvoudige codestructuren, wat het een populaire keuze maakt voor langdurige ontwikkeltrajecten. De cursus Introduction to TensorFlow in Python is een prima plek voor beginners om met TensorFlow te starten.
Een basis deep neural network bouwen
In deze sectie behandelen we enkele fundamentele concepten van deep neural networks en hoe je zo’n netwerk vanaf nul opzet.
De benodigde bibliotheken importeren
De eerste stap is het kiezen van je voorkeursbibliotheek voor de beoogde toepassing. We gebruiken de deep‑learningframeworks TensorFlow en Keras om het deep neural network te bouwen.
# Importing the necessary functionality
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Input, Dense, Conv2D
from tensorflow.keras.layers import Flatten, MaxPooling2D
Een sequentieel model maken
Zodra we de gewenste bibliotheken voor deze taak hebben geïmporteerd, gebruiken we het sequentiële modeltype om het deep‑learningmodel te bouwen. Het Sequential‑model is een eenvoudige stapel lagen met één invoer‑ en één uitvoerwaarde. Andere beschikbare opties zijn de functionele API of een custom model. De Sequential‑klasse biedt echter een rechttoe rechtaan manier om de architectuur van het neuraal netwerk te construeren.
# Creating the model
DNN_Model = Sequential()
De architectuur van het deep neural network opzetten
We voegen een inputvorm toe, doorgaans gelijk aan het formaat van het type afbeelding dat je in je project gebruikt. De grootte omvat de breedte, hoogte en kleurcodering van de afbeelding. In de onderstaande voorbeeldcode zijn de hoogte en breedte van de afbeelding 256 met een RGB‑kleurschema, weergegeven door 3 (1 wordt gebruikt voor grijswaardenafbeeldingen). Vervolgens bouwen we de benodigde verborgen lagen met convolutionele en max‑poolinglagen met verschillende filtergroottes. Tot slot gebruiken we een flatten‑laag om de uitvoer te platte te maken en een dense laag als uiteindelijke uitvoerlaag.
De verborgen lagen voegen complexiteit toe aan het neuraal netwerk. Een convolutionele laag voert een convolutie uit op visuele beelden om informatie te filteren. Elke filtergrootte in een convolutionele laag helpt specifieke kenmerken uit de input te extraheren. Een max‑poolinglaag helpt het aantal kenmerken te verminderen (downsamplen) door de maximale waarden uit de geëxtraheerde features te nemen.
Een flatten‑laag reduceert de ruimtelijke dimensies tot één dimensie voor snellere berekening. Een dense laag is de eenvoudigste laag die een output van de vorige lagen ontvangt en wordt meestal als uitvoerlaag gebruikt. De 2D‑convolutie voert een elementgewijze vermenigvuldiging uit over een 2D‑input. De ReLU‑activatiefunctie (rectified linear unit) introduceert non‑lineariteit in het model voor betere rekenprestaties. We gebruiken same padding om de input‑ en outputvormen van de convolutionele lagen te behouden.
# Inputting the shape to the model
DNN_Model.add(Input(shape = (256, 256, 3)))
# Creating the deep neural network
DNN_Model.add(Conv2D(256, (3, 3), activation='relu', padding = "same"))
DNN_Model.add(MaxPooling2D(2, 2))
DNN_Model.add(Conv2D(128, (3, 3), activation='relu', padding = "same"))
DNN_Model.add(MaxPooling2D(2, 2))
DNN_Model.add(Conv2D(64, (3, 3), activation='relu', padding = "same"))
DNN_Model.add(MaxPooling2D(2, 2))
# Creating the output layers
DNN_Model.add(Flatten())
DNN_Model.add(Dense(64, activation='relu'))
DNN_Model.add(Dense(10))
Modelarchitectuur
De modelstructuur en het plotdiagram van het gebouwde deep neural network staan hieronder.
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_5 (Conv2D) (None, 256, 256, 256) 7168
max_pooling2d_5 (MaxPooling (None, 128, 128, 256) 0
2D)
conv2d_6 (Conv2D) (None, 128, 128, 128) 295040
max_pooling2d_6 (MaxPooling (None, 64, 64, 128) 0
2D)
conv2d_7 (Conv2D) (None, 64, 64, 64) 73792
max_pooling2d_7 (MaxPooling (None, 32, 32, 64) 0
2D)
flatten_2 (Flatten) (None, 65536) 0
dense_4 (Dense) (None, 64) 4194368
dense_5 (Dense) (None, 10) 650
=================================================================
Total params: 4,571,018
Trainable params: 4,571,018
Non-trainable params: 0
_________________________________________________________________
Het plot ziet er als volgt uit:
tf.keras.utils.plot_model(DNN_Model, to_file='model_big.png', show_shapes=True)

Aanvullende informatie

Machine Learning‑workflow - Beeldbron
Zodra het model is gebouwd, moet het worden gecompileerd om het te configureren. Tijdens de compilatie van het model omvatten de belangrijke bewerkingen in deep‑learningmodellen forward propagation en backpropagation. Bij forward propagation wordt alle essentiële informatie door de verschillende knooppunten doorgegeven tot aan de uitvoerlaag. In de uitvoerlaag worden voor classificatietaken de voorspelde waarden en ware waarden overeenkomstig berekend.
In de trainings- of fit‑fase vindt backpropagation plaats. De gewichten worden in elke laag bijgesteld door de gewichten te verfijnen totdat de voorspelde en ware waarden dicht bij elkaar liggen om de gewenste resultaten te bereiken. Voor een diepgaande uitleg van dit onderwerp raad ik de volgende gids over backpropagation aan uit de cursus Introduction to Deep Learning in Python.
Er zijn veel finesses bij het verkennen van deep learning. Ik raad sterk aan om de cursus Deep Learning with Keras te volgen om beter te begrijpen hoe je deep neural networks opzet.
Deep‑learningmodellen begrijpen
Voor het uitvoeren van een specifieke machine‑learningtaak heb je een bepaald deep neural network nodig om de benodigde acties uit te voeren. Twee veelgebruikte deep‑learningmodellen zijn convolutionele neurale netwerken (CNN) en recurrente neurale netwerken (RNN). Convolutionele neurale netwerken zijn enorm nuttig in beeldverwerking en computervisieprojecten.
In deze deep neural networks voeren we in de verborgen lagen geen typische matrixbewerking uit, maar een convolutie. Hierdoor kan het netwerk schaalbaarder werken en hogere efficiëntie en nauwkeurigere resultaten leveren. Bij beeldclassificatie en objectdetectie zijn er veel gegevens en afbeeldingen voor het model om te verwerken. Deze convolutionele neurale netwerken helpen deze uitdagingen succesvol aan te pakken.
Voor natural language processing en semantische projecten worden vaak recurrente neurale netwerken gebruikt om de resultaten te optimaliseren. Een populaire variant van deze RNN’s, long short‑term memory (LSTM), wordt doorgaans ingezet voor verschillende taken zoals machinale vertaling, tekstclassificatie, spraakherkenning en andere vergelijkbare taken.
Deze netwerken dragen de essentiële informatie van elke vorige cel over naar de volgende, terwijl cruciale informatie wordt opgeslagen voor optimale modelprestaties. De cursus Image Modeling with Keras is een fantastische gids om meer over CNN’s te leren en Deep Learning in Python voor een grondig begrip van deep learning.
Uitdagingen en overwegingen bij deep neural networks
We hebben een beknopt begrip van deep neural networks en hun opbouw met het TensorFlow‑deep‑learningframework. Toch zijn er bepaalde uitdagingen waar elke ontwikkelaar rekening mee moet houden voordat er een neuraal netwerk voor een specifiek project wordt ontwikkeld. Laten we naar een paar van deze uitdagingen kijken.
Data‑eisen
Eén van de primaire vereisten voor deep learning is data. Data is de belangrijkste component bij het bouwen van een zeer nauwkeurig model. In veel gevallen hebben deep neural networks doorgaans grote hoeveelheden data nodig om overfitting te voorkomen en goed te presteren. De data‑eisen voor objectdetectietaken kunnen hoger liggen, zodat een model verschillende objecten met hoge nauwkeurigheid kan detecteren.
Hoewel data‑augmentatietechnieken nuttig zijn als snelle oplossing voor sommige van deze problemen, blijven datavereisten iets waar je bij elk deep‑learningproject rekening mee moet houden.
Rekenbronnen
Naast een grote hoeveelheid data moet je ook rekening houden met de hoge rekenkosten van het trainen van een deep neural network. Modellen zoals de Generative Pre‑trained Transformer 3 (GPT‑3) hebben bijvoorbeeld 175 miljard parameters.
Het compileren en trainen van modellen voor complexe taken vereist een krachtige GPU. Modellen kunnen vaak efficiënter worden getraind op GPU’s of TPU’s dan op CPU’s. Voor zeer complexe taken liggen de systeemeisen hoger en zijn meer resources nodig voor een bepaalde taak.
Trainingsproblemen
Tijdens het trainen kan het model ook problemen tegenkomen zoals underfitting of overfitting. Underfitting ontstaat meestal door een gebrek aan data, terwijl overfitting een prominenter probleem is dat optreedt doordat de trainingsdata consistent verbetert terwijl de testdata gelijk blijft. Daardoor is de trainingsnauwkeurigheid hoog, maar de validatienauwkeurigheid laag, wat leidt tot een erg instabiel model dat niet de beste resultaten oplevert.
Tot slot
In dit artikel hebben we deep neural networks verkend en hun kernconcepten begrepen. We hebben het verschil tussen deze neurale netwerken en een traditioneel netwerk uiteengezet en inzicht gekregen in de verschillende deep‑learningframeworks voor het uitvoeren van deep‑learningprojecten. Vervolgens hebben we de bibliotheken TensorFlow en Keras gebruikt om de bouw van een deep neural network te demonstreren. Tot slot hebben we enkele cruciale uitdagingen van deep learning besproken en een paar manieren om deze te overwinnen.
Deep neural networks zijn een fantastisch hulpmiddel voor het realiseren van de meeste gangbare toepassingen en projecten in kunstmatige intelligentie. Ze stellen ons in staat om beeldverwerking en natural language processing‑taken met hoge nauwkeurigheid op te lossen.
Het is belangrijk dat alle vaardige ontwikkelaars op de hoogte blijven van opkomende trends, want een model dat vandaag populair is, is morgen misschien niet meer de beste keuze.
Blijf dus vooral leren en kennis opdoen, want de wereld van kunstmatige intelligentie is een avontuur vol opwinding en nieuwe technologische ontwikkelingen. Een van de beste manieren om bij te blijven is door de Skill Track Deep Learning in Python van DataCamp te volgen om onderwerpen als TensorFlow en Keras te behandelen, en Deep Learning with PyTorch om meer over PyTorch te leren. Je kunt ook de cursussen AI Fundamentals bekijken voor een zachtere introductie. De eerste helpt het enorme potentieel van deep‑learningprojecten te ontketenen, terwijl de tweede de basis verstevigt.
Ik verken en leer graag nieuwe concepten. Ik ben enorm geïnteresseerd in kunstmatige intelligentie, deep learning, robots en het universum. Ik schrijf ook artikelen over Python, machine learning, deep learning, NLP en AI.

