交叉熵

本文爲轉載,原博客地址:https://blog.csdn.net/rtygbwwwerr/article/details/50778098

交叉熵(Cross-Entropy)

交叉熵是一個在ML領域經常會被提到的名詞。在這篇文章裏將對這個概念進行詳細的分析。

1.什麼是信息量?

假設XX是一個離散型隨機變量,其取值集合爲XX,概率分佈函數爲p(x)=Pr(X=x),x∈Xp(x)=Pr(X=x),x∈X,我們定義事件X=x0X=x0的信息量爲:
I(x0)=−log(p(x0))I(x0)=−log(p(x0)),可以理解爲,一個事件發生的概率越大,則它所攜帶的信息量就越小,而當p(x0)=1p(x0)=1時,熵將等於0,也就是說該事件的發生不會導致任何信息量的增加。舉個例子,小明平時不愛學習,考試經常不及格,而小王是個勤奮學習的好學生,經常得滿分,所以我們可以做如下假設:
事件A:小明考試及格,對應的概率P(xA)=0.1P(xA)=0.1,信息量爲I(xA)=−log(0.1)=3.3219I(xA)=−log⁡(0.1)=3.3219
事件B:小王考試及格,對應的概率P(xB)=0.999P(xB)=0.999,信息量爲I(xB)=−log(0.999)=0.0014I(xB)=−log⁡(0.999)=0.0014
可以看出,結果非常符合直觀:小明及格的可能性很低(十次考試只有一次及格),因此如果某次考試及格了(大家都會說:XXX竟然及格了!),必然會引入較大的信息量,對應的II值也較高。而對於小王而言,考試及格是大概率事件,在事件B發生前,大家普遍認爲事件B的發生幾乎是確定的,因此當某次考試小王及格這個事件發生時並不會引入太多的信息量,相應的II值也非常的低。

2.什麼是熵?

那麼什麼又是熵呢?還是通過上邊的例子來說明,假設小明的考試結果是一個0-1分佈XAXA只有兩個取值{0:不及格,1:及格},在某次考試結果公佈前,小明的考試結果有多大的不確定度呢?你肯定會說:十有八九不及格!因爲根據先驗知識,小明及格的概率僅有0.1,90%的可能都是不及格的。怎麼來度量這個不確定度?求期望!不錯,我們對所有可能結果帶來的額外信息量求取均值(期望),其結果不就能夠衡量出小明考試成績的不確定度了嗎。
即:
HA(x)=−[p(xA)log(p(xA))+(1−p(xA))log(1−p(xA))]=0.4690HA(x)=−[p(xA)log⁡(p(xA))+(1−p(xA))log⁡(1−p(xA))]=0.4690
對應小王的熵:
HB(x)=−[p(xB)log(p(xB))+(1−p(xB))log(1−p(xB))]=0.0114HB(x)=−[p(xB)log⁡(p(xB))+(1−p(xB))log⁡(1−p(xB))]=0.0114
雖然小明考試結果的不確定性較低,畢竟十次有9次都不及格,但是也比不上小王(1000次考試只有一次纔可能不及格,結果相當的確定)
我們再假設一個成績相對普通的學生小東,他及格的概率是P(xC)=0.5P(xC)=0.5,即及格與否的概率是一樣的,對應的熵:
HC(x)=−[p(xC)log(p(xC))+(1−p(xC))log(1−p(xC))]=1HC(x)=−[p(xC)log⁡(p(xC))+(1−p(xC))log⁡(1−p(xC))]=1
其熵爲1,他的不確定性比前邊兩位同學要高很多,在成績公佈之前,很難準確猜測出他的考試結果。
可以看出,熵其實是信息量的期望值,它是一個隨機變量的確定性的度量。熵越大,變量的取值越不確定,反之就越確定。

對於一個隨機變量X而言,它的所有可能取值的信息量的期望(E[I(x)]E[I(x)])就稱爲熵。
XX的熵定義爲:
H(X)=Eplog1p(x)=−∑x∈Xp(x)logp(x)H(X)=Eplog⁡1p(x)=−∑x∈Xp(x)log⁡p(x)
如果p(x)p(x)是連續型隨機變量的pdf,則熵定義爲:
H(X)=−∫x∈Xp(x)logp(x)dxH(X)=−∫x∈Xp(x)log⁡p(x)dx
爲了保證有效性,這裏約定當p(x)→0時,有p(x)logp(x)→0p(x)→0時,有p(x)log⁡p(x)→0
當X爲0-1分佈時,熵與概率p的關係如下圖:
這裏寫圖片描述
可以看出,當兩種取值的可能性相等時,不確定度最大(此時沒有任何先驗知識),這個結論可以推廣到多種取值的情況。在圖中也可以看出,當p=0或1時,熵爲0,即此時X完全確定。
熵的單位隨着公式中log運算的底數而變化,當底數爲2時,單位爲“比特”(bit),底數爲e時,單位爲“奈特”。

3.什麼是相對熵?

相對熵(relative entropy)又稱爲KL散度(Kullback-Leibler divergence),KL距離,是兩個隨機分佈間距離的度量。記爲DKL(p||q)DKL(p||q)。它度量當真實分佈爲p時,假設分佈q的無效性。
DKL(p||q)=Ep[logp(x)q(x)]=∑x∈Xp(x)logp(x)q(x)DKL(p||q)=Ep[log⁡p(x)q(x)]=∑x∈Xp(x)log⁡p(x)q(x)
=∑x∈X[p(x)logp(x)−p(x)logq(x)]=∑x∈X[p(x)log⁡p(x)−p(x)log⁡q(x)]
=∑x∈Xp(x)logp(x)−∑x∈Xp(x)logq(x)=∑x∈Xp(x)log⁡p(x)−∑x∈Xp(x)log⁡q(x)
=−H(p)−∑x∈Xp(x)logq(x)=−H(p)−∑x∈Xp(x)log⁡q(x)
=−H(p)+Ep[−logq(x)]=−H(p)+Ep[−log⁡q(x)]
=Hp(q)−H(p)=Hp(q)−H(p)
並且爲了保證連續性,做如下約定:
0log00=0,0log0q=0,plogp0=∞0log⁡00=0,0log⁡0q=0,plog⁡p0=∞
顯然,當p=qp=q時,兩者之間的相對熵DKL(p||q)=0DKL(p||q)=0
上式最後的Hp(q)Hp(q)表示在p分佈下,使用q進行編碼需要的bit數,而H(p)表示對真實分佈pp所需要的最小編碼bit數。基於此,相對熵的意義就很明確了:DKL(p||q)DKL(p||q)表示在真實分佈爲p的前提下,使用q分佈進行編碼相對於使用真實分佈p進行編碼(即最優編碼)所多出來的bit數。

4. 什麼是交叉熵?

交叉熵容易跟相對熵搞混,二者聯繫緊密,但又有所區別。假設有兩個分佈p,qp,q,則它們在給定樣本集上的交叉熵定義如下:
CEH(p,q)=Ep[−logq]=−∑x∈Xp(x)logq(x)=H(p)+DKL(p||q)CEH(p,q)=Ep[−log⁡q]=−∑x∈Xp(x)log⁡q(x)=H(p)+DKL(p||q)
可以看出,交叉熵與上一節定義的相對熵僅相差了H(p)H(p),當pp已知時,可以把H(p)H(p)看做一個常數,此時交叉熵與KL距離在行爲上是等價的,都反映了分佈p,q的相似程度。最小化交叉熵等於最小化KL距離。它們都將在p=qp=q時取得最小值H(p)H(p)(p=q時KL距離爲0),因此有的工程文獻中將最小化KL距離的方法稱爲Principle of Minimum Cross-Entropy (MCE)或Minxent方法。
特別的,在logistic regression中,
p:真實樣本分佈,服從參數爲p的0-1分佈,即X∼B(1,p)X∼B(1,p)
q:待估計的模型,服從參數爲q的0-1分佈,即X∼B(1,q)X∼B(1,q)
兩者的交叉熵爲:
CEH(p,q)CEH(p,q)
=−∑x∈Xp(x)logq(x)=−∑x∈Xp(x)log⁡q(x)
=−[Pp(x=1)logPq(x=1)+Pp(x=0)logPq(x=0)]=−[Pp(x=1)log⁡Pq(x=1)+Pp(x=0)log⁡Pq(x=0)]
=−[plogq+(1−p)log(1−q)]=−[plog⁡q+(1−p)log⁡(1−q)]
=−[yloghθ(x)+(1−y)log(1−hθ(x))]=−[ylog⁡hθ(x)+(1−y)log⁡(1−hθ(x))]
對所有訓練樣本取均值得:
−1m∑i=1m[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]−1m∑i=1m[y(i)log⁡hθ(x(i))+(1−y(i))log⁡(1−hθ(x(i)))]
這個結果與通過最大似然估計方法求出來的結果一致。

5.參考鏈接:

維基百科關於cross-entropy的解釋
交叉熵損失函數
UFLDL中關於logistic regression的說明
Kraft’s inequality
Visual Information

--------------------- 作者:rtygbwwwerr 來源:CSDN 原文:https://blog.csdn.net/rtygbwwwerr/article/details/50778098?utm_source=copy 版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

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