本篇論文是卡內基梅隆大學語言技術研究所2016年
- 摘要:
(1)引入一個端到端的系統,不再需要特征表示和數據預處理。
(2)該系統結合了LSTM,CNN和CRF
(3)該系統在兩個語料上進行了評估,其中在Penn Treebank WSJ corpus上進行了POS詞性標注任務,取得了97.55%的准確率,在CoNLL 2003 corpus上進行了NER命名實體識別,在F1上取得了91.21%。
- Introduction
(1)解決序列標注問題,例如NER和POS
(2)目前對於序列標注的研究:
傳統方法:基於線性統計模型,例如HMM和CRF
存在問題:1、嚴重依賴手工特征 2、需要引入外部相關資源 3、耗費高、普適性差
近來方法:基於非線性神經網絡模型,例如RNN-based Neural Network (RNN\LSTM\GRU) 、feed-forward neutral network、
存在問題:1、盡管使用一些分布式表示,例如詞嵌入作為輸入,但是僅僅是為了增加手工特征而不是替換它 2、如果完全依賴神經嵌入,則性能會大大降低
作者方法:1、為語言序列標注提出一個新穎的神經網絡結構2、在兩個經典的NLP基准數據集上進行了評估3、在這個端到端的系統上取得了很好的成果。
優點:1、真正的端到端,無需特定任務資源2、沒有特征工程表示3、除了在無標簽的語料上進行與訓練的詞嵌入沒有其他數據預處理。
- Neural Network Architecture
step1:CNN獲取Character-level 的詞表示(另一個word-level級別的表示用已經訓練好的glove-100d的詞向量)
采用CNN的優點:CNN是一個非常有效的方式去抽取詞的形態信息(例如詞的前綴和后綴)。圖中虛線表示字符嵌入在輸入到CNN的時候采用了dropout層。
step2:將第一步CNN獲得的字符級的嵌入和訓練好的word embedding的字級別的嵌入聯合輸入到BLSTM,以獲得過去和未來的上下文信息。
右邊這個LSTM圖更清晰,我們就一一來分解並說明一下LSTM內部結構:
圖1
上面這個圖1從左到右會有一個向量傳輸,左側進入稱為Ct-1,右側輸出Ct,第一部分乘號,也就是說Ct-1上一單元的輸入在這里要進行一次乘法,乘一個系數,表示要忘記多少信息,之后進行一次加法線性運算,最后進行輸出。
圖2
上面圖2就解釋了剛剛圖一所要乘的系數的來源,可以看出是將左側的上一級輸出ht-1和輸入xt進行連接,也就是一個拼接的過程,在通過一個線性單元,也就是和也就是sigmod函數之后生成一個0到1之間的數字,表達式如上圖所示,這算一個“忘記門”,1表示完全記住,0表示完全忘記,也就是個比例問題,Wf和bf作為待定系數需要進行訓練。
圖3
上面圖3是要計算圖一所要進行加法運算的值,公式如圖所示,tanh函數是把值映射到0到1之間。
圖4
上面圖4中圖3顯示的兩部分進行乘運算,到這里進行加法運算,決定本次輸出的Ct究竟采取多少本次輸入的信息,采取多少上次遺留的信息。如果在語言模型中就是前一次主語到當前是否應該被遺忘,而當前新的主語是否應該替代之前的主語。
圖5
上面圖5顯示該單元生成的ht一部分輸出到同層下一單元,另一部分輸出到下一層的單元上。這里看出來由圖3顯示的Ct在輸出時經過tanh函數后又經歷了一次“忘記門”Ot,進行相乘之后輸出ht。在語言模型中,這種影響是可以影響前后詞之間詞形的相關性的,例如前面輸入的是一個代詞或者名詞,后面跟隨的動詞會學到是否使用“單三”或者根據前面輸入的名詞的數量來決定動詞的單復數。
上面的圖都是采用的這篇文章中的,並且其中還涉及了一些變體,https://www.cnblogs.com/wangduo/p/6773601.html
RNN方向上的突破:LSTM以及LSTM變體(GRU等)、注意力、Grid LSTM、生成模型的 RNN。
step3:用CRF進行標注,聯合解碼輸出最佳序列標注
CRF進行詞性標注,考慮相鄰詞之間的詞性標注,並且對於一個序列CRF模型(只考慮兩個連續標簽之間的相互作用),通過采用Viterbi算法,可以有效地解決訓練和解碼問題。Y(z)表示z可能的標注序列。和
分別是權重矩陣和(y’和y的)對應偏差。
最后將BLSTM的輸出作為CRF的輸入,模型總結構具體如下:
圖中在BLSTM的輸入和輸出均采用了dropout層,並且實驗結果顯示使用dropout層能夠明顯提高模型的性能。
- Network Training
我們使用Theano庫, 單個模型的計算在GeForce GTX TITAN X GPU上運行。 使用本節中討論的設置,模型培訓需要大約12小時的POS標記和8小時的NER。
(1)Parameter Initialization
word embedding:glove 100-dim embeddings
Character Embeddings:30-dim
Weight Matrices and Bias Vectors:偏差除了在lstm的忘記門初始化為1,其余都初始化為0
(2)Optimization Algorithm
1)使用SGD(batchsize=10,momentum=0.9,η=0.01(POS-tagging)/η=0.015(NER),,
)
2)Early Stopping( The “best” parameters appear ataround 50 epochs)
3)Fine Tuning
4)Dropout Training(在輸入到CNN之前以及BLSTM的輸入和輸出都應用了dropout,且dropout rate=0.5)
5)Tuning Hyper-Parameters
由於時間限制,不可在整個超參空間進行隨機搜索,因此兩個任務共享很多參數
在表中除了(初始學習率不同,其他均相同)
- Experiments
1)Data Sets數據集:作者在兩個序列標注任務中評估了自己的模型:POS tagging and NER.
POS Tagging:WSJ(華爾街日報的PTB部分)
NER:CoNLL 2003
作者沒有對語料做任何預處理,使得本文的模型是真正的端到端的模型。
2)Main Results
本實驗中,下面表中的模型采用的都是GLOVE100-dim word embeddings以及Table1中相同的超參數。
從表中可以看出:BLSTM-CNN明顯比BLSTM結果好,表明了在序列標注任中,characterlevel representations是很重要的。
添加在BLSTM-CNN上添加CRF之后,比原來的模型表現更好,表明聯合解碼對結果能夠有很大的提高。
3)Comparison with Previous Work
4)Word Embeddings
從圖中可以看出,NER比POS-tagging更加依賴於與訓練詞向量;word2vec在NER上沒有像其他兩個詞嵌入表現的好可能的原因是詞表不匹配。
5)Effect of Dropout
在兩個任務上分別對比了未使用(No)和使用(Yes)了dropout的效果,結果表明在避免過擬合中dropou起到了很好的作用。
6)OOV Error Analysis
通過添加CRF進行聯合解碼,我們的模型在那些既沒有出現在訓練集中也沒有出現在詞嵌入表中的詞的數據集上表現出更好的效果。
- Related Work
- Conclusion
本文提出了基於LSTM-CNNs-CRF的模型來處理序列標注問題,雖然LSTM、CNN、CRF已經是很成熟的模型,但是作者合理的將三者組合,形成了不需要大量的特定任務知識、特征工程以及預處理語料的完全的端到端的模型。並在POS和NER兩個具體任務中驗證取得了同等條件下的當前最好結果。
未來方向:
1)探索多任務學習(例如可以設計一個聯合訓練POS和NER標簽的神經網絡模型)
2)將該模型應用於其他領域(因為是端到端,所以也不會需要特定領域的知識)
參考(代碼地址):
https://github.com/jayavardhanr/End-to-end-Sequence-Labeling-via-Bi-directional-LSTM-CNNs-CRF-Tutorial
https://github.com/scofield7419/sequence-labeling-BiLSTM-CRF
glove 100-dimensional embeddings:http://nlp.stanford.edu/projects/glove/
Senna 50-dimensional embeddings:http://ronan.collobert.com/senna/
Google's Word2Vec 300-dimensional embeddings:https://code.google.com/archive/p/word2vec/