序列標註問題中將分類標籤引入RNN網路結構的嘗試

2021-07-22 10:52:46 字數 2727 閱讀 6003

/*

.*/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的模型一般不會將標籤資訊作為特徵。

那麼,如何將標籤之間的相互影響這個因素體現到神經網路結構下的序列標註問題裡呢?這個問題其實是值得探索的乙個方向。之前有類方法這麼做:rnn在每個時間步t對每個單詞輸出若干候選標籤(這麼講只是為了方便理解,真實在做的時候並沒有輸出候選標籤,而是把隱層節點的狀態作為crf的輸入),對於一句話來說,每個單詞輸出若干候選標籤,但是這時候還沒定下來到底哪個是最終要輸出的標籤,在這些候選標籤之上再套上一層crf模型來尋找全域性最優的標籤組合路徑(架構參考圖2)。

圖2. rnn+crf

模型(from: end-to-end sequence labeling via bi-directional lstm-cnns-crf)、

這等於在rnn的輸出結果後面再疊加上了一層後處理步驟,rnn考慮的是根據單詞和單詞所處上下文給出候選標籤,crf融合全域性標籤資訊得出最優解。我個人對於這種網路與非網路異質模型融合不是太感冒,當然這無關對錯,純屬個人技術口味問題。

那麼能否在純粹的神經網路架構下把標籤的相互影響因素納入到模型裡面來呢?其實拍下腦袋有個很直接的方法,就是把ner問題的dl網路結構稍微修正一下,調整成下面圖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時刻**輸出的標籤。可以看出,這個標籤使用策略和大多數encoder-decoder模型中的decoder部分策略是相似的。

我們用conll2003的命名實體識別和詞性標註任務對這個模型進行了訓練和測試,並與標準的lstm模型進行了對比。結果加了標籤作為輸入的模型和標準的lstm模型相比,在這兩個任務上都沒有顯著的差異,結果沒有明顯變好也沒有明顯變壞,差不太多。但是具體到每個類別,會發現有些類別相比標準lstm模型變好,有些變差,綜合下來基本沒差別。我想了下可能的原因,很大的可能是:在推理階段,因為t時刻使用的是t-1時刻**的標籤,如果t-1時刻標籤**的是對的,按理說應該對後續的標籤**有幫助作用,但是如果**是錯的,那麼也可能反而會對正確結果的判斷有干擾作用。

總而言之,這是一次失敗的嘗試,不過這是種比較容易想到的而且乍一想覺得很有道理的一種改進思路,但是實驗結果證明好像不太有效果,所以把這個思路和對應的結果分享出來,希望對有相似想法的同學進一步的工作有幫助作用。

序列標註問題中將分類標籤引入RNN網路結構的嘗試

author 張俊林,黃通文,沈磊,薛會萍 首先強調一點,本文主體內容就如標題所說做的一次嘗試,需要強調的是這個嘗試並沒什麼太大效果,如果僅僅關注效果的讀到這裡就可以結束了。如果希望看看是怎樣進行嘗試過程的可以繼續往下讀。序列標註問題是nlp領域中最常見的一大類問題,包含很多子研究領域,比如中文分詞...

分類問題中 one hot向量格式

one hot向量將類別變數轉換為機器學習演算法易於利用的一種形式的過程,這個向量的表示為一項屬性的特徵向量,也就是同一時間只有乙個啟用點 不為0 這個向量只有乙個特徵是不為0的,其他都是0,特別稀疏。舉個例子 乙個特徵 性別 性別有 男性 女性 這個特徵有兩個特徵值,也只有兩個特徵值,如果這個特徵...

分類問題中效能評價指標

分類問題中會出現多種演算法,那麼自己如何知道演算法效能的優劣呢,這就需要評價演算法效能好壞的指標,這裡介紹幾個常用的指標.1.準確率 評價分類問題的效能的指標一般是分類準確率,其定義是對於給定的資料,分類正確的樣本數佔總樣本數的比例。accuracy 正確的樣本數 所有樣本數。但是這一指標在不均衡的...