機器學習面試之各種混亂的熵

請聽題:什么是熵?什么是交叉熵?什么是聯合熵?什么是條件熵?什么是相對熵?它們的聯系與區別是什么?

如果你感到回答這些問題有些吃力,對這些概念似乎清楚,似乎又沒有那么明白,那這篇文章就是為你準備的。

1 從隨機變量說起

假設有一枚硬幣,將其拋出,落下后朝上的面為y。

這里的y是對未知量的一個表示。但它的值卻是不確定的,可能取正面和反面兩個值。

類似的不確定變量還有好多,比如說,將人的身高設為z,z中也包含了不確定性,因為不同的人身高是不一樣的。


這類包含不確定性的變量我們稱為隨機變量。統計學就是研究這類不確定性變量的工具。

刻畫隨機變量最有力的一個工具就是它的概率分布。關于什么是概率分布,這里就不多說了,可以百度百科。

有了概率分布,我們可以說對一個隨機變量有了完全的掌握,因為我們可以知道它可能取哪些值,某個值的概率是多少。

以上,是對基礎知識的簡單復習,下面開始進入正題。


2 什么是熵?

上面,我們知道,概率分布是對隨機變量的刻畫,不同的隨機變量有著相同或不同的概率分布,熵,就是對不同概率分布的刻畫!

為什么我們還需要對不同的概率分布進行刻畫?

本質上,是為了描述不確定的程度,并以此對不同的概率分布進行比較。

請允許我舉個栗子。

假如我告訴你,我有兩枚硬幣,一個上拋一次正面朝上概率是0.5,另一個是0.8。此時,假設兩枚硬幣上拋一次落下后朝上的面分別是x,y。

此時,我們可以很容易確定隨機變量x,y的概率分布,并借此對兩個隨機變量有準確的掌握。

但我們要問,這兩個隨機變量哪個更隨機?或者說,哪個隨機變量包含的不確定性更大?


如果發揮直覺,我們可以感覺到,正面朝上概率為0.8的概率分布不確定性小于正面朝上概率為0.5的不確定性。

進一步思考,我們為什么會有這樣的直覺?

因為我們是從“使用”概率分布的角度來思考問題的。也就是說,如果我們知道一枚硬幣拋出后正面朝上概率為0.8,要比知道概率為0.5,更容易猜對硬幣拋出后哪面朝上。

換句話說,0.8的概率分布比0.5的概率分布對我們來說,具有更大的信息量。

現在,我們對概率分布中的不確定性有了感性的認識,現在需要的是一個定量的指標,來衡量這個不確定性。想必你已經猜到了,這個指標就是熵。

3 熵的數學表達

熵應該是什么樣子,才能表達出概率分布中的不確定性呢?

為了解決這個問題,我們來考察一下概率分布中的某個取值,以拋硬幣為例,我們看正面這個取值。可以看到,取正面的概率越大,則不確定性就越小。概率越大,不確定性越小!請把這句話在心中默念三遍。

能夠表達出概率越大,不確定性越小的表達式就是:

-logP

為了讓大家有一個感性的認識,我特意畫了一個圖:


上圖中的縱軸為-logP,橫軸為P。

然后,我們繼續思考,上面的-logP只是衡量了某個概率的不確定性,一個概率分布包含多個概率,而且概率相加等于1,一個概率大,必然會有其他的概率小。還是以拋硬幣為例,0.8概率的正面,不確定性固然很小,但同時會造成反面的概率為0.2,不確定性比較大。這意味著,我們猜對一次拋硬幣正面朝上的難度比較小,但要猜對一次反面朝上的難度就比較大。很顯然,我們要衡量一個概率的分布的不確定性,就要綜合衡量所有概率表達的不確定性。也就是求一個概率分布綜合的不確定性。當當當當當!熵正式出場!

-∑PlogP

這個指標可以理解成概率分布的不確定性的期望值。這個值越大,表示該概率分布不確定性越大。它為我們人類提供的“信息”就越小,我們越難利用這個概率分布做出一個正確的判斷。從這個角度,我們可以看到,熵是對概率分布信息含量的衡量,這與它是不確定性的衡量,其實是兩種解讀方式而已。

4 伯努利分布的熵

對于拋硬幣判正反面來說,它的概率分布是伯努利分布,我們假設正面朝上的概率為p,則反面朝上的概率為(1-p),它的熵就是:

H(p) = -plogp -(1-p)log(1-p)

我們把它畫出來就是這樣。


可以看到,p=0.5時,伯努利分布的熵達到最大。這與我們的經驗常識一致,因為此時,硬幣朝上還是朝下完全是隨機的,不確定性最大。

當p趨向于0時,熵也趨向于0,舉個極端例子,如果硬幣以概率1正面朝上,概率0反面朝上,則完全沒有不確定性,所以熵就是0,因為熵是對不確定性的一個測量。

再來思考一個問題,我們說熵是描述不確定性的,在概率論中,不是有一個方差可以用來描述變量變化程度的嗎,它和熵是什么關系呢?

直覺上,方差越大,不確定性就越大,熵就應該越大,事實上確實如此,請看下圖:


variance_entropy

對我們投硬幣的伯努利分布,方差pq的最大值在p=0.5時取得,由上文我們知道,這也是熵取得最大值的p值。

對于正態分布,我們可以看到,期望對熵沒有影響,只有方差才對熵有影響。這于我們的直覺也是相符的。

以上,我們盡可能從直覺的角度分析出了熵的表達式,也查看了幾種分布的熵,以及它們和該分布的方差的關系,發現二者要描述的含義具有內在一致性。至此,我們終于可以說一窺熵的廬山真面目了。

下面,我們開始討論由熵引出的各種其他熵,也就是本文文首提出的那些。

5 聯合熵

雖然文首提出了那么多熵,但它們之間是有內在聯系的,所以,我們盡可能按照它們的內在關系開展學習,先從聯合熵說起。

聯合熵與聯合概率分布有關,對于隨機變量X和Y,二者的聯合概率分布為p(x,y),則這個聯合概率分布的熵就叫做聯合熵:

H(x,y) = -Σp(x,y)log(p(x,y))

我們假設X和Y都服從伯努利分布,且相互獨立,可以把二者想象為上面的拋硬幣,這樣思考可以有所依托,不至于太抽象。X正面朝上的概率為p1,Y正面朝上的概率為p2,那么,它們的聯合熵是多少呢?

顯然,我們需要找出聯合概率分布,如下圖所示:



association

上面就是聯合分布,自然可以據此算出它的熵,由于表達式寫出來太麻煩,這里就省去了,感興趣的可以自己寫一下。

我們關心的問題是,H(x,y)和H(x),H(y)有什么關系呢?

這里不想進行繁雜的數學證明,而是要繼續用我們的直覺來幫助思考。查看上圖,我們和Y的概率分布進行對比。

Y原先只有兩個概率p2和(1-p2),聯合分布卻有四個概率,這四個概率又可以認為是將Y的每個概率進行了分拆,p2 被分成了p2\*p1和p2\*(1-p1)。也就是說,對于Y的每個取值,本身就具有一個不確定性(p2),由于要與X聯合起來,就在每個取值的不確定性上又引入了不確定性,不確定性顯然是增大了。

如果你理解了上面關于熵的含義,那么,不難想出,H(x,y)肯定是大于等于H(x)和H(y)的。僅當X沒有不確定性時,比如永遠是正面朝上,此時,在Y的基礎上聯合X,并沒有引入新的不確定性,所以,H(x,y)=H(y)。

以上,我們沒有運用數學,僅僅依靠感性直覺的思考就確定了聯合熵的一些性質,可見,善于運用直覺是很重要的。

6 條件熵

現在我們知道,x,y的聯合熵大于等于x和y單獨的熵,對于y來說,引入的x增大了熵,那么,x的引入增加了多大的熵呢?這就是條件熵。

H(x|y) = H(x,y) - H(y)

這里,有一個容易搞錯的地方,H(x|y)叫做條件熵,它可不是條件概率p(x|y)的熵。為啥?因為p(x|y)壓根就不是一個概率分布!!!還是以上面的兩枚硬幣為例,我們來計算一下p(x|y),注意,我們的例子中**假設x,y是相互獨立的**。


condition

可見,所有的P(x|y)相加是2,根本就不是一個概率分布。有人可能會說,那為什么要叫條件熵,這不是故意誤導人嗎!

這是因為,條件熵的計算,和條件概率還是有點關系的。如下:

H(x|y) = - Σp(x,y)log(p(x|y))

這個公式可以由上面的熵的定義和條件熵的定義推導得出,這里就不推導了,感興趣的可以自己推導下,并不難。

這里我們再分析一下條件熵H(x|y)與H(x)的關系,仍然用直覺法。條件熵是在Y上引入X后增加的不確定性,從感覺上,增加的不確定性無論如何不可能大于X本身自有的不確定性,也就是:

H(x|y) <= H(x)

僅當x,y相互獨立時,等號才成立。

這個結論是我們感性認識到的,事實上,也可以進行證明得到。

學習過《統計學習方法》的同學,肯定對里面的信息增益概念有所了解,其實,我們仍然可以用直覺來理解這個概念。

不過,我們需要換種方式解讀H(x|y) <= H(x)

之前,我們得出這個結論,是說Y上引入的X增加的不確定性不能大于X本身的不確定性。換個角度,X原有的不確定性是H(x),現在我們引入Y,得到了聯合的不確定性H(x,y),從這個不確定性中減去Y自身帶來的不確定性H(Y),剩下的就是H(x|y),這個值小于等于H(x),說明什么?說明,由于Y的引入,X的不確定性變小了,不確定性變小,就是信息含量的增加。不確定性變小的多少就是信息增益:

gain(X) = H(x) - H(x|y)

信息增益也叫做互信息。二者完全一樣。

Note:

這里簡單說下我對李航書的看法,一句話:不適合用來入門!只適合用來提高和面試準備。我意見比較大的是對邏輯回歸的推導,不優雅。回頭,我會專門寫一篇邏輯回歸的推導文章。

7 相對熵(又叫互熵,KL散度)

把相對熵放到最后來講,是因為它和前面的幾個概念聯系不大。

假設我們有如下5個樣本:


huxinxi

我們要以此推導出標簽的真實分布。假設標簽的真實分布是q(x),x取值為1和-1

為了確定q(x)在x=1和x=-1處的值,我們當然要運用最大似然法則。最大似然函數是:

q(x=1)\*q(x=1)\*q(x=-1)\*q(x=-1)\*q(x=-1)

如果你最大似然函數理解上有困難,建議補充一下這方面的知識,因為這個知識點在機器學習中運用的太多,確實無法繞過,邏輯回歸本質上也是用的最大似然函數。

對上面的式子做合并處理,得到:

q(x=1)^2\*q(x=-1)^3

進一步,對上面的式子開5次方,得到:

q(x=1)^(2/5)\*q(x=-1)^(3/5)

假設p(x)就是由樣本中統計出來的標簽分布

2/5就是p(x=1)

3/5就是p(x=-1)

所以,對上面的式子進行規整就得到最大似然函數最終表達式:

Πq(x)^(p(x))

再取對數就是

Σp(x)log(q(x))

再取負號就是

d= -Σp(x)log(q(x))

最大化似然函數就是最小化d。

心急的朋友可能在想,說了半天,互熵到底是啥?現在就給出定義:

D(q||p) = d - H(p)

這里的d就是我們上面得到的d。

互熵描述的是什么呢?如何從直覺上進行理解?畢竟,上面用最大似然推出互熵還是有點太數學了。

這里,我們需要觀察一下d,假設q和p完全相同,那么d就是H(p),互熵D也就等于0了。

同理,q和p越接近,越相同,則D就越小。互熵D(q||p)實際上就是在衡量我們通過計算得出的真實分布的表達式q,究竟與由樣本統計得來的分布p有多接近,在衡量多接近這個概念時,我們運用到了熵的形式。

8 交叉熵

交叉熵放到最后,因為它最簡單,它就是上面得出的d!

我們可以體會一下為什么叫做交叉熵,交叉是什么含義?

d= -Σp(x)log(q(x))

原本,p的熵是-Σp(x)log(p(x)),q的熵是-Σq(x)log(q(x))

現在,把p熵的log成分換成q(x), q熵的log成分換成p(x),(這里做了一個“交叉”!)就是

d= -Σp(x)log(q(x)) ? ? ?d2 =?-Σq(x)log(p(x))?

?d 就是p和q的交叉熵,

d2就是q和p的交叉熵。

從中我們也體會到,交叉熵是不滿足交換律的,也就是說p和q的交叉熵與q和p的交叉熵是不一樣的。


9 無總結,不進步

以上,是我對各種熵的概念的一些理解和感悟,分享出來,希望能夠幫助到需要的朋友,當然,由于是個人理解,難免有不到位,甚至錯誤的地方,還望各路大神多多批評指正!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379