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