NLP --- 条件随机场CRF详解 重点 特征函数 转移矩阵
20210517
http://www.tensorinfinity.com/paper_170.html
?
上一節(jié)我們介紹了CRF的背景,本節(jié)開始進(jìn)入CRF的正式的定義,簡單來說條件隨機(jī)場就是定義在隱馬爾科夫過程的無向圖模型,外加可觀測符號X,這個(gè)X是整個(gè)可觀測向量。而我們前面學(xué)習(xí)的HMM算法,默認(rèn)可觀測符號是獨(dú)立的,但是根據(jù)我們的實(shí)際語言來說,獨(dú)立性的假設(shè)太牽強(qiáng),不符合我們的語言規(guī)則,因此在HMM的基礎(chǔ)上,我們把可觀測符號的獨(dú)立性假設(shè)去掉。同時(shí)我們知道HMM的解法是通過期望最大化進(jìn)行求解,而CRF是通過最大熵模型進(jìn)行求解,下面我們就從定義開始看看什么是CRF:
CRF定義
這里定義只講線性鏈隨機(jī)場,針對自然語言處理領(lǐng)域的處理進(jìn)行設(shè)計(jì),因此這里只提線性鏈隨機(jī)場定義:
線性鏈條件隨機(jī)場)設(shè)均為線性鏈表示的隨機(jī)變量序列,若在給定隨機(jī)變量序列的條件下,隨機(jī)變量序列Y的條件概率分布就構(gòu)成條件隨機(jī)場,即滿足馬爾可夫性
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
則稱為線性鏈條件隨機(jī)場,在標(biāo)注問題中,表示輸入觀測序列,表示對應(yīng)的輸出標(biāo)記序列或狀態(tài)序列,這里大家一定要切記什么是概率圖模型,什么是無向圖和團(tuán),上面的定義就是針對二元組,如下圖:
?
上面團(tuán)就是,其他的Y不是這個(gè)團(tuán)里的,那么對應(yīng)的條件概率(這里以為例求解)?那么應(yīng)該寫成如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
也就是說決定的概率取決于輸入的序列以及和他相連的兩個(gè)輸出,,這正是體現(xiàn)了概率圖模型里面的思想(符合語言的規(guī)律即聯(lián)系上下文語意),不和其直接相連的可以看做條件獨(dú)立,這就解釋了下面為什么可以直接相乘,指數(shù)相加了,所以這里大家需要好好理解這里的深層含義,不要放過任何細(xì)節(jié)問題。下面我們給出參數(shù)化定義,上面的定義是我們語言模型最原始的出發(fā)點(diǎn)即知道輸入的語音我如何求出對應(yīng)的概率,這里需要數(shù)學(xué)模型來建立他們的關(guān)系,如下(這里大家看看上一節(jié)的什么是勢函數(shù),或者看李航的書):
這里把上一節(jié)的重要公式拿過來:
最大團(tuán)C上的函數(shù)的乘積形式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
概率無向圖模型的聯(lián)合概率分布的可以表示為如下形式:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? 其中? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
定理 (線性鏈條件隨機(jī)煬的參數(shù)化形式)設(shè)為線性鏈條件隨機(jī)場,則在隨機(jī)變量取值為的條件下,隨機(jī)變量Y取值為的條件概率具有如下形式:
?
其中:
?
上面的定義其實(shí)就是根據(jù)勢函數(shù)和概率無向圖模型進(jìn)行定義的,那么這些參數(shù)都代表什么意思呢?
大家這里可以把、看做權(quán)值,、看做特征函數(shù),和我們最大熵模型里將的特征函數(shù)很類似可以說是一樣了,即滿足為1,反之為0,下面使用李航的書進(jìn)行解釋:
上式是線性鏈條件隨機(jī)場模型的基本形式,表示給定輸入序列x,對輸出序列,預(yù)測的條件概率,是定義在邊上的特征函數(shù),稱為轉(zhuǎn)移特征,依賴于當(dāng)前和前一個(gè)位置,是定義在結(jié)點(diǎn)上的特征函數(shù),稱為狀態(tài)特征,依賴于當(dāng)前位置,和都依賴于位置,是局部特征函數(shù),通常,特征函數(shù)和取值為1或0:當(dāng)滿足特征條件時(shí)取值為1,否則為0.條件隨機(jī)場完全由特征函數(shù)和對應(yīng)的、權(quán)值,確定.
我們知道了上面的和分別代表什么了,而對于當(dāng)前的位置狀態(tài)只依賴于前一個(gè)狀態(tài),那可不可以擴(kuò)展其他的依賴狀態(tài)呢?例如依賴前兩個(gè)的位置狀態(tài),答案是可行的,只是這里我們需要符合無向圖最大團(tuán)的定義,即任意兩個(gè)都應(yīng)該聯(lián)通,如下圖所示:
?
此時(shí)我們的就可以寫成這樣了:,這樣大家應(yīng)該可以理解條件隨機(jī)場的工作方式的了,那么我們繼續(xù)來看看上式的定義和上圖,我們發(fā)現(xiàn)如果這樣做的話會有哪些問題呢?首先特征函數(shù)如何定義呢?這里的定義是根據(jù)特征模板生成的,可以是一個(gè)子、一個(gè)詞,或者一個(gè)短語等,這些特征不是人為劃分而是通過計(jì)算機(jī)自動劃分,這樣做確實(shí)節(jié)省了人力,但是帶來的問題是,無效特征也會急劇增加,例如“我愛中國”,這里面的特征可能包含‘我愛’,‘愛中’,‘中國’,其中‘愛中’就是無效特征,這樣的詞會很多,因此計(jì)算量就會很大,如何解這個(gè)問題,我們引入了權(quán)值即、,通過權(quán)值我們就可以計(jì)算有效特征和無效特征的權(quán)值,這樣權(quán)值會使的有效特征的權(quán)值很大,無效特征的權(quán)值幾乎為0,這就是引入權(quán)值的目的,但是計(jì)算量大怎么解決呢?這一點(diǎn)我們在后面的學(xué)習(xí)算法中在仔細(xì)的講,現(xiàn)在我們看看上式,我們發(fā)現(xiàn)他有兩個(gè)特征函數(shù)兩個(gè)權(quán)值,這樣處理不是很方便,能不能把他們合二為一呢?答案是可以的,下面我們就詳細(xì)的看看怎么做。
條件隨機(jī)場的簡化形式
條件隨機(jī)場還可以由簡化形式表示.注意到條件隨機(jī)場式中同一特征在各個(gè)位置都有定義,可以對同一個(gè)特征在各個(gè)位置求和,將局部特征函數(shù)轉(zhuǎn)化為一個(gè)全局特征函數(shù),這樣就可以將條件隨機(jī)場寫成權(quán)值向量和特征向量的內(nèi)積形式,即條件隨機(jī)場的簡化形式,
為簡便起見,首先將轉(zhuǎn)移特征和狀態(tài)特征及其權(quán)值用統(tǒng)一的符號表示.設(shè)有個(gè)轉(zhuǎn)移特征,個(gè)狀態(tài)特征,,記
?
我們來解釋一下為什么是可以合二為一,因?yàn)槲恢锰卣骱蜖顟B(tài)特征的不同之處是位置只和當(dāng)前位置有關(guān)和其他無關(guān),而轉(zhuǎn)移狀態(tài)不僅和當(dāng)前狀態(tài)有關(guān)還和前一個(gè)狀態(tài)有關(guān),那么如果位置特征和加上前一個(gè)位置的特征,這里我們讓前一個(gè)位置特征的權(quán)值為0就可以了,因此可以綜合在一起,這里大家應(yīng)該可以理解的,下面我們繼續(xù)往下看:
?對轉(zhuǎn)移和位置狀態(tài)對i進(jìn)行求和:
?
使用代替?、:
?
因此條件隨機(jī)場的可以簡化寫成如下:
?
?若表示權(quán)值向量,則可以寫成如下:
?
使用表示全局特征向量:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???
?
?條件隨機(jī)場可以寫成向量的乘積的形式,如下:
?
其中:
?
條件隨機(jī)場的矩陣形式?
?根據(jù)(1)式我們可以寫成矩陣的形式,對觀測序列的每個(gè)位置,定義一個(gè)m階矩陣,:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
上式可能不好理解,下面就好好解釋一下這個(gè)矩陣的含義:
?
這里我們先假設(shè)即Y只要三種狀態(tài)可以選擇,那么從的轉(zhuǎn)移有對應(yīng)的轉(zhuǎn)移矩陣即:
?
這里的轉(zhuǎn)移矩陣和馬爾科夫的轉(zhuǎn)移矩陣很類似,但是這里不同的是,里面的數(shù)據(jù)是非歸一化的概率,即他是一個(gè)數(shù),不是概率,因?yàn)槲覀冎皇菫榱吮容^大小,只需計(jì)算出數(shù)就可以參與比較了,沒必要計(jì)算出概率,這樣計(jì)算量就會降低,這里大家需要理解,另外就是馬爾科夫的轉(zhuǎn)移矩陣是不變的,以下沒特別說明的都是非歸范化的矩陣。但是這里的?的矩陣是隨著i的變化而變化,因?yàn)橛绊懙牟粌H僅和當(dāng)前狀態(tài)有關(guān)還和這個(gè)輸入序列x以及前一個(gè)狀態(tài)有關(guān),還和特征函數(shù)有關(guān),因此這里的會有很多,這樣大家就應(yīng)該好理解了吧,大家在看下式就很簡單了:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
那么我們把(1)式逐漸使用矩陣來替換得到如下:
?
上式的帶下標(biāo)的x和y代表的是一個(gè)數(shù)即具體的值,不帶的說明是一個(gè)向量
?這樣給定觀測序列x,標(biāo)記序列y的非規(guī)范化概率可以通過n+1個(gè)矩陣的乘積進(jìn)行表示,于是條件概率是:
?
?下面給出一個(gè)實(shí)際的例子,這個(gè)例子就是李航的數(shù)上的例子。如果大家明白上面的意思了,下面的例子很簡單,這里為了大家方便直接拿過來了:
?
?
?這里稍微解釋一下,因?yàn)槊總€(gè)狀態(tài)y都可以去取兩個(gè)值,而且有三個(gè)狀態(tài),因此總共有條路徑,其中上圖的紅色標(biāo)記是第一條路徑即y=(1,1,1),藍(lán)色是y=(2,2,2).其他的感覺就沒什么難度了。
這里為什么需要使用矩陣形式的表達(dá)呢?下面我們的學(xué)習(xí)算法需要使用到。這里我們看看他的參數(shù)是如何求解的,其實(shí)很簡單就是最大熵模型的求解過程,因?yàn)檫@里的目標(biāo)函數(shù)是最大熵模型的指數(shù)族是一致的,因此完全可以使用最大熵模型進(jìn)行求解,本來不想在啰嗦,但是還是解釋一下把,為什么可以使用最大熵模型進(jìn)行求解。
在最大熵模型的求解過程中我給大家推薦了一篇文章即《A Simple Introduction to Maximum Entropy Models for Natural Language Processing》,里面有幾個(gè)推理我們需要看看:
?
這里需要先和大家回顧一下符號所代表的意思,其中P是約束條件或者說是期望,Q是求解的最大熵指數(shù)族函數(shù),他們有兩個(gè)推理,其實(shí)這兩個(gè)推理在李航的書也給出了證明,不知道大家是否理解。我們一起來看看:
?
這個(gè)推理是什么意思呢?就是說在滿足約束條件同時(shí)又是指數(shù)族函數(shù)的分布情況下,此時(shí)的熵是最大的?,這是上面的定理告訴我們的,我們在看下一個(gè):
?
這個(gè)推理告訴我們?nèi)绻蠓植技葷M足約束條件又滿足指數(shù)族函數(shù)的分布,那么所求的分布一定是最大釋然的那個(gè)分布,上面的兩個(gè)定理告訴我們什么呢?
其實(shí)就是說如果我們對滿足條件又是指數(shù)族函數(shù)的分布根據(jù)最大釋然估計(jì)出的分布就是符合最大熵的分布 ,不知道大家有沒有留意,李航的書中證明了這一點(diǎn),大家應(yīng)該好好體會這個(gè)特點(diǎn),以后我們遇到類似的情況是不是也可以這樣做呢?
而我們的目標(biāo)式就是上面的(1)式他就是符合上面兩個(gè)定理的,約束條件其實(shí)就是特征含數(shù)了,指數(shù)族也是符合的,因此我們可以很好的解決解決CRF的權(quán)值的問題,通過改進(jìn)的迭代法即IIS進(jìn)行求解,如下,這里還是帶大家推一邊吧。
CRF的學(xué)習(xí)算法即IIS
己知訓(xùn)練數(shù)據(jù)集,由此可知經(jīng)驗(yàn)概率分布為,可以通過極大化訓(xùn)練數(shù)據(jù)的對數(shù)似然函數(shù)來求模型參數(shù),訓(xùn)練數(shù)據(jù)的對數(shù)似然函數(shù)為
?
最大釋然函數(shù)大家有沒有疑問的呢?例如?為什么是的指數(shù)?這里我給大家解釋一下:? ? ?
**************************************************************************************************************************************? ? ? ? ? ? ??
?
其實(shí)第一眼之所以不理解,因?yàn)檫@是最大似然函數(shù)的另外一種形式。一般書上描述的最大似然函數(shù)的一般形式是各個(gè)樣本集XX中各個(gè)樣本的聯(lián)合概率:?
?
其實(shí)這個(gè)公式和上式是等價(jià)的。是樣本具體觀測值。隨機(jī)變量是離散的,所以它的取值范圍是一個(gè)集合,假設(shè)樣本集的大小為n,的取值有個(gè),分別是。用表示在觀測值中樣本出現(xiàn)的頻數(shù)。所以可以表示為
?
?對等式兩邊同時(shí)開n次方,可得
?
?因?yàn)榫褪墙?jīng)驗(yàn)概率,因此可以使用代替即:
?
很明顯對 求最大值和對 求最大值的優(yōu)化的結(jié)果是一樣的。整理上式所以最終的最大似然函數(shù)可以表示為:?
?
******************************************************************************************************************************************?
到這里大家就清楚了吧,然后就是化簡了,如下:
?
?再往下大家看李航的書吧,和最大熵模型求解是一樣的,這里大家應(yīng)該把李航的書的章節(jié)的公式多推兩邊,我推了三遍,才深入理解的,大家別偷懶啊,你只有邊推邊思考才能體會數(shù)學(xué)的魅力所在,這里就不廢話了。本節(jié)到此結(jié)束。下一節(jié)我們看看李航的書中的求期望問題,為什么要求期望呢?下一節(jié)詳細(xì)介紹。
原文:https://blog.csdn.net/weixin_42398658/article/details/85156721
https://zhuanlan.zhihu.com/p/104562658
條件隨機(jī)場
命名實(shí)體識別現(xiàn)狀及建議_20200603.doc
參看這個(gè)文件
?
?
總結(jié)
以上是生活随笔為你收集整理的NLP --- 条件随机场CRF详解 重点 特征函数 转移矩阵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3 reversed 函数
- 下一篇: pytorch 状态字典:state_d