1. 程式人生 > >這裡記錄著我一點一滴的進步

這裡記錄著我一點一滴的進步

熵的概念在統計學習與機器學習中真是很重要,熵的介紹在這裡:資訊熵 。今天的主題是最大熵模型(Maximum Entropy Model,以下簡稱MaxEnt),MaxEnt 是概率模型學習中一個準則,其思想為:在學習概率模型時,所有可能的模型中熵最大的模型是最好的模型;若概率模型需要滿足一些約束,則最大熵原理就是在滿足已知約束的條件集合中選擇熵最大模型。最大熵原理指出,對一個隨機事件的概率分佈進行預測時,預測應當滿足全部已知的約束,而對未知的情況不要做任何主觀假設。在這種情況下,概率分佈最均勻,預測的風險最小,因此得到的概率分佈的熵是最大

直觀理解 MaxEnt

在求解概率模型時,當沒有任何約束條件則只需找到熵最大的模型,比如預測一個骰子的點數,每個面為 1/6, 當模型有一些約束條件之後,首先要滿足這些約束條件, 然後在滿足約束的集合中尋找熵最大的模型,該模型對未知的情況不做任何假設,未知情況的分佈是最均勻的。舉例來說對於隨機變數 X ,其可能的取值為 {A,B,C} ,沒有任何約束的情況下下,各個值等概率得到的 MaxEnt 模型為:

當給定一個約束 P(A)=1/2 , 滿足該約束條件下的 MaxEnt 模型是:

如果用歐式空間中的 simplex 來表示隨機變數 X 的話,則 simplex 中三個頂點分別代表隨機變數 X 的三個取值 A, B, C , 這裡定義 simplex  中任意一點 p 到三條邊的距離之和(恆等於三角形的高)為 1,點到其所對的邊為該取值的概率,比如任給一點 p ,則P(A)等於 p 到  邊 BC 的距離,如果給定如下概率:

分別用下圖表示以上兩種情況:

12

明白了 simplex 的定義之後,將其與概率模型聯絡起來,在 simplex 中,不加任何約束,整個概率空間的取值可以是 simplex 中的任意一點,只需找到滿足最大熵條件的的即可;當引入一個約束條件

後,如下圖中 (b),模型被限制在表示的直線上,則應在滿足約束的條件下來找到熵最大的模型;當繼續引入條件後,如圖(c),模型被限制在一點上,即此時有唯一的解;當不一致時,如圖(d),此時模型無法滿足約束,即無解。在 MaxEnt 模型中,由於約束從訓練資料中取得,所以不會出現不一致。即不會出現(d) 的情況。

1

接下來以統計建模的形式來描述 MaxEnt 模型,給定訓練資料 ,現在要通過Maximum Entrop 來建立一個概率判別模型,該模型的任務是對於給定的 X=x 以條件概率分佈P(Y|X=x)預測 YY 的取值。根據訓練語料能得出 (X,Y) 的經驗分佈, 得出部分(X,Y)的概率值,或某些概率需要滿足的條件,即問題變成求部分資訊下的最大熵或滿足一定約束的最優解,約束條件是靠特徵函式

來引入的,首先先回憶一下函式期望的概念

對於隨機變數 X=xi,i=1,2,…,則可以得到:

隨機變數期望: 對於隨機變數 XX ,其數學期望的形式為

隨機變數函式期望:若 Y=f(X) ,則關於 XX 的函式 YY 的期望:.

特徵函式

特徵函式f(x,y)描述x與y之間的某一事實,其定義如下:

特徵函式f(x,y)是一個二值函式, 當x與y滿足事實時取值為 1 ,否則取值為 0 。比如對於如下資料集:

1

資料集中,第一列為 Y ,右邊為 X ,可以為該資料集寫出一些特徵函式,資料集中得特徵函式形式如下:

為每個 <feature,label> 對 都做一個如上的特徵函式,用來描述資料集數學化。

約束條件

接下來看經驗分佈,現在把訓練資料當做由隨機變數 (X,Y) 產生,則可以根據訓練資料確定聯合分佈的經驗分佈 與邊緣分佈的經驗分佈  :

表示特徵函式f(x,y)關於經驗分佈的期望,可得:

 前面已經得到了,數數f(x,y)的次數就可以了,由於特徵函式是對建立概率模型有益的特徵,所以應該讓 MaxEnt 模型來滿足這一約束,所以模型P(Y|X)關於函式 f的期望應該等於經驗分佈關於 f的期望,模型 P(Y|X)關於 f的期望為:

經驗分佈與特徵函式結合便能代表概率模型需要滿足的約束,只需使得兩個期望項相等, 即  :

上式便為 MaxEnt 中需要滿足的約束,給定 nn 個特徵函式,則有 n個約束條件,用 C表示滿足約束的模型集合:

從滿足約束的模型集合 C 中找到使得 P(Y|X) 的熵最大的即為 MaxEnt 模型了。

最大熵模型

關於條件分佈 P(Y|X)的熵為:

首先滿足約束條件然後使得該熵最大即可,MaxEnt 模型  為:

綜上給出形式化的最大熵模型:

給定資料集 ,特徵函式 fi(x,y),i=1,2…,n,根據經驗分佈得到滿足約束集的模型集合 C :

MaxEnt 模型的求解

MaxEnt 模型最後被形式化為帶有約束條件的最優化問題,可以通過拉格朗日乘子法將其轉為無約束優化的問題,引入拉格朗日乘子:

, 定義朗格朗日函式 L(P,w):

現在問題轉化為:  ,拉格朗日函式 L(P,w) 的約束是要滿足的 ,如果不滿足約束的話,只需令,則可得,因為需要得到極小值,所以約束必須要滿足,滿足約束後可得:  ,現在問題可以形式化為便於拉格朗日對偶處理的極小極大的問題:

由於 L(P,w)是關於 P 的凸函式,根據拉格朗日對偶可得 L(P,w)的極小極大問題與極大極小問題是等價的:

現在可以先求內部的極小問題得到的解為關於 w 的函式,可以記做 Ψ(w) :

上式的解  可以記做:

由於求解 P的最小值,只需對於 P(y|x) 求導即可,令導數等於 0 即可得到

由於 ,可得:

進而可以得到:

這裡 起到了歸一化的作用,令  表示 ,便得到了 MaxEnt 模型 :

這裡代表特徵函式, 代表特徵函式的權值,  即為 MaxEnt 模型,現在內部的極小化求解得到關於 w的函式,現在求其對偶問題的外部極大化即可,將最優解記做 :

所以現在最大上模型轉為求解  的極大化問題,求解最優的  後, 便得到了所要求的MaxEnt 模型,將 帶入  ,可得:

以上推倒第二行到第三行用到以下結論:

倒數第二行到最後一行是由於:,最終通過一系列極其複雜的運算,得到了需要極大化的式子:

極大化似然估計解法

這太難了,有沒有簡單又 work 的方式呢? 答案是有的,就是極大似然估計 MLE 了,這裡有訓練資料得到經驗分佈  , 待求解的概率模型 P(Y|X) 的似然函式為:

將  帶入以下公式可以得到:

我們發現,我們從最大熵的思想出發得出的最大熵模型,最後的最大化求解就是在求P(y|x)的對數似然最大化。邏輯迴歸也是在求條件概率分佈關於樣本資料的對數似然最大化。二者唯一的不同就是條件概率分佈的表示形式不同。

顯而易見,拉格朗日對偶得到的結果與極大似然得到的結果時等價的,現在只需極大化似然函式即可,順帶優化目標中可以加入正則項,這是一個凸優化問題,一般的梯度法、牛頓法都可解之,專門的演算法有GIS IIS 演算法。

《統計學習方法》中有非常詳細的使用IIS優化目標函式的過程。

演算法的推導比較麻煩,但思路是清晰的:

最大熵模型在分類方法裡算是比較優的模型,但是由於它的約束函式的數目一般來說會隨著樣本量的增大而增大,導致樣本量很大的時候,對偶函式優化求解的迭代過程非常慢,scikit-learn甚至都沒有最大熵模型對應的類庫。但是理解它仍然很有意義,尤其是它和很多分類方法都有千絲萬縷的聯絡。 

       我們總結下最大熵模型作為分類方法的優缺點:

    最大熵模型的優點有:

    a) 最大熵統計模型獲得的是所有滿足約束條件的模型中資訊熵極大的模型,作為經典的分類模型時準確率較高。

    b) 可以靈活地設定約束條件,通過約束條件的多少可以調節模型對未知資料的適應度和對已知資料的擬合程度

    最大熵模型的缺點有:

    a) 由於約束函式數量和樣本數目有關係,導致迭代過程計算量巨大,實際應用比較難。

Reference