聽張首晟在混沌大學《第一性原理和創業》課時,提及「對信息的認識,是人類對大自然最重要的認識。怎麼描寫和衡量信息,也有一個非常奇妙信息熵的公式:S=-p log p。這個公式不像E=mc²那麼知名,但愛因斯坦說過一句話:等到人類的知識往前推進,牛頓力學可能不對,量子力學可能不對,相對論可能也不對,但信息熵的公式是永恆的。」
我研究生是學通信的,香農定理瞭然與胸,後來任正非提出組織熵減,又重新認識了這個字「熵」。下面的文章只從網上搜到的深度學習筆記熵這一部分,熵和深度學習有啥關係,信息?
在機器學習算法中,最常用的優化方式就是使熵最大,那麼到底什麼是熵呢?很多文章告訴了我們概念和公式,但是很少有人講到這些公式都是怎麼來的,那麼就讓我們來深究一下這裡面的奧秘
熵
有關熵的介紹,我在《自己動手做聊天機器人 十五-一篇文章讀懂拿了圖靈獎和諾貝爾獎的概率圖模型》中做過簡單的介紹,熵的英文是entropy,本來是一個熱力學術語,表示物質系統的混亂狀態。
熵(entropy):熵有火字旁,本來是一個熱力學術語,表示物質系統的混亂狀態。延伸數學上表達的是一種不確定性。延伸到資訊理論上是如今計算機網絡信息傳輸的基礎理論,不確定性函數是f(p)=-logp,信息熵H(p)=-∑plogp。提到熵必須要提到資訊理論鼻祖香農(Shannon)
我們都知道信息熵計算公式是H(U)=-∑(p logp),但是卻不知道為什麼,下面我們深入熵的本源來證明這個公式
假設下圖是一個孤立的由3個分子構成一罐氣體

那麼這三個分子所處的位置有如下幾種可能性:

圖中不同顏色表示的是宏觀狀態(不區分每個分子的不同),那麼宏觀狀態一共有4種,而微觀狀態(每一種組合都是一種微觀狀態)一共有2^3=8種
再來看4個分子的情況

這時,宏觀狀態一共有5種,而微觀狀態一共有2^4=16種
事實上分子數目越多,微觀數目會成指數型增長
這裡面提到的宏觀狀態實際上就是熵的某一種表現,如果氣體中各種宏觀狀態都有,那麼熵就大,如果只存在一種宏觀狀態,那麼熵就很小,如果把每個分子看做狀態的形成元素,熵的計算就可以通過分子數目以某種參數求對數得到,這時我們已經了解了為什麼熵公式中是對數關係
上面我們描述的一個系統(一罐氣體),假如我們有兩罐氣體,那麼它們放在一起熵應該是可以相加的(就像上面由四種狀態加了一個狀態的一個分子變成5個狀態),即可加性,而微觀狀態是可以相乘的(每多一個分子,微觀狀態就會多出n-1種),即相乘法則
綜上,我們可以得出熵的計算公式是S=k ln Ω,其中k是一個常數,叫做玻爾茲曼常數,Ω是微觀狀態數,這個公式也滿足了上面的可加性和相乘法則,即S1+S2=k ln (Ω1Ω2)
最大熵
在機器學習中我們總是運用最大熵原理來優化模型參數,那麼什麼樣的熵是最大熵,為什麼它就是最優的
這還是要從物理學的原理來說明,我們知道當沒有外力的情況下氣體是不斷膨脹的而不會自動收縮,兩個溫度不同的物體接觸時總是從高溫物體向低溫物體傳導熱量而不可逆。我們知道宏觀狀態越多熵越大,那麼氣體膨脹實際上是由較少的宏觀狀態向較多的宏觀狀態在變化,熱傳導也是一樣,如此說來,一個孤立系統總是朝著熵增加的方向變化,熵越大越穩定,到最穩定時熵達到最大,這就是熵增原理
換句話說:熵是孤立系統的無序度的量度,平衡態時熵最大
將熵增原理也可以擴大到一切自發過程的普遍規律,比如如果你不收拾屋子,那麼屋子一定會變得越來越亂而不會越來越乾淨整潔,擴大到統計學上來講,屋子亂的概率更大,也就是說孤立系統中一切實際過程總是從概率小的狀態向概率大的狀態的轉變過程,並且不可逆
信息熵
1948年,資訊理論之父香農發表的《通信的數學理論》中提出了「信息熵」的概念,從此信息熵對通信和計算機行業產生了巨大的影響。那麼他到底說了些什麼呢?
一個隨機變量ξ有A1、A2、A3……共n個不同的結果,每個結果出現的概率是p1、p2、p3……,那麼我們把ξ的不確定度定義為信息熵,參考上面物理學熵的定義,A1、A2、A3……可以理解為不同的微觀狀態,那麼看起來信息熵應該是log n嘍?不然,因為這個隨機變量ξ一次只能取一個值而不是多個值,所以應該按概率把ξ劈開,劈成n份,每份的微觀狀態數分別是1/p1、1/p2、1/p3……,這樣這n份的熵分別是log 1/p1、log 1/p2、log 1/p3……,再根據熵的可加性原理,得到整體隨機變量ξ的信息熵是∑(p log 1/p),即H(ξ) = -∑(p log p)
最大熵原理
繼續看上面的信息熵公式,從公式可以看出,出現各種隨機結果可能性越大,不確定性就越大,熵就越大。相反,如果只可能出現一種結果,那麼熵就為0,因為這時p=1,-∑(p log p)=0
舉個例子,投1000次硬幣,最有可能的概率是正面1/2,負面1/2,因此熵是H(X) = -(0.5log0.5+0.5log0.5) = -0.5*math.log(2,1/2)*2 = -0.5*-1*2 = 1
那麼假設只會出現正面,熵是H(X) = -1log1 = 0
實際上哪種是最符合實際情況的呢?顯然是第一種,這就是最大熵模型的原理:在機器學習中之所以優化最大熵公式能訓練出最接近正確值的參數值,是因為這是「最符合實際」的可能。換句有哲理的話說:熵越大越趨向於自然,越沒有偏見
最大熵模型
機器學習中用到的最大熵模型是一個定義在條件概率分布P(Y|X)上的條件熵。其中X、Y分別對應著數據的輸入和輸出,根據最大熵原理,當熵最大時,模型最符合實際情況。那麼這個條件熵應該是什麼樣的呢?
條件概率分布P(Y|X)上的條件熵可以理解為在X發生的前提下,Y發生所「新」帶來的熵,表示為H(Y|X),那麼有
H(Y|X) = H(X,Y) - H(X)
其中H(X,Y)表示X、Y的聯合熵,表示X、Y都發生時的熵,H(Y|X)的計算公式推導如下:
因此我們在機器學習中想方設法優化的就是這個東東,由於這裡的p(x,y)無法統計,因此我們轉成p(x)p(y|x),這樣得到公式如下:
H(Y|X) = -∑p(x)p(y|x)log p(y|x)
那麼機器學習訓練的過程實際就是求解p(y|x)的過程,其中p(x)可以通過x的最大似然估計直接求得
最大熵模型
按照前面所說的,看到熵那麼一定會用到H(p)=-∑plogp,怎麼理解最大熵模型呢?我們的最終目的是想知道在某一個信息條件B下,得出某種可能的結果A的最大的概率,也就是條件概率P(A|B)最大的候選結果。因為最大熵就是不確定性最大,其實也就是條件概率最大,所以求最大的條件概率等同於求最大熵,而我們這裡的熵其實是H(p)=H(A|B)=-∑p(b)p(a|b)log(p(a|b)),為了使用訓練數據做估計,這裡的p(a|b)可以通過訓練數據的某些特徵來估計,比如這些特徵是fi(a,b),那麼做模型訓練的過程就編程了訓練∑λf(a,b)中的λ參數的過程,至此就有些像機器學習的線性回歸了,該怎麼做就清晰了。所以其實最大熵模型就是利用熵的原理和熵的公式來用另外一種形式來描述具有概率規律的現實的
至此,我們介紹完了熵的概念和公式以及最大熵原理和最大熵模型公式的由來,總之,熵來源於熱力學,擴展於資訊理論,應用在機器學習領域,它表達的是一種無序狀態,也是最趨向於自然、最符合實際的情況。為了更深入感受最大熵模型的魅力,後續我會把最大熵模型的應用不斷滲透到機器學習教程的具體算法中
來源:http://www.shareditor.com/blogshow?blogId=98