點擊上方,選擇星標或置頂,每天給你送干貨!
閱讀大概需要12分鐘
跟隨小博主,每天進步一丟丟
來自:數論遺珠
? 本文需要的前序知識儲備是:隱馬爾科夫模型HMM。
CRAAP測試是什么、? ? 鏈接:NLP硬核入門-隱馬爾科夫模型HMM
? ? 實際上HMM和CRF的學習沒有先后順序。但是兩者很相似,在學習了HMM后更容易上手CRF,所以建議先學習HMM后學習CRF。
在這一小節,我們將會由泛化到特例,依次介紹隨機場、馬爾科夫隨機場、條件隨機場、線性鏈條件隨機場的概念。
crf條件隨機場?(1)隨機場是一個圖模型,是由若干個結點(隨機變量)和邊(依賴關系)組成的圖模型,當給每一個結點按照某種分布隨機賦予一個值之后,其全體就叫做隨機場。
(2)馬爾科夫隨機場是隨機場的特例,它假設隨機場中任意一個結點的賦值,僅僅和它的鄰結點的取值有關,和不相鄰的結點的取值無關。用學術語言表示是:滿足成對、局部或全局馬爾科夫性。
(3)條件隨機場CRF是馬爾科夫隨機場的特例,它假設模型中只有X(輸入變量,觀測值)和Y(輸出變量,狀態值)兩種變量。輸出變量Y構成馬爾可夫隨機場,輸入變量X不具有馬爾科夫性。
條件隨機場原理詳解,(4)線性鏈條件隨機場,是狀態序列是線性鏈的條件隨機場。
注1:馬爾科夫性:隨機過程中某事件的發生只取決于它的上一事件,是“無記憶”過程。
?
任務態fMRI。我們的應用領域是NLP,所以本文只針對線性鏈條件隨機場進行討論。
線性鏈條件隨機場有以下性質:
(1)對于狀態序列y,y的值只與相鄰的y有關系,體現馬爾科夫性。
(2)任意位置的y與所有位置的x都有關系。
(3)我們研究的線性鏈條件隨機場,假設狀態序列Y和觀測序列X有相同的結構,但是實際上后文公式的推導,對于狀態序列Y和觀測序列X結構不同的條件隨機場也適用。
(4)觀測序列X是作為一個整體,去影響狀態序列Y的值,而不是只影響相同或鄰近位置(時刻)的Y。
(5)線性鏈條件隨機場的示意圖如下:
注二:李航老師的《統計學習方法》里,使用了兩種示意圖來描述線性鏈條件隨機場,一種是上文所呈現的,這張圖更能夠體現性質(4),另一種如下圖,關注點是X和Y同結構:
?
線性鏈條件隨機場CRF是在給定一組隨機變量X(觀測值)的條件下,獲取另一組隨機變量Y(狀態值)的條件概率分布模型。在NLP領域,線性鏈條件隨機場被廣泛用于標注任務(NER、分詞等)。
?
我們先給出構建CRF模型的核心思路,現在暫不需要讀懂這些思路的本質思想,但是我們要帶著這些思路去閱讀后續的內容。
(1)CRF是判別模型,是黑箱模型,不關心概率分布情況,只關心輸出結果。
(2)CRF最重要的工作,是提取特征,構建特征函數。
(3)CRF使用特征函數給不同的標注網絡打分,根據分數選出可能性最高的標注網絡。
(4)CRF模型的計算過程,使用的是以e為底的指數。這個建模思路和深度學習輸出層的softmax是一致的。先計算各個可能情況的分數,再進行softmax歸一化操作。
?
?
(對數學公式推導沒興趣的童鞋,只需要看2.1和2.2)
先約定一下CRF的標記符號:
觀測值序列:?
狀態值序列:?
轉移(共現)特征函數及其權重:?
狀態(發射)特征函數及其權重:?
簡化后的特征函數及其權重:?
特征函數t的下標:k1
特征函數s的下標:k2
簡化后的特征函數f的下標:k
?
在進行公式推導前,我們先通過一個直觀的例子,初步了解下CRF。
例:輸入觀測序列為X=(x1,x2,x3),輸出狀態序列為Y=(y1,y2,y3),狀態值集合為{1,2}。在已知觀測序列后,得到的特征函數如下。求狀態序列為Y=(y1,y2,y3)=(1,2,2)的非規范化條件概率。
解:參照狀態序列取值和特征函數定義,可得特征函數t1,t5,s1,s2,s4取值為1,其余特征函數取值為0。乘上權重后,可得狀態序列(1,2,2)的非規范化條件概率為:1+0.2+1+0.5+0.5=3.2
?
在這一小節,我們描述下特征函數,以及它的簡化形式和矩陣形式。
(1)線性鏈條件隨機場的原始參數化形式
分數:?
歸一化概率:?
其中,歸一項為:?
t為定義在邊上的特征函數,通常取值0或1,依賴于兩個相鄰結點的狀態,λ為其權重。t有時被稱為轉移特征,其實稱為共現特征更合適些。因為圖模型更強調位置關系而不是時序關系。
s為定義在節點上的特征函數,通常取值0或1,依賴于單個結點的狀態,μ為其權重。s有時被稱為狀態特征。
需要強調的是:CRF模型中涉及的條件概率,不是真實的概率,而是通過分值softmax歸一化成的概率。
?
(2)線性鏈條件隨機場的簡化形式
特征函數:?
權重:?
對特征函數在各個位置求和,將局部特征函數轉化為全局特征函數:?
歸一化概率:?
向量化:?
?
(3)線性鏈條件隨機場的矩陣形式
構建矩陣Mi(x)。位置i和觀測值序列x是矩陣的自變量。
矩陣的維度是m*m,m為狀態值y的集合的元素個數,矩陣的行表示的是位置i-1的狀態,矩陣的列表示的是位置i的狀態,矩陣各個位置的值表示位置i-1狀態和位置i狀態的共現分數,并以e為底取指數。
?
?
(1)前向算法模型
(a)αi(yi=s|x)表示狀態序列y在位置i取值s,在位置1~i取值為任意值的可能性分數的非規范化概率。
定義:?
(b)遞歸公式:?
(c)人為定義:?
(d)歸一項:?
?
(2)后向算法模型
(a)βi(yi=s|x)表示狀態序列y在位置i取值s,在位置i+1~n取值為任意值的可能性分數的非規范化概率。
定義:?
(b)遞歸公式:?
(c)人為定義:?
(d)歸一化項:?
注:在前向算法和后向算法中,人為地定義了α(0)和β(n+1),采用的是李航老師書里的定義方法。但是,我認為采用先驗概率(類似HMM中的初始概率分布)或者全部定義成1更合適。因為這里的概率模型應該表現得更通用一點,而不要引入實際預測序列的第一項和最后一項的信息。
?
(1)兩個常用的概率公式
狀態序列y,位置i的取值為特定值,其余位置為任意值的可能性分數的歸一化條件概率:?
狀態序列y,位置i-1,i的取值為特定值,其余位置為任意值的可能性分數的歸一化條件概率:?
(1)兩個常用的期望公式
特征函數f關于條件分布P(Y|X)的數學期望:?
特征函數f關于聯合分布P(X,Y)的數學期望:?
?
?
CRF模型采用正則化的極大似然估計最大化概率。
采用的最優化算法可以是:迭代尺度法IIS,梯度下降法,擬牛頓法。
相應的知識可以通過最優化方法的資料進行學習,本文篇幅有限,就不作展開了。
?
和HMM完全一樣,采用維特比算法進行預測解碼,這里不作展開。
?
?
(1)規避了馬爾科夫性(有限歷史性),能夠獲取長文本的遠距離依賴的信息。
(2)規避了齊次性,模型能夠獲取序列的位置信息,并且序列的位置信息會影響預測出的狀態序列。
(3)規避了觀測獨立性,觀測值之間的相關性信息能夠被提取。
(4)不是單向圖,而是無向圖,能夠充分提取上下文信息作為特征。
(5)改善了標記偏置LabelBias問題,因為CRF相對于HMM能夠更多地獲取序列的全局概率信息。
(6)CRF的思路是利用多個特征,對狀態序列進行預測。HMM的表現形式使他無法使用多個復雜特征。
?
(1)CRF訓練代價大、復雜度高。
(2)每個特征的權重固定,特征函數只有0和1兩個取值。
(3)模型過于復雜,在海量數據的情況下,業界多用神經網絡。
(4)需要人為構造特征函數,特征工程對CRF模型的影響很大。
(5)轉移特征函數的自變量只涉及兩個相鄰位置,而CRF定義中的馬爾科夫性,應該涉及三個相鄰位置。
?
在HMM中的體現:對于某一時刻的任一狀態,當它向后一時進行狀態刻轉移時,會對轉移到的所有狀態的概率做歸一化,這是一種局部的歸一化。即使某個轉移概率特別高,其轉移概率也不超過1。即使某個轉移概率特別低,如果其它幾個轉移概率同樣低,那么歸一化后的轉移概率也不會接近0。
在CRF被規避的原因:CRF使用了全局的歸一化。在進行歸一化之前,使用分數來標記狀態路徑的可能性大小。待所有路徑所有位置的分數都計算完成后,再進行歸一化。某些某個狀態轉移的子路徑有很高的分數,會對整條路徑的概率產生很大的影響。
?
?
BiLSTM-CRF是當前用得比較廣泛的序列標注模型。
BiLSTM-CRF模型由BiLSTM和CRF兩個部分組成。
BiLSTM使用的是分類任務的配置,最終輸出一個標注好的序列。也就是說,即使沒有CRF,BiLSTM也能獨立完成標注任務。
CRF接收BiLSTM輸出的標注序列,進行計算,最后輸出修正后的標注序列。
TensorFlow提供了CRF的開發包,路徑為:tf.contrib.crf。需要強調的是,TensorFlow的CRF,提供的是一個嚴重簡化后的CRF,和原始CRF差異較大。雖然減小了模型復雜度,但是在準確率上也一定會有所損失。
下面簡要介紹下TensorFlow中CRF模塊的幾個關鍵函數。
(1)crf_log_likelihood
BiLSTM模塊輸出的序列,通過參數inputs輸入CRF模塊。
CRF模塊通過crf_sequence_score計算狀態序列可能性分數,通過crf_log_norm計算歸一化項。
最后返回log_likelihood對數似然。
(2)crf_sequence_score
crf_sequence_score通過crf_unary_score計算狀態特征分數,通過crf_binary_score計算共現特征分數。
(3)crf_unary_score
crf_unary_score利用掩碼的方式,計算得出一個類似交叉熵的值。
(4)crf_binary_score
crf_binary_score構造了一個共現矩陣transition_params,表示不同狀態共現的概率,這個矩陣是可訓練的。最后通過共現矩陣返回共現特征分數。
(5)crf_log_norm
歸一化項。
?
知乎文章地址:
https://zhuanlan.zhihu.com/p/87638630
由于微信公眾號文章有修改字數的限制,故本文后續的糾錯和更新將呈現在知乎的同名文章里。
?
參考文獻
[1]? 李航? 統計學習方法? 清華大學出版社
[2]? 條件隨機場CRF(一/二/三) ?劉建平Pinard? https://www.cnblogs.com/pinard/p/7048333.html
?
?
方便交流學習,備注:昵稱-學校(公司)-方向,進入DL&NLP交流群。
方向有很多:機器學習、深度學習,python,情感分析、意見挖掘、句法分析、機器翻譯、人機對話、知識圖譜、語音識別等。
記得備注呦
推薦閱讀:
【ACL 2019】騰訊AI Lab解讀三大前沿方向及20篇入選論文
【一分鐘論文】IJCAI2019 | Self-attentive Biaf?ne Dependency? Parsing
【一分鐘論文】 NAACL2019-使用感知句法詞表示的句法增強神經機器翻譯
【一分鐘論文】Semi-supervised Sequence Learning半監督序列學習
【一分鐘論文】Deep Biaffine Attention for Neural Dependency Parsing
詳解Transition-based Dependency parser基于轉移的依存句法解析器
經驗 | 初入NLP領域的一些小建議
學術 | 如何寫一篇合格的NLP論文
干貨?|?那些高產的學者都是怎樣工作的?
一個簡單有效的聯合模型
近年來NLP在法律領域的相關研究工作
讓更多的人知道你“在看”
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态