Softmax 函數和它的誤解
來源:深度學習愛好者 CV技術指南
[ 導讀 ]Softmax是個大家都熟悉的激活函數,然而,很多人只知道它的表達式,它在網絡中的位置,而對一些具體的原因和細節卻回答不上來。這篇文章給了相應的介紹。
Softmax 是一個數學函數,用于對 0 和 1 之間的值進行歸一化。
在本文中,您將了解:
- 什么是 Softmax 激活函數及其數學表達式?
- 它是如何使用 argmax() 函數實現的?
- 為什么 Softmax 只用在神經網絡的最后一層?
- 對 Softmax 的誤解
什么是 Softmax 激活函數及其數學表達式?
Softmax 用于對 0 和 1 之間的那些加權和值進行歸一化,并且它們的和等于 1,這就是為什么大多數人認為這些值是類的概率,但這是一種誤解,我們將在本文中討論它。
實現 Softmax 函數的公式:
使用這個數學表達式,我們計算每類數據的歸一化值。這里 θ(i) 是我們從展平層得到的輸入。
計算每個類的歸一化值,分子是類的指數值,分母是所有類的指數值之和。使用 Softmax 函數,我們得到 0 到 1 之間的所有值,所有值的總和變為等于 1。因此人們將其視為概率,這是他們的誤解。
它如何使用 argmax() 函數?
現在我們每個類都有幾個值,為了分類輸入屬于哪個類,Softmax 使用 argmax() 給出了應用 Softmax 后具有最大值的值的索引。
為什么 Softmax 只用在神經網絡的最后一層?
如果我們看到其他激活函數,如 relu、leaky relu 和 sigmoid,它們都使用唯一的單個值來帶來非線性。他們看不到其他值是什么。
但是在 Softmax 函數中,在分母中,它取所有指數值的總和來歸一化所有類的值。它考慮了范圍內所有類的值,這就是我們在最后一層使用它的原因。要通過分析所有的值來知道Input屬于哪個類。
對 Softmax 的誤解
關于 Softmax 的第一個也是最大的誤解是,它通過歸一化值的輸出是每個類的概率值,這完全錯誤。這種誤解是因為這些值的總和為 1,但它們只是歸一化值而不是類的概率。
在最后一層并不是單獨使用 Sotmax,我們更喜歡使用 Log Softmax,它只是對來自 Softmax 函數的歸一化值進行對數。
Log Softmax 在數值穩定性、更便宜的模型訓練成本和 Penalizes Large error(誤差越大懲罰越大)方面優于 Softmax。
這就是在神經網絡中用作激活函數的 Softmax 函數。相信讀完本文后你對它已經有了一個清楚的了解。
原文鏈接:https://medium.com/artificialis/softmax-function-and-misconception-4248917e5a1c
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。