信息論和交叉熵損失函數

同步csdn地址:數組

blog.csdn.net/soullines/a…網絡

在機器學習和深度學習中,不少時候須要進行分類,這時會涉及到決策邊界,好比sigmod激活函數; 可是當面對多分類的時候(好比經典的MNIST),咱們須要預測每個種類output的機率,好比softmax,這時候咱們須要對: 信息論和交叉熵有一個清晰的認識 那麼咱們的文章將會對 信息論和交叉熵損失函數 進行一個講解;機器學習

1.信息論函數

2.自信息學習

3.香農熵.net

4.交叉熵blog

1.信息論

1.1 信息論是從物理學中借鑑過來的,咱們只講其數學意義:

其實信息論是一種用來描述 機率分佈或者蔣機率分佈之間的類似性 的一種思想 信息論的核心思想就是用來表示 意外程度 ,即小几率事件發生的信息量大事件

  • 1.必然事件的信息量爲0
  • 2.事件發生的機率越小,其提供的信息量就越大
  • 3.信息是具備增量的特徵的,即同一事件,發生一次的信息量是 I ,則重複投遞兩次的信息量是 2I 那麼爲了實現咱們的目的 將機率事件的信息量進行量化

2.自信息

就是單個事件的信息量的量化值圖片

咱們構建這樣一個公式:get

I(x) = -log(p(x))
  • 這裏P(x)就是隨機事件 X = x 時候事件發生的機率
  • log對數函數式增函數,那麼-log函數就是減函數,這樣構建出來的函數就實現了咱們的某種目的,隨着機率的減少,信息量就越大 可是自信息僅能預測一個事件的信息量
  • I(x)的單位是奈特 nat,就是說1nat表明以1/e機率的一個事件的自信息量

3.香農熵

每每在咱們的實際應用中咱們須要使用 香農熵 來對整個事件機率分佈中的不肯定性總量進行量化

在這裏咱們能夠借鑑 隨機變量X的數學指望的求值公式

E(X) = \sum_{k = 1}^{∞}x_kp_k

這裏的香農熵其實能夠看作是: 信息量I(x)的數學指望的求值公式

H(X) = \sum_{k = 1}^{n}p_klog(p_k)
  • 這裏k是類別,n表明總類別

下面咱們舉例說明:

  • 數組1: 111111

  • 數組2: 111222

  • 數組3: 112233

咱們來算數組1 ,2 和 3的香農熵

H(1)=-1*log(p(1)) = 1 * 0= 0

H(2)=-1/2*log(p(1)) + (-1/2*log(p(2)) =  -1/2 * In1/2 +1/2 * In1/2  ≈  0.7

H(3)=-1/3*log(p(1)) + (-1/3*log(p(2)) +  (-1/3*log(p(3))  ≈ 1

這樣來看數組1的香農熵爲0,則爲必然事件,數組2居中,數組3最大,則其機率分佈的機率最小

4.交叉熵

前面咱們有講到 自信息香農熵 那麼如何用到機器學習和深度學習中呢,不着急慢慢往下看 咱們記得以前在多類別分類的模型中咱們有用到 softmax 進行每一個類別機率估計,而後取最大機率作爲預測值 而當咱們反向更新softmax爲激活函數的模型或者神經網絡時候,是將交叉熵作爲loss函數進行梯度調節的

那麼讓咱們聚焦交叉熵 在這以前咱們須要看下KL散列,這是基於香農熵用來衡量對於同一個隨機變量X的兩個單獨分佈P(X)Q(X)的差別的途徑:

D_{kl}(P||Q) = E_{x-p}[log(P(x)/Q(x))] = E_{x-p}[log(P(x))-log(P(x))]

可是在深度學習中咱們使用KL散列的變形,也就是交叉熵來做爲某些場景的loss函數,即:

H(P,Q) = H(P) + D_{KL}(P||Q)

根據KL散列咱們隊上述公式進行變形:

H(P,Q) = -E_{x-p}[logP(x)] + E_{x-p}[logP(x)] - E_{x-p}[logQ(x)]

通過變形就獲得:

H(P,Q) =  - E_{x-p}[logQ(x)]

接着,咱們變化成易於理解的loss函數

H(P,Q) =  \sum_{x}P(x)logQ(x)

到這裏咱們看到了咱們熟悉的成本函數,softmax迴歸分類器的成本函數

接着咱們探討爲何使用這個成本函數

主要是softmax等多分類器,在評估真實值(y)和預測值(y^{excpt})距離時,更多的是在評估機率之間的距離,這樣使用傳統的均方根偏差作爲loss函數毫無心義

咱們來舉個例子(以MNIST爲例: 識別0~9的數字圖片): 假設輸出層是softmax爲激活函數:

那麼咱們假設用兩組標籤相同的實例 AB 來進行分析 首先咱們的label都是0,因此真實值得向量組合是(1,0,0,0,0,0,0,0,0,0)

  • A的預測值向量組合(0.9,0.2,0.1,0,0,0,0,0,0,0)
  • B的預測值向量組合(0.8,0,0.1,0,0.5,0,0,0,0,0)

接着算A和B的交叉熵(也就是loss函數) :

H(P,Q) = -(1* log(0.9) + 0 * log(0.2) + 0 *log(0.1) + 7 * (0 * log(0)) ≈ 0.1
H(P,Q) = -(1* log(0.8) + 0 * log(0.1) + 0 *log(0.5) + 7 * (0 * log(0)) ≈ 0.2
  • P表明真實值
  • Q表明預測值 由於 0.1 < 0.2,因此明顯第一組要因爲第二組

補充一點:交叉熵H(P,Q)不是對稱的,因此H(P,Q) ≠ H(Q,P)因此要注意P和Q的順序,一版狀況下,P表明真實值,Q表明預測值

最近很熱,你們謹防中暑,可是學習不能斷 ^^

相關文章
相關標籤/搜索