softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy

轉自:損失函數softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之間的區別與聯繫
cross_entropy-----交叉熵是深度學習中常用的一個概念,一般用來求目標與預測值之間的差距。
在介紹softmax_cross_entropy,binary_cross_entropy、sigmoid_cross_entropy之前,先來回顧一下信息量、熵、交叉熵等基本概念。



信息論交叉熵是信息論中的一個概念,要想了解交叉熵的本質,需要先從最基本的概念講起。

一、信息量首先是信息量。

假設我們聽到了兩件事,分別如下:

  • 事件A:巴西隊進入了2018世界盃決賽圈。
  • 事件B:中國隊進入了2018世界盃決賽圈。

僅憑直覺來說,顯而易見事件B的信息量比事件A的信息量要大。究其原因,是因爲事件A發生的概率很大,事件B發生的概率很小。所以當越不可能的事件發生了,我們獲取到的信息量就越大。越可能發生的事件發生了,我們獲取到的信息量就越小。那麼信息量應該和事件發生的概率有關。
在這裏插入圖片描述

二、什麼是熵

對於某個事件,有n種可能性,每一種可能性都有一個概率p(xi)

這樣就可以計算出某一種可能性的信息量。舉一個例子,假設你拿出了你的電腦,按下開關,會有三種可能性,下表列出了每一種可能的概率及其對應的信息量

在這裏插入圖片描述
注:文中的對數均爲自然對數

我們現在有了信息量的定義,而熵用來表示所有信息量的期望,即:
在這裏插入圖片描述
其中n代表所有的n種可能性,所以上面的問題結果就是
在這裏插入圖片描述

三、 相對熵(KL散度)

相對熵又稱KL散度,如果我們對於同一個隨機變量 x 有兩個單獨的概率分佈 P(x) 和 Q(x),我們可以使用 KL 散度(Kullback-Leibler (KL) divergence)來衡量這兩個分佈的差異

在機器學習中,P往往用來表示樣本的真實分佈,比如[1,0,0]表示當前樣本屬於第一類。Q用來表示模型所預測的分佈,比如[0.7,0.2,0.1]
KL散度的計算公式:

四、什麼是交叉熵

對式3.1變形可以得到:
在這裏插入圖片描述
其中p代表label或者叫groundtruth,q代表預測值

在機器學習中,我們需要評估label和predicts之間的差距,使用KL散度剛剛好,即
在這裏插入圖片描述
由於KL散度中的前一部分恰巧就是p的熵,p代表label或者叫groundtruth,故−H(p(x))不變,故在優化過程中,只需要關注交叉熵就可以了,所以一般在機器學習中直接用用交叉熵做loss,評估模型。
在這裏插入圖片描述

五、softmax_cross_entropy

以tensorflow中函數softmax_cross_entropy_with_logits爲例,在二分類或者類別相互排斥多分類問題,計算 logits 和 labels 之間的 softmax 交叉熵。
在這裏插入圖片描述
數據必須經過 One-Hot Encoding 編碼

該函數把一個維度上的 labels 作爲一個整體判斷,結果給出整個維度的損失值。

這個函數傳入的 logits 是 unscaled 的,既不做 sigmoid 也不做 softmax ,因爲函數實現會在內部更高效得使用 softmax 。

六、binary_cross_entropy

binary_cross_entropy是二分類的交叉熵,實際是多分類softmax_cross_entropy的一種特殊情況,當多分類中,類別只有兩類時,即0或者1,即爲二分類,二分類也是一個邏輯迴歸問題,也可以套用邏輯迴歸的損失函數。

七、sigmoid_cross_entropy

以tensorflow中函數sigmoid_cross_entropy_with_logits爲例說明

sigmoid_cross_entropy_with_logits函數,測量每個類別獨立且不相互排斥的離散分類任務中的概率。(可以執行多標籤分類,其中圖片可以同時包含大象和狗。)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章