机器学习 —— 概率图模型(Homework: CRF Learning)
概率圖模型的作業越往后變得越來越有趣了。當然,難度也是指數級別的上漲啊,以至于我用了兩個周末才完成秋名山神秘車牌的尋找,啊不,CRF模型的訓練。
條件隨機場是一種強大的PGM,其可以對各種特征進行建模,同時可以使用隨機梯度下降算法進行訓練,訓練的結果就是PGM中那些定義變量交互方式的參數。
1、LR模型的訓練
LR模型可以看作是CRF模型的低配版,在完全不定義隨機變量交互,只考慮P(Y|X)的情況下,得到的就是LR模型。其數學表達如下:
這里theta是參數,X是特征也是像素值,該形式成為Logistic Regression。訓練的本質是針對theta在訓練集上進行優化,使得 P_trainSet 的概率達到最大,P_trainSet = P_data1*P_data2.......*P_datan,用公式表達可以寫作:
這里連乘的形式并不利于我們分析,所以可以對目標方程取負對數——nll。同時將最大化問題轉為最小化問題。
函數求最小值只要沿起梯度方向改變自變量即可,所以這里使用梯度下降法來求取目標函數的最小值。所以,使用梯度下降法來訓練核心有就是——找到梯度的表達式??
對于LR模型來說,其梯度有著非常優雅的解析解,見之前博客。
解決了梯度表達式之后,還有一個核心問題就是過擬合,這里可以用L2-norm來強迫參數趨近于0.參數趨近于0就代表弱化特征作用。特征被弱化了模型就無法貼近YLabel了。L2-norm的參數Lamda是詩出來的。此時使用的是矯正集,不能使用訓練集。
LR模型只是小小的熱身。關鍵是CRF的建模與訓練。
2、CRF的訓練
拿到CRF的訓練對象的時候我是一臉濛逼的。既沒有概率圖,也沒有團樹圖。只有模型參數和訓練集。CRF的數學表達見之前博客。從程序設計的角度,要做的是由CRF模型參數生成FeatureSet.模型參數如下:
1、隱性節點的狀態card;2、觀測節點的狀態card。 除了模型參數之外,還需要定義模型交互方式(PGM factors),以OCR為例,模型有三種交互方式:1、Yi-Yi:表達了每個標簽本身的概率。2、Yi-xi:對于給定像素位置Yi的概率。3、Yi-Yi+1:相鄰標簽各取某值的概率。由此可針對訓練集中的每個數據生成CRF模型。雖然不同數據的模型是相似的(共享theta),但是其本身結構存在差異(單詞長度不同)。
實際上,每個feature的本質是 最終的table CPD 里的一個assignment. 而每個exp( fi*theta ),則是其中的val。所以 ? feature -- theta 和 table CPD 是聯系在一起的。 所以這里也很好理解為什么一個theta可以對應多個feature. 因為CPD在概率圖節點之間是復制的!(回憶一下遺傳模型,遺傳模式就是CPD,遺傳模式在所有變量(人)之間不斷復制....)CPD的復制就相當與feature的theta share.?
這里假設L2-norm的lamda是已知的。并且模型采用L2-norm。所以,核心的任務就是針對訓練集中的每對數據,找到grad,然后整個模型按照grad下降尋找最合適的一組theta.求grad的理論分析不贅述,這里只從算法實現的角度來研究。為獲得grad和cost,我們一共有5個量需要求:
2.1 LogZ
LogZ的計算是全局最難的。其數學表達如下:
其需要對所有Y的取值求和。這代表要對 x 對應的所有可能的標簽求和。換言之,要對最終聯合分布CPD的val進行求和。如果是一個長度為7的單詞,那就是26^7個數據求和。這顯然是不現實的此數目多過太陽系里所有的星球。。。這里的第一個trick是利用團樹標定算法求取Z.
exp(XXXX)求的是整體概率(每個exp(fi*theta)是一個val),連乘是聯合分布。團樹算法中,每個消息 u 都是對之前變量進行邊際化之后得到的。假設有一個3節點的團樹鏈,團中分別有變量x1x2 ,x2x3, x3x4. 那么消息傳遞可以有以下形式:
u12?=?Σ1Φ1?? ?
u23?=?Σ2Φ2?*??u12? ?= ?Σ2Φ2?*?Σ1Φ1 ?=?Σ12 ?Φ2?Φ1?
u32?=?Σ4Φ3??
重點在于?Σ3 u32*u23?=?Σ1234 Φ2?Φ2?Φ1? = Z
從定性上而言,消息攜帶了兩邊全部的信息,所以一條邊上兩個方向的消息攜帶了整個概率圖中的信息。注意,這里的消息不能歸一化,而團樹標定中,消息必須歸一化才能傳遞。
2.2 Model Expected feature Count
第二個難點在于模型feature count的計算。
對于每次梯度計算,我們手上都有一套完整的模型。模型的特征是一個指示函數,只要模型里有該特征,f取值都是1。ΣP*f 表達了當前模型對這些特征的肯定程度。f 是 table CPD的一個assignment,所以其 var , assignment 會對應一個特定的概率,也就是P。這里要算概率,似乎又要求那個26^7的聯合分布了,然而并不是。由于特征本質是一個factor的assignment,而之前我們已經得到了標定好的團樹模型,只需要在單個團樹里求取Y'assignment對應的概率即可。因為clqiue的scope肯定要比feature大!!!
這里比較trick的是,形式上,一個特征不止出現一次(意義不同)。比如說相鄰的兩個Y,取值分別為ab,這本質上是一個特征,只對應一個theta。但是這里的theta是share的。所以計算時必須把所有對應相同theta的f 都算進來。其數學表達式應該修正為:
2.3 Data Count
Data Count 則是一個和數據有關的量了,表達了特征(shared)在當前數據中是否出現,是則置1,否則置0.
3、總結
條件隨機場的訓練中真的充滿了trick,通過此次作業,我加深了對Representation, Inference, Learning 的理解。
最后,今天是母親節~~親愛的老媽節日快樂~
轉載于:https://www.cnblogs.com/ironstark/p/5471387.html
總結
以上是生活随笔為你收集整理的机器学习 —— 概率图模型(Homework: CRF Learning)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Davinci及U-boot的一些介绍
- 下一篇: 软件开发之文档的重要性