log_softmax與softmax的區別


1. Softmax

Softmax是指數標准化函數,又稱為歸一化指數函數,將多個神經元的輸出,映射到 (0,1) 范圍內,並且歸一化保證和為1,從而使得多分類的概率之和也剛好為1。其公式如下:

\[S_{i}=\frac{e^{z_i}}{\sum_{j}^{K}{e^{z^j}}} \]

通俗理解,softmax函數的結果代表了類別分布,也就是說K個不同可能結果的概率分布。所以softmax經常用於深度學習和機器學習的分類任務中。
但是Softmax會存在上溢出和下溢出的情況,這是因為Softmax會進行指數操作,當上一層的輸出,也就是Softmax的輸入比較大的時候,可能會產生上溢出,超出float的能表示范圍;同理,當輸入為負值且絕對值比較大的時候,分子分母會極小,接近0,從而導致下溢出。這時候log_Softmax能夠很好的解決溢出問題,且可以加快運算速度,提升數據穩定性。

2. log_Softmax

log_Softmax其實就是對Softmax取對數,數學表達式如下所示:

\[L_{i}=log\frac{e^{z_i}}{\sum_{j}^{K}{e^{z^j}}} \]

盡管,數學上log_Softmax是對Softmax取對數,但是,實際操作中是通過下面的式子來實現的:

\[L_{i}=log\frac{e^{z_i}}{\sum_{j}^{K}{e^{z^j}}}=log\frac{e^{z_i}/e^{M}}{\sum_{j}^{K}{e^{z^j/e^{M}}}}=log\frac{e^{(z_i-M)}}{\sum_{j}^{K}{e^{(z^j-M)}}}=(z_i-M)-log(\sum_{j}^{K}{e^{(z^j-M)}}) \]

其中,\(M=max(z_i),i=(1,...,K)\),在加快運算速度的同時,保證數據的穩定性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM