AI EducademyAIEducademy
Programma'sLabBlogOver ons
Inloggen
AI EducademyAIEducademy

Gratis AI-onderwijs voor iedereen, in elke taal.

Leren

  • Programma's
  • Lessen
  • Lab
  • Dashboard
  • Over ons

Community

  • GitHub
  • Bijdragen
  • Gedragscode

Ondersteuning

  • Koop een Koffie โ˜•

Gratis AI-onderwijs voor iedereen

MIT Licentie โ€” Open Source

Programsโ€บ๐ŸŒฟ AI Sproutsโ€บLessonsโ€บIntroductie tot Neurale Netwerken โ€” Hoe AI Denkt in Lagen
๐Ÿง 
AI Sprouts โ€ข Gemiddeldโฑ๏ธ 35 min leestijd

Introductie tot Neurale Netwerken โ€” Hoe AI Denkt in Lagen

Het Door het Brein Geรฏnspireerde Algoritme ๐Ÿ‘‹

In de vorige les heb je beslisbomen, KNN en lineaire regressie leren kennen. Ze zijn krachtig โ€” maar ze worstelen met echt complexe taken zoals gezichtsherkenning of taalverwerking.

Daarvoor hebben we neurale netwerken nodig โ€” algoritmen die losjes geรฏnspireerd zijn op hoe je brein werkt.

Een biologisch neuron transformeert in een kunstmatig neuron
Neurale netwerken lenen ideeรซn van de biologie โ€” maar het zijn geen echte breinen!

Van Neuronen naar Kunstmatige Neuronen ๐Ÿ”ฌ

Je brein heeft ongeveer 86 miljard neuronen. Elk neuron:

  1. Ontvangt signalen van andere neuronen
  2. Verwerkt die signalen (telt ze op)
  3. Beslist of het moet vuren (een signaal doorsturen)

Een kunstmatig neuron doet hetzelfde, maar met getallen:

  1. Ontvangt getallen als invoer
  2. Vermenigvuldigt elke invoer met een gewicht
  3. Telt ze allemaal op
  4. Beslist of het activeert via een activatiefunctie
Invoer          Gewichten       Som         Activatie       Uitvoer
โ”€โ”€โ”€โ”€โ”€โ”€          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€        โ”€โ”€โ”€         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€       โ”€โ”€โ”€โ”€โ”€โ”€
xโ‚ = 0.5  โ”€โ”€โ†’  wโ‚ = 0.8  โ”€โ”
                             โ”œโ”€โ”€โ†’ 1.25 โ”€โ”€โ†’ f(1.25) โ”€โ”€โ†’  0.78
xโ‚‚ = 0.3  โ”€โ”€โ†’  wโ‚‚ = 1.5  โ”€โ”˜

Som = (0.5 ร— 0.8) + (0.3 ร— 1.5) = 0.40 + 0.85 = 1.25
๐Ÿค”
Think about it:

Denk aan gewichten als volumeknoppen op een mengpaneel. Elke invoer is een ander instrument. De gewichten bepalen hoe hard elk instrument klinkt. Het neuron mengt ze samen, en de activatiefunctie beslist of het gecombineerde geluid hard genoeg is om door te gaan.


Lagen: Hoe Neuronen Zich Organiseren ๐Ÿ—๏ธ

Eรฉn neuron kan niet veel โ€” net als รฉรฉn hersencel niet kan denken. De kracht komt van het organiseren in lagen.

1. Invoerlaag โ€” De ogen en oren ๐Ÿ‘€

  • Ontvangt ruwe data
  • Eรฉn neuron per invoerkenmerk

2. Verborgen laag/lagen โ€” Het denkende brein ๐Ÿง 

  • Hier vindt het daadwerkelijke leren plaats
  • Elk neuron vindt een patroon in de data
  • Meer verborgen lagen = complexere patronen

3. Uitvoerlaag โ€” Het antwoord ๐Ÿ’ก

  • Produceert de uiteindelijke voorspelling
  • Voor classificatie: รฉรฉn neuron per categorie
  • Voor regressie: รฉรฉn neuron met een getal
INVOERLAAG        VERBORGEN LAAG 1   VERBORGEN LAAG 2    UITVOERLAAG
(3 kenmerken)     (4 neuronen)       (4 neuronen)        (2 klassen)

  [xโ‚] โ”€โ”€โ”€โ”€โ”€โ”€โ†’   [hโ‚] โ”€โ”€โ”€โ”€โ”€โ”€โ†’     [hโ‚…] โ”€โ”€โ”€โ”€โ”€โ”€โ†’        [Kat: 0.92]
  [xโ‚‚] โ”€โ”€โ”€โ”€โ”€โ”€โ†’   [hโ‚‚] โ”€โ”€โ”€โ”€โ”€โ”€โ†’     [hโ‚†] โ”€โ”€โ”€โ”€โ”€โ”€โ†’        [Hond: 0.08]
  [xโ‚ƒ] โ”€โ”€โ”€โ”€โ”€โ”€โ†’   [hโ‚ƒ] โ”€โ”€โ”€โ”€โ”€โ”€โ†’     [hโ‚‡]
                  [hโ‚„] โ”€โ”€โ”€โ”€โ”€โ”€โ†’     [hโ‚ˆ]
๐Ÿคฏ

De term "deep learning" betekent simpelweg een neuraal netwerk met veel verborgen lagen โ€” meer dan 2. GPT-4 heeft meer dan 100 lagen! Meer lagen laten het netwerk steeds abstractere patronen leren: randen โ†’ vormen โ†’ objecten โ†’ scรจnes.


Activatiefuncties โ€” De Beslissers ๐Ÿ’ง

Na het optellen moet een neuron beslissen: moet ik activeren of niet?

De waterstroom-analogie ๐Ÿšฟ

Stel je een waterpijp met een klep voor:

  • Water stroomt erin (de gewogen som van invoer)
  • De klep bepaalt wat eruit komt (de activatiefunctie)

Veelgebruikte activatiefuncties

ReLU โ€” De simpele poort

  • Positieve invoer โ†’ laat door
  • Negatieve invoer โ†’ blokkeer (uitvoer nul)
def relu(x):
    return max(0, x)

print(relu(3.5))   # 3.5 (positief โ†’ gaat door)
print(relu(-2.0))  # 0.0 (negatief โ†’ geblokkeerd)

Sigmoid โ€” De zachte samenpresser

  • Perst elke invoer samen tussen 0 en 1
  • Perfect voor kansen: "Er is 0,87 kans dat dit een kat is"
import math

def sigmoid(x):
    return 1 / (1 + math.exp(-x))

print(sigmoid(5.0))    # 0.993 (zeer zeker "ja")
print(sigmoid(0.0))    # 0.500 (helemaal onzeker)
print(sigmoid(-5.0))   # 0.007 (zeer zeker "nee")

Softmax โ€” De stemmenteller

  • Gebruikt in de uitvoerlaag voor classificatie
  • Zet meerdere waarden om in kansen die optellen tot 1
Ruwe uitvoer:    [2.0, 1.0, 0.5]
Na softmax:      [0.59, 0.24, 0.17]  โ†’ Kat (59%), Hond (24%), Vogel (17%)
๐Ÿ’ก

Waarom activatiefuncties? Zonder hen zou een neuraal netwerk โ€” ongeacht het aantal lagen โ€” slechts lineaire regressie zijn. Activatiefuncties introduceren niet-lineariteit, waardoor het netwerk curves en complexe patronen kan leren.


Forward Propagation โ€” Data Stroomt Erdoorheen ๐ŸŒŠ

Denk aan een estafetteloop:

  1. De invoerlaag ontvangt de data en stuurt het naar de eerste verborgen laag
  2. Elk neuron vermenigvuldigt, telt op en activeert
  3. De resultaten gaan naar de volgende laag
  4. Dit gaat door tot de uitvoerlaag
  5. De uitvoerlaag geeft de uiteindelijke voorspelling

Een concreet voorbeeld

Laten we classificeren of een vrucht een appel of sinaasappel is:

Invoer: gewicht = 150g, kleur = 0.8 (oranje-achtig)

Stap 1 โ€” Invoerlaag stuurt waarden door:
  xโ‚ = 150 (gewicht), xโ‚‚ = 0.8 (kleur)

Stap 2 โ€” Verborgen neuron 1:
  som = (150 ร— 0.01) + (0.8 ร— 2.0) + bias(0.1) = 3.2
  uitvoer = ReLU(3.2) = 3.2

Stap 3 โ€” Verborgen neuron 2:
  som = (150 ร— -0.005) + (0.8 ร— 1.5) + bias(0.3) = 0.75
  uitvoer = ReLU(0.75) = 0.75

Stap 4 โ€” Uitvoerlaag:
  appel_score     = (3.2 ร— -0.5) + (0.75 ร— 0.8) = -1.0
  sinaasappel_score = (3.2 ร— 0.7) + (0.75 ร— 0.3) = 2.465

Stap 5 โ€” Softmax:
  Appel:       18%
  Sinaasappel: 82%  โ† Voorspelling: Sinaasappel! ๐ŸŠ

Backpropagation โ€” Leren van Fouten ๐Ÿ”„

Forward propagation geeft een voorspelling. Maar wat als het fout is? Daar komt backpropagation โ€” het proces waarmee een neuraal netwerk leert.

De darts-analogie ๐ŸŽฏ

  1. Gooi een pijltje (forward propagation โ€” maak een voorspelling)
  2. Iemand vertelt hoe ver je ernaast zat (bereken de fout)
  3. Pas je aim aan (update de gewichten)
  4. Gooi opnieuw โ€” nu zit je dichterbij!
  5. Herhaal duizenden keren
Forward propagation:  Data โ†’ Netwerk โ†’ Voorspelling
                                          โ†“
Vergelijken:          Voorspelling vs Werkelijk antwoord = Fout
                                          โ†“
Backpropagation:      Fout stroomt TERUG door het netwerk
                                          โ†“
Updaten:              Gewichten aanpassen om de fout te verkleinen
                                          โ†“
Herhalen:             Dit duizenden keren doen!
๐Ÿค”
Think about it:

Stel je een fabriek voor die defecte producten maakt. Om het probleem op te lossen, traceer je terug vanaf het eindproduct door elk station: "Was de verpakking fout? De verf? Het ruwe materiaal?" Elk station past zijn proces aan. Dat is backpropagation.


Interactief: Data Door een Netwerk Traceren ๐Ÿ”

Laten we data door een klein netwerk traceren dat spam-e-mails classificeert.

Kenmerken:

  • xโ‚ = aantal uitroeptekens (5)
  • xโ‚‚ = bevat het woord "gratis" (1 = ja)
import math

# Invoer
x1, x2 = 5, 1

# Verborgen neuron 1
z1 = (x1 * 0.6) + (x2 * 0.9) + 0.1    # = 4.0
h1 = max(0, z1)                          # ReLU โ†’ 4.0

# Verborgen neuron 2
z2 = (x1 * 0.3) + (x2 * 0.4) + 0.2    # = 2.1
h2 = max(0, z2)                          # ReLU โ†’ 2.1

# Uitvoerneuron
z_out = (h1 * 0.7) + (h2 * 0.5) - 0.5  # = 3.35
output = 1 / (1 + math.exp(-z_out))      # Sigmoid โ†’ 0.966

print(f"Verborgen laag: h1={h1}, h2={h2}")
print(f"Ruwe uitvoer: {z_out:.2f}")
print(f"Spam-kans: {output:.1%}")          # 96,6% โ†’ SPAM! ๐Ÿšซ

Het Grote Plaatje ๐Ÿ—บ๏ธ

Data (Les 1) โ†’ Algoritme (Les 2) โ†’ Neuraal Netwerk (Les 3)
    ๐Ÿ“Š              ๐Ÿงฎ                    ๐Ÿง 

Neurale netwerken drijven aan:

  • ๐Ÿ—ฃ๏ธ ChatGPT โ€” taal begrijpen en genereren
  • ๐ŸŽจ DALL-E / Midjourney โ€” afbeeldingen maken van tekst
  • ๐Ÿš— Zelfrijdende auto's โ€” de weg zien en begrijpen
  • ๐Ÿ”ฌ AlphaFold โ€” eiwitstructuren voorspellen
๐Ÿคฏ

Het basisidee van neurale netwerken werd voorgesteld in 1943 โ€” meer dan 80 jaar geleden! Maar ze werden pas praktisch in de jaren 2010, toen we genoeg data en snelle computers (GPU's) hadden om grote netwerken te trainen.


Snelle Samenvatting ๐ŸŽฏ

  1. Kunstmatige neuronen ontvangen invoer, vermenigvuldigen met gewichten, tellen op en passen activatie toe
  2. Neurale netwerken hebben drie laagtypen: invoer, verborgen en uitvoer
  3. Activatiefuncties voegen niet-lineariteit toe โ€” zonder hen kan het netwerk alleen rechte lijnen leren
  4. Forward propagation duwt data door het netwerk voor een voorspelling
  5. Backpropagation stuurt fouten terug om gewichten aan te passen en te verbeteren
  6. Neurale netwerken drijven moderne AI aan โ€” van chatbots tot zelfrijdende auto's

Wat Komt Er Volgende? ๐Ÿš€

Gefeliciteerd โ€” je begrijpt nu de drie pijlers van AI: data, algoritmen en neurale netwerken! In komende lessen verkennen we AI-tools en verantwoorde AI ๐ŸŒฑ

Lesson 3 of 30 of 3 completed
โ†Algoritmen Uitgelegd โ€” De Recepten van AI๐ŸŒณ AI Branchesโ†’