還不瞭解CRF(條件隨機場)?

語言: CN / TW / HK

theme: vue-pro

「這是我參與11月更文挑戰的第6天,活動詳情檢視:2021最後一次更文挑戰

概念與原理

CRF全稱Conditional Random Field,即條件隨機場。

Random 指的是隨機變數 X 和 Y 。Conditional 指的是條件概率。 這就意味著CRF是一個判別式模型。通常,判別式模型計算條件概率,而生成式模型計算聯合概率分佈。

CRF 是一個序列化標註演算法,接收一個輸入序列如 X=(x_1,x_2,...,x_n), 並且輸出目標序列 Y=(y_1,y_2,...,y_n) ,也能被看作是一種seq2seq模型。

例如,在詞性標註任務中,輸入序列為一串單詞,輸出序列就是相應的詞性。這裡使用大寫 X,Y 表示序列。

除了詞性標註之外,CRF還可以用來做組塊分析、命名實體識別等任務。一般地,輸入序列 X 被稱為 observation sequence, Y 叫作 state sequence。

HMM的侷限性

隱馬爾科夫模型(Hidden Markov Model,以下簡稱HMM)

1.該模型定義的是聯合概率,必須列舉所有觀察序列的可能值,而這對多數領域來說是比較困難的。

2.基於觀察序列中的每個元素都相互條件獨立。即:在任何時刻觀察值僅僅與狀態序列中的一個狀態有關。而大多數現實世界中的真實觀察序列是有多個相互作用的特徵和觀察序列中較長範圍內的元素之間的依賴而形成的。 ``

image.png

CRF基本思想

應用到nlp中,就是給一個句子中的每個單詞註明詞性(而不是給每個單詞單獨預測詞性)。比如這句話:

Bob drank coffee at Starbucks.

註明每個單詞的詞性後是這樣的:

Bob (名詞) drank(動詞) coffee(名詞) at(介詞) Starbucks(名詞).

用條件隨機場來解決這個問題:

這裡有5個單詞,我們將:(名詞,動詞,名詞,介詞,名詞)作為一個標註序列,稱為l。

可選的標註序列有很多種,我們要在這麼多的可選標註序列中,挑選出一個最靠譜的、打分最高的標註序列作為我們對這句話的標註

假如我們給每一個標註序列打分,如凡是標註中出現了動詞後面還是動詞的標註序列,要給它負分!

上面所說的動詞後面還是動詞就是一個特徵函式,我們可以定義(或者使用神經網路學習)一個特徵函式集合,用這個特徵函式集合來為一個標註序列打分,並據此選出最靠譜的標註序列。

也就是說,每一個特徵函式都可以用來為一個標註序列評分,把集合中所有特徵函式對同一個標註序列的評分綜合起來,就是這個標註序列最終的評分值。

線性鏈CRF中的特徵函式

特徵函式的引數

  • 句子s(就是我們要標註詞性的句子)
  • i,用來表示句子s中第i個單詞(的位置)
  • $l_i$,表示要評分的標註序列給第i個單詞標註的詞性
  • $l_{i-1}$,表示要評分的標註序列給第i-1個單詞標註的詞性
  • 輸出值:是0或者1。0表示要評分的標註序列不符合這個特徵,1表示要評分的標註序列符合這個特徵。

特徵函式思想

為了建一個條件隨機場:

  1. 要定義一個特徵函式集,每個特徵函式都以整個句子s,當前位置i,位置i和i-1的標籤為輸入,
  2. 為每一個特徵函式賦予一個權重
  3. 針對每一個標註序列l,對所有的特徵函式加權求和,必要的話,可以把求和的值轉化為一個概率值。

CRF利用標註語料由字構詞(組詞)不僅考慮了文字詞語出現的頻率資訊,也同時考慮了上下文的語境,具備較好的泛化能力,因此對歧義詞和未登陸詞都有較好的效果(且CRF解決這個問題並不在每一個節點進行歸一化,而是由所有特徵進行全域性歸一化,因此可以求的全域性最優值)

馬爾可夫鏈

比如:一個人想從A出發到達目的地F,然後中間必須依次路過B,C, D, E,於是就有這樣一個狀態:

若想到達B,則必須經過A; 若想到達C,則必須經過A, B; 以此類推,最終 若想到達F,則必須經過A,B,C,D,E。

如果把上面的狀態寫成一個序列的話,那就是:{到達A, 到達B, 到達c, ..., 到達F},而且很明顯,狀態序列的每個狀態值取決於前面的狀態是否已經滿足。

於是,像這樣,“狀態序列的每個狀態值取決於前面有限個狀態”的狀態序列就是馬爾可夫鏈。

隱馬爾可夫模型(HMM)

還用上面一個人從A到F的例子。

一個人想今天逛完A, B,C, D, E, F這幾處,但是他想先逛哪個後逛哪個我們不知道。

此人每到達一處,他就會買一個禮物帶給你,可這傢伙逛的太興奮了,於是乎帶給你的禮物有重複的,因此,最後你會有這樣的觀測結果:{禮物1,禮物2,禮物1,禮物3,禮物2,禮物2} (於是還是不知道他想先逛哪個後逛哪個)。

結果,我們不知道狀態序列(我們不知道他逛的順序),但是知道觀測序列,且每個觀測一定是一個狀態生成的(禮物一定是他到地方才能買)。

因此這個例子就是在描述:一個不知道狀態序列(即馬爾科夫鏈),卻知道根據各個狀態生成的一個觀測隨機序列的過程,而這個過程就是隱馬爾可夫模型。

參考資料

條件隨機場CRF - 表示---柚子皮-

條件隨機場(CRF) - 1 - 簡介--血影雪夢