1. 程式人生 > >交叉熵、熵和相對熵的通俗易懂解釋

交叉熵、熵和相對熵的通俗易懂解釋

交叉熵(Cross-Entropy)

交叉熵是一個在機器學習領域經常提到的概念。它經常用作代價(損失)函式,而均方誤差或平均絕對誤差在使用梯度優化的方法時往往效果不佳,一些飽和的神經網路輸出單元結合這些代價函式時會產生非常小的梯度,這也是交叉熵代價函式比均方誤差或平均絕對誤差更受歡迎的原因。在學習交叉熵之前,我們先來了解下其他的基礎概念:

1.什麼是自資訊(self-information)?

定義:假設X是一個離散型隨機變數,其取值集合為χ,概率分佈函式為p(x)=P(X=x),xχ,我們定義事件X=x0的自資訊為:

I(x0)=log(p(x0))

可以理解為,一個事件發生的概率越大,則它所攜帶的資訊量就越小,而當p(x0)=1時,熵將等於0,也就是說該事件的發生包含的資訊量小。
舉個例子,小明平時不愛學習,考試經常不及格,而小王是個勤奮學習的好學生,經常得滿分,所以我們可以做如下假設:
事件A:小明考試及格,對應的概率P(xA)=0.1,資訊量為I(xA)=log(0.1)=3.3219 .
事件B:小王考試及格,對應的概率P(xB)=0.999,資訊量為I(x

B)=log(0.999)=0.0014

可以看出,結果非常符合直觀:小明及格的可能性很低(十次考試只有一次及格),因此如果某次考試及格了(大家都會說:XXX竟然及格了!),必然會引入較大的資訊量,對應的I值也較高。而對於小王而言,考試及格是大概率事件,在事件B發生前,大家普遍認為事件B的發生幾乎是確定的,因此當某次考試小王及格這個事件發生時並不會引入太多的資訊量,相應的I值也非常的低。

2.什麼是熵(Entropy)?

定義:對於一個隨機變數X而言,它的所有可能取值的資訊量的期望(E[I(x)])就稱為熵。
X是離散的:

H(X)=E[I(x)]=xXp(x)logp(x)

X是連續的隨機變數:熵定義為:
H(X)=xXp(x)logp(x)dx

自資訊只能處理單個的輸出。而熵是對整個概率分佈中不確定性總量進行量化。

約定:p=0時,定義0log0=0。通常對數以2為底或者e為底,這是熵的單位稱作位元(bit)或者納特(nat)
當隨機變數只取兩個值的時候,即X分佈為:P(X=1)=pP(X=0)=1p0<=p<=1
此時,熵隨p的變化為:

這裡寫圖片描述
圖為分佈為伯努利分佈時,熵和概率的關係

還是通過上邊的例子來說明,假設小明的考試結果是一個0-1分佈X只有兩個取值{0:不及格,1:及格},在某次考試結果公佈前,小明的考試結果有多大的不確定度呢?你肯定會說:十有八九不及格!因為根據先驗知識,小明及格的概率僅有0.1,90%的可能都是不及格的。怎麼來度量這個不確定度?求期望!不錯,我們對所有可能結果帶來的額外資訊量求取均值(期望),其結果不就能夠衡量出小明考試成績的不確定度了嗎。
即:
HA(x)=[p(xA)log(p(xA))+(1p(xA))log(1p(xA))]=0.4690
對應小王的熵: