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