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