最大熵模型原理小結
最大熵模型(maximum entropy model, MaxEnt)也是很典型的分類演算法了,它和邏輯迴歸類似,都是屬於對數線性分類模型。在損失函式優化的過程中,使用了和支援向量機類似的凸優化技術。而對熵的使用,讓我們想起了決策樹演算法中的ID3和C4.5演算法。理解了最大熵模型,對邏輯迴歸,支援向量機以及決策樹演算法都會加深理解。本文就對最大熵模型的原理做一個小結。
熵和條件熵的回顧
熵度量了事物的不確定性,越不確定的事物,它的熵就越大。具體的,隨機變數X的熵的表示式如下:
其中n代表X的n種不同的離散取值。而pi代表了X取值為i的概率,log為以2或者e為底的對數。
熟悉了一個變數X的熵,很容易推廣到多個個變數的聯合熵,這裡給出兩個變數X和Y的聯合熵表示式:
有了聯合熵,又可以得到條件熵的表示式H(Y|X),條件熵類似於條件概率,它度量了我們的Y在知道X以後剩下的不確定性。表示式如下:
用下面這個圖很容易明白他們的關係。左邊的橢圓代表H(X),右邊的橢圓代表H(Y),中間重合的部分就是我們的互資訊或者資訊增益I(X,Y), 左邊的橢圓去掉重合部分就是H(X|Y),右邊的橢圓去掉重合部分就是H(Y|X)。兩個橢圓的並就是H(X,Y)。
最大熵模型的定義
最大熵模型假設分類模型是一個條件概率分佈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。
上式就是最大熵模型學習的約束條件,假如我們有M個特徵函式 fi(x,y)(i=1,2...,M)就有M個約束條件。可以理解為我們如果訓練集裡有m個樣本,就有和這m個樣本對應的M個約束條件。
這樣我們就得到了最大熵模型的定義如下:
假設滿足所有約束條件的模型集合為:
定義在條件概率分佈P(Y|X)上的條件熵為:
我們的目標是得到使H(P)最大的時候對應的P(y|x),這裡可以對H(P)加了個負號求極小值,這樣做的目的是為了使−H(P)為凸函式,方便使用凸優化的方法來求極值。
最大熵模型損失函式的優化
在上一節我們已經得到了最大熵模型的函式H(P)。它的損失函式−H(P)定義為:
約束條件為:
由於它是一個凸函式,同時對應的約束條件為仿射函式,根據凸優化理論,這個優化問題可以用拉格朗日函式將其轉化為無約束優化函式,此時損失函式對應的拉格朗日函式L(P,w)定義為:
其中wi(i=1,2,...m)為拉格朗日乘子。如果大家也學習過支援向量機,就會發現這裡用到的凸優化理論是一樣的,接著用到了拉格朗日對偶也一樣。
我們的拉格朗日函式,即為凸優化的原始問題:
其對應的拉格朗日對偶問題為:
由於原始問題滿足凸優化理論中的KKT條件,因此原始問題的解和對偶問題的解是一致的。這樣我們的損失函式的優化變成了拉格朗日對偶問題的優化。
求解對偶問題的第一步就是求
這可以通過求導得到。這樣得到的是關於w的函式。記為:
即為對偶函式,將其解記為:
具體的是求L(P,w)關於P(y|x)的偏導數:
令偏導數為0,可以解出P(y|x)關於w的表示式如下:
其中,Zw(x)為規範化因子,定義為:
這樣我們就得出了P(y|x)和w的關係,從而可以把對偶函式ψ(w)裡面的所有的P(y|x)替換成用w表示,這樣對偶函式ψ(w)就是全部用w表示了。接著我們對ψ(w)求極大化,就可以得到極大化時對應的w向量的取值,帶入P(y|x)和w的關係式, 從而也可以得到P(y|x)的最終結果。
對ψ(w)求極大化,由於它是連續可導的,所以優化方法有很多種,比如梯度下降法,牛頓法,擬牛頓法都可以。對於最大熵模型還有一種專用的優化方法,叫做改進的迭代尺度法(improved iterative scaling, IIS)。
IIS也是啟發式方法,它假設當前的引數向量是w,我們希望找到一個新的引數向量w+δ,使得對偶函式ψ(w)增大。如果能找到這樣的方法,就可以重複使用這種方法,直到找到對偶函式的最大值。
IIS使用的方法是找到ψ(w+δ)−ψ(w)的一個下界B(w|δ),通過對B(w|δ)極小化來得到對應的δ的值,進而來迭代求解w。對於B(w|δ),它的極小化是通過對δ求偏導數而得到的。
由於IIS一般只用於最大熵模型,適用範圍不廣泛,這裡就不詳述演算法過程了,感興趣的朋友可以直接參考IIS的論文The improved iterative scaling algorithm: A gentle introduction。
最大熵模型小結
最大熵模型在分類方法裡算是比較優的模型,但是由於它的約束函式的數目一般來說會隨著樣本量的增大而增大,導致樣本量很大的時候,對偶函式優化求解的迭代過程非常慢,scikit-learn甚至都沒有最大熵模型對應的類庫。但是理解它仍然很有意義,尤其是它和很多分類方法都有千絲萬縷的聯絡。
慣例,我們總結下最大熵模型作為分類方法的優缺點:
最大熵模型的優點有:
a) 最大熵統計模型獲得的是所有滿足約束條件的模型中資訊熵極大的模型,作為經典的分類模型時準確率較高。
b) 可以靈活地設定約束條件,通過約束條件的多少可以調節模型對未知資料的適應度和對已知資料的擬合程度
最大熵模型的缺點有:
a) 由於約束函式數量和樣本數目有關係,導致迭代過程計算量巨大,實際應用比較難。
為您推薦
相關文章
- 最大熵模型熵模型
- 《機器學習_05_線性模型_最大熵模型》機器學習模型熵
- 最大熵模型詳解與Python實現熵模型Python
- 邏輯斯蒂迴歸與最大熵模型初探熵模型
- 06_邏輯迴歸演算法和最大熵模型邏輯迴歸演算法熵模型
- 熵、資訊量、資訊熵、交叉熵-個人小結熵
- SDWebImage原理小結Web
- 今日面試題分享:什麼是最大熵面試題熵
- 一文總結條件熵、交叉熵、相對熵、互資訊熵
- 感知機原理小結
- innodb redo原理小結
- 程式設計世界的熵增原理程式設計熵
- prml線性模型小結模型
- 整合學習原理小結
- 近似熵-樣本熵-多尺度熵熵
- 熵,交叉熵,Focalloss熵
- 梯度下降法原理及小結梯度
- 線性迴歸原理小結
- 邏輯迴歸原理小結邏輯迴歸
- ASP.net路由原理小結ASP.NET路由
- 編譯原理作業小結編譯原理
- 資訊熵(夏農熵)熵
- softmax迴歸——原理、one-hot編碼、結構和運算、交叉熵損失熵
- 資訊熵概念隨筆——資訊熵、資訊的熵熵
- 併發程式設計模型小結程式設計模型
- ThinkPHP 5 模型使用歷程 - 小結PHP模型
- Laravel 的模型工廠使用小結Laravel模型
- 資訊熵相關知識總結熵
- Sring事務原理分享小結
- XGBoost演算法原理小結演算法
- 空洞可分離卷積原理小結卷積
- K近鄰法(KNN)原理小結KNN
- 梯度提升樹(GBDT)原理小結梯度
- 程式設計模型(正規化)小結程式設計模型
- CSS 小結筆記之盒子模型CSS筆記模型
- redis執行緒模型-學習小結Redis執行緒模型
- pytorch使用交叉熵訓練模型學習筆記PyTorch熵模型筆記
- Attention的基本原理與模型結構模型