談談交叉熵損失函數


 
一.交叉熵損失函數形式
 
現在給出三種交叉熵損失函數的形式,來思考下分別表示的的什么含義。
 
--式子1
 
--式子2
 
--式子3
 
解釋下符號,m為樣本的個數,C為類別個數。上面三個式子都可以作為神經網絡的損失函數作為訓練,那么區別是什么?
 
■1》式子1,用於那些類別之間互斥(如:一張圖片中只能保護貓或者狗的其中一個)的單任務分類中。連接的 softmax層之后的概率分布。
  tensorflow中的函數為:  tf.nn.softmax_cross_entropy_with_logits
 
■2》式子2,用於那些類別之間不存在互斥關系(如:一張圖片中可有貓和狗兩種以上的類別同時存在)的多任務學習分類中。最后一層的每個節點不在是softmax函數的輸出了,而是sigmoid。把每個節點當成一個完整的分布,而式子1是所有節點組合程一個完整分布。
  tensorflow中的函數為:tf.nn.sigmoid_cross_entropy_with_logits
 
■3》式子3,用於最后一層只有一個節點的二分類任務
 
二.交叉熵損失意義
 
要解釋交叉熵損失函數的意義,我認為應該從熵的根源說起。這里我不介紹熵作者呀,來源呀什么的不再介紹了(主要是懶),哈哈!)這里講的順序是:信息量--》信息熵--》交叉熵
 
1.信息量
 
意義:
  如果一個事件發生的概率為p,那么獲知該信息發生能給到我們  的信息量(可以理解為意外程度)
 
 
例子:巴西跟中國乒乓球比賽,歷史上交手64次,其中中國獲勝63次,那么63/64是賽前普遍認為中國隊獲勝的概率,那么這次中國獲勝的信息量有多大?
 
 
如果這次是巴西獲勝,那么帶給我們的信息量為:
 
單位:bit
 
如果一件事件的發生概率為:100%,帶給我們的信息量為:0
通俗點講就是,如果一件事情,本身發生的概率很大,如果再次發生,我們並沒有覺得有什么好奇的。但是一件發生概率很小的事情發生了,我們就會非常驚訝,它能給到我們的信息就越有價值。例如:太陽每天都是從東邊出來,這個概率幾乎是1,所以我們都其以為常,沒什么好驚訝的,但是某天太陽從西邊出來了,這個時候,打破了我們的常識,這個概率非常小的事件居然發生了,我們就會非常驚訝,它給我們信息量是非常大的,也許我們可以根據這個現象發現一種新的東西。
 
 
2.信息熵
 
意義:
  用來做信息的雜亂程度的量化描述。
定義:
 
1.中國隊獲勝概率: 63/64,巴西獲勝概率:1/64,那么信息熵為:
 
 
2.中國隊獲勝概率: 1/2,巴西獲勝概率:1/2,那么信息熵為:
 
3.中國隊獲勝概率: 1,巴西獲勝概率:0,那么信息熵為:
 
 
結論:
信息越確定,越單一,信息熵就越小,
信息越不確定,越混亂,信息熵就越大。
 
注意:這里的log以2為底,實際上可以與e,10等其他為底,主要對比的時候統一就好。從計算機角度來看,計算機只有0,1兩位,用2比較符合。
 
3.交叉熵
 
意義:
  衡量真實分布和預測的分布的差異情況
離散形式為:
 
其中,p(x)為真實概率,q(x)為預測概率
從信息量的角度,如果是真是真實的概率,那么給到我們的信息熵為:
 
如果是預測分布,改到我們信息熵(可以簡單理解為信息量)為:
 
信息熵的差異為:
 
這也叫: K-L散度
 
可以看出,只有當q(x)=p(x)時候差異為:0
 
K-L散度始終是>=0,但是不知道怎么證明(我還沒推導出來慚愧,以后推導出來再補充,如果有讀者推出來,麻煩評論,非常感謝!)
 
問題:
 
為什么大多數情況,我們都用交叉熵而不是K-L散度作為損失函數?
 
 
我來分析下:仔細觀察k-l散度,如果是多分類時候,one-hot形式【0,1,0,0】,那么把p(x)=0,1,0,0,帶入K-L散度函數,那么其實跟交叉熵形式是一樣的。
 
例如:在多一個4分類任務時候,計算其中一個樣本的第2個類別損失,其one-hot形式,【0,1,0,1】,模型預測出來的概率分布為:【0.1,0.6,0.2,0.1】
那么如果是K-L散度作為損失,那么:
實際就是:-p(x)*log(q(x))
 
這下明白了吧。
 
參考:
3.書籍《白話大數據》第六章信息論 

 


免責聲明!

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



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