1. 前言
最大熵模型(maximum entropy model, MaxEnt)也是很典型的分類算法了,它和邏輯回歸類似,都是屬於對數線性分類模型。在損失函數優化的過程中,使用了和支持向量機類似的凸優化技術。而對熵的使用,讓我們想起了決策樹算法中的ID3和C4.5算法。理解了最大熵模型,對邏輯回歸,支持向量機以及決策樹算法都會加深理解。本文就對最大熵模型的原理做一個小結。
2. 信息論回顧
2.1 信息熵
熵度量了事物的不確定性,越不確定的事物,它的熵就越大。在沒有外部環境的作用下,事物總是向着熵增大的方向發展,所以熵越大,可能性也越大。
2.2 條件熵
X確定時,Y的不確定性度量。
在X發生是前提下,Y發生新帶來的熵。
2.3 聯合熵
(X,Y)在一起時的不確定性度量
2.4 互信息(信息增益)
表示兩個變量X與Y是否有關系,以及關系的強弱。
可以看出,I(X,Y)可以解釋為由X引入而使Y的不確定度減小的量,這個減小的量為H(Y|X)。所以,如果X,Y關系越密切,I(X,Y)就越大,X,Y完全不相關,I(X,Y)為0,所以互信息越大,代表這個特征的分類效果越好。
3. 最大熵模型的定義
最大熵模型假設分類模型是一個條件概率分布\(P(Y|X)\),X為特征,\(Y\)為輸出。
給定一個訓練集\((x_1,y_1),(x_2,y_2),...,(x_m,y_m)\),其中x為n維特征向量,y為類別輸出。我們的目標就是用最大熵模型選擇一個最好的分類類型。
在給定訓練集的情況下,我們可以得到總體聯合分布\(P(X,Y)\)的經驗分布\(P'(X,Y)\)和邊緣分布\(P(X)\)的經驗分布\(P'(X)\)。\(P'(X,Y)\)即為訓練集中\(X,Y\)同時出現的次數除以樣本總數m,\(P'(X)\)即為訓練集中\(X\)出現的次數除以樣本總數m。
用特征函數\(f(x,y)\)描述輸入x和輸出y之間的關系。定義為:
可以認為只要出現在訓練集中出現的\((x_i,y_i)\),其\(f(x_i,y_i)=1\). 同一個訓練樣本可以有多個約束特征函數。
特征函數\(f(x,y)\)關於經驗分布\(P'(X,Y)\)的期望值,用\(E_P(f)\)表示為:
特征函數\(f(x,y)\)關於條件分布\(P(Y|X)\)和經驗分布\(P'(X)\)的期望值,用\(E_P(f)\)表示為:
如果模型可以從訓練集中學習,我們就可以假設這兩個期望相等。即:
上式就是最大熵模型學習的約束條件,假如我們有M個特征函數\(f_i(x,y)(i=1,2...,M)\)就有\(M\)~個約束條件。可以理解為我們如果訓練集里有m個樣本,就有和這m個樣本對應的M個約束條件。
這樣我們就得到了最大熵模型的定義如下:
假設滿足所有約束條件的模型集合為:
定義在條件概率分布\(P(Y|X)\)上的條件熵為:
我們的目標是得到使\(H(P)\)最大的時候對應的\(P(y|x)\),這里可以對\(H(P)\)加了個負號求極小值,這樣做的目的是為了使\(-H(P)\)為凸函數,方便使用凸優化的方法來求極值。
4. 最大熵模型小結
最大熵模型在分類方法里算是比較優的模型,但是由於它的約束函數的數目一般來說會隨着樣本量的增大而增大,導致樣本量很大的時候,對偶函數優化求解的迭代過程非常慢,scikit-learn甚至都沒有最大熵模型對應的類庫。但是理解它仍然很有意義,尤其是它和很多分類方法都有千絲萬縷的聯系。
慣例,我們總結下最大熵模型作為分類方法的優缺點:
最大熵模型的優點有:
- 最大熵統計模型獲得的是所有滿足約束條件的模型中信息熵極大的模型,作為經典的分類模型時准確率較高。
- 可以靈活地設置約束條件,通過約束條件的多少可以調節模型對未知數據的適應度和對已知數據的擬合程度
最大熵模型的缺點有:
- 由於約束函數數量和樣本數目有關系,導致迭代過程計算量巨大,實際應用比較難。