Softmax
En normaliseret eksponentialfunktion, der omdanner en vektor af vilkårlige reelle tal til en sandsynlighedsfordeling.
Kort fortalt
En matematisk funktion, der gør tal om til sandsynligheder, så de summer til 1.
- Kategori
- teknik
- Niveau
- øvet
- Udtale
- /ˈsɒftmæks/
Betydninger
2- 1
En funktion, der tager en vektor af K reelle tal (logits) og returnerer en sandsynlighedsvektor, hvor hvert element er i intervallet (0,1) og summen er 1.
- Softmax-funktionen anvendes ofte i sidste lag af neurale netværk til flerklasseklassifikation. — Deep Learning, Goodfellow et al., 2016
- Logits [2.0, 1.0, 0.1] transformeres via softmax til sandsynligheder [0.659, 0.242, 0.099].
- 2
I attention-mekanismer anvendes en variant (skaleret softmax) til at normalisere opmærksomhedsvægte, så de summer til 1 over nøglerne.
- Transformer-modellen bruger skaleret dot-produkt opmærksomhed med softmax til at beregne vægte for hver position. — Attention Is All You Need, Vaswani et al., 2017
Hvornår bruges det
Bruges oftest i sidste lag af klassifikationsmodeller til at omdanne logits til sandsynligheder, så man kan vælge den mest sandsynlige klasse eller beregne krydsentropitab.
Formel
softmax(x_i) = exp(x_i) / Σⱼ exp(x_j) for i = 1..KKodeeksempel
import numpy as np
def softmax(x):
e_x = np.exp(x - np.max(x))
return e_x / e_x.sum(axis=-1, keepdims=True)
logits = np.array([2.0, 1.0, 0.1])
probs = softmax(logits)
print(probs) # [0.65900114 0.24243297 0.09856589]NumPy-implementering af softmax med numerisk stabilitet.
Oprindelse
Kombination af 'soft' (blød) og 'max' (maksimum), da funktionen er en differentierbar tilnærmelse til en argmax-funktion.
Afledte ord
3Kilder
2- Deep Learning (Goodfellow, Bengio, Courville)
- Attention Is All You Need (Vaswani et al., 2017)