Logits
Die rohen, unnormalisierten Ausgabewerte eines neuronalen Netzes, bevor sie durch Softmax in Wahrscheinlichkeiten umgewandelt werden.
Eine mathematische Funktion, die einen Vektor von Zahlen in eine Wahrscheinlichkeitsverteilung umwandelt – zentral für Klassifikation und Attention in neuronalen Netzen.
Softmax ist eine Aktivierungsfunktion, die in der letzten Schicht von Klassifikationsmodellen eingesetzt wird. Sie wandelt die rohen Ausgaben (Logits) des Modells in eine Wahrscheinlichkeitsverteilung um: Alle Werte werden positiv und summieren sich zu 1. Das ermöglicht es, die Ausgaben als Wahrscheinlichkeiten zu interpretieren – “72% Katze, 26% Hund, 2% Vogel”. In Sprachmodellen entscheidet Softmax, welches Token als nächstes generiert wird.
Softmax wandelt beliebige Zahlen in Wahrscheinlichkeiten um. Egal wie groß oder klein die Eingaben sind – die Ausgaben summieren sich immer zu 1.
Beispiel:
Logits (rohe Scores): [2.0, 1.0, 0.1]
Softmax:
e^2.0 / (e^2.0 + e^1.0 + e^0.1) = 7.39 / 10.49 = 0.70
e^1.0 / (e^2.0 + e^1.0 + e^0.1) = 2.72 / 10.49 = 0.26
e^0.1 / (e^2.0 + e^1.0 + e^0.1) = 1.11 / 10.49 = 0.04
Wahrscheinlichkeiten: [0.70, 0.26, 0.04]
Summe: 1.0 ✓
Wo wird Softmax verwendet?
softmax(x_i) = e^(x_i) / Σ e^(x_j)
softmax(x_i, T) = e^(x_i/T) / Σ e^(x_j/T)
T = 0.1: Sehr spitz (fast deterministisch)
T = 1.0: Standard
T = 2.0: Flacher (mehr Zufälligkeit)
import torch
import torch.nn.functional as F
logits = torch.tensor([2.0, 1.0, 0.1])
# Standard Softmax
probs = F.softmax(logits, dim=0)
# tensor([0.6590, 0.2424, 0.0986])
# Mit Temperatur
temperature = 0.5
probs_cold = F.softmax(logits / temperature, dim=0)
# tensor([0.8360, 0.1420, 0.0220]) # Spitzer
# Problem: e^1000 = Overflow
# Lösung: Subtrahiere Maximum
def stable_softmax(x):
x_max = x.max()
exp_x = torch.exp(x - x_max) # Verhindert Overflow
return exp_x / exp_x.sum() Softmax ist wie ein Wahlsystem, das Stimmen in Prozente umrechnet: Egal wie viele Stimmen jeder Kandidat hat, am Ende bekommt jeder einen Prozentanteil, und alle zusammen ergeben 100%.
Wandelt beliebige Zahlen (Logits) in Wahrscheinlichkeiten um
Ausgaben summieren sich immer zu 1 (100%)
Verwendet in Klassifikation (Output Layer) und Attention
Klassifikation
Wahrscheinlichkeiten für jede Klasse berechnen
Attention
Attention-Gewichte normalisieren
Token-Vorhersage
Wahrscheinlichkeitsverteilung über Vokabular
Softmax verstärkt Unterschiede exponentiell: Große Werte werden noch größer, kleine noch kleiner. Das macht die Verteilung 'spitzer' und die Entscheidung klarer. Einfache Normalisierung würde das nicht tun.
Temperatur skaliert die Logits vor Softmax: softmax(logits/T). Hohe Temperatur → flachere Verteilung (mehr Zufälligkeit). Niedrige Temperatur → spitzere Verteilung (deterministischer).
Sigmoid für binäre oder Multi-Label-Klassifikation (jede Klasse unabhängig). Softmax für Multi-Class-Klassifikation (genau eine Klasse, Summe = 1).