Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Tot nu toe hebben we gezien hoe een perceptron met een sigmoïde activatiefunctie gebruikt kan worden voor binaire klassificatie. We zagen ook hoe multi-layer perceptrons complexere beslissingsgrenzen kunnen leren door meerdere lagen van neuronen te combineren.

Maar wat als we meer dan twee klassen hebben? Bijvoorbeeld: het voorspellen van handgeschreven cijfers (0-9) of het herkennen van verschillende diersoorten in afbeeldingen?

Softmax activatiefunctie

Voor binaire klassificatie gebruiken we typisch één output neuron met een logistische activatiefunctie. De output van dat neuron ligt tussen 0 en 1. We interpreteren dit als een conditionele kans y^=P(o^=1∣x)\hat{y} = P(\hat{o}=1|\mathbf{x}). Door een decision boundary te kiezen, wordt de eigenlijke output o^\hat{o} binair.

Voor multi-class classificatie met KK klassen hebben we een andere aanpak nodig:

  • we voorzien KK output neuronen: één voor elke klasse

  • de waarde van elke output-neuron stelt opnieuw een conditionele kans voor: P(o=k∣x)P(o=k|\mathbf{x})

  • om een geldige kansverdeling te bekomen, moet de som van alle outputs moet 1 zijn

Dit is precies wat de softmax activatiefunctie doet.

De softmax functie transformeert een vector van KK reële getallen naar een kansverdeling:

softmax(z)k=ezk∑j=1Kezj\text{softmax}(\mathbf{z})_k = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}}

De softmax activatiefunctie past dus de exponentiële functie toe op elk element zkz_k en normaliseert vervolgens door te delen door de som van alle exponentiële waarden.

Hierdoor liggen alle outputs tussen 0 en 1, is de som van alle outputs exact 1 en krijgen hogere zkz_k waarden hogere kansen. De softmax is een generalisatie van de logistische activatiefunctie naar meerdere dimensies

Gebruik:

  • Voor een input x\mathbf{x} produceert het netwerk outputs (of logits) z=h(x,W)\mathbf{z} = h(\mathbf{x}, \mathbf{W})

  • Na softmax activatie: softmax(z)k=y^k=P(o^k=k∣x)\text{softmax}(\mathbf{z})_k = \hat{y}_k = P(\hat{o}_k=k|\mathbf{x}) voor elke klasse kk

  • Predictie: kies de klasse met de hoogste waarschijnlijkheid arg⁡max⁡softmax(z)\arg\max \text{softmax}(\mathbf{z})

Source
Source
<Figure size 1600x1200 with 1 Axes>

Implicaties voor gradiëntberekening

De softmax activatiefunctie heeft belangrijke gevolgen voor de backward pass tijdens het trainen van het netwerk:

Gekoppelde outputs

In tegenstelling tot de logistische activatiefunctie, waarbij elk neuron onafhankelijk geactiveerd wordt, zijn de softmax outputs onderling afhankelijk. De output van één neuron beïnvloedt alle andere outputs door de normalisatie. Dit betekent dat bij het berekenen van de gradiënt met betrekking tot een bepaald zkz_k, alle softmax outputs een rol spelen.

Partiële afgeleiden

Voor de partiële afgeleide van softmax output ii naar logit jj geldt:

∂softmax(z)i∂zj={softmax(z)i(1−softmax(z)i)als i=j−softmax(z)i⋅softmax(z)jals i≠j\frac{\partial \text{softmax}(\mathbf{z})_i}{\partial z_j} = \begin{cases} \text{softmax}(\mathbf{z})_i(1 - \text{softmax}(\mathbf{z})_i) & \text{als } i = j \\ -\text{softmax}(\mathbf{z})_i \cdot \text{softmax}(\mathbf{z})_j & \text{als } i \neq j \end{cases}

Deze formule toont dat:

  • De diagonale termen (i=ji=j) lijken op de afgeleide van de logistische functie: σ(z)(1−σ(z))\sigma(z)(1-\sigma(z))

  • De off-diagonale termen (i≠ji \neq j) zijn negatief en koppelen verschillende outputs aan elkaar

Cross-entropy loss

In de praktijk wordt softmax bijna altijd gecombineerd met de categorical cross-entropy loss functie:

LCE=−∑k=1Kyklog⁡(softmax(z)k)\mathcal{L}_{CE} = -\sum_{k=1}^{K} y_k \log(\text{softmax}(\mathbf{z})_k)

waarbij yky_k de one-hot encoded target is (dus yk=1y_k = 1 voor de juiste klasse en yk=0y_k = 0 voor alle andere klassen).

Een elegante eigenschap van deze combinatie is dat de gradiënt van de loss naar de logits zeer eenvoudig wordt:

∂LCE∂zk=softmax(z)k−yk\frac{\partial \mathcal{L}_{CE}}{\partial z_k} = \text{softmax}(\mathbf{z})_k - y_k

Dit is de voorspelde kans minus de werkelijke target. Deze eenvoudige vorm maakt de backward pass efficiënt en numeriek stabiel, ondanks de complexiteit van de softmax functie zelf.