title: 交叉熵 date: 2018-06-24 23:59:54 tags:機器學習
熵是一個很重要的概念。首先來了解一下信息量的概念。信息量大小能夠參考我的感受,粗略來說,某時間A的信息量大小和其發生的機率成反比。這個仍是很好理解的,比方說「高考取消」這件事給人帶來的信息量就比較大。固然不一樣的人對這件事的感覺不同,可是若是把信息量和機率聯繫起來就能作運算。函數
假設X是一個離散型隨機變量,其取值集合爲χ,機率分佈函數p(x)=Pr(X=x),x∈χ,則定義事件 X = x_0 的信息量爲:學習
假設某個事件A有n多種可能的狀況,每種狀況一種機率,那麼A帶來的信息量有多大呢?用數學上的指望來表示彷佛恰到好處。而熵就定義成 表示全部信息量的指望。code
對於二分問題,其取值只有兩種可能,對於這類問題,熵的計算方式能夠化簡爲以下算式:cdn
在機器學習中,經常須要衡量兩個分佈的差別。好比,用P(X)描述樣本的真實分佈,用Q(X)描述模型預測的分佈。這裏引入一個 KL散度 的定義blog
其中,n爲事件的全部可能性。D_KL 的值越小,代表兩個分佈越接近。事件
須要注意的是,KL散度不具備對稱性,也就是說
。可是通常來講,兩個分佈的KL散度越小,分佈就越類似(本身和本身的KL散度爲0)。圖片
雖然看起來KL散度就這麼簡單一公式,但畢竟任意一個分佈 或者
並不能保證其機率必定大於0呀。當其中任意一者出現0,問題就來了。數學
或
取0的問題,在用代碼計算上不至於太難解決,只要保證每一項都能加上一個足夠小的非零正數便可。it
將上面提到的KL散度公式進一步變形
前半部分剛好是p的熵,後半部分定義爲「交叉熵」。由於前半部分的值保持不變,所以只須要關注交叉熵。
交叉熵的公式定義
舉個圖像分類的例子,假設有一張圖片,圖片中描述的物體是一隻狗
對應的標籤和模型輸出的預測值爲:
category | dog | cat | duck |
---|---|---|---|
Label | 1 | 0 | 0 |
Predicts | 0.7 | 0.2 | 0.1 |
假設使用天然對數,能夠知道此時的交叉熵爲 H(p,q) = -1*log(0.7) − 0*log(0.2) − 0*log(0.1) = 0.357
如今又假設有一張圖片
那麼如今,對應的標籤和模型輸出的預測值爲(注意機率之和不必定爲1):
category | dog | cat | duck |
---|---|---|---|
Label | 0 | 1 | 1 |
Predicts | 0.2 | 0.8 | 0.5 |
仍是使用天然對數,能夠知道此時的交叉熵爲 H(p,q) = −0*log(0.2) − 1*log(0.8) − 1*log(0.5) = 0.916
在實際應用中,交叉熵會和 Softmax
結合起來使用,緣由在於二者結合求偏導數會比不結合更加簡單。