最近在回顧李航的統計學習方法[1], 看到這一章, 準備好好梳理一下, 更加深入地理解原理以及背後的思想. 作者在這一章介紹了最大熵模型並且推導了對偶函式的極大化等價於最大熵模型的極大似然估計, 面對一大堆的概念, 我重新回顧了一遍其中相關的內容.
最大熵原理是在 1957 年由 e.t.jaynes 提出的,其主要思想是,在只掌握關於未知分布的部分知識時,應該選取符合這些知識但熵值最大的概率分布。我們常說,不要把所有的雞蛋放在乙個籃子裡,其實就是最大熵原理的乙個樸素的說法,因為當我們遇到不確定性時,就要保留各種可能性。吳軍數學之美[2]第十六章中通俗地描述其為, 當我們需要對乙個隨機事件的概率分布進行**時,我們的**應當滿足全部已知的條件,而對未知的情況不要做任何主觀假設。他舉了乙個某次去at&t做關於最大熵模型的報告時的栗子:
有 一次,我去 at&t 實驗室作關於最大熵模型的報告,我帶去了乙個色子。我問聽眾「每個面朝上的概率分別是多少」,所有人都說是等概率,即各點的概率均為1/6。這種猜測當然 是對的。我問聽眾們為什麼,得到的回答是一致的:對這個「一無所知」的色子,假定它每乙個朝上概率均等是最安全的做法。(你不應該主觀假設它象韋小寶的色 子一樣灌了鉛。)從投資的角度看,就是風險最小的做法。從資訊理論的角度講,就是保留了最大的不確定性,也就是說讓熵達到最大。接著,我又告訴聽眾,我的這 個色子被我特殊處理過,已知四點朝上的概率是三分之一,在這種情況下,每個面朝上的概率是多少?這次,大部分人認為除去四點的概率是 1/3,其餘的均是 2/15,也就是說已知的條件(四點概率為 1/3)必須滿足,而對其餘各點的概率因為仍然無從知道,因此只好認為它們均等。注意,在猜測這兩種不同情況下的概率分布時,大家都沒有新增任何主觀的假 設,諸如四點的反面一定是三點等等。(事實上,有的色子四點反面不是三點而是一點。)這種基於直覺的猜測之所以準確,是因為它恰好符合了最大熵原理下面是一些概念的定義
熵: 這裡指的是資訊理論裡的熵, 是接收的每條訊息中包含的資訊的平均量. 也可以理解為資訊的不確定度, 越隨機的信源的熵越大. 就像我們平時說話, 出現少的詞往往包含更大的資訊量, 比如我中午要去吃肯德基的炸雞, 在這句話裡, "的"字平時非常常用, 但是幾乎沒什麼意義, 但是肯德基跟炸雞平時出現的相對少, 卻包含了更大的資訊量. 數學上的定義如下
假設離散隨機變數x的概率分布是p(x), 則其熵是公式1 (p80-6.9)
熵滿足以下不等式:
公式2其中|x|是x的取值個數.當且僅當x的分布是均勻分布時右邊等號成立, 也就是說, 當x服從均勻分布時, 熵最大.
最大熵原理: 概率模型學習的乙個準則, 最大熵原理認為, 學習概率模型時, 在所有可能的概率模型中, 熵最大的模型是最好的模型. 通常用約束條件來確定概率模型的集合, 所以, 最大熵原理也可以表述為在滿足約束條件的模型集合中選擇熵最大的模型. 話說李寧的廣告語叫一切皆有可能, 字面上的意思不就是最大熵模型麼.
那麼問題來了, 最大熵模型裡的熵是怎麼定義的.
準確地說, 是模型p(y | x)與經驗分布p(x)的條件熵. 也就是:
可以理解為模型在當前樣本的特徵分布下**結果的熵, 熵越大, **結果在各個類之間分布越均勻.
公式3 模型的條件熵
那上文提到的約束條件又是什麼?
我們用特徵函式f(x, y)描述輸入x和輸出y之間的某個事實, 定義為
公式4 p82
所以特徵函式關於經驗分布p(x,y)的期望值:
公式5 p82
特徵函式關於模型p(y|x)與經驗分布p(x)的期望值:
公式6 p83
如果模型能夠學習到訓練資料中的資訊, 那麼就可以假設這兩個期望值相等.
公式7 p83 6.11
這就形成了我們模型學習的約束條件, 假定滿足條件的模型集合為
公式8 p83 6.12
所以 最大熵模型的學習, 等價於學習以下最優化問題.
學習過程就是對偶問題的求解.
公式9 p83
學習方法:
最原始的最大熵模型的訓練方法是一種稱為通用迭代演算法gis(generalized iterative scaling) 的迭代 演算法。gis 的原理並不複雜,大致可以概括為以下幾個步驟:
1. 假定第零次迭代的初始模型為等概率的均勻分布。
2. 用第 n 次迭代的模型來估算每種資訊特徵在訓練資料中的分布,如果超過了實際的,就把相應的模型引數變小;否則,將它們便大。
3. 重複步驟 2 直到收斂。
gis 演算法每次迭代的時間都很長,需要迭代很多次才能收斂,而且不太穩定.
八十年代,很有天才的孿生兄弟的達拉皮垂(della pietra)在 ibm 對 gis 演算法進行了兩方面的改進,提出了改進迭代演算法 iis(improved iterative scaling)。這使得最大熵模型的訓練時間縮短了一到兩個數量級。這樣最大熵模型才有可能變得實用。即使如此,在當時也只有 ibm 有條件是用最大熵模型。
似然函式:
公式10 似然函式
從字面上來看, 似然(likelihood)與概率(probability)沒有太大區別, 都代表可能性. 下面是一些我對這兩個概念的直觀理解.
概率, 表示在所有觀測樣本中, 樣本x出現的可能性. 在這裡, 模型的分布以及引數都是確定的.
似然, 標識在模型或者說分布確定的情況下, 對應不同的引數, 樣本x出現的可能性.
最大似然估計, 就是在選定模型的前提下, 學習最符合當前觀測樣本的引數, 本質上是一種典型的經驗風險最小化方法. 在樣本量比較小的時候, 觀測並不能代表整體, 因此, 這種學習方法並不會太好, 容易產生過擬合.
首先是一點個人的理解: 二者都屬於經驗風險最小化的引數學習方法, 最大熵模型追求的目標是, 在對當前樣本**盡可能與觀測值一致的前提下, 是的各分類之間盡可能均勻, 也就是模型在當前樣本上面**的條件熵盡可能的大; 最大似然估計則是在確定模型的前提下, 盡可能使各個樣本點在**時發生的概率大. 在[3]中, 大佬證明了最大熵模型的對偶問題求解方法, 等價於最大熵模型的極大似然估計.
最大熵原理的實質就是,在已知部分知識的前提下,關於未知分布最合理的推斷就是符合已知知識最不確定或最隨機的推斷,這是我們可以作出的唯一不偏不倚的選擇,任何其它的選擇都意味著我們增加了其它的約束和假設,這些約束和假設根據我們掌握的資訊無法作出。
最大似然估計 交叉熵與最大似然估計的聯絡
交叉熵刻畫的是實際輸出 概率 與期望輸出 概率 的距離,也就是交叉熵的值越小,兩個概率分布就越接近,即擬合的更好。kl散度如下圖所示 當p分布是已知,則熵是常量 於是交叉熵和kl散度則是等價的。最小化kl散度和模型採用最大似然估計進行引數估計又是一致的。可以從公式推導上證明 最小化交叉熵即最小化kl...
最大熵模型與最大似然概率
對於自然語言處理中的各種模型來說,最大熵模型是一種在形式上最簡單,但是在實現上卻最複雜的模型。最大熵模型就是在滿足已知條件的情況下,求得使熵最大的概率模型。說起來很簡單,實際上要求得這個熵最大的概率模型,計算量十分巨大,因此需要仔細設計細節。最大熵模型最大的難點 於特徵的選取和引數估計。其中特徵選取...
最大似然估計 最大似然估計與最大後驗估計聯絡
引數估計的目的是決定變數之間相互關聯的量化關係。常用的引數估計方法包括最大似然估計法 最大後驗估計 期望最大化法 em 和貝葉斯估計方法。在觀測資料前,我們將 的已知知識表示成先驗概率分布,p 我們通常稱為先驗。一般而言,在機器學習實踐的時候,會選擇乙個相當寬泛的先驗分布 這個先驗分布通常是高熵的分...