IIS是一種最大熵模型學(xué)習(xí)的最優(yōu)化算法。最大熵模型:舟曉南:統(tǒng)計學(xué)習(xí)方法 - 最大熵模型解析 | 數(shù)據(jù)分析,機(jī)器學(xué)習(xí)碱工,學(xué)習(xí)歷程全記錄
已知最大熵模型為:
《統(tǒng)計學(xué)習(xí)方法》中直接給出對數(shù)似然函數(shù)為:
現(xiàn)在解釋如何得到上式的對數(shù)似然函數(shù):
首先根據(jù)對數(shù)似然函數(shù)的一般形式給出:
在上式中庵寞,第二行的箭頭成立,是因為指數(shù)v(x, y)表示x和y確定時的個數(shù)闪朱,N為總樣本數(shù)月匣,除以總樣本數(shù)不改變w,因此成立奋姿。
因為
為常數(shù)锄开,這對于我們求極大值沒有用處,因此忽略称诗,所以:
因為?
所以最終可以得到書中的對數(shù)似然函數(shù):
現(xiàn)在求對數(shù)似然函數(shù)w的極大值萍悴,假設(shè)最大熵模型當(dāng)前的參數(shù)向量是w,找到一個新的參數(shù)向量??寓免,使模型的對數(shù)似然函數(shù)值增大癣诱。如果能有這樣一種參數(shù)向量更新的方法??,那么就可以不停迭代袜香,直至找到對數(shù)似然函數(shù)的最大值撕予。
因為:
所以:
利用不等式??(不等式證明可參考:證明 logX < X 對所有 X > 0 成立)可得:
利用
于是:
又因為:
所以有
于是:
我們將等式右端記為:?蜈首,這是似然函數(shù)的下界实抡,于是有:?。
如果我們能夠找到適當(dāng)?shù)?使下界提高疾就,那么似然函數(shù)也會隨之提高澜术。但?是一個向量,不易同時對每個方向都進(jìn)行優(yōu)化猬腰,于是固定其它方向鸟废,僅優(yōu)化其中的一個方向,這時我們需要再一次更新下界姑荷,使得可以僅優(yōu)化一個方向盒延。
具體的,我們引入一個量:
表示所有特征在(x,y)中出現(xiàn)的次數(shù)鼠冕。在書中對f#為常數(shù)或不為常數(shù)的情況做了討論添寺,不過對于f#什么時候為常數(shù),網(wǎng)絡(luò)上各有理解懈费。我們首先回顧一下f(x,y)是什么:
首先這個函數(shù)f本身代表的是一個規(guī)則计露,即x與y滿足某一事實,則為1,否則為0票罐。括號內(nèi)的x和y是輸入值叉趣,即每一個數(shù)據(jù)點的數(shù)據(jù),或者說是每一個實例的數(shù)據(jù)该押。
那么fi(x, y)中的下標(biāo)i表示的是不同的規(guī)則疗杉,比如f1(x, y)在x=1, y=2的情況下為1,否則為0蚕礼;f2(x, y)在x=2烟具,y=2的情況下為1,否則為0奠蹬。
對某一個實例而言朝聋,我們將其代入f1和f2中,判斷這個實例的數(shù)據(jù)是否符合f1和f2的規(guī)則罩润,如果僅符合f1而不符合f2玖翅,則f1=1翼馆,f2=0割以。
那么實際上是對一個特定的實例的數(shù)據(jù)進(jìn)行i次不同規(guī)則的判斷。
舉一個例子应媚,如果f1(x, y)為x1=1, y=0則為1严沥,否則為0,f2(x, y)為x2=0中姜,y=0為1消玄,否則為0。那么對于某一個實例(x1=1, x2=0, y=0)來說丢胚,它既滿足f1也滿足f2翩瓜,所以f1=1, f2=1,那么。
那么對于另一個實例(x1=1, x2=1, y=0)峡蟋,它滿足f1但不滿足f2坟桅,所以f1=1,f2=0蕊蝗,那么
這就是為什么在《統(tǒng)計學(xué)習(xí)方法》中提到f#(x, y)可能為常數(shù)蓬戚,也可能不為常數(shù)夸楣。在常數(shù)的情況下鸭蛙,說明每一個實例的數(shù)據(jù)符合的規(guī)則的數(shù)量是一樣的,比如有三個規(guī)則阿弃,實例1符合規(guī)則1和規(guī)則2爪幻,實例2符合規(guī)則2和規(guī)則3,實例3符合規(guī)則1和規(guī)則3嘿棘,盡管它們符合的規(guī)則不同劲腿,但數(shù)量相同,三個實例的f#(x, y)都為2鸟妙。
當(dāng)然焦人,f#(x, y)為常數(shù)的情況發(fā)生的概率很小,因此f#(x, y)在大部分情況下都不是常數(shù)重父。
為了更好的理解花椭,我們再看下標(biāo)i還出現(xiàn)在權(quán)值和權(quán)值的更新值上,這說明實際上每一個特征函數(shù)fi(x, y)都對應(yīng)了一個權(quán)值wi房午,對于一個特定的實例來說矿辽,如果它符合f1(x, y)的規(guī)則,那么權(quán)值w1就會作用在這個實例上郭厌,也就是說在預(yù)測或者分類的時候袋倔,模型會考慮f1(x, y)所代表的特征,如果該實例不符合f2(x, y)折柠,那么w2就不會作用在這個實例上宾娜,畢竟f2(x, y)=0,這樣模型在預(yù)測或分類時扇售,就不會考慮f2(x, y)所代表的特征前塔,畢竟這個實例都沒有這個特征,又為什么要去考慮它呢承冰?
回到IIS算法本身华弓,定義了f#(x, y)后,可以將??改寫為:
因為指數(shù)函數(shù)是凸函數(shù)困乒,且對任意i寂屏,有
利用琴聲不等式(琴聲不等式的資料可自行查找)可得:
所以:
于是下界被再一次刷新,此時可以對向量? 中的一個方向單獨進(jìn)行優(yōu)化(求導(dǎo))了顶燕。對其求偏導(dǎo)并令導(dǎo)數(shù)為0:
得到:
這樣凑保,就可以依次對每一個?求解,得到向量?并對w進(jìn)行更新迭代了涌攻。
我是舟曉南欧引,關(guān)注我的同名 公眾號 和 知乎,發(fā)掘更多內(nèi)容哦
對機(jī)器學(xué)習(xí)恳谎,深度學(xué)習(xí)芝此,python感興趣憋肖,歡迎關(guān)注專欄,學(xué)習(xí)筆記已原創(chuàng)70+篇婚苹,持續(xù)更新中~ ^_^
學(xué)習(xí)筆記:數(shù)據(jù)分析岸更,機(jī)器學(xué)習(xí),深度學(xué)習(xí)
專欄文章舉例:
記錄一下工作中用到的少有人知的pandas騷操作廓译,提升工作效率 - 知乎 (zhihu.com)
關(guān)于切片時不考慮最后一個元素以及為什么從0開始計數(shù)的問題 - 知乎 (zhihu.com)
關(guān)于轉(zhuǎn)行:
舟曉南:如何轉(zhuǎn)行和學(xué)習(xí)數(shù)據(jù)分析 | 工科生三個月成功轉(zhuǎn)行數(shù)據(jù)分析心得淺談
舟曉南:求職數(shù)據(jù)分析師崗位评肆,簡歷應(yīng)該如何寫?|工科生三個月成功轉(zhuǎn)行數(shù)據(jù)分析心得淺談
我建了個數(shù)據(jù)分析非区,機(jī)器學(xué)習(xí)瓜挽,深度學(xué)習(xí)的群~ 需要學(xué)習(xí)資料,想要加入社群均可私信~
在群里我會不定期分享各種數(shù)據(jù)分析相關(guān)資源征绸,技能學(xué)習(xí)技巧和經(jīng)驗等等~
詳情私信久橙,一起進(jìn)步吧!