Verdieping
Activatiefuncties: de knik in de lijn
In De basis kwam de activatiefunctie kort voorbij; in de netwerken gebruiken we ze volop. Hier kijken we in detail hoe ze precies werken — de bekende sigmoïde en ReLU voorop, met daarnaast een paar andere die je vaak tegenkomt. Met formules, hun vorm, hun afgeleide, en wanneer je welke kiest.
Waarom je ze nodig hebt
Een neuron berekent eerst een gewogen som van zijn ingangen — een rechte, lineaire bewerking. Het probleem: als je louter lineaire lagen op elkaar stapelt, blijft het geheel lineair. Tien lagen achter elkaar kunnen dan niets meer dan één enkele laag: alleen rechte lijnen en vlakke scheidingen. Daarmee leer je nooit iets kroms.
De activatiefunctie zet daar een bocht in. Door na elke som een niet-lineaire functie toe te passen, kan het netwerk gebogen grenzen en samengestelde patronen vormen — en wordt diepte pas zinvol. In dit project zie je dat terug: de neuron-demo in De basis gebruikt een sigmoïde, de verborgen lagen van de netwerken gebruiken ReLU, en aan de uitgang staat softmax (daarover onderaan meer).
De sigmoïde: een zachte schakelaar
De sigmoïde drukt elk getal — hoe groot of klein ook — samen tot een waarde tussen 0 en 1. Heel negatief geeft bijna 0, heel positief bijna 1, en rond 0 loopt ze vloeiend door 0,5. Daardoor leest ze prettig als een “zachte schakelaar” of als een kans.
σ(x) = 1 / (1 + e−x)
Bereik: 0 tot 1. Afgeleide: σ′(x) = σ(x)·(1−σ(x)), met een maximum van slechts 0,25 in het midden (de gestreepte bult).
Daarin schuilt meteen haar zwakte. Aan de uiteinden — bij sterk negatieve of positieve invoer — wordt de curve bijna vlak en gaat de afgeleide naar 0. Tijdens backpropagatie betekent een afgeleide van bijna 0 dat er nauwelijks nog een leersignaal doorkomt. In diepe netwerken sterft dat signaal laag na laag uit: het beruchte vanishing gradient-probleem. Daarom zie je sigmoïde vandaag vooral nog aan de uitgang, zelden in diepe verborgen lagen.
De tanh: een sigmoïde rond nul
De hyperbolische tangens heeft dezelfde S-vorm als de sigmoïde, maar loopt van −1 tot 1 en is netjes rond 0 gecentreerd. Dat “nul-gecentreerd” zijn helpt het leren: de uitgangen zijn gemiddeld rond 0, wat de volgende laag makkelijker verwerkt dan de uitgangen van de sigmoïde, die altijd positief zijn.
tanh(x) = (ex − e−x) / (ex + e−x)
Bereik: −1 tot 1. Afgeleide: 1−tanh(x)², met een maximum van 1,0 in het midden — viermaal steiler dan sigmoïde, dus een sterker leersignaal.
Maar ook tanh verzadigt: aan de uiteinden wordt ze vlak en verdwijnt de afgeleide opnieuw. Het vanishing-gradient-probleem is dus verzacht, niet opgelost. Tanh was lang de standaard vóór ReLU, en duikt nog op in bepaalde netwerken (zoals sommige geheugencellen).
ReLU: simpel en snel
ReLU (Rectified Linear Unit) is verrassend eenvoudig: laat positieve waarden ongemoeid, en maak alles wat negatief is gewoon 0. Geen exponenten, geen verzadiging aan de bovenkant — net die eenvoud maakte diepe netwerken praktisch trainbaar. Dit is de activatie in de verborgen lagen van onze netwerken.
ReLU(x) = max(0, x)
Bereik: 0 tot oneindig. Afgeleide: 0 voor negatieve x, en precies 1 voor positieve x — geen verzwakking, dus het leersignaal blijft sterk. (In de knik bij 0 is ze strikt genomen niet differentieerbaar; in de praktijk kies je daar gewoon 0.)
Pluspunten: razendsnel te berekenen, geen vanishing gradient voor positieve invoer, en ze maakt veel neuronen exact 0 — een spaarzame, efficiënte representatie. Het nadeel heet dying ReLU: belandt een neuron in het vlakke gebied (altijd negatieve som), dan is zijn afgeleide overal 0 en leert hij nooit meer iets. Hij is dan “dood”.
Leaky ReLU: de lek die neuronen redt
Leaky ReLU lost het sterven op met een kleine truc: in plaats van negatieve waarden hard op 0 te zetten, geeft ze ze een klein, flauw hellinkje (vaak 0,01, hier 0,1 om het zichtbaar te maken). Zo is de afgeleide nergens precies 0, en kan een neuron altijd terugkrabbelen.
Leaky ReLU(x) = max(αx, x), met kleine α
Diezelfde gedachte kent een hele familie:
- Leaky ReLU — vaste kleine helling (bv. 0,01) voor negatieve x.
- Parametric ReLU (PReLU) — die helling is zelf een leerbare parameter.
- ELU — buigt voor negatieve x zacht naar een kleine negatieve waarde, glad in plaats van geknikt.
- GELU en Softplus — gladde, vloeiende verwanten van ReLU; GELU is populair in moderne taalmodellen.
Alle vier in één beeld
Onder elkaar gelegd zie je het verschil in karakter meteen: de twee S-curves (sigmoïde, tanh) die alles platdrukken, tegenover de twee rechte ReLU-varianten die onbegrensd doorstijgen.
| functie | bereik | sterke kant | let op |
|---|---|---|---|
| sigmoïde | 0 … 1 | leest als een kans | verzadigt → vanishing gradient |
| tanh | −1 … 1 | nul-gecentreerd, steiler | verzadigt nog steeds |
| ReLU | 0 … ∞ | snel, geen verzadiging boven | neuronen kunnen “sterven” |
| leaky ReLU | −∞ … ∞ | sterft niet | extra parameter α te kiezen |
Softmax is iets anders
Softmax — die we aan de uitgang van beide netwerken gebruiken — lijkt op een activatiefunctie, maar speelt een andere rol. Waar sigmoïde en ReLU elk getal apart omvormen, kijkt softmax naar alle uitgangen samen en zet ze om in kansen die samen precies 1 vormen. Daarom hoort softmax thuis in de uitvoerlaag bij classificatie (“kies één van de mogelijke antwoorden”), niet als activatie tussen verborgen lagen. De volledige uitleg staat in hoofdstuk 2.
Speel met de curves
Kies een functie en sleep met de schuifbalk de waarde van x. Het punt verschuift over de curve, en de gestreepte raaklijn toont de helling — precies de afgeleide die backpropagatie gebruikt. Let op hoe vlak sigmoïde en tanh worden aan de uiteinden (helling bijna 0), en hoe ReLU links helemaal vlak ligt.