softmax、cross entropy和softmax loss學習筆記


之前做手寫數字識別時,接觸到softmax網絡,知道其是全連接層,但沒有搞清楚它的實現方式,今天學習Alexnet網絡,又接觸到了softmax,果斷仔細研究研究,有了softmax,損失函數自然不可少。一起學習記錄一下。

主要參考的博文:http://blog.csdn.net/u014380165/article/details/77284921

侵刪!

先講softmax。

softmax是一個全連接層,功能是將卷積神經網絡計算后的多個神經元輸出,映射到(0,1)區間,給出每種分類的概率情況。下面主要記錄全連接層到損失層是如何計算的。

softmax工作圖

圖的等號左邊為全連接,w為權值,x是全連接層的輸入(卷積運算激活池化后的特征向量,不一定為N*1,可以為S*P,這里只不過為了便於理解計算,把向量拉直為SP*1,即N*1,N=SP)假設全連接層前面連接的是一個卷積層,這個卷積層的輸出是100個特征(也就是我們常說的feature map的channel為100),每個特征的大小是4*4,那么在將這些特征輸入給全連接層之前會將這些特征flat成N*1的向量(這個時候N就是100*4*4=1600)。再看W,W是T*N的矩陣,其中N是由輸入決定的,T是有網絡輸出的類別決定的,比如輸出為10個類,則T=10.W和x運算后得到一個T*1的向量,向量大小沒有限制。下一步就是softmax,softmax作用是將T個輸入映射為概率,剛才打比方說有10個類別,則每個輸出值就是每種類別的概率,顯然概率之和為。分母為所有情況之和,分子為各種單一情況運算。

終於轉化為概率了,那接下來為了衡量好壞,當然是選擇誤差函數了,因為是概率輸入,當然理所當然使用交叉熵了,

Cross entropy

首先理一下熵的概念,現有關於樣本集的2個概率分布p和q,其中p為真實分布,q非真實分布。按照真實分布p來衡量識別一個樣本的所需要的編碼長度的期望(即平均編碼長度)為:

如果使用錯誤分布q來表示來自真實分布p的平均編碼長度,則應該是:

其中第一個期望為信息熵,反應的是香農信息量的期望,第二個為交叉熵。信息熵代表的是隨機變量或整個系統的不確定性,熵越大,隨機變量或系統的不確定性就越大

交叉熵可在神經網絡(機器學習)中作為損失函數,p表示真實標記的分布,q則為訓練后的模型的預測標記分布,交叉熵損失函數可以衡量p與q的相似性。交叉熵作為損失函數還有一個好處是使用sigmoid函數在梯度下降時能避免均方誤差損失函數學習速率降低的問題,因為學習速率可以被輸出的誤差所控制。
交叉熵越低,這個策略就越好,最低的交叉熵也就是使用了真實分布所計算出來的信息熵,因為此時 p_k = q_k ,交叉熵 = 信息熵。這也是為什么在機器學習中的分類算法中,我們總是最小化交叉熵,因為交叉熵越低,就證明由算法所產生的策略最接近最優策略,也間接證明我們算法所算出的非真實分布越接近真實分布。

鏈接:https://www.zhihu.com/question/41252833/answer/195901726
鏈接:https://www.zhihu.com/question/41252833/answer/108777563

 

softmax的損失函數叫做softmax loss,其定義為:

首先L是損失。Sj是softmax的輸出向量S的第j個值,前面已經介紹過了,表示的是這個樣本屬於第j個類別的概率。yj前面有個求和符號,j的范圍也是1到類別數T,因此y是一個1*T的向量,里面的T個值,而且只有1個值是1,其他T-1個值都是0。那么哪個位置的值是1呢?答案是真實標簽對應的位置的那個值是1,其他都是0。所以結果為:

j指向當前樣本的真是標簽。假設一個5分類問題,然后一個樣本I的標簽y=[0,0,0,1,0],也就是說樣本I的真實標簽是4,假設模型預測的結果概率(softmax的輸出)p=[0.2,0.3,0.4,0.6,0.5],可以看出這個預測是對的,那么對應的損失L=-log(0.6),也就是當這個樣本經過這樣的網絡參數產生這樣的預測p時,它的損失是-log(0.6)。那么假設p=[0.2,0.3,0.4,0.1,0.5],這個預測結果就很離譜了,因為真實標簽是4,而你覺得這個樣本是4的概率只有0.1(遠不如其他概率高,如果是在測試階段,那么模型就會預測該樣本屬於類別5),對應損失L=-log(0.1)。那么假設p=[0.2,0.3,0.4,0.3,0.5],這個預測結果雖然也錯了,但是沒有前面那個那么離譜,對應的損失L=-log(0.3)。我們知道log函數在輸入小於1的時候是個負數,而且log函數是遞增函數,所以-log(0.6) < -log(0.3) < -log(0.1)。簡單講就是你預測錯比預測對的損失要大,預測錯得離譜比預測錯得輕微的損失要大。

這個過程也說明了softmax和max的區別。如我有兩個數a和b,max選取ab中概率最大的那個數,沒有第二種可能,但是對於b不公平啊,a的可能性比b大,但是不代表b不可能取不到,所以我想根據概率選取,概率大的多去,概率小的少取,這就是softmax。

可見其實是一樣的。感謝以上博主和知乎作者分享,理清了我的思路,謝謝。紀錄下,由新發現再補充,有錯請指教,謝謝

 


免責聲明!

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



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