1. 程式人生 > >softmax詳解

softmax詳解

假設 反向 gis 你在 映射 分類 存在 learn back

原文地址:https://blog.csdn.net/bitcarmanlee/article/details/82320853

1.softmax初探 在機器學習尤其是深度學習中,softmax是個非常常用而且比較重要的函數,尤其在多分類的場景中使用廣泛。他把一些輸入映射為0-1之間的實數,並且歸一化保證和為1,因此多分類的概率之和也剛好為1。
首先我們簡單來看看softmax是什麽意思。顧名思義,softmax由兩個單詞組成,其中一個是max。對於max我們都很熟悉,比如有兩個變量a,b。如果a>b,則max為a,反之為b。用偽碼簡單描述一下就是 if a > b return a; else b。
另外一個單詞為soft。max存在的一個問題是什麽呢?如果將max看成一個分類問題,就是非黑即白,最後的輸出是一個確定的變量。更多的時候,我們希望輸出的是取到某個分類的概率,或者說,我們希望分值大的那一項被經常取到,而分值較小的那一項也有一定的概率偶爾被取到,所以我們就應用到了soft的概念,即最後的輸出是每個分類被取到的概率。 2.softmax的定義 首先給一個圖,這個圖比較清晰地告訴大家softmax是怎麽計算的。 (圖片來自網絡) 假設有一個數組V,ViVi表示V中的第i個元素,那麽這個元素的softmax值為:
Si=ei∑jejSi=ei∑jej
該元素的softmax值,就是該元素的指數與所有元素指數和的比值。 這個定義可以說很簡單,也很直觀。那為什麽要定義成這個形式呢?原因主要如下。
1.softmax設計的初衷,是希望特征對概率的影響是乘性的。
2.多類分類問題的目標函數常常選為cross-entropy。即L=?∑ktk?lnP(y=k)L=?∑ktk?lnP(y=k),其中目標類的tktk為1,其余類的tktk為0。
在神經網絡模型中(最簡單的logistic regression也可看成沒有隱含層的神經網絡),輸出層第i個神經元的輸入為ai=∑dwidxdai=∑dwidxd。
神經網絡是用error back-propagation訓練的,這個過程中有一個關鍵的量是?L/?αi?L/?αi。後面我們會進行詳細推導。 3.softmax求導 前面提到,在多分類問題中,我們經常使用交叉熵作為損失函數
Loss=?∑itilnyiLoss=?∑itilnyi
其中,titi表示真實值,yiyi表示求出的softmax值。當預測第i個時,可以認為ti=1ti=1。此時損失函數變成了:
Lossi=?lnyiLossi=?lnyi
接下來對Loss求導。根據定義:
yi=ei∑jejyi=ei∑jej
我們已經將數值映射到了0-1之間,並且和為1,則有:
ei∑jej=1?∑j≠iej∑jejei∑jej=1?∑j≠iej∑jej 接下來開始求導
?Lossi?i=??lnyi?i=?(?lnei∑jej)?i=?1ei∑jej??(ei∑jej)?i=?∑jejei??(1?∑j≠iej∑jej)?i=?∑jejei?(?∑j≠iej)??(1∑jej)?i=∑jej?∑j≠iejei??ei(∑jej)2=∑j≠iej∑jej =?(1?ei∑jej)=yi?1?Lossi?i=??lnyi?i=?(?lnei∑jej)?i=?1ei∑jej??(ei∑jej)?i =?∑jejei??(1?∑j≠iej∑jej)?i=?∑jejei?(?∑j≠iej)??(1∑jej)?i=∑jej?∑j≠iejei??ei(∑jej)2=∑j≠iej∑jej =?(1?ei∑jej)=yi?1 上面的結果表示,我們只需要正想求出yiyi,將結果減1就是反向更新的梯度,導數的計算是不是非常簡單! 4.softmax VS k個二元分類器 如果你在開發一個音樂分類的應用,需要對k種類型的音樂進行識別,那麽是選擇使用 softmax 分類器呢,還是使用 logistic 回歸算法建立 k 個獨立的二元分類器呢?
這一選擇取決於你的類別之間是否互斥,例如,如果你有四個類別的音樂,分別為:古典音樂、鄉村音樂、搖滾樂和爵士樂,那麽你可以假設每個訓練樣本只會被打上一個標簽(即:一首歌只能屬於這四種音樂類型的其中一種),此時你應該使用類別數 k = 4 的softmax回歸。(如果在你的數據集中,有的歌曲不屬於以上四類的其中任何一類,那麽你可以添加一個“其他類”,並將類別數 k 設為5。)
如果你的四個類別如下:人聲音樂、舞曲、影視原聲、流行歌曲,那麽這些類別之間並不是互斥的。例如:一首歌曲可以來源於影視原聲,同時也包含人聲 。這種情況下,使用4個二分類的 logistic 回歸分類器更為合適。這樣,對於每個新的音樂作品 ,我們的算法可以分別判斷它是否屬於各個類別。
現在我們來看一個計算視覺領域的例子,你的任務是將圖像分到三個不同類別中。(i) 假設這三個類別分別是:室內場景、戶外城區場景、戶外荒野場景。你會使用sofmax回歸還是 3個logistic 回歸分類器呢? (ii) 現在假設這三個類別分別是室內場景、黑白圖片、包含人物的圖片,你又會選擇 softmax 回歸還是多個 logistic 回歸分類器呢?
在第一個例子中,三個類別是互斥的,因此更適於選擇softmax回歸分類器 。而在第二個例子中,建立三個獨立的 logistic回歸分類器更加合適。 參考文獻:
1.https://www.zhihu.com/question/40403377
2.http://deeplearning.stanford.edu/wiki/index.php/Softmax回歸

softmax詳解