【机器学习】最大熵模型(Maximum Entropy Model)
最大熵模型(Maximum Entropy Model,以下簡稱MaxEnt),MaxEnt 是概率模型學習中一個準則,其思想為:在學習概率模型時,所有可能的模型中熵最大的模型是最好的模型;若概率模型需要滿足一些約束,則最大熵原理就是在滿足已知約束的條件集合中選擇熵最大模型。最大熵原理指出,對一個隨機事件的概率分布進行預測時,預測應當滿足全部已知的約束,而對未知的情況不要做任何主觀假設。在這種情況下,概率分布最均勻,預測的風險最小,因此得到的概率分布的熵是最大。
最大熵模型是由最大熵原理推導實現的,所以,在講述最大熵模型前,我們先要講講最大熵原理,將它作為預備知識。
最大熵原理
最大熵原理 是 概率模型學習的一個準則, 評價一個模型的好壞是根據熵的大小,熵大說明模型越好。因此可以理解,最大熵原理就是滿足一定的約束條件下,選擇熵最大的模型。
計算最大熵根據兩個前提去解決問題:
舉個簡單的例子:
1)假設隨機變量有5個取值 ,要估計各個值的概率。
從上述的已知條件,我們知道
(約束)
根據最大熵的前提條件,我們可以假定:(等概率)
所以,可以計算出來
2)假設隨機變量有5個取值 ,其中,。估計各個值的概率。
如題可以知道:
(約束)
(約束)
從約束中根據等概率,我們可以推測,
現在,知道了最大熵原理,是不是覺得很簡單~
接下來以統計建模的形式來描述 MaxEnt 模型,給定訓練數據??,現在要通過 Maximum Entropy 來建立一個概率判別模型,該模型的任務是對于給定的??以條件概率分布??預測??的取值。根據訓練語料能得出??的經驗分布, 得出部分??的概率值,或某些概率需要滿足的條件,即問題變成求部分信息下的最大熵或滿足一定約束的最優解,約束條件是靠特征函數來引入的,首先先回憶一下函數期望的概念。
對于隨機變量?? 則可以得到:
隨機變量期望: 對于隨機變量??,其數學期望的形式為?
隨機變量函數期望:若??, 則關于??的函數??的期望:?
特征函數
特征函數??描述??與??之間的某一事實,其定義如下:
特征函數??是一個二值函數, 當??與??滿足事實時取值為 1 ,否則取值為 0 。比如對于如下數據集:
數據集中,第一列為 ?,右邊為 ?,可以為該數據集寫出一些特征函數,數據集中得特征函數形式如下:
為每個 <feature,label> 對 都做一個如上的特征函數,用來描述數據集數學化。
約束條件
接下來看經驗分布,現在把訓練數據當做由隨機變量??產生,則可以根據訓練數據確定聯合分布的經驗分布??與邊緣分布的經驗分布??:
為計數函數。
用??表示特征函數??關于經驗分布??的期望,可得:
?前面已經得到了,數數??的次數就可以了,由于特征函數是對建立概率模型有益的特征,所以應該讓 MaxEnt 模型來滿足這一約束,所以模型? 關于函數??的期望應該等于經驗分布關于??的期望,模型??關于??的期望為:
為模型的實際聯合分布,如果模型可以從訓練集中學習,我們就可以假設這兩個期望相等。也即。
簡單來講就是我們從訓練集數據狀況中所得到的經驗分布可以一定程度上去代替模型的實際分布,當訓練集很大的時候,這兩者確實可以近乎認為相等,其實就是抽樣估計啦~。
我們要求的是模型是,解出,我們就可以帶入樣本,得到輸出的概率分布。
經驗分布與特征函數結合便能代表概率模型需要滿足的約束,只需使得兩個期望項相等, 即??:
上式便為 MaxEnt 中需要滿足的約束,給定??個特征函數??,則有??個約束條件,用??表示滿足約束的模型集合:
從滿足約束的模型集合??中找到使得??的熵最大的即為 MaxEnt 模型了。
最大熵模型
關于條件分布??的熵為:
首先滿足約束條件然后使得該熵最大即可,MaxEnt 模型??為:
或者
綜上給出形式化的最大熵模型:
給定數據集?,特征函數?,根據經驗分布得到滿足約束集的模型集合??:
按照最優化的習慣,一般會將求最大問題轉換為等價的求最小問題。MaxEnt 模型的求解
MaxEnt 模型最后被形式化為帶有約束條件的最優化問題,可以通過拉格朗日乘子法將其轉為無約束優化的問題,引入拉格朗日乘子:,定義朗格朗日函數??:
現在問題轉化為:??,拉格朗日函數??的約束是要滿足的 ,如果不滿足約束的話,只需另??,則可得?,因為需要得到極小值,所以約束必須要滿足,滿足約束后可得:?,現在問題可以形式化為便于拉格朗日對偶處理的極小極大的問題:(詳細參見之前寫的拉格朗日乘子法、KKT條件、拉格朗日對偶)
由于??是關于 ?的凸函數,根據拉格朗日對偶可得??的極小極大問題與極大極小問題是等價的:
現在可以先求內部的極小問題??,?得到的解為關于??的函數,可以記做??:
上式的解??可以記做:
由于求解??的最小值??,只需對于??求導即可,令導數等于 0 即可得到??:
由于?,可得:
進而可以得到:
這里??起到了歸一化的作用,令??表示??,便得到了?MaxEnt 模型?:
這里??代表特征函數,?代表特征函數的權值,?即為 MaxEnt 模型,現在內部的極小化求解得到關于??的函數,現在求其對偶問題的外部極大化即可,將最優解記做?:
所以現在最大熵模型轉為求解??的極大化問題,求解最優的??后, 便得到了所要求的MaxEnt 模型,將??帶入??,可得:
以上推倒第二行到第三行用到以下結論:
倒數第二行到最后一行是由于:,最終通過一系列極其復雜的運算,得到了需要極大化的式子:
對??求極大化,由于它是連續可導的,所以優化方法有很多種,比如梯度下降法,牛頓法,擬牛頓法都可以。對于最大熵模型還有一種專用的優化方法,叫做改進的迭代尺度法(improved iterative scaling, IIS)。
極大化似然估計解法
這太難了,有沒有簡單又 work 的方式呢? 答案是有的,就是極大似然估計 MLE 了,這里有訓練數據得到經驗分布?, 待求解的概率模型??的似然函數為:
這里以指數的形式引入了。注意,對于給定的訓練數據,都是通過統計得到的常數。至于為什么要以指數的形式引入,這么想,對應指數函數其中為常數,對于固定的而言,總是希望越大越好,求得參數能夠使整體訓練集的最大,就是我們要做的事情。
將??帶入以下公式可以得到:
顯而易見,拉格朗日對偶得到的結果與極大似然得到的結果時等價的,現在只需極大化似然函數即可,順帶優化目標中可以加入正則項,這是一個凸優化問題,一般的梯度法、牛頓法都可解之,專門的算法有GIS IIS 算法。
最優化算法
最優化算法詳見最大熵學習筆記(五)最優化算法
IIS算法:
4. 最大熵模型小結
? ? ? ?最大熵模型在分類方法里算是比較優的模型,但是由于它的約束函數的數目一般來說會隨著樣本量的增大而增大,導致樣本量很大的時候,對偶函數優化求解的迭代過程非常慢,scikit-learn甚至都沒有最大熵模型對應的類庫。但是理解它仍然很有意義,尤其是它和很多分類方法都有千絲萬縷的聯系。
? ? 慣例,我們總結下最大熵模型作為分類方法的優缺點:
最大熵模型的優點有:
最大熵模型的缺點有:
?
參考文章:
最大熵模型 Maximum Entropy Model
李航統計學習
最大熵學習筆記(五)最優化算法
總結
以上是生活随笔為你收集整理的【机器学习】最大熵模型(Maximum Entropy Model)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】贝叶斯线性回归(最大后验估计
- 下一篇: 【机器学习】L1正则化与L2正则化详解及