注:本文翻譯自 CreateMoMo 個(gè)人博客穗熬,暫未取得作者授權(quán)柄瑰,僅做學(xué)習(xí)交流使用弧呐,如若侵權(quán),立即刪除冒签。點(diǎn)擊底部閱讀原文可直達(dá)原博客。
目錄
該系列文章將會(huì)涉及以下幾個(gè)方面:
Idea 概述 - 在命名實(shí)體識(shí)別任務(wù)中钟病,為什么要在 BiLSTM模型上添加CRF層萧恕?
案例解讀 - 通過一個(gè)簡(jiǎn)單的實(shí)現(xiàn)來(lái)揭示:CRF 層是怎樣工作的?
Chainer 實(shí)現(xiàn) BiLSTM+CRF 模型(翻譯者會(huì)努力用 TensorFlow or PyTorch 來(lái)實(shí)現(xiàn)一番3濉)
誰(shuí)適合閱讀本系列文章票唆?
本系列文章適合 NLP 或其他 AI 相關(guān)領(lǐng)域的初學(xué)者或者在校學(xué)生,希望你們?cè)谖业奈恼轮心苡兴斋@屹徘。期待有建設(shè)性的意見和建議走趋!
前置知識(shí)
如果你不知道神經(jīng)網(wǎng)絡(luò)、CRF 或者其他相關(guān)的知識(shí)缘回,別擔(dān)心吆视,我會(huì)盡量從直覺上來(lái)幫助你來(lái)理解它們。唯一需要你知道的是命名實(shí)體識(shí)別的概念酥宴!
1 簡(jiǎn)介
對(duì)于命名實(shí)體識(shí)別任務(wù)來(lái)說(shuō)啦吧,基于神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的方法越來(lái)越流行了。比如在這篇Paper中拙寡,作者就提出了 BiLSTM-CRF 模型用于命名實(shí)體識(shí)別任務(wù)授滓,文中使用了 word level 和 character level 的 embedding。我將使用這篇文章中的模型來(lái)解釋模型中 CRF層 是如何工作的 :) 肆糕。
如果你還不了解有關(guān) BiLSTM 和 CRF 的細(xì)節(jié)的話般堆,只要記住它們不過是命名實(shí)體識(shí)別模型中兩種不同的 Layer 罷了!
1.1 開始之前
首先诚啃,假設(shè)我們的數(shù)據(jù)集中有兩種不同的實(shí)體類型:Person(人物) 和 Organization(組織)淮摔。那么,實(shí)際上始赎,我們便有了五種實(shí)體的類別 Label :
- B-Person
- I-Person
- B-Organization
- I-Organization
- O
這樣的話和橙,假如我們使用 代表包含五個(gè)單詞的句子仔燕,
。那么魔招,在句子
中晰搀,
是一個(gè) Person 實(shí)體,
是一個(gè) Organization 實(shí)體办斑,其他的單詞我們用
表示外恕。
1.2 BiLSTM-CRF model
在這里我會(huì)簡(jiǎn)要介紹一下 BiLSTM-CRF 模型。
如下圖所示:
首先乡翅,在句子
中的每一個(gè)詞
都對(duì)應(yīng)著一個(gè)向量表示鳞疲,這個(gè)向量由字符級(jí)別的詞嵌入(character embedding)和單詞級(jí)別的詞嵌入(word embedding)共同組成(concat 操作?)峦朗。其中建丧,字符級(jí)別的詞嵌入(character embedding)由隨機(jī)初始化得到,而單詞級(jí)別的詞嵌入(word embedding)一般來(lái)自于預(yù)先訓(xùn)練好的 word embedding 文件(word2vec 或者 GloVe)波势。所有的 embeddings 在訓(xùn)練過程中將會(huì)被 fine-tuned翎朱。
其次,BiLSTM-CRF 模型的輸入便是這些詞向量尺铣,模型的輸出是對(duì)句子
中單詞對(duì)應(yīng)的標(biāo)簽類別的預(yù)測(cè)拴曲。盡管了解 BiLSTM 層的細(xì)節(jié)對(duì)于我們來(lái)說(shuō)并不必要,但是為了更加容易的理解 CRF 層凛忿,還是有必要知道一下 BiLSTM 層輸出結(jié)果表示什么意思澈灼。
如上所示, BiLSTM 層的輸出是每個(gè)類別的預(yù)測(cè)分?jǐn)?shù)值店溢。譬如叁熔,對(duì)于詞 來(lái)說(shuō),BiLSTM 層的輸出為:1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) 和 0.05 (O)床牧。這些分?jǐn)?shù)值將會(huì)作為 CRF 層的輸入荣回。
之后,在所有由 BiLSTM 層預(yù)測(cè)的分?jǐn)?shù)值輸入到 CRF 層之后戈咳,CRF 便會(huì)選擇具有最高預(yù)測(cè)分?jǐn)?shù)值的類別標(biāo)記序列作為最佳的答案心软。
1.3 如果沒有 CRF 層會(huì)怎么樣?
你可能已經(jīng)注意到了著蛙,假使沒有 CRF 層删铃,我們一樣可以只訓(xùn)練 LSTM 來(lái)進(jìn)行命名實(shí)體識(shí)別,流程如下:
因?yàn)?BiLSTM 層輸出的正是每個(gè)單詞的在各個(gè)類標(biāo)上的分?jǐn)?shù)值踏堡,我們完全可以選擇具有最高分?jǐn)?shù)的類標(biāo)作為單詞的命名實(shí)體類別標(biāo)注猎唁。
譬如,對(duì)于 來(lái)說(shuō)顷蟆, “B-Person” 具有最高的得分(1.5)胖秒,因而我們可以選擇 “B-Person”作為最佳的預(yù)測(cè)缎患。同理,對(duì)于
阎肝,我們可以選擇 “I-Person”;對(duì)于
肮街,我們可以選擇 “O”风题;對(duì)于
,我們可以選擇 “B-Org”嫉父;對(duì)于
沛硅,我們可以選擇 “O”。
在這個(gè)例子中绕辖,盡管我們可以得到句子中各個(gè)單詞的正確類別標(biāo)記摇肌。但是,有些情況下并不總是如此仪际,看一看這個(gè)例子:
很顯然围小,沿用上面的方法,我們得到的輸出(“I-Organization I-Person” 和 “B-Organization I-Person” )便顯得非常的不合理了树碱,I-Organization 之后竟然會(huì)出現(xiàn) I-Person 的標(biāo)注肯适!
1.4 CRF 層能夠從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)到標(biāo)注序列的一些“約束”
The CRF layer could add some constrains to the final predicted labels to ensure they are valid. These constrains can be learned by the CRF layer automatically from the training dataset during the training process.
CRF 層能夠給最終的預(yù)測(cè) Labels 添加一些約束來(lái)確保其合理有效。在訓(xùn)練過程中成榜,這些約束會(huì)被 CRF 層自動(dòng)學(xué)習(xí)到框舔。
這些約束可以是:
句子中首個(gè)單詞的 Label 應(yīng)該是 “B-“ or “O”, 而不會(huì)是 “I-“
“B-label1 I-label2 I-label3 I-…”,在這個(gè)模式中, label1, label2, label3 … 應(yīng)該是同一實(shí)體的 Label。譬如赎婚,“B-Person I-Person” 是合理有效的刘绣,但是 “B-Person I-Organization” 便是無(wú)效的。
“O I-label” 是無(wú)效的挣输。命名實(shí)體的第一個(gè)起始標(biāo)注應(yīng)該是 “B-“ 開頭的纬凤,而不是 “I-“。換一句話說(shuō)歧焦,合理有效的模式應(yīng)該是 “O B-label”
有了這些必要的約束移斩,出現(xiàn)不合理標(biāo)注序列的數(shù)量將會(huì)顯著下降!
后續(xù)
接下來(lái)绢馍,我將通過分析 CRF 的 Loss Function 來(lái)解釋 CRF 層如何從訓(xùn)練數(shù)據(jù)集中學(xué)習(xí)到上述約束向瓷,以及為什么 CRF 能夠?qū)W習(xí)到它們。
別走開舰涌,后續(xù)更加精彩猖任!
參考文獻(xiàn)
[1] CRF_Layer_on_the_Top_of_BiLSTM_1
[2] Lample, G., Ballesteros, M., Subramanian, S., Kawakami, K. and Dyer, C., 2016. Neural architectures for named entity recognition. arXiv preprint arXiv:1603.01360.