最大熵模型

香橙雲子發表於2018-03-06

生活中我們經常聽到人們說“不要把雞蛋放到一個籃子裡”,這樣可以降低風險。深究一下,這是為什麼呢?其實,這裡邊包含了所謂的最大熵原理(The Maximum Entropy Principle)。

最大熵原理

在已知約束的情況下,我們建模時應該滿足這些約束,並且對其他條件作最複雜最一般的假設。這樣會得出更貼近於真實的結果。一般來說,這種假設就是最大熵原理。因為熵最大資訊量最大,不確定性最大。

最大熵原理認為,學習概率模型時,在所有可能的概率分佈模型中,熵最大的模型,為最好的模型。

最大熵模型

將最大熵原理應用於分類問題,我們便得到了最大熵模型。我們的目標便是:利用最大熵原理選擇一個最好的分類模型,即對於任意給定的輸入x∈X,可以以概率p(y|x)輸出y∈Y。

特徵函式

我們對於實際的特徵通常會採用特徵函式的方法將其量化成數,這樣我們才可以進行計算。我們通常採用二值定義的方式:

最大熵模型

這樣我們便可以使用這個函式值來計算我們的經驗分佈

經驗分佈

我們首先要明確一點,我們的最大熵模型是未知目標分佈的。也就是說我們對於約束條件以外的分佈並不可知,所以我們才用最大熵來假設等概同分布。

那第一個條件概率分佈就已經是未知了,那還如何去計算後續的熵呢?要知道熵的計算公式都離不開概率。這時候我們就引入一個經驗分佈,就是將已經觀察的資料作為經驗,來模擬一下真實分佈。感覺和我們計算概率的方法很接近,但是從嚴格的數學意義上來說,這並不能代表真實資料的分佈情況,哪怕樣本足夠多。

有特徵函式作為資料的輸入源頭,我們計算經驗分佈: f(x,y) = 1的個數/總個數。,原計算公式為:

最大熵模型

約束條件

如果我們選擇模型能夠獲取真實訓練集中的資訊,那麼我們便可以假設這兩個模型的期望值相等。這樣便有:

最大熵模型

其中這兩個計算公式為:

最大熵模型

最大熵模型

當然這只是一個預設的約束條件,也就是最終選擇的目標模型一定需要滿足此條約束。但是不表示僅僅是這一條約束,我們對待實際問題需要區別處理。比如說我們我們已知骰子的1和6朝上概率為3/20,(假設骰子不均勻)那麼這就是一個額外的條件約束。

為了幫助大家理解約束條件,這裡還有比較完整詳細的約束條件幾何解釋

約束條件的幾何解釋

熵的計算

這是我們所要優化的目標,熵。我們的目的就是要將模型的熵提高到最大,來將此模型作為我們最終使用的模型。 假設滿足所有約束條件的模型集合為:

最大熵模型
我們將定義在概率分佈P(Y|X)上的條件熵定義為:
最大熵模型

對條件熵不太熟悉的朋友可以看維基百科中對於條件熵的描述。

最大熵模型的學習

最大熵模型的學習過程就是一個求解最大熵模型的過程。我們將此過程也可以簡化稱為一種約束最優化的過程,等價約束最優化問題如下:

最大熵模型

我們首先按照一般習慣,將此求最大問題轉化為求最小問題。對原式取負就可以。 轉化之後的公式如下:

最大熵模型

然後就開始求解此約束條件的最優化問題:

最大熵模型

由於原始問題是凸問題,所以其對偶問題與原始問題同解,我們便著力求解其對偶問題。這裡我貼上《統計學習方法》裡面的解法,幫助大家理解:

最大熵模型

最大熵模型

一個例子

最大熵模型
最大熵模型

最大熵模型
最大熵模型
最大熵模型

相關文章