日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【NLP】用于序列标注问题的条件随机场(Conditional Random Field, CRF)

發布時間:2025/3/20 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NLP】用于序列标注问题的条件随机场(Conditional Random Field, CRF) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇介紹了隱馬爾科夫模型,隱馬爾科夫模型引入了馬爾科夫假設,即當前時刻的狀態只與其前一時刻的狀態有關。但是,在序列標注任務中,當前時刻的狀態,應該同該時刻的前后的狀態均相關。于是,在很多序列標注任務中,引入了條件隨機場。

今天詳細介紹條件隨機場的理論和及其在實體識別中的應用和tensorflow中的實現。

作者&編輯 | 小Dream哥

1 條件隨機場是什么?

機器學習最重要的任務,是根據一些已觀察到的證據(例如訓練樣本)來對感興趣的未知變量(例如類別標記)進行估計和推測。

概率模型提供這樣一種描述的框架,將學習任務歸結于計算變量的概率分布。在概率模型中,利用已知變量推測未知變量的分布稱為“推斷”,其核心是如何基于可觀測變量推測出未知變量的條件分布。具體來說,假定所關心的變量集合為Y,可觀測變量集合為X,“生成式”模型直接通過訓練樣本基本聯合概率分布P(Y,X);“判別式”模型通過先計算條件分布P(Y|X)。

我們前面講的HMM是一種生成式概率圖模型,條件隨機場(CRF)與HMM不同,是一種判別式的概率圖模型。CRF是在給定一組變量的情況下,求解另一組變量的條件概率的模型。

設X與Y是一組隨機變量,P(Y,X)是給定隨機變量X情況下,隨機變量Y的條件概率。若隨機變量Y構成一個無向圖G(V,E),當X與Y兩個隨機變量的概率分布滿足如下的條件:

則稱在給定隨機變量序列X的情況下,隨機變量序列Y的條件概率P(Y,X)構成條件隨機場。

簡單說明一下上面的條件概率公式:

v表示G中的任一節點,例如Y1,v~V。n(v)表示與v有邊連接的節點的集合。上式的含義就是,Y在i時刻的狀態,僅與其有邊連接的節點有關。


在NLP中,常用的是線性鏈的條件隨機場,下面著重介紹下線性鏈條件隨機場以加深理解。

設X={x1,x2,x3,....xn},Y={y1,y2,y3,....yn}均為線性鏈表示的隨機變量序列,若在給定隨機變量序列X的情況下,隨機變量序列Y的條件概率P(Y,X)構成條件隨機場,即滿足如下的條件:

從上面的定義可以看出,條件隨機場與HMM之間的差異在于,HMM中,Y在i時刻狀態與其前一時刻,即y(i-1)相關。而在CRF中,Y在i時刻的狀態與其前后時刻,即y(i-1)與y(i+1)均相關

上面大致講了條件隨機場的定義,有什么樣的性質。如果讀過小Dream哥上一篇HMM講解文章的同學,此刻對CRF應該就有了大致的了解。

在介紹CRF的實際應用之前,還有一些概念需要介紹,就是條件隨機場的參數化形式。

2 條件隨機場的參數化表現形式

我們先列出來CRF的參數化形式。假設P(Y,X)是隨機序列Y在給定隨機序列X情況下的條件隨機場,則在隨機變量X取值為x的情況下,隨機變量Y的取值y具有如下關系:

式中

t_k和s_l是特征函數,v_k和u_l是對應的權值

t_k是狀態轉移函數,v_k是對應的權值;s_l是發射函數,u_l是對應的權值。好的,假如所有的t_k,s_l 和v_k,u_l都已知,我們要算的P(Yi =yi|X)是不是就可以算出來啦?

在給定隨機序列X的情況下,計算概率最大Y序列可以用維特比算法,維特比算法在上一章節HMM中有詳細的介紹,沒看的同學可以在點擊鏈接查看

大家應該還有一大堆的疑問,t_k,s_l 和v_k,u_l如何確定和學習?在實際中我們如何使用?小Dream如果只講到這里,就會太讓大家失望了。下面我們看看在tensorflow里,CRF是怎么實現的,以及我們如何使用他,經過這一段,大家對條件隨機場應該就會有一個較為完整的認識了。

3 tensorflow里的條件隨機場

這一節我們以命名實體識別為例,來介紹在tensorflow里如何使用條件隨機場(CRF)。

命名實體識別與分詞一樣,是一個序列標注的問題,因為篇幅問題,這里就不展開,不清楚的同學可以先出門百度一下,以后我們再找機會,好好講一下命名實體識別的項目。

該命名實體識別任務特征提取的網路結構如下:

其他的我們先不看,我們只用知道,自然語言的句子經過神經網絡(雙向LSTM)進行特征提取之后,會得到一個特征輸出。訓練時,將這個特征和相應的標記(label)輸入到條件隨機場中,就可以計算損失了。預測時,將自然語言輸入到該網絡,經CRF就可以識別該句子中的實體了。

我們來看看具體的代碼:

這是我定義的損失層,project_logits是神經網絡最后一層的輸出,該矩陣的shape為[batch_size, num_steps, num_tags],第一個是batch size,第二個是輸入的句子的長度,第三個標記的個數,即命名實體識別總標記的類別數。targets是輸入句子的label,即每個字的label,它的維度為[batch_size, num_steps]。損失層定義了一個self.trans矩陣,大小是[num_tags+1, num_tags+1], 加1是因為還有一個類別是未定義。

將project_logit,targets以及self.trans交給tensorflow的系統函數crf_log_likelihood即可求得損失了。

下面我們進一步來看看crf_log_likelihood是怎么實現的:

crf_log_likelihood函數中分為兩步,最終得到scores:

(1) 調用crf_sequence_score函數計算sequence_scores。

(2) 將sequence_scores進行歸一化處理。

CRF參數的學習及score計算過程主要在crf_sequence_score中進行,我們好好看看這個函數。

從crf_sequence_score函數的實現中,我們看出,tf中的損失值包括一元損失和二元損失。其中unary_scores表示的是輸入序列之間轉化的損失,unary_scores表示的轉化矩陣的損失值。那這兩項到底是什么呢?都是兩項,是不是和CRF的參數化形式感覺有點像?我們看看相關論文是怎么說的。

LampleG, Ballesteros M, Subramanian S, et al. Neural architectures for named entity recognition[J]. arXiv preprint arXiv:1603.01360, 2016.

我們看一下,得分分為兩項,第一項:

表示輸入句子中,第i個詞,取某個標記的概率

舉個例子,假如輸入的句子是“Mark Watney visit Mars”, 相應的label是[B-PER,E-PER,O,S-LOC],則P(1,“B-PER”)表示的是第一個詞的標記是B-PER的概率。所以第一項會是P(1,“B-PER”)+P(2,“E-PER”)+P(3,“O”)+P(4,“S-LOC”)。

前面提到過,project_logits是神經網絡最后一層的輸出,該矩陣的shape為[batch_size, num_steps, num_tags]。所以在tensorflow的實現中,該矩陣的值會取到project_logits矩陣中相應的值,這一點交叉熵有點像,同學們體會一下。

第二項:

它代表的是整個序列從一個標記轉化到下一個標記的損失值。它用每一項值從self.trans矩陣中取得。它最開始是按照我們初始化的方式初始化的,然后會隨著訓練的過程優化。

好了,tensorflow中crf就是這么實現的,是不是有種豁然開朗的感覺??

我們來做一個總結,CRF是一個在給定某一個隨機序列的情況下,求另一個隨機序列的概率分布的概率圖模型,在序列標注的問題中有廣泛的應用。

在tensorflow中,實現了crf_log_likelihood函數。在本文講的命名實體識別項目中,自然語言是已知的序列,自然語言經過特征提取過后的logits,是發射矩陣,對應著t_k函數;隨機初始化的self.trans矩陣是狀態轉移矩陣,對應著參數s_l,隨著訓練的過程不斷的優化。

CRF相關的理論及其在tensorflow中的實現,就差不多講完了。但是有一個很關鍵的點,需要讀者們思考一下。在這個實體識別的任務中,經過LSTM完成特征提取之后,為什么要接一層CRF再得到scores和損失值?

關于這個問題,讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"。

總結

條件隨機場(CRF)在現今NLP中序列標記任務中是不可或缺的存在。太多的實現基于此,例如LSTM+CRF,CNN+CRF,BERT+CRF。因此,這是一個必須要深入理解和吃透的模型。


下期預告:樸素貝葉斯原理及應用

有三AI知識星球推薦

為了更加自由的進行內容輸出,也讓大家可以跟各行各業的大佬們交流,有三AI開設了星球,內容與公眾號完全不重合,相互補充,下面是知識星球的內容介紹,大家可以關注。


有三AI知識星球官宣,BAT等大咖等你來撩

轉載文章請后臺聯系

侵權必究

往期精選

  • 【NLP】自然語言處理專欄上線,帶你一步一步走進“人工智能技術皇冠上的明珠”。

  • 【NLP】用于語音識別、分詞的隱馬爾科夫模型HMM

  • 【知識星球】每日干貨看圖猜技術,你都會嗎?

  • 【知識星球】千奇百怪的網絡結構板塊更新到哪里了?

總結

以上是生活随笔為你收集整理的【NLP】用于序列标注问题的条件随机场(Conditional Random Field, CRF)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。