Funkcja softmax bierze wektor dowolnych liczb rzeczywistych (tzw. logitów) i zamienia go w rozkład prawdopodobieństwa: każdy wynik jest dodatni, mieści się w przedziale od 0 do 1, a wszystkie razem sumują się dokładnie do jedynki. Dzięki temu surowe, niezrozumiałe liczby z sieci neuronowej dostają interpretację typu „model jest na 87% pewny, że to kot”. Matematycznie dla każdego elementu liczysz exp(x_i) i dzielisz przez sumę exp wszystkich elementów wektora.
Jak to działa i do czego służy
Eksponenta robi tu dwie rzeczy: gwarantuje wartości dodatnie i mocno wyolbrzymia różnice. Logit 5 obok logitu 2 po przejściu przez softmax dostanie znacznie większy udział niż wynikałoby to z prostego stosunku. To celowe — chcesz, żeby model wyraźnie wskazywał faworyta, a nie rozkładał ręce po równo. Softmax siedzi najczęściej w ostatniej warstwie klasyfikatorów wieloklasowych: rozpoznawanie obrazów, klasyfikacja tekstu, a w modelach językowych przy wyborze kolejnego tokenu ze słownika liczącego dziesiątki tysięcy pozycji.
W treningu softmax prawie zawsze idzie w parze z funkcją straty cross-entropy, bo ich pochodne ładnie się skracają i gradient liczy się tanio i stabilnie.
Przykład z praktyki
W PyTorchu masz to gotowe. Surowe logity z modelu zamieniasz na prawdopodobieństwa jednym wywołaniem:
probs = torch.softmax(logits, dim=-1)
Ważne jest dim — wskazujesz oś, wzdłuż której ma się sumować do jedynki (zwykle ostatnia, czyli klasy). Przy treningu zwykle nie wołasz softmaxa ręcznie: używasz nn.CrossEntropyLoss, które przyjmuje logity i robi softmax wewnętrznie w stabilniejszej numerycznie wersji (log-softmax).
Częste błędy i mity
- Podwójny softmax. Klasyk: robisz
softmax, a potem wrzucasz wynik doCrossEntropyLoss, które robi softmax jeszcze raz. Model się uczy wolno albo wcale. Tej funkcji straty dawaj surowe logity. - Mylenie z sigmoidem. Softmax jest do klas wzajemnie wykluczających się (jedna poprawna odpowiedź). Gdy etykiet może być kilka naraz (multi-label), używasz osobnych sigmoidów na każdym wyjściu.
- „Prawdopodobieństwo to pewność”. Nieprawda. Model potrafi dać 0.99 i być w błędzie — to przekonanie, nie kalibracja. Pamiętaj o temperaturze: dzielenie logitów przez
T > 1wygładza rozkład,T < 1go wyostrza.
Pojęcia powiązane: logity, cross-entropy, sigmoid, warstwa wyjściowa, regresja logistyczna (softmax to jej uogólnienie na wiele klas), temperatura w samplowaniu, argmax.