ME, HMM, MEMM, CRF

最大熵模型 Maximum Entropy
現從一個簡單例子看起:
比如華盛頓和維吉利亞都可以作人名和地名,而從語料中只知道p(人名)=0.6,那麼p(華盛頓=人名)的概率爲多少比較好呢?一個直觀的想法就是p(華盛頓=人名)=0.3。爲什麼呢?這就是在滿足已有證據的情況下不做任何其他假設,也就是熵最大,這就是最大熵模型的原理。
現在來看模型的定義:
首先,明確模型的目標:給定一個上下文x,估計p(y|x)
接着,從訓練樣本中我們可以得到一串標註過的樣本(x_i, y_i),其中x_i爲上下文,y_i /in Y爲類別
然後構造特徵函數
f(x,y) = 1 如果x,y滿足一些條件,比如x=記者*,y=人名
            0 otherwise
注意x是一個上下文,是個向量,而不是單個詞
(最大熵模型裏的特徵概念不同於模式識別裏的特徵,這裏的特徵即特徵函數,通常是二值函數,也有直接定義成實數的,比如 jeon-sigir06裏直接把f定義爲KDE距離,不是很明白那樣定義的好處。)
於是模型的約束就是對於所有的特徵函數模型中的期望等於樣本的期望,即
E_p(f) = E_{/tilde p}(f)
其中
E_p(f) = /sum_{x, y}p(x, y)f(x, y) = /sum_{x, y}p(x)p(y|x)f(x,y) /approx /sum_{x, y} /tilde p(x)p(y|x)f(x,y)
/tilde p(f) = /sum_{x, y} /tilde p(x, y)f(x, y),
並且對於任意的x:/sum_y p(y|x) = 1
而模型的熵爲
H(p)=-/sum_{x,y} /tilde p(x) p(y|x) /log p(y|x)
在滿足約束的情況下,使熵最大,於是問題即求
p* =/argmax_{p /in P} -/sum{x, y} p(y|x)/tilde p(x) /log p(y|x)
where P={p(y|x) | /all f_i : /sum_{x,y}p(y|x)/tilde p(x)f_i(x,y) = /sum_{x,y}/tilde p(x,y)f_i(x,y), /all x : /sum_y p(y|x) = 1}
可以證明,模型的最優解的形式爲
p(y|x) = exp(/sum_i /lambda_i f_i(x,y)) / Zx
where Zx = /sum_y exp(/sum_i /lambda_i f_i(x,y))
具體證明請見
http://qxred.yculblog.com/post.1593573.html
拜下qxred大牛……

隱馬爾可夫模型 Hidden Markov Model
馬爾可夫模型實際上是個有限狀態機,兩兩狀態間有轉移概率;隱馬爾可夫模型中狀態不可見,我們只能看到輸出序列,也就是每次狀態轉移會拋出個觀測值;當我們觀察到觀測序列後,要找到最佳的狀態序列。
設O爲觀測值,x爲隱變量,那麼模型要找到讓P(O)最大的最佳隱藏狀態,而
P(O) = /sum_x P(O|X)P(X)
而其中
P(X)=p(x_1)p(x_{2..n}|x_1)
        =p(x_1)p(x_2|x_1)p(x_{3..n}|x_1,x_2)
        ……
根據x_i只與x_{i-1}相關的假設有
P(X)=p(x_1)p(x_2|x_1)p(x_3|x_2)……
而類似的
P(O|X)=p(o_1|x_{1..n})p(o_{2..n}|o_1x_{1..n})
            =p(o_1|x_{1..n})p(o_2|o_1x_{1..n})p(o_{3..n}|o_{1,2},x_{1..n})
            ……
根據o_i只與x_i有關的假設有
P(O|X)=p(o_1|x_1)p(o_2|x_2)……
合起來就是
P(O)=/sum_x p(x_1)p(x_2|x_1)p(o_1|x_1)p(x_3|x_2)p(o_2|x_2)……
定義向前變量/alpha_i(t)爲t時刻以狀態S_i結束時的總概率
/alpha_j(t)=/sum_{i=1}^N /alpha_ip(x_{t}=j|x_{t-1}=i)p(o_t=i|x_t=i)
定義向後變量/beta_i(t)爲給定當前狀態S_i和t時刻情況下觀測序列中剩餘部分的概率和
/beta_i(t)=/sum_{j=1}^N /p(x_{t}=j|x_{t+1}=i)p(o_{t}=i|x_{t}=i) /beta_j(t+1)
於是觀測序列的概率爲
P(O, X_t=i) = /alpha_i(t)/beta_i(t)
最佳狀態可以由動態規劃得到
模型參數可以由EM算法得到
EM具體請見
http://qxred.yculblog.com/post.1372649.html
再拜qxred大牛……

最大熵隱馬 Maximum Entropy Markov Model
HMM的缺點是根據觀測序列決定狀態序列,是用聯合模型解決條件問題;另外,幾乎不可能枚舉所有所有可能的觀測序列。
而MEMM解決了這些問題。
首先,MEMM和MM或HMM都有本質不同,MEMM估計的是P(S|O),而MM估計的是P(S),HMM估計的都是P(O)。
P(S|O)=P(s_1|O)P(s_{2..n}|s_1,O)
           =P(s_1|O)P(s_2|s_1,O)P(s_{3..n}|s_1,s_2,O)
          ……
然後根據假設有
P(S|O)=P(s_1|O)P(s_{2..n}|s_1,O)
           =P(s_1|o_1)P(s_2|s_1,o_2)P(s_{3..n}|s_1,s_2,o_3)
          ……
重新定義特徵函數:
a=<b,r>
b是指示函數用於指示當前觀測
r是狀態值
f_a(o_t, S_t) = 1 if b(o_t) is true and s_t = r
於是約束變爲
E_a = /sum_{k=1}^m_{s'}/sum_{s /in S}P(s|s', o_k)f_a(o_k, s) / m_s' = /sum_{k=1}^m_{s'} f_a(o_k, s_k) = F_a
這個目標函數和ME的目標函數實質是一樣的
於是解的形式爲
P(s|s', o)=exp(/sum_a /lambda_a f_a(o, s)) / Z(o, s')
然後依然採用HMM中的前向後向變量,尋找最佳序列
而實際上得到的序列是由計算
P(s|o) = P(s_0)P(s_1|s_0,o_0)P(s_2|s_1, o_1)……
得到

條件隨機場 Conditional Random Fields
MEMM其實是用局部信息去優化全局,會有label bias的問題。比如rib和rob,有如下的狀態設計:
  /r 1i - 2 /
0             b 3
  /r 4o - 5 /
如果訓練集合裏的ri多於ro,那麼ro其實就被無視了……
所以要用全局優化全局,於是引入CRF,其實CRF就是ME擴展版,並不需要由MRF推出
p(y|x)/propto exp(/sum_i/lumbda_k f_k(y_{i-1}, y_i, x)+/sum_k /lumbda_kg_k(x_k, x))
其實這個定義並保持MRF性質:MRF中clique於clique是獨立的
從這點意義上來看,Lafferty也滿水的= =
雖然X,Y在圖上不需要有相同的結構,甚至X都不需要有圖的結構,目前通常G只是一條鏈G=(V={1,2, ..., m}),E={(i,i+1)}。
如果G是一棵樹,它的團就是每條邊和其上的點,這時候
p_/theta(y|x) = exp(/sun_{e/in E, k}/lambda_k f_k(e,y|_e, x)+/sum_{v /in V,k}/mu_k g_k(v, y|_v, x))
x是上下文,y是標註序列,y|_s是y中與子圖S相連的部分
如果是最簡單的first-order情況,g_k就相當於ME中的特徵函數,f_k類似於MEMM中的特徵函數,就是說用g_k來指示狀態,用f_k來指示狀態轉移
從優化角度來說,這兩類函數是一樣的,可以簡寫爲f_j(y_{i-1},y_i,x,i),於是訓練類似ME
當CRF是鏈狀時,一個上下文x的標註可以利用矩陣高效計算
對於長度爲n的y,定義n+1個|Y|*|Y|矩陣{M_i(x)|i=1..n+1},其中
Y是類別個數
M_i(y', y|x) = exp(/sum_j /lambda_j f_j(y', y, x, i))
這個就是第i個矩陣i,j上的元素,表示在x下從y'轉移到y的概率
於是有p(y|x, /lambda)=/multi_{i=1}^{n+1}M_i(y_{i-1},y_i|x) / Zx
Zx = /multi_{i=1}^{n+1}M_i(x)
Zx只是保證概率之和爲1

原來已經有人開始做複雜的情況了……04年cvpr有篇用CRF做圖像標註的。而且qixipi告訴我已經有層狀CRF了,雖然具體文章我還沒看到,qixipi也不記得是在哪了,估計是近年icml, nips, iccv之類的……前兩天還在yy這個應該可以發icml的,sigh,看來易想到的idea一般都會有人做了……

Reference
[1] MaCallum, A., &Freitag, D. & Pereira, F.(2000). Maximum Entropy Markov Models for Information Extraction and Segmentation. Proc. 17th ICML
[2] John Lafferty, Andrew McCallum, Fernando Perira. Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data. 18th ICML
[3] Xuming He, Richard S. Zemel, MIguel A. Carreira-Perpinan  Multiscale Conditional Random Fields for Image Labeling. 2004 CVPR

http://www.inference.phy.cam.ac.uk/hmw26/crf/

John Lafferty, Andrew McCallum這兩個人無比牛啊!! 幾乎引領着CRF這一領域的發展:雖然ME不是1拉最先提出來的,但是1拉從96年就開始研究crf相關的東西,2000年在ICML發表了MEMM那篇m文,1年後又在ICML發表了CRF那篇b文;之後John Lafferty和一箇中國人做Gaussian field,04在ICML上又發了篇Kernel CRF,這種牛就是每年N篇ICML+N篇NIPS……而且1看起來還是滿ss的,套套看,kaka……Andrew McCallum從1999年開始做ME,那年與John Lafferty合作在IJCAI上發了篇用ME做文本分類的文章,2003年在ICML上發了篇Dynamic CRF,然後又把CRF應用在CV上,也是每年N篇ICML+N篇NIPS的人物,1雖然不如John Lafferty ss,但也還是很可愛的!發現牛人的圈子其實很小,一個領域領頭人物也就那麼幾個……

sigh……今天給zt bg這些東西……徹底被zt鄙視了……我看paper還是不仔細……很多東西都太想當然了T.T 現在發現MEMM裏面那個p(s'|s,o)出現得過於詭異了……這樣給別人講講好處還是滿多的~
原來HMM和MEMM估的東西就不一樣,所以那天怎麼推都推不出……笨死我了= =

歡迎大牛們指點,還缺個訓練部分,而且貌似CRF似乎還沒寫清楚,有時間再改吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章