Een eenvoudige uitleg van de Softmax Functie

Softmax zet willekeurige reële waarden om in waarschijnlijkheden, die vaak nuttig zijn bij Machine Leren. De wiskunde erachter is vrij eenvoudig: gegeven een aantal getallen,

  1. Verhoog e (de wiskundige constante) tot de macht van elk van die getallen.
  2. Som alle exponentialen (machten van eee) bij elkaar op. Dit resultaat is de noemer.
  3. Gebruik de exponentiaal van elk getal als teller.
  4. Kans=NumeratorDenominator{Probabiliteit} = \frac{Numerator}}{Tekst{Denominator}}Kans=DenominatorNumerator.

Franciëler geformuleerd voert Softmax de volgende transformatie uit op nnn getallen x1…xnx_1 \lots x_nx1…xn:

s(xi)=exi∑j=1nexjs(x_i) = \frac{e^{x_i}}{sum_{j=1}^n e^{x_j}}s(xi)=∑j=1nexjexi

De uitkomsten van de Softmax-transformatie liggen altijd in het bereik en tellen op tot 1. Ze vormen dus een kansverdeling.

Een eenvoudig voorbeeld

Zeg dat we de getallen -1, 0, 3, en 5 hebben. Eerst berekenen we de noemer:

Noemer=e-1+e0+e3+e5=169.87begin{aligned}text{Denominator} &= e^{-1} + e^0 + e^3 + e^5 \&= \{169.87} \eind{aligned}Denominator=e-1+e0+e3+e5=169.87

Dan kunnen we de tellers en kansen berekenen:

xxx Numerator (exe^xex) Kans (ex169.87frac{e^x}{169.87}169.87ex)
-1 0.368 0.002
0 1 0.006
3 20.09 0.118
5 148,41 0,874

Hoe groter de xxx, hoe groter de waarschijnlijkheid. Merk ook op dat de waarschijnlijkheden allemaal opgeteld 1 zijn, zoals eerder vermeld.

Softmax implementeren in Python

Het gebruik van numpy maakt dit supergemakkelijk:

import numpy as npdef softmax(xs): return np.exp(xs) / sum(np.exp(xs))xs = np.array()print(softmax(xs)) # 
np.exp() verheft e tot de macht van elk element in de input-array.

Opmerking: voor meer gevorderde gebruikers wilt u dit waarschijnlijk implementeren met de LogSumExp-truc om problemen met underflow/overflow te voorkomen.

Waarom is Softmax nuttig?

Stelt u zich eens voor dat u een neuraal netwerk bouwt om de vraag te beantwoorden: Is dit een foto van een hond of van een kat?

Een gangbaar ontwerp voor dit neurale netwerk laat het twee reële getallen uitvoeren, een voor de hond en de ander voor de kat, en Softmax op deze waarden toepassen. Stel bijvoorbeeld dat het netwerk als uitvoer geeft :

Animal xxx exe^xex Probability
Dog -1 0.368 0.047
Kat 2 7.39 0.953

Dit betekent dat ons netwerk er voor 95,3% zeker van is dat de foto van een kat is. Softmax laat ons classificatievragen beantwoorden met waarschijnlijkheden, die bruikbaarder zijn dan eenvoudiger antwoorden (b.v. binair ja/nee).

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.