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. 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. 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..K

Kodeeksempel

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

3

Kilder

2
  • Deep Learning (Goodfellow, Bengio, Courville)
  • Attention Is All You Need (Vaswani et al., 2017)