視覺神經網路基礎

softmax(正規化指數函數)

Softmax 把一個任意實數分數構成的向量轉成一個機率分布:在一組互斥類別上、一串總和為 1 的非負數。若網路最終層為類別貓、狗、鳥輸出原始分數(logits)如 (2.0, 1.0, 0.1),softmax 會把它轉成像 (0.66, 0.24, 0.10) 的東西:最大的分數成為最可能的類別,但每個類別都保有一份。它是 sigmoid 的多類別推廣。

對 logit 向量 z = (z1, ..., zK),softmax(z)_i = e^(zi) /(對所有 j 的 e^(zj) 之總和)。取指數使每一項為正並放大差異;除以總和把它們正規化成相加為 1。這個名字反映它是 argmax(哪個類別最大)的平滑可微近似:與硬性 argmax 不同,它是連續的,梯度得以流動,卻又把質量集中在最大的 logit 上。注意 softmax 對所有 logit 同加一個常數具有不變性,softmax(z + c) = softmax(z),這個事實被用於數值穩定。

溫度 T 對 logits 重新縮放,softmax(z/T):高 T 把分布壓平趨向均勻(更不確定),低 T 把它銳化趨向 one-hot(更有信心),而 T 趨近 0 則回到硬性 argmax。溫度在知識蒸餾、生成模型的取樣、以及事後校準(calibration)中都很核心。訓練好的分類器其 softmax 機率往往過度自信、校準不佳,所以這些原始數字未經檢查不應被當作真實頻率。

Softmax 是單標籤影像分類的標準最終層(每個 ImageNet 模型,從 AlexNet 到 ResNet 到 ViT,都以一個對類別集合的 softmax 收尾),它也以逐像素形式出現在語意分割、以逐查詢形式出現在 DETR 式偵測頭,並出現在注意力裡作為將注意力權重在各鍵(keys)上正規化的運算。它幾乎總是與交叉熵損失搭配;兩者結合成一個數值穩定、出奇簡潔的梯度:預測機率減去 one-hot 目標。

Logits (2.0, 1.0, 0.1):指數 (7.39, 2.72, 1.11) 總和 11.21;softmax = (0.659, 0.242, 0.099)。先減去最大值得到 logits (0, -1, -1.9),指數 (1, 0.368, 0.150) 總和 1.518,得出相同的 (0.659, 0.242, 0.099),展示了平移不變性與數值安全。

陷阱:softmax 假設類別互斥(恰有一個正確)。對多個物件並存的多標籤影像,請用各自獨立的 sigmoid,而非 softmax。此外切勿套用兩次 softmax,並把原始 logits(而非 softmax 後的機率)餵給框架的交叉熵,後者會在內部以穩定數值套用 softmax。

又稱
softmax functionnormalized exponential正規化指數函數