Softmax
Jak działa
Dla wektora wejściowego z = [z₁, z₂, ..., zₙ], softmax oblicza: softmax(zᵢ) = exp(zᵢ) / Σⱼ exp(zⱼ). Eksponent sprawia, że większe wartości są wzmacniane, a suma normalizuje do 1. W mechanizmie uwagi transformerów softmax jest stosowany do macierzy iloczynów skalarnych Q·Kᵀ.
Rozwiązany problem
Surowe wyjście sieci neuronowej (logity) to liczby nieograniczone, które trudno interpretować jako prawdopodobieństwa. Softmax konwertuje je na poprawny rozkład prawdopodobieństwa (wartości 0–1 sumujące się do 1).
Implementacja
exp(x) dla x>709 przekracza float64 range — naiwne softmax(x) = exp(x)/sum(exp(x)) powoduje overflow lub underflow. Stabilna implementacja: softmax(x - max(x)).
Gdy jeden logit jest znacznie większy od pozostałych, softmax zwraca wartości bliskie 0 lub 1 — gradienty zanikają. W attention mechanizmach prowadzi to do "attention collapse" (jeden token dominuje).