筆記轉(zhuǎn)載于GitHub項(xiàng)目:https://github.com/NLP-LOVE/Introduction-NLP
6. 條件隨機(jī)場(chǎng)與序列標(biāo)注
本章介紹一種新的序列標(biāo)注模型條件隨機(jī)場(chǎng)适揉。這種模型與感知機(jī)同屬結(jié)構(gòu)化學(xué)習(xí)大家族石咬,但性能比感知機(jī)還要強(qiáng)大篮幢。為了厘清該模型的來(lái)龍去脈,我們先對(duì)機(jī)器學(xué)習(xí)模型做番柿理淀弹。然后結(jié)合代碼介紹條件隨機(jī)場(chǎng)理論,探究它與結(jié)構(gòu)化感知機(jī)的異同庆械。
6.1 機(jī)器學(xué)習(xí)的模型譜系
機(jī)器學(xué)習(xí)的模型譜系圖如下圖所示:
根據(jù)建模的究竟是聯(lián)合概率分布 P(x,y) 還是條件概率分布 P(y|x)垦页。派生出生成式模型與判別式模型。
-
生成式模型
生成式模型:模擬數(shù)據(jù)的生成過程干奢,兩類隨機(jī)變量存在因果先后關(guān)系痊焊,先有因素 y,后有結(jié)果 x忿峻,這種因果關(guān)系由聯(lián)合分布模擬:
通過聯(lián)合分布 P(x,y)薄啥,生成式模型其實(shí)間接建模了 P(x):
這里有兩個(gè)缺陷:
- P(x) 很難準(zhǔn)確估計(jì),因?yàn)樘卣髦g并非相互獨(dú)立逛尚,而是存在錯(cuò)綜復(fù)雜的依賴關(guān)系垄惧。
- P(x) 在分類中也沒有直接作用。
為了克服這兩個(gè)問題绰寞,判別式模型出現(xiàn)到逊。
-
判別式模型
判別式模型直接跳過了 P(x),直接對(duì)條件概率 P(y|x) 建模滤钱。不管 x 內(nèi)部存在多復(fù)雜的關(guān)系觉壶,也不影響判別式模型對(duì) y 的判斷,于是就能夠放心大膽的利用各種各樣豐富的件缸、有關(guān)聯(lián)的特征铜靶。 所以我們會(huì)看到感知機(jī)分詞的準(zhǔn)確率高于隱馬爾可夫模型。
其中他炊,exp 為指數(shù)函數(shù)争剿。隨機(jī)變量關(guān)系錯(cuò)綜復(fù)雜,為了分析這些關(guān)系痊末,使用概率圖模型蚕苇。
-
有向概率圖模型
概率圖模型( Probabilistic Graphical Model, PGM)是用來(lái)表示與推斷多維隨機(jī)變量聯(lián)合分布 p(x,y) 的強(qiáng)大框架,被廣泛用于計(jì)算機(jī)視覺凿叠、知識(shí)表達(dá)涩笤、貝葉斯統(tǒng)計(jì)與自然語(yǔ)言處理疮丛。它利用節(jié)點(diǎn) V 來(lái)表示隨機(jī)變量,用邊 E 連接有關(guān)聯(lián)的隨機(jī)變量辆它,將多維隨機(jī)變量分布表示為圖 G=(V,E)誊薄。這樣就帶來(lái)了一個(gè)好處,那就是整個(gè)圖可以分解為子圖再進(jìn)行分析.子圖中的隨機(jī)變量更少锰茉,建模更加簡(jiǎn)單呢蔫。具體如何分解,據(jù)此派生出有向圖模型和無(wú)向圖模型飒筑。
有向圖模型按事件的先后因果順序?qū)⒐?jié)點(diǎn)連接為有向圖片吊。如果事件 A 導(dǎo)致事件 B,則用箭頭連接兩個(gè)事件 A-->B协屡。
有向圖模型都將概率有向圖分解為一系列條件概率之積俏脊,有向圖模型經(jīng)常用生成式模型來(lái)實(shí)現(xiàn)。定義 π(v) 表示節(jié)點(diǎn) v 的所有前驅(qū)節(jié)點(diǎn)肤晓,則分布為:
-
無(wú)向概率圖模型
相反爷贫,無(wú)向圖模型則不探究每個(gè)事件的因果關(guān)系,也就是說(shuō)不涉及條件概率分解补憾。無(wú)向圖模型的邊沒有方向漫萄,僅僅代表兩個(gè)事件有關(guān)聯(lián)。
無(wú)向圖模型將概率分解為所有最大團(tuán)上的某種函數(shù)之積盈匾。
在圖論中腾务,最大團(tuán)指的是滿足所有節(jié)點(diǎn)相互連接的最大子圖。因?yàn)樽畲髨F(tuán)需要考慮所有變量削饵,為此岩瘦,無(wú)向圖模型定義了一些虛擬的因子節(jié)點(diǎn),每個(gè)因子節(jié)點(diǎn)只連接部分節(jié)點(diǎn)窿撬,組成更小的最大團(tuán)启昧。
藍(lán)色虛線表示最大團(tuán),黑色方塊表因子節(jié)點(diǎn)尤仍,圓圈則表示變量節(jié)點(diǎn)箫津,無(wú)向圖模型將多維隨機(jī)變量的聯(lián)合分布分解為一系列最大團(tuán)中的因子之積:
其中狭姨,a 是因子節(jié)點(diǎn)宰啦,Ψa 則是一個(gè)因子節(jié)點(diǎn)對(duì)應(yīng)的函數(shù),參數(shù) Xa,Ya 是與因子節(jié)點(diǎn)相連的所有變量節(jié)點(diǎn)饼拍。為了將式子約束為概率分布赡模,定義常數(shù) Z 為如下歸一化因子:
在機(jī)器學(xué)習(xí)中,常用指數(shù)家族的因子函數(shù):
其中师抄,k 為特征的編號(hào)漓柑,F(xiàn)ak 是特征函數(shù),Wak 為相應(yīng)的特征權(quán)重。
判別式模型經(jīng)常用無(wú)向圖來(lái)表示辆布,只需要在歸一化時(shí)瞬矩,對(duì)每種 x 都求一個(gè)歸一化因子:
然后 P(x,y) 就轉(zhuǎn)化為判別式模型所需的條件概率分布:
到這里,最后一個(gè)公式就是條件隨機(jī)場(chǎng)的一般形式锋玲。
6.2 條件隨機(jī)場(chǎng)
條件隨機(jī)場(chǎng)( Conditional Random Field, CRF)是一種給定輸入隨機(jī)變量 x景用,求解條件概率 p(y| x) 的概率無(wú)向圖模型。用于序列標(biāo)注時(shí)惭蹂,特例化為線性鏈( linear chain )條件隨機(jī)場(chǎng)伞插。此時(shí),輸人輸出隨機(jī)變量為等長(zhǎng)的兩個(gè)序列盾碗。
-
線性鏈條件隨機(jī)場(chǎng)
線性鏈條件隨機(jī)場(chǎng)如下圖所示:
每個(gè) Xt 上方有 3 個(gè)灰色節(jié)點(diǎn)媚污,代表 Xt 的 3 個(gè)特征,當(dāng)然還可以是任意數(shù)量的特征廷雅,體現(xiàn)了特征的豐富性耗美,黑色方塊是因子節(jié)點(diǎn),可以理解為一個(gè)特征函數(shù) 航缀。其中僅僅利用了 Xt 和 Yt 的特征稱作狀態(tài)特征幽歼,利用了 Yt-1 的特征則稱作轉(zhuǎn)移特征,與感知機(jī)的特征函數(shù)相同谬盐。
線性鏈條件隨機(jī)場(chǎng)的定義如下:
其中甸私,Z(x)為歸一化函數(shù):
上式定義在所有可能的標(biāo)注序列上。如果將所有特征函數(shù)與權(quán)重分別寫作向量形式飞傀,則線性鏈條件隨機(jī)場(chǎng)的定義可簡(jiǎn)化為:
對(duì)比結(jié)構(gòu)化感知機(jī)的打分函數(shù):
可以發(fā)現(xiàn)結(jié)構(gòu)化感知機(jī)打分函數(shù)與條件隨機(jī)場(chǎng)的指數(shù)部分完全相同皇型,由于給定實(shí)例 x,Z(x) 就是一個(gè)常數(shù) c砸烦,所以有:
于是弃鸦,條件隨機(jī)場(chǎng)就和結(jié)構(gòu)化感知機(jī)有以下聯(lián)系:
- 條件隨機(jī)場(chǎng)和結(jié)構(gòu)化感知機(jī)的特征函數(shù)完全一致。
- 結(jié)構(gòu)化感知機(jī)預(yù)測(cè)打分越高幢痘,條件隨機(jī)場(chǎng)給予該預(yù)測(cè)的概率也越大唬格。
這種相似性使得我們能夠復(fù)用結(jié)構(gòu)化感知機(jī)的預(yù)測(cè)算法,也就是維特比算法颜说。
條件隨機(jī)場(chǎng)的訓(xùn)練過程詳見《自然語(yǔ)言處理入門》第6章购岗。
-
對(duì)比結(jié)構(gòu)化感知機(jī)
結(jié)構(gòu)化感知機(jī)和條件隨機(jī)場(chǎng)的相同點(diǎn):
- 特征函數(shù)相同
- 權(quán)重向量相同
- 打分函數(shù)相同
- 預(yù)測(cè)算法相同
- 同屬結(jié)構(gòu)化學(xué)習(xí)
不同點(diǎn)
感知機(jī)更新參數(shù)時(shí),只使用一個(gè)訓(xùn)練實(shí)例门粪,沒有考慮整個(gè)數(shù)據(jù)集喊积,難免顧此失彼;而條件隨機(jī)場(chǎng)對(duì)數(shù)似然函數(shù)及其梯度則使用了整個(gè)數(shù)據(jù)集玄妈。
條件隨機(jī)場(chǎng)更新參數(shù)更加合理乾吻,條件隨機(jī)場(chǎng)更新參數(shù)如下:
對(duì)比感知機(jī)的更新參數(shù)表達(dá)式:
兩者的差距一目了然髓梅,感知機(jī)獎(jiǎng)勵(lì)正確答案對(duì)應(yīng)的特征函數(shù) ?,但僅懲罰錯(cuò)誤最厲害的那個(gè) y绎签,而條件隨機(jī)場(chǎng)同時(shí)懲罰所有答案 y枯饿,分?jǐn)倯土P總量。
6.3 條件隨機(jī)場(chǎng)工具包
談到條件隨機(jī)場(chǎng)工具包诡必,最著名的就是 CRF++鸭你,有各大平臺(tái)的安裝方法,HanLP已經(jīng)集成了擒权。
-
CRF++ 語(yǔ)料格式
CRF++ 接受純文本語(yǔ)料袱巨,約定為一種空格或制表符分隔的表格格式。每個(gè)序列作為一個(gè)表格碳抄,每行為序列的一個(gè)時(shí)刻 Xt,Yt愉老,除了最后一列為輸出變量 y 之外,其它列都是輸入變量 x剖效,如下所示:
商 s 中 B 品 p 中 E 和 h 中 S 服 f 中 B 務(wù) w 中 E A a 英 B K k 英 M B b 英 M 4 s 數(shù) M 8 b 數(shù) E
6.4 HanLP中的CRF++ API
詳細(xì)代碼請(qǐng)見: evaluate_crf_cws.py
https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch06/evaluate_crf_cws.py
訓(xùn)練耗時(shí)很長(zhǎng)嫉入。
標(biāo)準(zhǔn)化評(píng)測(cè)
算法 | P | R | F1 | R(oov) | R(IV) |
---|---|---|---|---|---|
最長(zhǎng)匹配 | 89.41 | 94.64 | 91.95 | 2.58 | 97.14 |
二元語(yǔ)法 | 92.38 | 96.70 | 94.49 | 2.58 | 99.26 |
一階HHM | 78.49 | 80.38 | 79.42 | 41.11 | 81.44 |
二階HHM | 78.34 | 80.01 | 79.16 | 42.06 | 81.04 |
平均感知機(jī) | 96.69 | 96.45 | 96.57 | 70.34 | 97.16 |
結(jié)構(gòu)化感知機(jī) | 96.67 | 96.64 | 96.65 | 70.52 | 97.35 |
條件隨機(jī)場(chǎng) | 96.86 | 96.64 | 96.75 | 71.54 | 97.33 |
條件隨機(jī)場(chǎng)的各項(xiàng)指標(biāo)全面勝過了結(jié)構(gòu)化感知機(jī),綜合 F1 更達(dá)到 96.8%璧尸, 是傳統(tǒng)方法中最準(zhǔn)確的分詞模型咒林。
6.5 GitHub
HanLP何晗--《自然語(yǔ)言處理入門》筆記:
https://github.com/NLP-LOVE/Introduction-NLP
項(xiàng)目持續(xù)更新中......
目錄
章節(jié) |
---|
第 1 章:新手上路 |
第 2 章:詞典分詞 |
第 3 章:二元語(yǔ)法與中文分詞 |
第 4 章:隱馬爾可夫模型與序列標(biāo)注 |
第 5 章:感知機(jī)分類與序列標(biāo)注 |
第 6 章:條件隨機(jī)場(chǎng)與序列標(biāo)注 |
第 7 章:詞性標(biāo)注 |
第 8 章:命名實(shí)體識(shí)別 |
第 9 章:信息抽取 |
第 10 章:文本聚類 |
第 11 章:文本分類 |
第 12 章:依存句法分析 |
第 13 章:深度學(xué)習(xí)與自然語(yǔ)言處理 |