透過 MCP 連接 →

輸入計算

請輸入 K 個實數,以逗號、空格或換行分隔。

數學公式

廣告

結果

Softmax σ(z)
0.0900305732, 0.2447284711, 0.6652409558
機率分布(總和為 1)
向量長度 K 3
輸出值總和 1
Argmax(索引從 1 起算) 3
最大機率 0.6652409558

什麼是 Softmax 函數?

Softmax 函數會接收一個含有 K 個實數的向量,並將其轉換為一組機率分布:每個輸出值都嚴格落在 0 與 1 之間,而且全部 K 個輸出值相加恰好等於 1。它是神經網路分類器輸出層最常用的激活函數,能把模型輸出的原始分數(logits)轉換成各類別的機率。由於 Softmax 本身是無量綱的,因此輸入值都是純數值,不帶任何單位。

扁平圖示展示三個實數的向量轉換為總和為一的三個機率長條
Softmax 將實數向量映射為總和為 1 的機率分布。

如何使用本計算機

在輸入框中填入你的向量,數字之間以逗號、空格或換行分隔皆可(例如 1, 2, 3)。數字可以是正數、負數、零或小數。按下計算後,你會得到每個元素對應的 Softmax 機率、所有輸出值的總和(理論上應等於 1),以及 argmax——也就是最大機率所在位置的索引(從 1 開始計算)。

公式解析

對於第 j 個元素,Softmax 的計算方式為 \(\sigma(z)_j = e^{z_j} / \sum_{k} e^{z_k}\)。取指數可讓每一項都變成正值,再除以總和進行正規化,使所有結果加總為 1。為了確保數值穩定,本計算機在取指數之前會先從每個元素中減去最大值 \(m\):

$$\sigma(z)_j = \frac{e^{z_j-m}}{\displaystyle\sum_{k} e^{z_k-m}}$$

由於共同因子 \(e^{-m}\) 會互相抵消,因此結果完全相同,同時又能避免在輸入值過大時發生溢位。

Advertisement
展示 softmax 公式結構的扁平圖示,指數除以指數之和
每個輸出都是某個元素的指數除以所有元素指數之和。

實際範例

以 \(z = (1, 2, 3)\) 為例:\(e^{1} = 2.71828\)、\(e^{2} = 7.38906\)、\(e^{3} = 20.08554\),總和為 \(30.19287\)。各項分別除以總和後得到

$$\sigma = (0.09003,\ 0.24473,\ 0.66524)$$

加總恰好為 1。argmax 為索引 3,對應最大的輸入值,其機率為 \(0.66524\)。

常見問題

為什麼輸出值的總和永遠是 1?因為每一項指數值都會除以所有指數值的總和,這種正規化處理保證了總和必定為 1。

如果所有輸入值都相等會怎樣?結果會是均勻分布,每個輸出值都等於 \(1/K\)。

對每個輸入值都加上一個常數,會改變結果嗎?不會。Softmax 具有平移不變性:對所有輸入值同時加上相同的常數 \(c\),輸出結果不變——這正是為什麼減去最大值是安全做法的原因。

最後更新: