論文地址:https://arxiv.org/abs/1911.04474
Abstract
BiLSTMs結構在NLP的任務中廣泛應用,最近,全連接模型Transformer大火,它的 self-attention 機制和強大的並行計算能力使其在眾多模型中脫穎而出,但是,原始版本的 Transformer 在命名體識別(NER)中表現卻不像在其他領域中那么好,本文將介紹一種叫 TENER 的模型,是在 Transformer 的基礎上為 NER 任務改進的,既可以應用在 word-level,也可以應用在 character-level。通過使用位置感知的編碼方式和被削減的attention,我們讓 Transformer 在 NER 中達到了在其他任務中那樣好的效果。
Introduction
命名體識別是指,在一個句子中找到一個命名體的開始與結束位置,並且標注其特性,比如人名、地名、機構名等。NER 在問答、關系抽取和共指消解(coreference resolution)中都發揮了重要的作用。
NER 通常被視為序列標注任務,其網絡結構一般包含三層:word-embedding層、編碼層和解碼層。NER 各種模型的不同之處主要在這些網絡層中。
循環神經網絡(RNNs)高度契合語言特性,所以在NLP的任務中使用廣泛,其中,BiLSTM因為其對上下文的強大觀察能力在NER中廣泛使用。
最近,Transformer 模型也在NLP 任務中大放異彩,機器翻譯、預訓練模型中都可以看到它。Transformer 的編碼器實現了一個大范圍基於自注意力機制的全連接神經網絡,這恰好是RNNs的局限,並且在並行計算上也遠超過RNNs。然而,在NER任務中,Transformer 的表現並不好,本文將會探討為什么有這樣的結果,並提出一種改進方法。
- 原始版本的 Transformer 中,由於自注意力機制的影響,模型是不會計算位置信息的,所以原始論文為了加入位置距離信息,在word-embedding時加入了基於余弦函數的位置編碼,但是,對於NER任務來說,距離信息和相對位置信息同樣重要。比如,‘in’ 后面的詞通常是地點或時間,‘Inc.’前面通常是機構名,而機構名也常常是一組詞,所以距離也很重要。為了同時保留對距離和相對位置的感知能力,我們舍棄原本的絕對位置編碼而采用相對位置編碼,使用參數更少,在NER中效果更好。
- 原始的 Transformer 的注意力矩陣非常大,我們將其換成稀疏矩陣。因為在一個句子中,給出少量的單詞就足以判斷命名體,數值規模大的注意力矩陣反而會引入噪聲,所以,我們在這里縮小注意力的參數規模。
- 除了用 Transformer 訓練詞級別的文本,還用它來做字母級別的編碼任務。在以前的工作中,我們已經知道字符編碼對於 NER 捕捉字符特征和解決超出字典問題(OOV)不可或缺,以前常用CNN,但我們認為CNN不夠好,因為它考慮的上下文是有限的,盡管我們可以通過改變卷積核的大小來處理,但是它依然無法解決不連續的特征,比如’un…ily’。基於 Transformer 的編碼器不僅可以利用GPU加速運算,而且能夠處理相鄰連續的字符甚至非相鄰字符,因此我在本文中的 character encoder 也是用Transformer encoder 實現的。
總的來說,為了提高 Transformer 在NER 中的表現,我們使用了相對位置的位置編碼,減少了注意力參數,將其變得相對稀疏。經過這些處理之后,模型表現甚至好過基於 BiLSTM 的模型,在六個NER數據集中,改模型在不考慮預訓練的模型中達到了前所未有的效果。
Related Work
Neural Architecture for NER
BiLSTM-CRF常用在序列標注問題中,盡管其取得了巨大成功,每個單詞還是要按順序算,為了利用上 GPU 並行計算的能力,CNN也常常使用,為了解決CNN感知范圍不足的問題,該領域使用了ID-CNN。BiLSTM和CNN都廣泛應用在字符編碼中。
NER中大部分也使用了與訓練的word-embedding,使用ELMO等 contextual word embedding 后,模型有了更大程度的提高。
Transformer
Transformer 是基於self-attention的sequence模型,由若干個編碼器和解碼器組成,每個編碼器為全連接的self-attention 層接 Add & Layer Normalization,解碼器與編碼器基本相同,前面還有一個對已經得到的輸出序列作 masked attention。相關內容可以看我在這里寫的筆記。
Proposed Model
本文中,我們使用Transformer的編碼器來應對復雜的NER任務,其結構如下圖所示。
Embedding Layer
為了解決數據稀疏和OOV,我們需要一個 character encoder,以前常用的是CNN和BiLSTM,現在我們選擇使用Transformer的encoder結構來代替,這樣既可以有效利用GPU,又能考慮上下文,甚至非連續的字符。
最終的word embedding 是將字符編碼和預訓練的詞嵌入拼接在一起的。
Encoding Layer with Adapted Transformer
下面提出對編碼層做修改。
Directional-and Distance-Aware Attention
相比於Transformer,BiLSTM可以輕松知道兩個詞的左右順序關系,但是Transformer 卻不容易判斷。下面我們證明 sinusoidal position embedding 的兩條性質,從而說明這種編碼方式缺乏對方向的認識。
-
對於偏置\(k\)和位置\(t\),\(PE_{t+k}^TPE_t\)只取決於\(k\),這說明兩個位置向量的點積可以反映單詞間距離。
證明:
\[PE_t = \begin{bmatrix} \sin (c_0 t)\\ \cos (c_0 t)\\ \vdots\\ \sin (c_{\frac{d}{2} - 1}t)\\ \cos (d_{\frac{d}{2} - 1}t) \end{bmatrix} \]其中\(d\)是位置編碼的維度,\(c_i = \frac{1}{1000^{\frac{2i}{d}}}\)。因此
\[PE_t^TPE_{t+k}^T = \sum_{j=0}^{\frac{d}{2} - 1} [\sin(c_j t) \sin(c_j (t +k))+ \cos(c_j t) \cos (c_j (t + k))]\\ = \sum_{j=0}^{\frac{d}{2} - 1} \cos(c_j (t - (t+k)))\\ = \sum_{j=0}^{\frac{d}{2} - 1} \cos (c_j k) \] -
對於偏置\(k\)和位置\(t\),\(PE_t^T PE_{t-k}=PE_t^T PE_{t+k}\),這說明原本的位置編碼是不能分別方向的。
證明:
令\(j=t-k\),由性質1,我們有
\[PE_t^T PE_{t+k} = PE_j^T P E _{j+k}\\= PE_{t-k}^T PE_t \]
然而,當引入\(Q,K\)矩陣之后原本的距離感知也被削弱了,因為這時位置編碼變成了\(PE_t^T W_q^TW_kPE_{t+k}=PE_t^T W PE_{t+k}\),這使得他們的距離不像原來那么明確。
因此,為了提高對距離和方向的認知能力,我們用下面的公式給注意力打分。
式中\(u,v\)為可學習的參數。通過計算我們有
通過觀察可以看出,\(R_t\)與\(R_{-t}\)是不一樣的。這樣我們就能夠表現距離和相對位置關系了。
Un-scaled Dot-Product Attention
在原始的模型中,\(K\)和\(Q\)的點積有一個\(\sqrt{d_k}\)作為分母,在NER任務中我們發現沒有這個系數效果會更好。猜測原因是不加這部分會讓注意力矩陣更加銳化,對於NER來說減小了噪聲干擾,提高了准確率。
CRF Layer
為了充分利用不同 tag 間的依賴關系,我們的模型中使用了條件隨機場(CRF)。給定一個序列\(S=[s_1,s_2,\cdots s_T]\),對應的標簽序列是\(y=[y_1,y_2,\cdots,y_T]\),\(Y(s)\)表示所有合法的標簽序列。則序列為\(y\)的概率可以這樣計算
其中\(f(y_{t-1}, y_t,s)\)計算轉移概率。目標是最大化\(P(y|s)\),解碼時可以使用 Viterbi Algorithm。