文獻閱讀筆記:Deep contextualized word representations(ELMo)

0. 背景

機構:Allen 人工智能研究所 & 華盛頓大學
作者:Paul G
發佈地方:arxiv、NAACL 2018
面向任務:word representation
論文地址:https://arxiv.org/abs/1802.05365
論文代碼:https://github.com/allenai/bilm-tf。順便安利該研究所的https://github.com/allenai/allennlp

0-1. 摘要

本文介紹一類新的深層上下文的詞表徵(deep contextualized word representation)模型ELMo。該模型能夠對(1)詞彙的複雜特徵(如句法和語法)(2)及其這些複雜特徵在不同的語境中的不同用法(即對一詞多義)進行建模。本文的詞向量本質上是基於大規模語料訓練後雙向語言模型(biLM)內部隱狀態特徵的組合。實驗表明,本文所提出的詞向量模型能夠很輕鬆地與現有主流模型相結合,並且在6大NLP任務(包括問答、文本蘊含和情感分析)上有巨大提升,並刷新記錄。同時,通過實驗和分析發現預訓練網絡的深層內部結構是重點,這能夠讓下游模型去融合半監督訓練出的不同類型特徵。

1. 介紹

預訓練詞表徵(Mikolov et al., 2013; Pennington et al., 2014)是很多神經語言理解模型的關鍵部分。然而,學習高質量詞表徵非常有難度。它們應該能夠做到以下2點:
(1)完美建模單詞使用方面的複雜特徵(如句法和語義)(2)對單詞在不同語言環境下的使用變化(即一詞多義)建模。本文介紹了一種新型深度語境化詞表徵(deep contextualized word representation),可以直接應對上述2個困難。 且這種表徵能夠輕鬆整合進現有模型,極大地提升高難度的語言理解任務的當前最優性能。

本文提出的表徵與傳統的詞嵌入不同,每個 token 的表徵是整個輸入句子的函數。本文的向量來自於雙向 LSTM ,該 LSTM 是使用成對語言模型(LM)目標在大型文本語料庫上訓練得到的。因此,該表徵叫作 ELMo(Embeddings from Language Models)表徵。與之前學習語境化詞向量的方法(Peters et al., 2017; McCann et al., 2017)不同,ELMo 表徵是深層的,即它們是 biLM 中所有內部層的函數。具體來說,對於每個任務,學習堆疊在每個輸入單詞上向量線性組合,其效果顯著優於僅使用 LSTM 頂層的表徵。

用這種方式組合內部狀態可以獲取豐富的詞表徵。使用內在評價進行評估,結果顯示更高級別的LSTM狀態可以到捕捉詞義的語境依賴(如它們不經修改就可以執行監督式詞義消歧任務,且表現良好),而較低級別的狀態建模句法結構(如它們可用於詞性標註任務)。同時揭示所有這些信號是非常有益的,可以幫助學得的模型選擇對每個任務最有幫助的半監督信號。

大量實驗證明 ELMo 表徵在實踐中效果優異。本文首先展示可在6個不同且有難度的語言理解問題上(包括文本蘊涵、問答和情感分析等),將 ELMo 表徵輕鬆添加至現有模型。添加 ELMo 表徵可以顯著提高每個用例中的當前最優性能,包括將相對誤差降低 20%。 對於可以直接對比的任務,ELMo 優於 CoVe(McCann et al., 2017),後者使用神經機器翻譯編碼器計算語境化表徵。最後,對 ELMo 和 CoVe 進行分析,分析結果顯示深層表徵優於僅從 LSTM 頂層獲取的表徵。

2. 相關工作

基於大規模無標註語料的詞向量預訓練(Turian et al.,2010; Mikolov et al., 2013; Pennington et al.,2014)已經在實踐中證明能夠捕獲詞的句法和語義信息,此後,預訓練的詞向量便作爲各項NLP任務(包括問答、文本蘊含和語義角色標註)中一項標配。但是,現有這些方法學習到的詞向量對於每個詞僅僅有一個上下文語境表徵向量。

先賢們也提出了一些方法以克服傳統詞向量的不足,比如Wieting et al., 2016; Bojanowski et al.,2017提出的通過subword信息來豐富詞向量的表徵,再比如Neelakantan et al., 2014 提出分開學習每個單詞意義的向量。本文的方法通過使用字符卷積(character convolutions)也能夠達到使用subword的效果,同時本文能夠無縫地在下游任務中使用多義信息,而無需在訓練過程中確切地指明預定義的含義類別,即在訓練過程中不用指明詞到底是哪個含義。

其他近期的工作如context2vec (Melamud et al., 2016)使用一個雙向的LSTM圍繞一箇中心詞進行上下文的語境編碼。其他捕獲上下文的embedding方法有在中心詞的基礎上,融入有監督的機器翻譯系統(CoVe;McCann et al., 2017) 或者無監督的語言模型(Peters et al., 2017)。根據已經工作,已經可以知道biRNNs中不同網絡層編碼了不同類型信息。比如在深度LSTM網絡中的低層引入多任務的句法監督(eg.詞性標註)任務能夠整體上提升高級任務的性能,如依存句法分析(Hashimoto et al., 2017)和CCG super tagging (Søgaard and Goldberg, 2016)。Belinkov et al. (2017)的工作表明在一個基於RNN的encoder-decoder機器翻譯系統中,如果對雙層LSTM encoder的第1層和第2層分別進行文本表徵學習後,發現第1層的文本表徵學習更有助於詞性標註任務性能指標的提升。(Melamud et al.,
2016)的工作表明LSTM網絡頂層的詞上下文編碼能夠學習到詞的語義表徵。本文的實驗結果表明,改進語義模型目標的ELMo也能發揮類似的作用,且對於混合不同類型半監督的下游任務是很有幫助的。

3. ELMo:來自語言模型的嵌入

與廣泛使用的詞嵌入(Pennington et al., 2014)不同,ELMo 詞表徵是整個輸入句子的函數。這些表徵是在雙層biLMs上使用字符卷積計算出來的(詳見3-1節),以內部網絡狀態的線性函數表現出來(詳見3-2節)。這種設定使得可以進行半監督學習,在學習中,biLM 進行大規模的預訓練(詳見3-4節)且能夠輕易整合進大量現有神經 NLP 架構(詳見3-3節)。

3-1. 雙向語言模型

ELMo(Embeddings from Language Models)模型,本質是從語言模型來的。對於一個給定的句子(t1,t2,...tN)(t_1,t_2,...t_N),構建的語言模型就是通過一個詞彙的上文去,預測一個詞tkt_k
p(t1,t2,,tN)=k=1Np(tkt1,t2,,tk1) p\left(t_{1}, t_{2}, \ldots, t_{N}\right)=\prod_{k=1}^{N} p\left(t_{k} | t_{1}, t_{2}, \ldots, t_{k-1}\right)

近期流行的神經語言模型(J´ ozefowicz et al., 2016; Melis et al., 2017; Merity et al., 2017)一般是通過token embedding或者在字符級上使用CNN獲得帶有上下文信息的token表徵xkLM\mathbf{x}_{k}^{L M}
,然後通過一個多層(比如L層)的前向LSTM網絡。在LSTM的每一層都輸出基於上下文的一個向量表達hk,jLM\overrightarrow{\mathbf{h}}_{k, j}^{L M},其中j代表層數,k表示位置。其最後的一層的輸出hk,LLM\overrightarrow{\mathbf{h}}_{k, L}^{L M},經過一層softmax歸一,就可以來預測詞tk+1t_{k+1}

現在都流行雙向語言模型,本質就是把句子再逆序輸入一遍p(t1,t2,,tN)=k=1Np(tktk+1,tk+2,,tN)p\left(t_{1}, t_{2}, \ldots, t_{N}\right)=\prod_{k=1}^{N} p\left(t_{k} | t_{k+1}, t_{k+2}, \ldots, t_{N}\right),再把前向逆向的結果結合起來,就是最終的雙向語言模型,而本文最終目的是使目標函數最大化:
k=1N(logp(tkt1,,tk1;Θx,ΘLSTM,Θs)+logp(tktk+1,,tN;Θx,ΘLSTM,Θs)) \begin{array}{l}{\sum_{k=1}^{N}\left(\log p\left(t_{k} | t_{1}, \ldots, t_{k-1} ; \Theta_{x}, \vec{\Theta}_{L S T M}, \Theta_{s}\right)\right.} \\ {\left.\quad+\log p\left(t_{k} | t_{k+1}, \ldots, t_{N} ; \Theta_{x}, \overleftarrow \Theta_{L S T M}, \Theta_{s}\right)\right)}\end{array}
其中,Θx\Theta_x是token 表徵,是一開始輸入的詞向量,Θs\Theta_s就是softmax層參數,兩個方向的LSTM的參數不是共享的。總的來說,雙向語言模型的結構圖與Peters et al. (2017),即TagLM中的方法大致是相同的,所不同的是TagLM中不同方向共享部分參數,而不是完全參數獨立。

3-2. ELMo

ELMo 是 biLM 中間層表徵的任務特定組合。對於每個 token tkt_k,第L-layer biLM 計算一組表徵(包含 2L + 1 個表徵):
Rk={xkLM,hk,jLM,hk,jLMj=1,,L}={hk,jLMj=0,,L} \begin{aligned} R_{k} &=\left\{\mathbf{x}_{k}^{L M}, \overrightarrow{\mathbf{h}}_{k, j}^{L M}, \overleftarrow {\mathbf{h}}_{k, j}^{L M} | j=1, \ldots, L\right\} \\ &=\left\{\mathbf{h}_{k, j}^{L M} | j=0, \ldots, L\right\} \end{aligned}
其中hk,0LM\mathbf{h}_{k, 0}^{L M}是token層;對於每個 biLSTM 層,有hk,jLM=[hk,jLM;hk,jLM]\mathbf{h}_{k, j}^{L M}=\left[\overrightarrow{\mathbf{h}}_{k, j}^{L M} ; \overleftarrow{\mathbf{h}}_{k, j}^{L M}\right]

爲了在下游模型中能夠包含ELMo,ELMo 將RR中的所有層摺疊成單個向量ELMok=E(Rk;Θe)\mathrm{ELMo}_{k}=E\left(R_{k} ; \mathbf{\Theta}_{e}\right)。在最簡單的情況下,ELMo 只選擇頂層E(Rk)=hk,LLME\left(R_{k}\right)=\mathbf{h}_{k, L}^{L M},如 TagLM(Peters et al., 2017)和 CoVe(McCann et al., 2017)一樣。更一般地,針對特定任務計算所有 biLM 層的特定權重如下:
(1)ELMoktask=E(Rk;Θtask)=γtaskj=0Lsjtaskhk,jLM \mathbf{E L M o}_{k}^{t a s k}=E\left(R_{k} ; \Theta^{t a s k}\right)=\gamma^{t a s k} \sum_{j=0}^{L} s_{j}^{t a s k} \mathbf{h}_{k, j}^{L M} \tag{1}
公式(1)中,可以看出ELMo 不僅僅使用了neural language model 的最後一層輸出,而是對所有層的輸出做了加權來構造最後的向量。其中stasks^{task} 是 softmax 歸一化權重,所以權重加權和爲1。
標量參數γtask\gamma^{task} 允許任務模型擴展至整個 ELMo 向量。在實踐中,γ\gamma 對優化過程有益(詳見補充材料), γ\gamma 是一個需要學習的變量, 加不加這個變量對performance 的影響是比較大。鑑於每個 biLM 層的激活函數都有不同的分佈,在一些情況下,γ\gamma 有助於在加權之前對每個 biLM 層的歸一化(Ba et al., 2016)。

3-3. 在無監督任務上使用biLMs

給定一個預訓練的biLM,怎麼將其與目標任務框架進行結合呢?

運行biLM,記錄每個詞在所有層的表徵,再讓末端的具體任務模型學習表徵之間的線性組合。具體來說,對於給定的token序列(t1,,tN)\left(t_{1}, \ldots, t_{N}\right),對每個token,通過常見的標準方式(預訓練詞嵌入,也可以加入基於字符的表徵方式)得到帶有上下文依賴的token表徵xk\mathbf{x}_{k}。再通過雙向RNNs或者CNNs或者前饋神經網絡得到具體上下文語境的表徵hk\mathbf{h}_{k}
那如何將ELMo添加到下游有監督任務模型中?先固定biLM的權重,將ELMo向量 ELMo ktask\text { ELMo }_{k}^{\text {task}}和最初始詞向量xk\mathbf{x}_{k}(也就是通過字符卷積獲得的向量)進行拼接:[xk;ELMoktask]\left[\mathbf{x}_{k} ; \mathbf{E} \mathbf{L} \mathbf{M} \mathbf{o}_{k}^{t a s k}\right], 然後將這個向量輸入到具體任務的RNN模型中,然後再訓練權重因子。在有些任務中,如SNLI和SQuAD中,可以發現在output處添加另一個這樣的ELMo向量,即以[hk;ELMoktask]\left[\mathbf{h}_{k} ; \mathbf{E} \mathbf{L} \mathbf{M} \mathbf{o}_{k}^{t a s k}\right]替代原來的hk\mathbf{h}_{k}是可以提高性能指標的。不同是,這裏應該採用與輸入 ELMo ktask\text { ELMo }_{k}^{\text {task}}中不同的權重因子。需要注意的是,由於模型的其他部分是維持不變的,所以添加額外的向量操作可以發生在更復雜的神經模型的上下文中。比如,在SNLI實驗中,biLSTMs之後緊跟的是bi-attention層;再比如在指代消解任務中,在biLSTMs之後緊跟的是一個聚類模型。

另外也可以在ELMo模型中加入適量的dropout, 以及採用 L2 loss的方法來提升模型。這對ELMo權重引入了一個歸納偏見,使其接近所有biLM層的平均值。並且, 這裏的 L2 項的係數λ\lambda越大, 越有取各層平均值的意思;越小, 越可以發揮各個層之間的不同帶來的效果,但是並不是說, 越小越好。

3-4. 預訓練雙向語言模型

本文預訓練biLMs的方法與J´ ozefowicz et al. (2016)和Kim et al. (2015)中的方法是類似的,所作出的修改有以下2點:
(1)修改使其支持多方向的聯合訓練
(2)在LSTM層之間添加殘差連接
在這項工作中,重點關注大規模的biLMs,正如Peters等人(2017)強調過的:使用biLMs比只使用前向LMs和大規模訓練更重要。

爲了平衡語言模型之間的困惑度以及後期下游NLP任務模型計算的複雜度,同時維持輸入表徵仍是基於字符的,本文對單個最佳模型CNN-BIG-LSTM(J´ ozefowicz et al.(2016)的所有嵌入和隱藏尺寸減半(字符卷積網絡較爲低效,能夠實現最大效率利用字符共現來表達詞義的網絡就是biLSTMs網絡)。換一句話說,本文采用了2層Bi-Lstm,共計4096個單元,輸出緯度爲512,並且在第一層和第二層之間有殘差連接。最初的那一層文本向量用了2048個n-gram的過濾器,進行基於字符的卷積計算,後續還緊跟2個highway層(Srivastava et al.,
2015)。最後再接一個512維的線性投射層作爲輸出。整個ELMo會爲每一個詞提供一個3層的輸出,而下游模型學習的就是這3層輸出的組合。傳統的詞嵌入僅僅在一個固定的詞典中提供單層的表徵。另外,對該模型進行微調訓練,對具體的NLP任務會有所提升。

4. 評估

本文從問答、文本蘊含、語義角色標註、指代消解、命名實體抽取和情感分析這6個任務驗證本文的模型,且都得到了提升。
在這裏插入圖片描述
表 1:ELMo 增強神經模型和當前最優(SOTA)單個模型基線在六個 NLP 基準任務上的測試集性能對比。不同任務的性能指標不同:對於 SNLI 和 SST-5 是準確率,對於 SQuAD、SRL 和 NER 是 F1,對於 Coref 是平均 F1。由於 NER 和 SST-5 的測試集較小,研究者的報告結果是使用不同的隨機種子進行的五次運行的均值和標準差。「INCREASE」列是基線模型的絕對和相對改進。
更詳細的可以參考原始論文,在這裏不繼續展開說明。

5. 分析

通過消融研究(即控制變量法)以確定本文模型貢獻,並闡明ELMo表示一些有趣的方面。5-1節的實驗表明在下游任務中採用深層的語境表徵比僅僅使用頂層表徵(biLM或者MT encoder所產生的)能取得更好的結果。5-3節的實驗結果表明biLMs能夠捕獲到不同類型的上下文信息,底層網絡捕獲到的是句法信息,高層網絡捕獲到的是語義信息。這與MT系統的encoders是不謀而合的。此外,biLM能夠提供比CoVe更豐富的表徵。在5-2節分析了ELMo包含在具體下游任務模型中的位置敏感度;5-4節介紹訓練集的一些基本信息,5-5節對ELMo在不同任務中學習到的權重參數進行可視化。

5-1. 交替層加權方案

從方程1中可以看出,biLMs各層的組合是有多種方案的,只是此前的工作僅僅使用最後一層來作爲上下文的表徵,要麼如(Peters et al., 2017)中介紹的biLM,要麼如(CoVe; McCann et al., 2017)中的MT encoder。L2 loss的係數λ\lambda給模型帶來的影響其實很大, 其值越大,如值爲1, 那麼最後的 ELMo ktask\text { ELMo }_{k}^{\text {task}}越趨近於各層之間的平均值,而值越小如0.001,則層與層之間的權重差異越大。Table 2是在SQuAD、SNIL和SRL數據集上應用4個不同組合的比較結果:

  • 第一列是baseline模型(使用普通的詞向量, 例如 CoVe)
  • 第二列是隻使用了 BiLSTMs 最後一層輸出的結果
  • 第三列是使用了各層次狀態值平均的結果(傾向於平均, 並非完全平均,λ\lambda=1)
  • 第四列是使用了各層次狀態值加權和的結果(λ\lambda=0.001)

其結果如下:
在這裏插入圖片描述
從中可以看出,使用全部網絡層的特徵比僅使用最後一層效果提升明顯;使用了上下文表徵信息的最後一層又比baseline要好。從Table 2可以看出,這幾個任務中小λ\lambda值效果更好。

5-2. 在哪裏加入ELMo

本文發現在具體任務框架的biRNN的output中也加入 ELMo 來進行訓練,能夠普遍提升結果性能。 實驗結果如Table 3所示:
在這裏插入圖片描述
在SNLI數據集和SQuAD數據集上的輸入和輸出層加入ELMo,比僅僅在輸入層加入ELMo效果要來得好。但是對於SRL數據集(指代消解數據集)則僅在輸入層加入ELMo效果最好。一個可能的原因是SNIL和SQuAD網絡架構都在biRNN之後使用了attention層,引入ELMo可以使得模型直接注意到biLM的內部表徵。而對於SRL數據集,其上下文表徵可能比biLM中的信息更重要。
證明確實是有效的。

5-3. biLM的表徵捕獲到哪些信息

由於添加ELMo能夠比單純的詞向量獲取更好的效果,那麼biLM的上下文表徵應該是能夠編碼出對多個NLP任務都有效的更加泛化的通用信息,而這是詞向量所無法捕捉到的。直觀上,biLM應該是能夠克服詞的歧義性。以常見多歧義單詞"play"爲例,Table 4的上部分列出了在Glove向量中與其最相近的單詞,它們分佈在演講的幾個部分例如:“play”,“playing”作動詞,“player”作動詞,“game”作爲名詞),但集中在與運動有關的“play”的意義上。下面的兩行顯示來自SemCor數據集的最近鄰語句,在各自句子中使用biLM後的“play”的上下文表示。在這種情況下,biLM能夠對原句中的詞性和詞義進行分離。

ELMo和Glove vector 對應的nearest neighborhood的對比:
在這裏插入圖片描述
這個例子比較明顯的區分了Glove vector 和LM 構造出的vector 之間的區別。

word sense disambiguation(一詞多義的消歧):
在詞義消歧方面可以使用目標詞在biLM表徵中最近鄰的單詞來預測目標詞的含義,這與Melamud et al. (2016)的方法很類似。實驗過程中,使用了 SemCor3.0 這個語料庫(PS:這是一個標註了多義的語料庫), 該語料庫中的每個詞彙都對應着 wordnet 的一個位置。具體方法是,在訓練語料上,先利用biLMs 計算出語料庫中所有詞彙的向量表示,然後對每個含義取表徵的均值。因爲每個詞對應着wordnet,所以在wordnet相同位置的,即表示相同含義,進而可以將位於wordnet相同位置的詞彙的向量取平均。在測試的時候, 對於一個給出的目標詞(即target word)利用 BiLM計算得到其詞表徵後, 再選用與訓練時獲得的每個wordnet位置中詞彙向量最近的作爲其含義。換句話說,就是利用1近鄰法在訓練後的詞向量中查找(從上述可知,此時每個含義都是均值後的結果),其結果就是這個詞可能的位置。雖然只用到了1-近鄰,沒有真的用一個合理的wsd(word sense disambiguation)模型, 只是用了最簡單的模型來驗證ELMo vector 的質量,但是結果顯示, 有很高的F1值。結果如Table 5所示:
在這裏插入圖片描述
期中,CoVe 是由machine translation 訓練出的帶上下文信息的vector。通過這個表也可以知道, 第二層的語義信息在語義消歧方面要優於第一層。

POS tagging:
上面的結果測試了 ELMo 表達語義的效果, 接下來利用 POS tagging 檢測其對語法的表達效果。直接在 LM 後面接了一個feed-forward 的nn來進行pos-tagging 的訓練, 模型的效果如下Table 6所示。類似的, 因爲這個結果是沒有用額外的crf / lstm 而直接得到的, 所以這個分數其實挺好的了。
在這裏插入圖片描述

5-4. 樣本效率

在模型中添加ELMo會大大提高樣本的效率(Sample efficiency),具體體現在參數收斂更快和需要使用的訓練集更小。例如在不加 ELMo 的情況下去訓練 SRL model , 達到最佳 F1 值要在 486 個epoch之後, 但在加了 ELMo 之後, 只需要十個回合便超越了原來的 F1 值,降低了98%的時間消耗。此外,在使用更少數據下便可以能夠獲得同樣的效果,所以數據的使用更高效。Figure 1對比了baseline是否加入ELMo下不同數據量的性能表現。
在這裏插入圖片描述
圖 1:基線和 ELMo 在 SNLI 和 SRL 上的性能對比,訓練集規模的變化幅度是 0.1% 到 100%。
從這個圖中就可以看出來. 雖然最後趨於一致,但是在數據量較少的情況下, 帶來的進步是很大的。

5-5. 學習到的權重可視化

Figure 2對softmax-normalized學習到的各層權重進行可視化。對指代消解任務和SQuAD數據集更看重biLSTM的第一層,而其他任務似乎沒有特殊的層級偏好。
在這裏插入圖片描述

6. 結論

本文介紹了一種biLMs方法,該方法能夠學習到高質量深層上下文相關表示的通用方法,並證明了該方法在多個任務上顯著有效。通過消融研究和控制變量法,證實了biLM層能夠有效地編碼單詞上下文相關的不同類型的語法和語義信息,使用所有層特徵組合可以提高所有任務的性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章