條件隨機場真是把我給折磨壞了啊,本以為一本小小的《統計學習方法》攻堅剩下最后一章,心情還是十分愉悅的,打算一口氣把它看完,結果真正啃起來真是無比的艱難啊,每一句對我都好像是天書一般,怎么這么多沒有接觸過的概念啊!什么無向圖?什么最大團?搞什么鬼啊,真讓人頭大現在想想可能就是被這些概念嚇到了當時,等你仔細的弄懂了它們是什么意思,理解起來難度就會小很多啦,所以,我決定先從概念開始說起,捋順一下思路,至於條件隨機場先表過不談!
我們先來看一下整個大框架下,條件隨機場在什么位置,讓讀者心中有數,知道自己到底在學什么,如圖:
可以看出 在圖模型這個大框架下分成了兩類:
1有向圖模型 有向圖模型又分為:靜態貝葉斯網絡 和動態貝葉斯網絡 動態貝葉斯網絡再具體細分就是 隱馬爾科夫模型 和 卡爾曼濾波器
2 無向圖模型 分為馬爾科夫網絡 馬爾科夫網絡分成 吉布斯/波爾茲曼機和 條件隨機場
所謂的有向圖模型一般用於對日常生活中的一些有着明顯依賴關系,因果關系的問題進行建模,而無向圖模型則是用於給日常生活中那些具有相互依賴關系的問題進行建模!
這里我可以貼一下上一篇HMM畫的圖給大家感受一下這個區別:
有向圖模型(以隱馬爾科夫模型舉例): 無向圖模型(以馬爾科夫網絡舉例):
這里着重的看有向圖和無向圖兩種概念的直觀區別,一個是單項依賴關系 另一個是相互依賴關系!
下面正式開始本篇博客的內容講解:
1准備部分:
主要是進行概念的梳理和理解:
1 圖: 圖是由結點和連接結點的變組成的集合,結點和邊分別記作v和e,結點和邊的集合分別記作V和E,圖記作G=(V,E) 不難理解
2 隨機場:所謂的隨機場就是指一組樣本空間相同的隨機變量的集合,而且一般情況下隨機變量之間存在依賴關系,否則沒有什么意義
3 馬爾科夫獨立性假設: 馬爾科夫獨立性假設是說,對於一個節點,在給定它所連接的所有節點的前提下,它和外界是獨立的,也就是說如果觀測到一個節點的取值是常量,那么別的節點就無法通過它來進一步影響其他的節點,所以,如果我們給定了與一個節點連接的所有的節點,那么這個節點就和外界相互獨立了!
4 馬爾科夫隨機場: 下面進行一個概念的組合: 2+3=? 隨機場+馬爾科夫獨立性假說=馬爾科夫隨機場!沒錯,所謂的的馬爾科夫隨機場,就是遵循着馬爾科夫獨立性假說的隨機場!
5 概率無向圖模型: 設有聯合概率分布P(Y),由無向圖G=(V,E)表示,在圖G中,結點表示隨機變量,邊表示隨機變量之間的依賴關系,如果聯合概率分布P(Y)滿足成對馬爾科夫性,局部馬爾科夫性,全局馬爾科夫性,
那么就稱此聯合概率分布為概率無向圖模型或者馬爾科夫隨機場!
這個概念一敲出來可能會有一小部分童鞋有點糊塗,什么是局部馬爾科夫性,什么是成對馬爾科夫性,什么是全局馬爾科夫性呢?其實三者是等價的,這里只介紹一種 全局馬爾科夫性,先上圖
6 全局馬爾科夫性:設結點集合A,B是在無向圖G中被結點集合C分開的任意結點集合,如圖11.2,結點集合A,B,C對應的隨機變量組分別是,全局馬爾科夫性指的是在給定隨機變量
的條件下隨機變量
是條件獨立的!用公式表示就是:
寫到這里可能大家就清楚了,之所以概率無向圖模型=馬爾科夫隨機場,就是因為定義時候所謂的馬爾科夫獨立性假設和這里的全局馬爾科夫性,局部馬爾科夫性,成對馬爾科夫性本質上講的都是一個東西啊!
寫了這么多,怎么還不開始說條件隨機場啊!這是要急死人的節奏啊,嘿嘿不着急,容我再講一個定義!
其實概率無向圖有一個很好的性質就是它可以進行因式分解,對!因式分解!想了解因式分解,必須要先解鎖 團和最大團的概念!
附加: 1 團和最大團: 無向圖G中任何兩個結點均有邊連接的結點子集稱之為團!若C是無向圖G中的一個團,並且不能再加進任何一個G的結點使其成為一個更大的團,則稱此C為最大團!
如圖所示:2結點組成的團有 {Y1,Y3}, {Y1,Y2}, {Y2,Y3}, {Y3,Y4}, {Y2,Y4} 有兩個最大團:{Y1,Y2,Y3},{Y2,Y3,Y4},之所以{Y1,Y2,Y3,Y4}不能成為一個最大團是因為Y1,Y4之間沒有邊連接!
下面正式開始概率無向圖模型的因式分解:將概率無向圖模型的聯合概率分布表示為其最大團上的隨機變量的函數的乘積形式的操作,稱為概率無向圖模型的因式分解!太形式化的概念文就不給了
直接給公式看得很清楚:
,而Z是其規范化因子,由式:
決定,
通俗點解釋就是,P(Y)這個聯合概率可以分解成最大團上的函數的乘積的形式,而要真正的形成概率,必須用規范化因子Z進行相除!
2 正式介紹部分:
有了上述充足的准備,就正式進入條件隨機場的介紹了,直接給出條件隨機場的定義!
條件隨機場: 設X與Y是隨機變量,P(Y|X)是在給定X的條件下Y的條件概率分布,若隨機變量Y構成一個由無向圖G=(V,E)表示的馬爾科夫隨機場,即:
對任意的結點v成立,則稱條件概率分布P(Y|X)為條件隨機場
這個概念看起來挺抽象的涉及到了很多其他的概念,此時如果你回去再看一遍開頭我們的定義部分,就會明白許多,所謂的條件隨機場不過是一組隨機變量X,Y形成的條件概率的集合,但是這個條件概率滿足了馬爾科夫獨立性假設/概率無向圖模型的條件,所以我們稱之為條件隨機場! 上述公式的解釋也很直觀,那就是:所有不跟我直接相連的變量都跟我沒關系!
如果不理解的童鞋,那只能反復的讀概念,反復的捋順了~
條件隨機場我們是了解了,但是我們能用它來做啥呢?我們都知道,從概率無向圖模型的角度去想,一些相互依賴的隨機變量構成的圖模型,好像有點復雜對不對,是啊,錯綜復雜的相互依賴關系,
對應的肯定是一個無比復雜的聯合概率分布模型,那我們就解釋一個特殊情況吧!線性模型應該是最簡單的了吧!那就將概率圖模型簡化成線性!沒錯,知難而退!線性鏈條件隨機場,叫你呢,快去報道!
線性鏈條件隨機場: 設均為線性鏈表示的隨機變量序列,若在給定隨機變量序列的X的條件下,隨機變量序列Y的條件概率分布P(Y|X)構成條件隨機場,即滿足馬爾科夫性:
那么我們就稱P(Y|X)為線性鏈條件隨機場! 這個概念也不難理解,就是在條件隨機場的基礎之上,固定了無向圖的結構,沒錯,我就是強制你只能玩最簡單的線性就得了!這就是線性鏈條件隨機場本人了!
放張圖各位了解一下:
(線性鏈條件隨機場)
一大堆空洞的概念敲完,全都是在定性的說事,並沒有定量的講到底是什么,連最大團上的函數的具體形式都沒有給出,下面干貨來了,線性鏈條件隨機場的參數化形式:
這兩個公式放出來,可能各位老哥們要關掉這篇博文了,你妹的,你講了些什么啊,就放幾個難懂的公式?別着急,下面開始解釋一哈:
之前我們說過,概率無向圖(馬爾科夫隨機場)可以進行因式分解,並且給出因式分解的定性的表達式:
各位一定還記得吧!求求你們一定要記得!這個在最大團上定義的函數稱之為勢函數,而且這個勢函數必須是嚴格正的,通常情況下定義為指數函數:
沒錯,第一個式子分子一大堆就是最大團上的勢函數!exp保證了勢函數的嚴格正的性質,而里面的東西是啥呢?
是定義在邊上的特征函數,稱為轉移特征,依賴於當前和前一個位置!如果滿足條件那就為1,如果不滿足就為0,你可能會想,特征函數聽起來這么牛逼,難道就是個二值函數嗎?
沒錯就是這么任性,別忘了特征有很多個啊!隨便你定義多少個特征,而且這個特征的定義往往是要根據具體的情況具體確定的,打個總結!(現在你曉得我叫王閃火,重要的事我從來都不閃躲!)跑飛了。。。
舉個例子!!那就是比如我前面一個詞是階詞,后一個詞是名詞,如果滿足這個條件,那我就讓特征函數為1,然后用這個特征函數去掃描整個句子,滿足條件的不就出來了嘛!最后這個特征函數會給這個句子打分
拍子不穩啊!skr~ Fail,然后把許多特征函數的得分加起來就是這個句子的總得分,再處以歸一化因子,就得到了這個標注的真正的概率!
也是一樣,不過它是定義在結點上的函數,稱之為狀態特征,依賴於當前的位置,也是根據具體的規則滿足就call 1 不滿足就call 0
,
分別是轉移特征和狀態特征對應的權值!你打分怎樣也會有個重要性話語權吧,這兩個變量就是話語權,它們和特征函數聯合起來唯一確定了一個條件隨機場!
如果講到這里你還是不理解,那你就想中國新說唱就是一個勢函數,wuli凡凡就是專門研究flow和hook的銜接的,如果過渡的很好,就給他pass對應1,如果拍子不穩,那就給fail對應0
相應的熱狗和張震岳這么有水平肯定看beats,聽break和節奏,對應着狀態特征啊!如果好就pass,不好就fail ,潘帥和鄧紫琪負責歌詞部分,也給選手打分,那三組制作人肯定打分要有個
權重啊,wuli凡凡肯定是C咖大神,我覺得比重0.5,狗哥和潘帥組一個0.2 一個0.3吧,這樣總分就出來了,歸一化就把所有選手得分加起來,然后用本選手的得分去除!差不多是這個意思ba~
我覺得我已經講的很清楚了!貼一個李航老師《統計學習方法》中的例子給大家加深一下印象:
條件隨機場的簡化形式這里就不說了,其實就是將轉移特征和狀態特征進行排列,形成一個統一的特征函數的規范,同樣將權值進行排列,然后將寫成兩個向量相乘的形式,沒有什么本質上的變化,不過是形式上更好看了而已。
重點描述一下條件隨機場的矩陣形式,因為這部分內容我當時在看書的時候十分的困惑,有許多不懂的地方,這里將我的思路貼出來給大家參考,可能對看不懂書的同學更有幫助一點吧!
矩陣形式:
條件隨機場還可以由矩陣形式表示,假設是線性鏈條件隨機場,表示對給定觀測序列x,相應的標記序列y的條件概率,引進特殊的起點和終點狀態標記
,這時,
可以通過矩陣的形式表示,對觀測序列x的每一個位置i=1,2.......n+1,定義一個m階矩陣(m是標記yi取值的個數)
這樣,給定觀測序列x,標記序列y的非規范化概率可以通過n+1個矩陣的乘積表示,於是,條件概率是:
針對條件隨機場的矩陣形式,這里要解釋幾點:
1矩陣的階數為mxm階,因為對於i-1狀態可以選的取值yi-1有m種,同樣變換到yi可選的取值也會有m種,這樣便形成了mxm的矩陣
2 矩陣中每一個元素其實是從i-1到i狀態的非規范化概率,直到我寫這篇博客的時候我還在思考,矩陣形式的定義里第三個式子,下標應該
是寫錯了,我認為應該是對k求和才是正確的,千萬不要對i求和,因為它就是表示的從i-1---->i這兩個狀態的非規范化概率,如果你對i求和那就全亂套了,第三個式子的意思就是將i-1----->i的所有的特征函數(包含轉移特征和狀態特征)加權求和,然后再exp一下保證非負,形成所謂的非規范化概率!
3 基於2的解釋,我們可以了解到Mi(x)其實就相當於HMM中我們所熟知的狀態轉移概率,從上一個狀態轉移到下一個狀態!類比着理解一下
4 前面反復的強調非規范化概率,那么規范化因子該如何求解呢?事實上,是M1(x)M2(x)M3(x)......Mn+1(x)的矩陣相乘形成的矩陣的第start行第stop列的元素就是我們的規范化因子其代表了從start到stop的所有可能的路徑的非規范化概率之和?那為啥矩陣的第start行第stop列就是所有可能路徑的非規范化概率之和呢?我相信答案我已經在前面的解釋給出了,
動動腦筋思考一下ba~
5最后要解釋的是 這里的start和stop並不是什么神秘的東西,它可以是1.2.3.4......m的任意值,根據你的觀測序列或者實際情況確定的!
介紹完了條件隨機場,同樣貼一個例子來驗證一下上述結論是否正確~:
好了,寫到這里,條件隨機場的基本知識你已經弄懂了,下面的文章會和HMM一樣分成1概率計算 2學習問題 3預測問題三部分 而我的這篇博客會重點寫一下概率計算問題,因為涉及到前向后向的公式理解
而學習問題就是對條件概率進行極大似然估計,然后用擬牛頓法和改進迭代尺度法進行優化,求出參數向量w,學習問題就不講了,因為本身擬牛頓法和改進的迭代尺度算法不是我擅長的部分,各位有好的資料可以
共享一下,至於預測算法,就是利用維特比算法進行概率最大化的譯碼過程,這個在信息論與編碼里面學過,后面我會專門寫一篇維特比譯碼算法的博文,到時候可以關注一下!
接下來的重點就是概率的計算問題:
其實概率的計算問題可以類比着HMM去理解,因為里面很多的思想都是相通的,前向后向概率之類的概念
之前我們說過,矩陣形式中每一個矩陣元素代表着從i-1狀態到i狀態的非規范化概率,對於每一個指標i=0,1,.....n+1,定義前向向量和遞推公式:
也可以表示為:
表示在位置i的標記是yi並且到位置i的前部分標記序列的非規范化概率,這樣再乘上矩陣中的元素
就可以順利的從一個狀態遞推到下一狀態,並且乘積仍然是非規范化概率
yi的取值可以是m個,所以是m維的向量!
......
......
......
這個地方參考李航統計學習方法,后續更新,重點寫書上沒有的內容
獨立思考部分:
這部分講兩個問題 一: 條件隨機場和隱馬爾科夫模型的關系到底是什么?
二: 條件隨機場和logistic模型的關系又是什么?
一:條件隨機場和隱馬爾科夫模型的關系
這個問題的解答是看了網上一篇博客,看完之后有一種頓悟的感覺,整理在這里,爭取讓這篇博客成為最強條件隨機場參考資料,哈哈!(文末附上鏈接)
其實條件隨機場主要的應用方向還是NLP 具體點應用在詞性標注方面比較多,所以這里就舉詞性標注的例子,那么首先我們回想一下,如果是HMM模型,在已知句子s的前提下如何進行詞性標注呢?這應該就是HMM模型下的已知HMM模型及其參數,已知觀測序列,讓你求出生成觀測序列的概率,對應着概率的計算問題!那么,用最便於理解的暴力求解方法,公式如下:
是初始狀態概率,
是狀態轉移概率
是對應着發射概率!然后對所有可能的狀態i求和生成的就是產生觀測s的概率!這是HMM告訴我們的通常的解法!那么它和CRF條件隨機場有什么關系呢?
結論是條件隨機場要比HMM強大的多,HMM的模型限制了它的性能,后面我們會具體的解釋這個問題,事實上,如果我們對暴力求解的方法上式取對數,模型就變成:
然后我們再考慮一下我們的條件隨機場的公式:
如果我們不取勢函數為exp,而是在特征函數的定義過程中直接保證其非負性(特征函數可以人為進行規定),那么其非規范化概率可以寫為:
仔細比較上下兩式,其實結果都是一樣的 特征函數在整個句子上掃描打分的結果值再針對所有的特征函數求和!本質上是一個公式!
接下來我們再比較一下條件隨機場和隱馬爾科夫模型針對相同問題的公式的形式:
HMM:
CRF:
可以看出,如果將HMM的log形式的概率看作是轉移特征函數的分數的權值tk,而將
看作是狀態特征函數的權值λi,那么HMM的式子和CRF的式子其實就是具有相同的形式,或者不嚴謹的說,二者是一樣的!
可能有同學會問,照你這個思路為什么HMM只有權值求和后面卻沒有特征函數呢?因為相加求和只有特征函數為1的才會保留下來,別忘了特征函數實際上是二值函數(0-1)相加起來實際上是只有權值在相加,因為特征函數等於1!
這樣!
也就是說,我們可以用這個思路來構建一個CRF,讓它和HMM的幾乎完全相同!如何構造呢?
就是沿着剛才的思路反向思考,針對每一個HMM,它的每一個轉移概率我都定義一個特征函數與之對應,而且當且僅當li-1=x,li=y的時候,我才規定這個特征函數的值為1
,而且此特征函數對應的權值我就讓它等於轉移概率的對數概率:
,后面的狀態概率也是同樣的定義方式,用這樣的定義方式得到的關於詞性標注問題的HMM方法和CRF方法的結果幾乎是一模一樣,作為這個模型的創造者,我們自然知道原因,畢竟二者本質上其實是一樣的哈哈!
因此,每一個HMM都有一個CRF與之對應!
所以我們可以解釋之前說的為什么HMM的模型其實限制了HMM的性能,觀察用CRF構造HMM的方法我們可以發現:
1因為HMM定義時,規定當前狀態的變化只和前一個狀態有關系,所以定義特征函數時候,只能夠定義和相鄰狀態有關的特征函數,而CRF就沒有這個限制了,它允許你從整個句子的角度去考慮全局特征,你甚至可以定義句子開頭和結尾的兩個狀態之間的關系,這大大增加了CRF的定義特征的能力!這種能力是CRF望塵莫及的!
2從CRF與HMM的對應我們同樣可以發現,HMM的特征函數的取值是對數概率,也就是說它必須取負值,也只能取負值!而且既然是概率那么它一定要滿足概率完備性條件才可以,但是CRF的權值你是可以隨意操作的!
3最重要的一點就是:HMM本質上是基於貝葉斯網絡(從屬於有向圖)的生成模型,模型從聯合概率的角度考慮,而我們的CRF是一種判別式模型,直接尋找判決邊界,從條件概率的角度去考慮!
二:條件隨機場和logistic模型之間的關系:
其實我們從條件隨機場的定義中可以發現,二者都是屬於對數線性模型!(雖然我對對數線性模型當中的線性沒有考慮到什么直觀的解釋,如果對於多項式的話),也就說二者在結構上使用的是一種模型:
條件隨機場:
logistic回歸模型:
(二項logistic回歸,其分母其實也是一個規范化因子Z)
從二者的公式我們可以看出,本質上二者果然都是對數線性模型,不過是exp括號里面的內容不一樣,logistic在括號里面直接給出的是一個線性函數,用來進行對平面的划分,而條件隨機場的exp括號里是對所有特征函數對整個句子的打分情況求和,描述的是整個句子序列的結點關系和狀態轉移的關系,二者最后都形成了一個真正的概率值,所以說,條件隨機場其實就是序列化的logistic模型,你同意這個觀點嗎?或者你有更好的解釋,歡迎在下面給我留言,相互交流,我能想到的就只有這些啦!
向各位讀到最后的讀者致謝,希望你們看完博客能夠有所收獲!同時也向文末的博客的博主致謝,感謝你翻譯並解釋這么棒的條件隨機場資料給大家,Thanks!
參考博客:
如何輕松愉快的了解條件隨機場?https://www.jianshu.com/p/55755fc649b1