Die Softmax-Funktion, auch bekannt als Softargmax oder normalisierte Exponentialfunktion, ist eine mathematische Funktion, die einen Vektor reeller Zahlen in eine Wahrscheinlichkeitsverteilung umwandelt. Sie ist eine Verallgemeinerung der logistischen Funktion auf mehrere Dimensionen und wird häufig im maschinellen Lernen eingesetzt, insbesondere im Deep Learning für Mehrklassen-Klassifikationsprobleme.
Definition
Gegeben sei ein Eingabevektor \( \mathbf{z} = (z_1, \dots, z_K) \in \mathbb{R}^K \) mit \( K > 1 \). Die Softmax-Funktion \( \sigma: \mathbb{R}^K \to (0,1)^K \) ist für jede Komponente \( i \) definiert als:
\[ \sigma(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \]
Die Ausgabe ist ein Vektor positiver Werte, die sich zu 1 summieren, was sie als kategoriale Wahrscheinlichkeitsverteilung interpretierbar macht. Die Exponentialoperation verstärkt Unterschiede im Eingabewert, sodass größere Eingabewerte überproportional größere Wahrscheinlichkeiten erzeugen. Beispielsweise ergibt die Anwendung von Softmax auf den Vektor \( (1, 2, 8) \) ungefähr \( (0,001, 0,002, 0,997) \), wobei fast die gesamte Wahrscheinlichkeitsmasse dem größten Element zugewiesen wird.
Eigenschaften
Die Softmax-Funktion besitzt mehrere wichtige Eigenschaften:
- Ausgabebereich: Jede Komponente liegt strikt zwischen 0 und 1.
- Summe gleich eins: Die Summe aller Ausgabekomponenten ergibt 1.
- Ordnungserhaltung: Wenn \( z_i > z_j \), dann gilt \( \sigma(\mathbf{z})_i > \sigma(\mathbf{z})_j \).
- Invarianz gegenüber konstanten Verschiebungen: Das Hinzufügen einer Konstanten \( c \) zu allen Eingaben lässt die Ausgabe unverändert, da \( e^{z_i + c} / \sum_j e^{z_j + c} = e^{z_i} / \sum_j e^{z_j} \). Diese Eigenschaft wird häufig für numerische Stabilität genutzt, indem vor der Berechnung der maximale Eingabewert subtrahiert wird.
Temperaturparameter
Eine Variante der Softmax-Funktion führt einen Temperaturparameter \( \beta \) (oder dessen Kehrwert \( T = 1/\beta \)) ein:
\[ \sigma(\mathbf{z})_i = \frac{e^{\beta z_i}}{\sum_{j=1}^{K} e^{\beta z_j}} \]
Wenn \( \beta > 1 \), wird die Verteilung konzentrierter („schärfer“) um das Maximum der Eingaben, während \( 0 < \beta < 1 \) eine gleichmäßigere Verteilung erzeugt. Dieser Parameter wird häufig in Top-k-Sampling und Temperaturskalierung für generative KI-Modelle verwendet, um die Zufälligkeit der Ausgabe zu steuern.
Anwendungen
Softmax ist eine Kernkomponente in vielen neuronale-Netzwerk-Architekturen:
- Klassifikation: Als letzte Aktivierungsschicht wandelt sie rohe Logits in Klassenwahrscheinlichkeiten um und ermöglicht das Training mit Kreuzentropie-Verlust.
- Aufmerksamkeitsmechanismen: In Transformer-Modellen wird Softmax verwendet, um Aufmerksamkeitsgewichte über Sequenzpositionen zu berechnen, wie in Multi-Head-Attention zu sehen.
- Verstärkendes Lernen: Sie wandelt Handlungspräferenzen in eine stochastische Politik um.
- Mischmodelle: Sie wird verwendet, um Mischgewichte in Modellen wie Gaußschen Mischmodellen zu berechnen.
Numerische Stabilität
Die direkte Berechnung der Exponentialfunktion kann bei großen Eingaben zu Überlauf führen. Ein übliches Mittel ist, vor der Exponentiation den maximalen Eingabewert zu subtrahieren:
\[ \sigma(\mathbf{z})_i = \frac{e^{z_i - \max(\mathbf{z})}}{\sum_{j=1}^{K} e^{z_j - \max(\mathbf{z})}} \]
Diese Transformation ändert das Ergebnis aufgrund der Verschiebungsinvarianz nicht, stellt jedoch sicher, dass der größte Exponent null ist, wodurch ein Überlauf verhindert wird.
Verwandte Konzepte
Die Softmax-Funktion ist eng mit der logistischen Funktion verwandt, die ihr Spezialfall für \( K = 2 \) ist. Sie tritt auch im Zusammenhang mit Verlustfunktionen wie Kreuzentropie auf sowie bei der Beam-Suche-Dekodierung für die Sequenzgenerierung. Bei der Inferenz von großen Sprachmodellen wird Softmax auf Logits angewendet, um Token-Wahrscheinlichkeiten zu erhalten, oft mit Temperaturanpassungen, um Kreativität und Kohärenz auszubalancieren.