最近,使用BiLstm-CRF模型,但是對CRF層的算法實現不是很理解,在網上找了很多資料也沒解答我心中的疑問,後邊看到了英文版的解析,很清晰,因此,將其進行翻譯。
原英文鏈接:https://www.cnblogs.com/createMoMo/p/7529885.html
概要
此係列博文將會包含以下內容:
- 引言-命名實體識別任務中,Bilstm-CRF模型中CRF層的基本概念和思想;
- 示例-解釋CRF層是如何一步一步工作的小例子;
- 實現-CRF層的鏈式實現算法。
文章讀者
讀者目標:學習NLP的新手或者AI相關的人員,我希望您能從該博文中學到您想學的知識。
先驗知識
在閱讀本博文之前,您唯一需要了解的就是什麼是命名實體識別。如果您不瞭解神經網絡、CRF或者其他相關概念,請不要擔心,我會儘可能地將這些講的通俗易懂。
1.引言
對於命名實體識別來講,目前比較流行的方法是基於神經網絡,例如,論文[1]提出了基於BiLSTM-CRF的命名實體識別模型,該模型採用word embedding和character embedding(在英文中,word embedding對應於單詞嵌入式表達,character embedding對應於字母嵌入式表達;在中文中,word embedding對應於詞嵌入式表達,character embedding對應於字嵌入式表達;接下來的示例中我們都假設是英文的場景),我將用該模型作爲示例來解釋CRF層的工作原理。
1.1 參數定義
假設,我們的數據集中有兩種實體類型:人名和機構名,因此,在我們的數據集中有5種實體標籤:
- B-Person
- I- Person
- B-Organization
- I-Organization
- O
假設是一個句子,該句子由5個單詞組成:,而且在句子中,組成一個人名,爲一個機構名,其他單詞標籤都是"O"。
1.2 BiLSTM-CRF模型
接下來,簡明介紹一下該模型。
示意圖如下所示:
- 首先,句子中的每個單詞表達成一個向量,該向量包含了上述的word embedding和character embedding,其中character embedding隨機初始化,word embedding通常採用預訓練模型初始化。所有的embeddings 將在訓練過程中進行微調。
- 其次,BiLSTM-CRF模型的的輸入是上述的embeddings,輸出是該句子中每個單詞的預測標籤。
從上圖可以看出,BiLSTM層的輸出是每個標籤的得分,如單詞,BiLSTM的輸出爲1.5(B-Person),0.9(I-Person),0.1(B-Organization), 0.08 (I-Organization) and 0.05 (O),這些得分就是CRF層的輸入。
將BiLSTM層預測的得分喂進CRF層,具有最高得分的標籤序列將是模型預測的最好結果。
如果沒有CRF層將如何
根據上文,能夠發現,如果沒有CRF層,即我們用下圖所示訓練BiLSTM命名實體識別模型:
因爲BiLSTM針對每個單詞的輸出是標籤得分,對於每個單詞,我們可以選擇最高得分的標籤作爲預測結果。
例如,對於,“B-Person"得分最高(1.5),因此我們可以選擇“B-Person”最爲其預測標籤;同樣的,的標籤爲"I-Person”,的爲"O", 的標籤爲"B-Organization",的標籤爲"O"。
按照上述方法,對於雖然我們得到了正確的標籤,但是大多數情況下是不能獲得正確標籤的,例如下圖的例子:
顯然,輸出標籤“I-Organization I-Person” 和 “B-Organization I-Person”是不對的。
1.4 CRF能夠從訓練數據中學習到約束條件
CRF層可以對最終的約束標籤添加一些約束條件,從而保證預測標籤的有效性。而這些約束條件是CRF層自動從訓練數據中學到。
約束可能是:
- 一句話中第一個單詞的標籤應該是“B-“ or “O”,而不能是"I-";
- “B-label1 I-label2 I-label3 I-…”中,label1, label2, label3 …應該是相同的命名實體標籤。如“B-Person I-Person”是有效的,而“B-Person I-Organization” 是無效的;
- “O I-label” 是無效的。一個命名實體的第一個標籤應該以 “B-“ 開頭,而不能以“I-“開頭,換句話說, 應該是“O B-label”這種模式;
- …
有了這些約束條件,無效的預測標籤序列將急劇減少。
下篇博客
在下篇博客中,將會分析CRF的損失函數,從而解釋CRF層是如何從訓練數據中學習到上述約束條件的。
參考文獻
[1] Lample, G., Ballesteros, M., Subramanian, S., Kawakami, K. and Dyer, C., 2016. Neural architectures for named entity recognition. arXiv preprint arXiv:1603.01360.
https://arxiv.org/abs/1603.01360