Een activatiefunctie is een kleine rekenregel in een neuraal netwerk, het soort AI-model achter chatbots en beeldherkenning. Die regel bepaalt hoeveel van elk signaal doorgaat naar de volgende stap. Zonder zo'n regel kan het model alleen verbanden leren die een rechte lijn volgen, zoals "twee keer zoveel bestellen, twee keer zoveel verzendkosten". Als gebruiker kies je er nooit zelf een: dat doet wie het model bouwt.
Waarom heeft een neuraal netwerk er een nodig?
Een neuraal netwerk werkt in lagen. Elke laag vermenigvuldigt zijn invoer met gewichten en telt de uitkomsten op: een lineaire stap. Twee lineaire stappen achter elkaar zijn samen weer één lineaire stap: w₂(w₁x + b₁) + b₂ is gewoon (w₂w₁)x + (w₂b₁ + b₂). Het leerboek Deep Learning van Goodfellow, Bengio en Courville laat zien dat een netwerk zonder niet-lineaire functie tussen de lagen een lineaire functie van zijn invoer blijft, hoeveel lagen het ook heeft.
Het eerste voorbeeld in het boek is XOR: de uitkomst is 1 als precies één van twee invoerwaarden 1 is. Een webshopregel als "controleer de bestelling als precies één van de twee adressen in Nederland ligt" heeft die vorm. Geen rechte lijn scheidt die gevallen, dus een lineair model kan de regel niet leren, terwijl een netwerk met één verborgen laag van twee ReLU-eenheden dat wel kan. Met genoeg eenheden kan één verborgen laag in theorie bijna elke functie benaderen (het universal approximation theorem), al waarschuwt het boek dat de training die functie niet per se vindt.
Welke activatiefuncties kom je vaak tegen?
- ReLU (rectified linear unit):
max(0, x). Negatieve waarden worden 0, positieve gaan ongewijzigd door. Het Deep Learning-boek noemt ReLU de standaardaanbeveling voor moderne neurale netwerken. - Sigmoid:
1 / (1 + e^(−x)), die elk getal samendrukt tot een waarde tussen 0 en 1. Vóór ReLU gebruikten de meeste netwerken sigmoid of tanh. Sigmoid past nog steeds in de uitvoerlaag als het antwoord de kans op een ja is. - Tanh: drukt een getal samen tot een waarde tussen −1 en 1. Volgens het boek traint tanh meestal beter dan sigmoid als je een S-vormige functie nodig hebt.
- GELU (Gaussian error linear unit):
x · Φ(x), waarbij Φ de cumulatieve verdelingsfunctie van de standaardnormale verdeling is. Hendrycks en Gimpel (2016) beschrijven GELU als een afgevlakte ReLU. De eerste GPT van OpenAI (2018) en BERT van Google (2018) gebruiken het; de oorspronkelijke Transformer uit 2017 gebruikte nog ReLU. - SiLU of Swish:
x · σ(x), met σ de sigmoid. Shazeer (2020) combineerde die met een extra poort (gate) tot SwiGLU, en LLaMA van Meta (2023) gebruikt SwiGLU in plaats van ReLU. - Softmax: zet een rij scores om in kansen die samen 1 zijn, zoals de kans op elk mogelijk volgend token in een taalmodel. In een transformer zet softmax ook de scores van het attention-mechanisme om in gewichten.
Waar gaat het mis?
De training past de gewichten aan met backpropagation, op geleide van de gradiënt: hoeveel de fout verandert als een gewicht verandert. Sigmoid en tanh worden vlak bij grote invoerwaarden, waardoor de gradiënt heel klein wordt en het leren stilvalt. Daarom raadt het boek sigmoid in verborgen lagen af. ReLU heeft voor negatieve invoer een gradiënt van precies 0, en een eenheid die voor elke invoer 0 geeft, leert niets meer: de "dying ReLU" die Lu e.a. (2019) analyseren.
GELU en SiLU kosten meer rekenwerk dan ReLU. Hendrycks en Gimpel geven snellere benaderingen, zoals x · σ(1.702x).
Een betere activatiefunctie levert meetbare maar kleine winst op. In de tests van Shazeer daalde de log-perplexity (lager is beter) na de volledige training van 1,677 met ReLU naar 1,636 met SwiGLU. Een verklaring waarom de varianten werken, geeft hij niet: hij schrijft hun succes toe aan "divine benevolence".
Voorbeeld
Stel: een laag levert drie scores op: −2; 0,5 en 3.
- ReLU geeft 0; 0,5 en 3.
- Sigmoid geeft ongeveer 0,12; 0,62 en 0,95.
- GELU geeft ongeveer −0,05; 0,35 en 3,00: dicht bij ReLU, maar kleine negatieve waarden blijven bestaan.
- Softmax geeft ongeveer 0,006; 0,075 en 0,918. Als laatste stap van een classifier is dat 92% voor de derde optie.
Bronnen
- Goodfellow, Bengio & Courville: Deep Learning, chapter 6, Deep Feedforward Networks (2016)Web
- Hendrycks & Gimpel: Gaussian Error Linear Units (GELUs) (2016)arXiv
- Shazeer: GLU Variants Improve Transformer (2020)arXiv
- Vaswani et al.: Attention Is All You Need (2017)arXiv
- 3Blue1Brown: But what is a neural network? (Deep learning, chapter 1)YouTube
- Wikipedia: Activation functionWeb
