張明華,吳云芳,李偉康,張仰森
(1. 北京大學 計算語言學教育部重點實驗室,北京 100871;2. 北京信息科技大學 計算機學院,北京 100192)
自動學習文本(詞、短語、句子以及段落)的語義表征是自然語言處理(natural language processing, NLP)中的一項基礎性研究工作。目前已經存在非常高效的模型[1]利用大量無標注語料來學習詞表征(word embedding),這些詞表征為NLP的各種下游任務提供了有效的特征支持。近年來,越來越多的研究者開始關注更大文本單元的語義表征,其目標在于把文本序列中包含的語法和語義信息編碼成一個固定長度的向量,然后將這些學習到的表征知識遷移到其他的NLP任務中。
其中一個被廣泛研究的方向是使用基于RNNs的編碼器—解碼器架構[2-5],在給定輸入文本序列的前提下,以重構輸入序列或預測上下文序列為訓練目標來學習文本的語義表征。另外一些研究者[6-7]提出借助標注數據來學習一個通用的語義編碼器,比如斯坦福的自然語言推理數據集(Stanford natural language inference, SNLI)[8]。然而這些現存的方法均有其固有的限制。首先,由于序列化的建模方式——RNNs網絡在面對長文本單元(段落)的時候,顯得極為耗時,尤其是在需要大規(guī)模訓練數據來學習文本語義表征的場景下,訓練開銷變得更加難以接受。例如,為了獲取有意義的向量表征,Kiros等[2]花費了兩周時間來訓練skip-thought vector。其次,對于SNLI這種大規(guī)模的高質量標注數據,在其他語言中基本上是不存在的,如本文所處理的中文文本。
本文研究致力于以無監(jiān)督的方式來自動學習文本語義表征,我們提出了一種門控聯合池化自編碼器(gated mean-max AAE)。具體地,對于輸入的文本序列,編碼器網絡首先執(zhí)行多頭自注意力操作以獲取輸入的隱向量;然后聯合使用平均池化和最大池化產出mean-max語義表征。在重構過程中,解碼器先利用多頭自注意力操作關注文本序列之前時間步的詞,接著運用門控機制來動態(tài)關注mean-max表征。因此,在重構的每一步,解碼器不僅依賴之前時間步的信息,而且會充分地利用輸入文本的整體語義信息。另一方面,由于聯合池化操作的使用,解碼器可以得到不同語義表征空間的指導,以滿足不同文本單元的重構需求。
針對不同的語言,我們分別在公開的英文數據集[9]和大規(guī)模的中文Gigaword語料(LDC2005T14)上訓練文本編碼器。為了驗證向量表征捕捉文本序列語義信息的能力,我們從mean-max表征出發(fā)來重構中英文的長文本段落。實驗結果顯示,在英文數據集上,我們的模型超越了基于注意力的層次化LSTM(long-short term memory)網絡。在中文數據集上,本文模型的實驗效果也遠超傳統RNNs模型。同時,我們模型的并行建模方式提高了訓練效率,在相同數據量的情況下,相比于RNNs模型71h的訓練時間,我們的模型僅用了32h。為了促進相關研究,我們將公開已經訓練好的文本編碼器,對于輸入的文本序列,輸出定長的分布式向量表示。
本文的主要貢獻在于:
(1) 將多頭自注意力機制引入自編碼器,用于學習通用性的文本語義表征。由于采用并行的建模方式,在面臨大規(guī)模無標注數據時,極大地縮減了訓練時間,可以更高效地獲取有意義的向量表征。
(2) 同時運用平均池化和最大池化操作來獲取文本序列的聯合語義表征,然后通過門控機制,讓兩個不同的表征空間共同動態(tài)地指導解碼過程。
(3) 首次以無監(jiān)督的方式訓練高質量的中文通用性文本編碼器,并公開發(fā)布,以促進中文信息處理的相關研究。
近年來,隨著深度學習技術在自然語言處理領域的迅猛發(fā)展,越來越多的研究者開始關注文本序列的語義表征,并且提出了各種各樣的模型來嘗試解決這個問題。相關研究可以概括為兩個方向。
由于互聯網中海量生語料的存在,直接從大規(guī)模未標注數據中學習語義表征已經成為一個熱門的研究方向。Le等[10]提出了paragraph2vec模型,通過在對數線性神經語言模型中[11]引入全局的段落向量來學習文本的分布式表征。在skip-thoughts模型[2]中,提出使用一個RNN網絡來編碼輸入的句子,使用另外兩個RNN網絡分別預測文檔中的上一個句子和下一個句子,但是模型訓練較為耗時。Ba等[3]通過在skip-thoughts模型中引入層正則化操作(layer normalization)提高了模型的訓練速度,在遷移任務上也取得了更好的效果,但是文中的模型仍然花費了一個月的訓練時間。Hill等[4]提出了序列降噪自編碼器(sequential denoising autoencoder, SDAE),從含有噪聲的輸入序列中重構原始的句子。另外文獻[4]也實現了一些簡單的詞袋模型,比如word2vec-SkipGram和word2vec-CBOW。Arora等[12]提出了一個簡單高效的平滑逆頻方法(smooth inverse frequency, SIF),通過詞向量的加權平均來計算句子的向量表征。Gan等[5]使用卷積神經網絡(convolutional neural network, CNN)編碼器和LSTM解碼器來重構輸入句子和預測上下文序列,同時探索了利用層次化的模型來預測文檔中連續(xù)的多個下文句子。
相比而言,高質量的人工標注數據就顯得較為稀缺,但是研究者對各種監(jiān)督方法依然進行了有效的探索。Hill等[4]嘗試了三種不同的標注資源,包括使用神經語言模型將詞語的字典定義映射到相應的詞向量,將圖像字幕映射到圖像向量,以及用雙語平行語料訓練神經機器翻譯模型,來學習通用的語義編碼器。Conneau等[6]認為自然語言推理任務涉及豐富的句子間語義關系,因此他們提出使用SNLI數據集來學習句子表征,并且通過對比7種不同的模型架構,發(fā)現基于最大池化操作的雙向LSTM網絡取得了最好的實驗效果。Cer等[7]提出利用多任務學習機制來訓練句子編碼器,他們使用的任務包括skip-thought模型[2]中的預測上下句任務、自然語言推理任務(SNLI)、以及對話回復任務[13],另外還探索了結合句子級別的語義和詞級別的信息用于遷移任務。
注意力機制最早由Bahdanu等[14]提出并成功地用于神經網絡機器翻譯中,其主要思想可以描述為: 給定一系列的鍵值對(K,V)和查詢向量q,首先在q和K的每一個鍵之間計算歸一化的權重,然后對相應的值向量V進行加權求和,以生成動態(tài)的注意力向量,使得和當前查詢向量相關性更高的鍵值對能夠貢獻更多的語義信息。而在自注意力操作中,查詢向量和鍵值對均來自相同的輸入序列。本文使用的自注意力運用多頭機制[15],并行多次調用注意力操作,然后將每個注意力操作的結果串接起來。具體而言,對于q和(K,V),通過式(1)~式(5)
計算注意力向量a:
其中:
(5)
多頭自注意力機制允許模型動態(tài)地關注不同鍵值對的信息,可以適應不同查詢的信息需求。而且由于每個head計算維度的減小以及多頭的并行操作,所以其總的計算開銷和普通的單頭注意力操作相當。
我們的模型采用編碼器—解碼器結構,如圖1所示。輸入序列x首先通過左邊的編碼器網絡(encoder)轉換為隱向量序列,然后通過中間銜接部分的平均池化和最大池化操作得到輸入的語義表征,最后右邊的解碼器網絡(decoder)利用語義表征來重構輸入序列。
圖1 門控mean-max自編碼器網絡結構
在建模過程中,本文統一將輸入的文本視為詞序列,不區(qū)分句子或段落。此處使用S={w1,w2,…,wN}來表示模型的輸入詞序列,其中N代表輸入序列中詞的數量。同時在每個輸入序列的末尾添加序列結束符“<∕S>”。序列S中的每一個詞wt首先均被轉換為k維的詞向量et=We[wt],其中We∈dw×V是詞向量矩陣,V是模型詞表的大小,wt表示S中的第t個詞在詞表中的索引,We[v]則表示矩陣We的第v列。
另外,為了建模輸入序列的序信息,我們對輸入的每一個詞都增加位置編碼[15],如式(6)、式(7)所示。
其中,t表示輸入序列的第t個詞位,i是位置編碼的第i維。位置編碼中的偶數維對應一個正弦值,奇數維則對應一個余弦值。由此,可以得到編碼器的輸入為xt=et+pt。
編碼器網絡包含一個多頭自注意力層(multi-head self-attention layer)和一個全連接層(fully connected layer),負責將輸入的詞序列轉換為隱向量序列。有別于文獻[15]的建模過程,我們移除了多頭自注意力層的殘差連接(residual connection),僅保留全連接層的殘差連接,這樣我們的模型可以自由地擴展隱層的維度,以使隱向量包含更多的語義信息。
由于采用多頭自注意力機制作為網絡的基本構建塊,我們的模型可以非常有效地進行并行操作。對于任意長度的輸入序列,模型可以同時輸出所有的隱向量,相比于LSTM模塊的序列處理方式,這將極大地減小計算復雜度。
而在本文中,我們提出同時運用平均池化和最大池化操作。對于給定的向量序列,最大池化計算各維度的最大值,以試圖捕獲序列中最顯著的屬性而過濾掉其他含有較少信息量的局部值。而平均池化不篩選顯著的局部值,也不關注序列中那些特殊的特征值,而是捕捉更普適性的信息。很顯然,這兩種池化策略可以互為補充。通過并聯兩種池化操作的結果,得到輸入序列的mean-max表征,如式(12)~式(14)所示。
通過聯合使用兩種不同的池化策略,可以從不同的角度來處理隱向量序列,以捕捉更多樣性的語義特征,這使mean-max表征可以為重構過程提供更多的信息,在面對長文本序列的時候展現出強大的魯棒性。
正如編碼器網絡那樣,解碼器也運用多頭自注意力機制來重構輸入序列。如圖1所示,編碼器和解碼器通過mean-max門控層進行連接,這將使解碼器在重構過程中動態(tài)地利用mean-max信息。
本文采用了兩個大規(guī)模的中英文數據集(中文Gigaword和英文hotel reviews)來分別學習兩種語言的文本語義表征,并通過重構長文本段落來驗證其捕獲語義信息的能力。
我們從中文Gigaword語料的新華日報部分構建了中文文本段落數據集。所有數據采用斯坦福的CoreNLP工具包[16]進行分詞預處理。詞表大小為33 090,其他低頻詞均用“
在Hotel reviews數據集[9]中,每條評論包含的單詞數量在50到250之間。文獻[9]公開的詞表中包含語料中前25 000個高頻的單詞。所有數據的未登錄詞比率均小于2%,評論的平均單詞數量為124.8。訓練集和測試集分別包含340 000條和40 000條評論。
本文提出的模型主要包含三個組件: 編碼器和解碼器網絡構建塊、動態(tài)門控機制以及mean-max聯合池化策略。我們分別實現了相應的基準模型進行對比分析。
首先,編碼器和解碼器網絡均采用多頭自注意力機制來構建。為了驗證多頭自注意力機制的作用,實現了基于LSTM的模型: 編碼器采用雙向LSTM網絡計算隱向量,然后運用聯合池化策略獲取輸入的語義表征,并且串接前向LSTM和后向LSTM的末尾隱向量用于初始化解碼器LSTM的狀態(tài),每一步解碼過程均使用門控操作來關注全局的語義表征。下文中我們將以gated mean-max RAE來表示。
另外,在gated mean-max RAE的基礎上刪除門控機制,得到了更簡單的基準模型RAE,以探究在沒有語義表征動態(tài)指導的情況下解碼器的重構效果。
最后,為了證明聯合池化策略的優(yōu)勢,在只運用平均池化或者最大池化操作的情況下,分別實現了Gated mean AAE和Gated max AAE,兩個模型的其他部分和本文模型保持一致。
本文使用Adam算法[17]優(yōu)化模型目標。詞向量使用Xavier方法[18]進行隨機初始化,并和模型參數一起更新。解碼過程采用貪心算法(greedy),最大長度不超過輸入文本的1.5倍。中英文實驗所采用的超參數如表1所示。
表1 實驗的超參數設置
所有模型均使用Tensorflow實現,并在英偉達GeForce GTX 1080 GPU上運行。
實驗結果如表2所示,采用了兩個標準的評價指標: BLEU和ROUGE。
在中英文數據集上,本文提出的門控和聯合池化策略均取得了最優(yōu)的效果。在hotel reviews數據上,與Attention Hierarchical模型相比,Gated mean-max AAE模型顯著地提升了實驗效果,將BLEU值從28.5提高到了63.0。另外,Attention Hierarchical模型的編碼器和解碼器均由4層的LSTM網絡組成,而本文模型只采用了一層的自注意力和全連接網絡。因此,Gated mean-max AAE實現更加簡單,運行也更加高效。
表2 中英文段落重構實驗
注: 其中,“Standard”, “Hierarchical”以及“Attention Hierarchical”均為文獻[9]中的模型。
門控機制使語義表征可以動態(tài)地指導解碼器的重構過程,對比Gated mean-max RAE和RAE可知,其顯著地增強了模型性能,在兩個數據集上,BLEU值分別提升25.6和27.7。而且相比于單一的池化操作,聯合池化讓文本表征攜帶更豐富的語義信息,在面臨中英文的長文本序列時,也展現了極佳的效果。經分析,編碼器和解碼器的網絡結構對實驗效果沒有顯著的影響,但是自注意力機制可以加速模型訓練。另外,Gated mean-max RAE除了使用門控操作和聯合表征,還借助了雙向LSTM編碼器的末尾隱向量來初始化解碼器的狀態(tài),而本文并未使用末尾隱狀態(tài)的信息。
多頭自注意力機制使用并行的建模方式,對于輸入的文本,可以在常數的時間內連接序列中所有位置,而循環(huán)神經網絡需要的計算開銷隨輸入的長度成線性增長。因此,本文模型極大減小了計算復雜度,同時更容易建立文本中的長距離依賴。在中文編碼器的訓練過程中,Gated mean-max AAE在一塊CPU上訓練了32h,然而Gated mean-max RAE使用了71h,并且占了兩塊CPU。
動態(tài)門控機制讓解碼器即使在面臨長文本的時候,依然可以充分地利用輸入序列的全局語義表征。為了說明本文模型對長文本處理的優(yōu)勢,圖2給出測試集的BLEU值隨文本長度變化的曲線。隨著文本長度的增加,傳統RNNs模型的性能快速下降,聯合表征和門控機制的引入使模型依舊具有不錯的表現。表3中,我們從中文測試集中隨機抽出了兩個長文本段落的重構實例。
圖2 中文測試集上BLEU值隨輸入文本長度變化的曲線
Ground Truth隨著《紅軍長征》卷等一批紀念長征勝利60周年的圖書的出版發(fā)行,解放軍歷史資料叢書目前已出版了10卷、80多冊、6 000多萬字,為全軍指戰(zhàn)員提供了
表4中展示了5個基于句子相似性的檢索實例。所有句子均使用中文Gigaword語料上訓練好的漢語文本編碼器進行編碼。采用句子語義編碼的余弦相似度作為檢索的衡量指標。分析檢索結果可知,編碼器從大規(guī)模的無標注數據中能夠較為精確地捕捉文本的語義信息。
表4 中文句子檢索
注: 其中每個例子中第一行是查詢輸入,第二行是從近400萬的《新華日報》語料中檢索出的最相似句子。
本文中,我們提出了門控聯合池化自編碼器,以從大規(guī)模無標注語料中學習不同語言的語義表征。為了提高表征學習效率以及捕捉長距離依賴,使用多頭自注意力機制來構建編碼器和解碼器網絡。在編碼階段,平均池化和最大池化操作的聯合運用使文本表征可以捕捉更豐富的語義信息。隨后,解碼器執(zhí)行門控操作來動態(tài)關注編碼的全局語義表征。即使處理長文本序列,語義表征依然可以持續(xù)有效地指導重構過程。通過語義表征重構中英文的長文本實驗中,本文模型的實驗效果遠優(yōu)于傳統的RNNs模型。同時,由于采用并行化的建模方式,模型極大地縮減了文本表征學習的時間。在后續(xù)的研究中,我們將嘗試自動從互聯網海量數據中構建監(jiān)督語料,用于學習不同語言的語義表征。