最大熵模型屬于運用最大熵原理的多分類模型,這個模型在面試中經(jīng)常會與邏輯回歸一起問,比如景鼠,為什么說二者是類似的?要解答這個問題痹扇,需要對兩個模型的原理都有清晰的理解铛漓,很多面試者雖然能從書上背來一兩句結(jié)論,比如二者都是求的最大似然概率鲫构,但是只要深入問下去浓恶,都會面露囧色。本文試圖盡可能用清晰簡潔的語言說明白最大熵模型的原理结笨,以及它與最大似然的關(guān)系包晰。
1、分清最大熵思想與最大熵模型
我們平常說的最大熵模型炕吸,只是運用最大熵思想的多分類模型伐憾,最大熵的思想?yún)s是一種通用的思維方法。所以赫模,理解最大熵模型只需要搞清楚兩件事就可以:
最大熵思想是什么
最大熵模型是如何運用最大熵思想的
2树肃、最大熵思想
我們知道,分類模型有判別模型和生成模型兩種瀑罗,判別模型是要學習一個條件概率分布 P(y|x)胸嘴。
舉例說明雏掠,x是病人身體指標,體溫劣像、血壓乡话、血糖,y是各種可能的疾病耳奕,可簡化為小病绑青、中病、大病三種屋群。
現(xiàn)在闸婴,我們有一個樣本x1={體溫:30,血壓:160谓晌,血糖:60}掠拳,那么P(y|x1)就是一個概率分布,該分布的值就是上面簡化的三種纸肉,小病溺欧、中病、大病柏肪〗愕螅可能的概率分布如下所示:
小病中病大病
1/21/41/4
1/41/35/12
1/31/31/3
當然,這樣的分布有無數(shù)種烦味,上面只是舉例說明而已聂使。那么,問題來了谬俄,在這無數(shù)種概率分布中柏靶,哪一個才是好的呢?
為了選出一個好的分布溃论,可以做如下兩步:
1屎蜓、看看以往的病例中,指標x1={體溫:30钥勋,血壓:160炬转,血糖:60}和三種病之間的關(guān)系,如果沒有這樣的病例算灸,也就是說我們沒有過往的經(jīng)驗可以參考扼劈,那么,就直接選一個熵最大的分布就是菲驴,也就是上面表格中的第三個分布荐吵,因為均勻分布總是同類分布中熵最大的分布。
2、如果查看以往病例后捍靠,我們得到一個經(jīng)驗沐旨,指標x1={體溫:30森逮,血壓:160榨婆,血糖:60}有1/2的概率是小病,于是我們有了一定的經(jīng)驗知識褒侧,此時良风,最好的分布就是符合這個經(jīng)驗知識的前提下,熵最大的分布闷供,顯然烟央,第一個分布就是最好的分布。
以上歪脏,我們就是運用了最大熵的思想疑俭。總結(jié)來說婿失,最大熵的思想是钞艇,當你要猜一個概率分布時,如果你對這個分布一無所知豪硅,那就猜熵最大的均勻分布哩照,如果你對這個分布知道一些情況,那么懒浮,就猜滿足這些情況的熵最大的分布飘弧。
3、運用最大熵思想來做多分類問題
現(xiàn)在砚著,我們來看最大熵模型是如何運用最大熵思想的次伶。
還是上面的例子,假設(shè)我們不只有一個x1樣本稽穆,而是有x1冠王、x2、...秧骑、xN個樣本版确。并且知道每一個樣本所得的病y1、y2乎折、...绒疗、yN,yi是小病骂澄、中病吓蘑、大病三者之一。這個時候,我們要怎么運用最大熵思想呢磨镶?
首先溃蔫,我們要認真考慮一下這個例子和第2部分中的例子的不同之處,在第2部分的例子中琳猫,我們只有一個樣本x1伟叛,并且假設(shè)我們有關(guān)于x1的先驗知識,那就是1/2的概率是小病脐嫂,要求的概率分布只有一個统刮,那就是P(y|x1)。
現(xiàn)在账千,我們有N個樣本和它們的標簽侥蒙。這些標簽就是我們現(xiàn)在的先驗知識,即匀奏,對于xi鞭衩,我們知道它的標簽是yi,這個先驗知識與第2部分例子中的已知的1/2概率不再是同一種形式了娃善。
其次论衍,此時我們要求的模型P(y|x)已經(jīng)不是一個概率分布,而是無數(shù)個概率分布会放,因為饲齐,每一個x都會對應(yīng)一個P(y|x)。但是咧最,這無數(shù)個分布可以用一個關(guān)于x的函數(shù)來表示捂人,即 P(y|x) ~x。這樣矢沿,我們只要求出這個函數(shù)的形式和它的參數(shù)值滥搭,就算求出了模型P(y|x)。
在后面的敘述中捣鲸,P(y|x)有時代表某個x下y的條件概率分布瑟匆,有時也指無數(shù)個分布的集合,即關(guān)于x的函數(shù)栽惶。請注意辨別愁溜。
請思考一下,在這種情況下外厂,如何貫徹最大熵思想來求解條件概率 P(y|x)?
首先冕象,我們回顧一下最大熵思想:
當你要猜一個概率分布時,如果你對這個分布一無所知汁蝶,那就猜熵最大的均勻分布渐扮,如果你對這個分布知道一些情況论悴,那么,就猜滿足這些情況的熵最大的分布墓律。
其實膀估,我們只要兩步就可以貫徹最大熵思想:
1、找出滿足現(xiàn)有情況的分布P(y|x)耻讽。
雖然我們現(xiàn)在對P(y|x)的形式和參數(shù)還是一無所知察纯,但這并不妨礙我們從概率分布的層面上去考察它的一些特點。也就是P(y|x)要滿足的一些約束齐饮,這些約束捐寥,就是對我們已知的先驗知識的擬合笤昨。我們的先驗知識就是N個訓練樣本(xi祖驱,yi)。假設(shè)我們通過觀察這N個樣本瞒窒,發(fā)現(xiàn)了一個事實:
當體溫小于38捺僻,血壓小于100,血糖小于30時崇裁,總是得小病匕坯。這就是一個綜合后的先驗知識。我們可以據(jù)此定義一個特征函數(shù):
f(x,y) = 1? 當且僅當? x ={體溫小于38拔稳,血壓小于100葛峻,血糖小于30},y=小病
將f(x,y)運用到任一個樣本(xi巴比,yi)上术奖,我們就可以知道該樣本是不是滿足上述事實。你可以認為轻绞,f(x,y)是對樣本是否符合某個事實的判定函數(shù)采记。
也許你還是會對這個特征函數(shù)感到迷惑,請暫時放下迷惑政勃,只要相信唧龄,這一切都是為了讓我們能更加形式化地定義:什么樣的P(y|x)是滿足現(xiàn)有情況的。
根據(jù)已有的N個樣本奸远,我們可以算出P(x,y)的經(jīng)驗分布P~(x,y)和P(x)的經(jīng)驗分布P~(x)既棺。
然后,我們就可以統(tǒng)計下懒叛,在這個經(jīng)驗分布中丸冕,f(x,y)的期望是多少,如下所示
屏幕快照 2018-07-22 下午6.55.29.png
這個期望表示什么意思呢芍瑞?它表示的是晨仑,就我們的經(jīng)驗分布來看,滿足 x ={體溫小于38,血壓小于100洪己,血糖小于30}妥凳,y=小病這一事實的樣本占總體樣本的比率。比如說是1/3答捕,表示從我們的經(jīng)驗分布看逝钥,一個樣本有1/3的概率是符合這個事實的。
那么拱镐,我們求出的P(y|x)也要符合這個期望值才能算是滿足現(xiàn)有情況艘款。至此,我們終于找到一個衡量P(y|x)是否滿足現(xiàn)有情況的指標沃琅。但是哗咆,還有最后一個問題,我們的P(y|x)是條件分布益眉,衡量分布是否滿足現(xiàn)有情況時晌柬,需要聯(lián)合分布。
這個問題郭脂,很好解決年碘,我們有了x的經(jīng)驗分布P~(x),將這個經(jīng)驗分布乘以P(y|x)就可以近似表示我們的P(y|x)背后的聯(lián)合分布展鸡,據(jù)此屿衅,我們可以寫出P(y|x)要滿足的一個約束:
第一個約束
我們求出的P(y|x)滿足這個約束條件,就相當于滿足了現(xiàn)有的 x ={體溫小于38莹弊,血壓小于100涤久,血糖小于30},y=小病這一事實箱硕。這個事實來自于我們對N個樣本的觀察總結(jié)拴竹。
當然,觀察N個樣本剧罩,我們還可以得出其他事實栓拜,每一個事實都可以按照上述步驟,為P(y|x)施加一個“緊箍咒”惠昔。這個事實總結(jié)的越準確幕与,我們就越能窺見要求的P(y|x)的模樣。
2镇防、使得P(y|x)的熵最大化
假設(shè)我們現(xiàn)在已經(jīng)找出了所有滿足上面約束條件的P(y|x)啦鸣,現(xiàn)在,我們要運用最大熵思想來從中找出熵最大的P(y|x)来氧。
這里運用最大熵思想時诫给,我們要將P(y|x)看做是無數(shù)個概率分布的集合香拉,即每一個x,都對應(yīng)一個特定的概率分布P(y|x)中狂,每一個概率分布都會有一個熵凫碌,此時,所謂的最大熵胃榕,就是最大化這些所有的概率分布的熵的和盛险,由于每個x都有一個經(jīng)驗概率P~(x),我們還需要對所有這些熵進行加權(quán)求和勋又,以此表示哪一個概率分布的熵的最大化更加重要苦掘。如下所示:
目標函數(shù)
4、求解最大熵模型
對前面的內(nèi)容進行整理楔壤,我們得出如下的優(yōu)化數(shù)學問題:
屏幕快照 2018-07-22 下午7.22.40.png
注意:這里的 i=1,...,n表示我們對樣本觀察得出的n個事實鹤啡,可不是N個樣本哦。同時挺邀,這里通過加負號的辦法揉忘,將最大化問題轉(zhuǎn)化成了最小化問題。
為啥我們喜歡最小化而不喜歡最大化呢端铛,因為最小化相當于就坡往下滾,省勁疲眷,爽禾蚕,最大化相當于上坡,費勁狂丝,累换淆。哈哈,如果你當真我就服了你几颜!
到這一步倍试,我們稍微回顧一下。
我們到現(xiàn)在都不知道P(y|x)的函數(shù)形式是什么蛋哭,參數(shù)有多少县习,我們僅僅是從概率分布的抽象層面上進行討論,確定它要滿足的一些約束
每一個約束都來自于我們憑借已有知識谆趾,對N個樣本進行觀察總結(jié)得出的一個事實躁愿。
按照最大熵思想求P(y|x)時,我們是對所有可能的概率分布的熵進行了加權(quán)求和沪蓬。然后最大化這個和彤钟,而不是某個單一的概率分布的最大熵。
那么跷叉,剩下的工作就應(yīng)該由數(shù)學家?guī)臀覀兏愣艘荼ⅲ驗槲覀円呀?jīng)將問題完全形式化為一個約束最優(yōu)化問題了营搅!
由于下面涉及很多具體的數(shù)學,在敘述時梆砸,我盡可能不涉及具體的數(shù)學剧防,而只從整體的思路上說,以防止具體的數(shù)學干擾我們對模型的理解辫樱。
具體的求解方法和svm的求解是一致的峭拘,利用拉格朗日函數(shù)轉(zhuǎn)為求解對偶問題。對偶問題如下所示:
屏幕快照 2018-07-22 下午8.11.02.png
求解分為兩步:
第一步是求對偶問題里面的最小化問題狮暑,該問題求解完成后鸡挠,我們可以看到P(y|x)的形式,如下所示:
屏幕快照 2018-07-22 下午8.02.28.png
形式雖然有了搬男,但是里面的參數(shù)w還沒有具體確定拣展,第二步的最大化就是來確定參數(shù)w的。
第二步缔逛,最大化备埃。將P_w(y|x)帶入L(P,w),最大化該函數(shù)的值褐奴,也就是求對偶問題外層的最大化問題按脚,從而求出具體的w。
至此敦冬,最大熵模型解答完畢辅搬!
5、 說好的與邏輯回歸的相似處呢脖旱?
Note:由于下面的討論比較籠統(tǒng)堪遂,建議結(jié)合李航書觀看,風味更佳萌庆。
到這里溶褪,我們都沒有涉及到最大熵與邏輯回歸的相似的討論。因為這個問題也會涉及到很多的數(shù)學問題践险。讓我們從整體上來看一下猿妈。
在第4部分中,我們首先求解對偶問題的最小化捏境,得出了P(y|x)的形式P_w(y|x)于游,然后我們要求最大化,當我們將P_w(y|x)代入上面的L(P,w)后垫言,經(jīng)過一系列的變形推導贰剥,我們驚奇的發(fā)現(xiàn)我們求最大化時,實際上與我們直接求解P_w(y|x)關(guān)于樣本數(shù)據(jù)的對數(shù)似然最大化是一樣一樣的筷频。
至此蚌成,我們發(fā)現(xiàn)前痘,我們從最大熵的思想出發(fā)得出的最大熵模型,最后的最大化求解就是在求P(y|x)的對數(shù)似然最大化担忧。邏輯回歸也是在求條件概率分布關(guān)于樣本數(shù)據(jù)的對數(shù)似然最大化芹缔。二者唯一的不同就是條件概率分布的表示形式不同。
作者:milter
鏈接:http://www.reibang.com/p/e7c13002440d
來源:簡書
簡書著作權(quán)歸作者所有瓶盛,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處最欠。