序列标注问题中将分类标签引入RNN网络结构的尝试
?????????? ? ? ? ? ? ?? ? ? ? ? ? ? ? author: 張俊林,黃通文,沈磊,薛會萍
首先強調一點,本文主體內容就如標題所說做的一次嘗試,需要強調的是這個嘗試并沒什么太大效果,如果僅僅關注效果的讀到這里就可以結束了。如果希望看看是怎樣進行嘗試過程的可以繼續往下讀。
序列標注問題是NLP領域中最常見的一大類問題,包含很多子研究領域,比如中文分詞、詞性標注、NER命名實體識別、語義角色標注等等,甚至Chatbot的任務類對話類型也可以轉換成序列標注問題。目前利用神經網絡模型來解決序列標注問題的技術方案也已經比較成熟,一般是用RNN來做,典型的結構圖如圖1所示:
????????????????????? ? 圖1.RNN解決序列標注問題
具體思路可以參考之前的文章《使用RNN解決NLP中序列標注問題的通用優化思路》,這里不贅述細節。目前使用RNN做序列標注問題,總體而言,跟傳統方法比效果相當,并沒有表現出特殊明顯的優勢,我覺得可能跟大多數序列標注問題所需要參考的上下文比較短,所以神經網絡模型并不太能發揮出其優勢有關。
如圖1所示的解決方案中,很容易看出有個值得改進的點。RNN典型網絡結構做序列標注任務的問題是什么呢?很明顯RNN結構做序列標注問題,不論你套上多少層RNN或者LSTM,其在預測某個單詞的標簽時,只是考慮了單詞本身以及其所在上下文里包含單詞的信息。難道這還不夠嗎?其實還不夠。有一類可以利用的信息在這個結構里沒有考慮進來,就是單詞的分類標簽之間的相互影響。比如拿NER問題來說,假設PersonName_Begin標簽代表一個字是人名中的起始字,PersonName_Inside代表一個字是人名中的中間字,PersonName_End代表一個字是人名中的終止字。那么很明顯如果出現一個PersonName_Begin標簽,后面跟PersonName_Inside(三字名的話)或者PersonName_End(兩字名的話)的概率應該遠大于其它類型標簽。再比如拿詞性標注來說,假設某個單詞被標注為形容詞標簽ADJ,那么后面跟形容詞ADJ或者名詞NN的概率要比其它類別標簽的概率大得多。這其實體現了標簽之間的相互影響,但是基于RNN的模型一般不會將標簽信息作為特征。
?????????? 圖2. RNN+CRF模型(From: End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF)
、
這等于在RNN的輸出結果后面再疊加上了一層后處理步驟,RNN考慮的是根據單詞和單詞所處上下文給出候選標簽,CRF融合全局標簽信息得出最優解。我個人對于這種網絡與非網絡異質模型融合不是太感冒,當然這無關對錯,純屬個人技術口味問題。
那么能否在純粹的神經網絡架構下把標簽的相互影響因素納入到模型里面來呢?其實拍下腦袋有個很直接的方法,就是把NER問題的DL網絡結構稍微修正一下,調整成下面圖3的結構:
???
??????????????????????????????? ?圖3.標簽作為輸入特征的RNN模型
和圖1的標準RNN解決序列標注問題的網絡結構相比,RNN的每個時間步t的輸入由原先的單獨的t時刻輸入Xt,現在改造成每一時刻輸入有兩個:一個是t時刻的輸入Xt,另外一個是t-1時刻輸出的標簽Y(t-1)。這樣,就將前一時刻的標簽輸出作為當前時刻的輸入,也就是將標簽作為特征引入到神經網絡模型中來。引入這個改進后,貌似好像只是把前一時刻的標簽對當前時刻的標簽影響建立到模型里,但是其實不僅僅如此,在t時刻的RNN網絡隱層對前面時刻1到時刻t-1的標簽都建立到模型里去了,只不過是體現在隱層狀態上,也就是說這個結構應該可以對標簽之間的遠程影響也能建立到看上去很簡單的模型中去。
這個新的網絡結構還是比較簡單直觀的,在序列標注問題中,從道理上講也是有一定合理性的。如何訓練整個模型呢?在訓練階段,因為訓練數據的每個輸入單詞都是帶標準答案標簽的,所以在訓練時刻,t時刻的輸入標簽可以直接用t-1時刻的輸出標簽。這樣就能夠訓練神經網絡模型,而訓練出的神經網絡模型是融合了單詞上下文信息以及標簽序列之間的相互影響因素的。在推理階段,t時刻的輸入標簽則直接用t-1時刻預測輸出的標簽??梢钥闯?#xff0c;這個標簽使用策略和大多數Encoder-Decoder模型中的Decoder部分策略是相似的。
我們用CONLL2003的命名實體識別和詞性標注任務對這個模型進行了訓練和測試,并與標準的LSTM模型進行了對比。結果加了標簽作為輸入的模型和標準的LSTM模型相比,在這兩個任務上都沒有顯著的差異,結果沒有明顯變好也沒有明顯變壞,差不太多。但是具體到每個類別,會發現有些類別相比標準LSTM模型變好,有些變差,綜合下來基本沒差別。我想了下可能的原因,很大的可能是:在推理階段,因為t時刻使用的是t-1時刻預測的標簽,如果t-1時刻標簽預測的是對的,按理說應該對后續的標簽預測有幫助作用,但是如果預測是錯的,那么也可能反而會對正確結果的判斷有干擾作用。
? 總而言之,這是一次失敗的嘗試,不過這是種比較容易想到的而且乍一想覺得很有道理的一種改進思路,但是實驗結果證明好像不太有效果,所以把這個思路和對應的結果分享出來,希望對有相似想法的同學進一步的工作有幫助作用。
掃一掃關注微信號:“布洛卡區” ,深度學習在自然語言處理等智能應用的技術研討與科普公眾號。
總結
以上是生活随笔為你收集整理的序列标注问题中将分类标签引入RNN网络结构的尝试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习在搜索和推荐领域的应用
- 下一篇: 微博环境下利用综合策略构建推荐引擎