蘇海波 劉譯璟
諸如BERT和Open-GPT等預(yù)訓(xùn)練語言模型的引入,為NLP研究和工業(yè)界帶來了巨大的進步,這些模型的貢獻可以分為兩個方面。首先,經(jīng)過預(yù)訓(xùn)練的語言模型使建模人員可以利用少量數(shù)據(jù)獲得合理的準確性,這種策略與經(jīng)典的深度學(xué)習方法相反,經(jīng)典的深度學(xué)習方法需要大量的數(shù)據(jù)才能達到可比的結(jié)果。其次,對于許多NLP任務(wù),例如SQuAD,CoQA,命名實體識別,Glue,機器翻譯,預(yù)訓(xùn)練的模型如果給定合理數(shù)量的標記數(shù)據(jù),可以創(chuàng)造新的State-of-the-art記錄。
在預(yù)訓(xùn)練語言模型時代,新的技術(shù)會遵循兩個方向發(fā)展,第一個方向是改進預(yù)訓(xùn)練過程,例如ERNIE和GPT2.0。第二個方向是在預(yù)先訓(xùn)練的語言模型之上構(gòu)建新的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。
目前有三種算法可以在預(yù)訓(xùn)練的語言模型之上訓(xùn)練帶有上層神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu),如表1所示,其中,算法NFT-TM是指在BERT模型的上層添加復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),在訓(xùn)練時,固定BERT的參數(shù),僅單獨訓(xùn)練上層任務(wù)模型網(wǎng)絡(luò)。算法FT-NTM是指在在BERT模型后接一個簡單的特定任務(wù)層(如全連接網(wǎng)絡(luò)),在訓(xùn)練時,根據(jù)任務(wù)的訓(xùn)練樣本集對BERT進行fine-tune即可。Peter等比較了算法FT-NTM和NFT-TM的可能性,并得出結(jié)論,算法FT-NTM比NFT-TM的效果更好。然而,Peter等沒有比較算法FT-TM和FT-NTM。另一方面,在預(yù)訓(xùn)練語言模型流行之前,研究人員經(jīng)常使用與方法FT-TM類似的策略,也就是說,建模人員首先對模型進行訓(xùn)練,直到收斂為止,然后在幾個訓(xùn)練周期內(nèi)對詞嵌入進行微調(diào)。由于預(yù)訓(xùn)練的語言模型類似于詞嵌入,那么不考慮算法FT-TM將是不明智的。
在這項研究中,我們的目標是比較算法FT-TM和FT-NTM的效果,更具體地說,我們執(zhí)行三個NLP任務(wù),包括序列標記、文本分類和句子語義等價性。在第一個任務(wù)中,實驗結(jié)果表明即使不修改網(wǎng)絡(luò)結(jié)構(gòu),在預(yù)訓(xùn)練語言模型之上構(gòu)建上層網(wǎng)絡(luò)也可以提高準確性。在第二個任務(wù)中,實驗結(jié)果表明通過集成不同的神經(jīng)網(wǎng)絡(luò),甚至可以進一步提高微調(diào)方法FT-NTM的效果。在最后一項任務(wù)中,實驗結(jié)果表明如果可以定制一個專門適合于預(yù)訓(xùn)練語言模型特征的上層神經(jīng)網(wǎng)絡(luò),則可以進一步提高效果。因此,所有實驗結(jié)果都表明算法FT-TM優(yōu)于FT-NTM。
本文接下來的內(nèi)容安排如下,首先,我們回顧了有關(guān)預(yù)訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的相關(guān)文獻,包括Peter等人的觀點以及帶有詞嵌入的微調(diào)策略。其次,我們給出了三個實驗的結(jié)果,并顯示了算法FT-TM與FT-NTM相比,能達到更好的效果,證明了算法FT-TM的優(yōu)勢。
在引入深度神經(jīng)網(wǎng)絡(luò)之前,NLP領(lǐng)域的研究人員一直在使用預(yù)訓(xùn)練模型。在它們當中,最著名的是詞嵌入,它把每個單詞映射到一個連續(xù)的向量中,而不是使用one-hot編碼。這樣,我們不僅可以減少輸入函數(shù)的維數(shù)(這有助于避免過擬合),而且還可以捕獲每個單詞的內(nèi)部含義。
但是,由于每個單詞在詞嵌入中僅被賦予固定的數(shù)值矢量,因此詞嵌入無法捕獲單詞在文本中的上下文含義。例如,考慮“蘋果”一詞,句子“我吃了一個蘋果”和“我買了一個蘋果電腦”。 顯然,“ 蘋果”一詞代表完全不同的含義,而詞嵌入技術(shù)卻無法捕捉到這種語義的差別。
上述缺陷促使研究人員提出了一種深度神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)能夠以無監(jiān)督的方式進行訓(xùn)練,同時能夠捕獲文本中包含單詞的上下文含義。一些早期的嘗試包括各種預(yù)訓(xùn)練模型,例如基于LSTM構(gòu)建的ELMo[ULMFiT,但是,最成功的是BERT和Open-GPT,與ELMo和ULMFiT不同,BERT和Open-GPT構(gòu)建在Transformer結(jié)構(gòu)之上,不同之處在于BERT使用雙向自注意力,而Open-GPT僅使用單向注意力,如圖1所示。Transformer的結(jié)構(gòu)與LSTM有兩個重要不同,首先,它允許使用殘余連接和批處理歸一化來連接多層網(wǎng)絡(luò),從而允許自由梯度流動。其次,Transformer的核心計算單元是矩陣乘法,這使研究人員可以充分利用TPU的全部計算潛力。經(jīng)過大型語料庫的訓(xùn)練后,BERT和Open-GPT都能夠更新許多重要自然語言任務(wù)的基準,例如SQuAD,CoQA,命名為實體識別[6],Glue,機器翻譯。
在存在預(yù)訓(xùn)練語言模型的情況下,那么如何最好地利用預(yù)訓(xùn)練模型獲得更好的效果呢?在這方面,Peters等研究了如何使用預(yù)訓(xùn)練模型最佳地適應(yīng)目標任務(wù),并提出了兩種不同的適應(yīng)算法:特征提取算法和直接微調(diào)預(yù)訓(xùn)練模型算法,這對應(yīng)于表1中的算法NFT-TM和FT-NTM,Peters等進行了五個實驗,包括:(1)命名實體識別;(2)情緒分析;(3)自然語言推論;(4)復(fù)述檢測;(5)語義文本相似度。通過執(zhí)行所有這些任務(wù),Peters等得出的結(jié)論是,算法FT-NTM比NFT-TM的效果更好。
Peters等的工作展示了如何應(yīng)用預(yù)訓(xùn)練語言模型,我們認為這方面還需要深入研究。在預(yù)訓(xùn)練語言模提出型之前,建模人員通常采用以下策略,首先,他們在詞嵌入之上訓(xùn)練了語言模型,通常采用CNN或LSTM的形式,并固定單詞嵌入,在訓(xùn)練過程收斂之后,再將詞嵌入微調(diào)訓(xùn)練幾個時期,實驗結(jié)果顯示出該策略可以提高整體預(yù)測精度。如果將預(yù)訓(xùn)練語言模型視為詞嵌入的增強版本,那么可以類似的提高訓(xùn)練效果的算法,更具體地說,就是首先在預(yù)訓(xùn)練語言模型之上訓(xùn)練上層神經(jīng)網(wǎng)絡(luò)直到某個收斂點,然后聯(lián)合訓(xùn)練整個神經(jīng)網(wǎng)絡(luò)(包括預(yù)訓(xùn)練語言模型),這會進一步改善結(jié)果。
在傳統(tǒng)的NLP語言處理中,通常采用的方法是詞向量加上層模型的方式。在這個訓(xùn)練的過程中,由于詞向量是已經(jīng)經(jīng)過大量訓(xùn)練,而上層模型的參數(shù)初始化是隨機的,所以一般來說,如果直接同時訓(xùn)練詞向量的參數(shù)和上層模型的參數(shù),其效果將會大打折扣。對于這種情況,常常采用的策略是,首先固定詞向量,并訓(xùn)練上層模型若干輪數(shù)達到理想效果,然后訓(xùn)練詞向量或詞向量加上層模型少數(shù)epoch。
如果我們將以上思維應(yīng)用于BERT的話,我們會發(fā)現(xiàn)如果我們僅僅是同時訓(xùn)練BERT和上層模型將會產(chǎn)生較差的效果。BERT相比于詞向量具備更大的參數(shù),因此如果我們同時訓(xùn)練上層模型和BERT,就會面臨兩種困境。如果我們采用較小的學(xué)習率,上層模型收斂就會較慢,其效果不好。如果我們采用較大的學(xué)習率,就會嚴重破壞已經(jīng)預(yù)訓(xùn)練好的BERT結(jié)構(gòu)。因此我們必須采用其他的方法進行訓(xùn)練。
根據(jù)剛剛的分析,我們在本文中提出了一種基于預(yù)訓(xùn)練模型和聯(lián)合調(diào)參的改進訓(xùn)練算法FT-TM,在該算法中,首先固定BERT的參數(shù),然后訓(xùn)練上層的模型。在這里上層的模型既可以是比較通用的,例如LSTM和CNN,也可以是其他的模型。當訓(xùn)練達到一定的精度后,再同時開始訓(xùn)練BERT和上層模型,我們發(fā)現(xiàn)FT-TM已經(jīng)可以顯著的提高訓(xùn)練的效果。
但是在訓(xùn)練的過程中,有一些問題需要注意,首先如果是對于詞向量來說,一般的方法是訓(xùn)練上層模型直至其收斂,換句話說,直至其在驗證集上達到的最高的準確率。但是在對BERT進行試驗的時候我們發(fā)現(xiàn),這種方法效果并不理想,通過分析其訓(xùn)練集和驗證集的預(yù)測精度對比,我們發(fā)現(xiàn)問題的根源在于可能存在的過擬合現(xiàn)象,這也是有一定直觀原因的,從參數(shù)數(shù)量來說,BERT的參數(shù)數(shù)量遠大于上層模型和常用的NLP模型,所以如果在上層模型精度達到最高后再開始訓(xùn)練,BERT就很有可能導(dǎo)致嚴重的過擬合。
這點在具體的NLP任務(wù)實驗中也是很明顯的,在實驗中,這樣的做法下,訓(xùn)練集的精度甚至會達到接近100%,為了解決這個問題,F(xiàn)T-TM中的做法是,不在上層模型收斂后再開始訓(xùn)練BERT和上層模型,而是在其達到一定的準確度就開始這個過程。
除此之外,在訓(xùn)練BERT的時候還會有另外的一種情況,如果BERT預(yù)訓(xùn)練語料和目標語料差別較大,就可能BERT在fine-tune的時候收斂很慢。在這種情況下,采用以上的方法進行訓(xùn)練效果并不好,為了應(yīng)對這種情況,F(xiàn)T-TM中采取的做法是:首先,采用BERT加上全連接層對BERT的參數(shù)進行fine-tune,然后再采用前面講到的措施進行fine-tune。
同時,在句子語義等價的NL P任務(wù)上,我們對FT-TM算法進行了進一步的具體化,在具體的實現(xiàn)中,預(yù)訓(xùn)練模型采用BERT,上層神經(jīng)網(wǎng)絡(luò)基于BIMPM進行了改進,在下文的實驗部分會介紹這種方法的效果,目的是說明FT-TM這種聯(lián)合訓(xùn)練的算法相比FT-NTM能達到更好的效果,甚至能達到業(yè)界的State-of-the-art。在具體介紹算法之前,首先對句子等價的任務(wù)進行說明。判斷句子是否等價的任務(wù)要遠遠比單純的詞語匹配復(fù)雜。舉例來說,問題“市政府的管轄范圍是什么?”和“市長的管轄范圍是什么?”僅有兩個字的差異,但兩者語義是不相同的,因此其回答也應(yīng)該不一樣的。另一方面來說,“市政府的職責是什么”和“請問,從法律上來講,市政府究竟可以管哪些事情“這兩個問題,除去在“市政府”一詞外,幾乎是沒有任何重合的,但兩者語義是等價的,因此其答案也應(yīng)該是一樣的。從這幾個例子來看,句子匹配的任務(wù)需要模型能夠真正理解其句子的語義。
在BERT等預(yù)訓(xùn)練模型出現(xiàn)之前,語義本身的表達一般是用word vector來實現(xiàn)。為了得到句子的深層語義表達,所采用的方法往往是在上層架設(shè)網(wǎng)絡(luò),以BIMPM為例,BIMPM是一種matching-aggregation的方法,它對兩個句子的單元做匹配,如經(jīng)過LSTM處理后得到不同的time step輸出,然后通過一個神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)化為向量,然后再將向量做匹配。下面來詳細介紹一下BiMPM的大體流程,如圖中所示,從Word Representation Layer 開始,將每個句子中的每個詞語表示成d維向量,然后經(jīng)過Context Representation Layer 將上下文的信息融合到需要對比的P和Q兩個問題中的每個time-step表示。Matching Layer 則會比較問題P和問題Q的所有上下文向量,這里會用到multiperspective 的匹配方法,用于獲取兩個問題細粒度的聯(lián)系信息,然后進入Aggregation Layer 聚合多個匹配向量序列,組成一個固定長度的匹配向量,最后用于Prediction Layer 進行預(yù)測概率。
通過BIMPM模型可以捕捉到句子之間的交互特征,但是這樣的匹配僅僅也只是在表層特征進行比較,并不涉及深層次的特征比較。為了進行深層次的特征比較,我們借鑒了圖像中的MMD思想,Maximum Mean Discrepancy,即最大平均差異,通過深度神經(jīng)網(wǎng)絡(luò)的特征變換能力,對變換后的特征分布進行匹配。MMD的最大優(yōu)點在于它不僅進行表層特征的匹配,還進行深層次特征的匹配,這樣可以更精確地計算出特征之間的匹配程度,提升模型的效果。拿圖像對比來舉例,圖像中所蘊含的信息不單單是由表層特征就可以來涵蓋的,往往是通過表層、多個隱藏層以及它們之間不同的參數(shù)相加得到的結(jié)果。
BIMPM將每個句子中的每個詞語表示成d維向量,然后經(jīng)過Context Representation Layer,將上下文的信息融合到需要對比的P和Q兩個句子中的timestep表示,最終比較句子P和句子Q的所有上下文向量,但它也只是對表層特征進行匹配,從而忽略很多額外的語義特征,但是BERT 預(yù)訓(xùn)練模型的流行,讓深層特征匹配成為了現(xiàn)實。
如果我們將MMD的思想應(yīng)用到句子匹配的任務(wù)上,并用BERT預(yù)訓(xùn)練深層模型來實現(xiàn),就會得到一個重要的啟發(fā),MMD思想的主要效果來源于它將BERT預(yù)訓(xùn)練深層模型的不同層表示進行匹配,形象地來說,這是一種“向下匹配”的思維。而BIMPM由于在BERT之前出現(xiàn),其語義表示只能通過詞(字)向量和LSTM等網(wǎng)絡(luò)進行,因此它捕捉特征表示的方法只能通過“向上匹配”。這是否意味著自從BERT出現(xiàn)以后,將這兩種方式進行結(jié)合呢?
基于這個思路,我們在本文中提出了問題語義等價的FT-TM具體實現(xiàn),它的思想是將特征“向下匹配”和“向上匹配”相結(jié)合。在具體的實現(xiàn)上,我們分別從BERT深層模型的最后幾層中提取特征通過加法進行拼接,替代原始的字向量輸入到BIMPM模型當中。這種做法是和MMD很相似的,只不過MMD中采用各種距離函數(shù),而在這里我們采用的是多種匹配函數(shù)。除此之外,我們對BIMPM模型也做了以下修改:
首先,我們?nèi)サ袅嗽糂IMPM模型中接在字向量層的Bi-LSTM模型,之所以這樣做,其原因在于LSTM并沒有設(shè)計機制保證梯度向深度模型的后向傳導(dǎo);
其次,我們用Transformer模型替代了BIMPM最上層的Bi-LSTM模型。這樣做的原因主要是考慮到Bi-LSTM能夠捕捉數(shù)據(jù)當中的序列特征。但是由于BIMPM采用多種匹配后,其序列性并不強,所以Transformer更適合該模型。
(一) 概述
本節(jié)內(nèi)容會通過三個不同NLP任務(wù)的實驗來檢驗我們的設(shè)想,首先,通過在BERT模型頂部添加BiLSTM來運行命名實體識別任務(wù)。在本實驗中,我們希望測試通過對常用網(wǎng)絡(luò)結(jié)構(gòu)進行修改,提出的訓(xùn)練策略是否可以提高整體準確性。其次,我們進行文本分類實驗,實驗中訓(xùn)練了三個模型,并執(zhí)行了模型集成。我們希望驗證,如果添加的網(wǎng)絡(luò)無法顯著提高準確性,但可以通過模型集成來提高效果。最后,我們進行了文本語義相似性測試,實驗結(jié)果表明,如果可以定制一個專門適合于預(yù)訓(xùn)練語言特征的網(wǎng)絡(luò),則可以期待更大的改進。
(二) 實驗A:序列標注
在序列標記任務(wù)中,我們使用共享基準數(shù)據(jù)集CoNLL03數(shù)據(jù)集探索實體識別子任務(wù)。相關(guān)文獻在此數(shù)據(jù)集上測試了它們的新網(wǎng)絡(luò)結(jié)構(gòu)。該實驗以僅對BERT進行fine-tune(即方法FT-NTM)的結(jié)果為baseline,對比了在BERT基礎(chǔ)上增加一個傳統(tǒng)用于NER任務(wù)的Bi-LSTM網(wǎng)絡(luò)(即方法FT-TM)的效果,實驗結(jié)果如表2中所示。
實驗結(jié)果表明,結(jié)合BERT的fine-tune和上層神經(jīng)網(wǎng)絡(luò)的FT-TM算法在該任務(wù)上的F1值較baseline提升了近7個百分點。
(三)實驗B:文本分類
在文本分類任務(wù)中,我們使用了Yahoo Answer分類數(shù)據(jù)集. Yahoo Answers由10個類構(gòu)成,但是由于數(shù)據(jù)集數(shù)量巨大,我們只選擇其中兩個。對于上層模型,我們選擇DenseNet和HighwayLSTM。
DenseNet結(jié)構(gòu)包含四個獨立的塊,每個塊具有四個通過殘差連接的CNN。我們使用BERT初始化詞表示層中的詞嵌入。我們將每個字符初始化為768維向量。在訓(xùn)練DenseNet的實驗中,我們將使用[CLS]進行預(yù)測的DenseNet輸出向量,隱藏大小設(shè)置為300。在所有實驗中,我們還使用了dropout技巧以避免每個完全連接的層過度擬合,并將dropout率設(shè)置為0.5。
實驗結(jié)果如表3中所示,可以看出,雖然模型集成后的效果并不十分明顯,但也有一定的效果提升。
(四)實驗C:句子語義等價任務(wù)
我們使用“Quora-Question-Pairs”標準數(shù)據(jù)集,這是一個包含40萬個問題對的數(shù)據(jù)集,人工注釋是否等效。 由于數(shù)據(jù)集的質(zhì)量很高,它是測試各種語義相似性模型效果的標準數(shù)據(jù)集,相關(guān)文獻提出了在該數(shù)據(jù)集上進行效果測試的各種模型。我們提出的FT-TM算法在公開的Quora數(shù)據(jù)集達到了目前的Stateof-the-art,這個數(shù)據(jù)集包括了超過400,000問題組,專門用來研究兩個句子是否語義等價的二分問題。因為該數(shù)據(jù)集的標注質(zhì)量非常高,它經(jīng)常用來測試語義理解的模型效果,我們按照7:2:1的比例來分配訓(xùn)練集、驗證集和測試集。
本次實驗將僅對BERT進行fine-tune的方法FTNTM為baseline,對比了在BERT之后接BIMPM網(wǎng)絡(luò)的效果。同時以方法NFT-TM為baseline,對比了兩種改進BIMPM之后模型結(jié)構(gòu)的效果(移除BIMPM中的第一層Bi-LSTM模型和將BIMPM的matching層與transformer相結(jié)合的模型)。注意,在模型訓(xùn)練時有個重要的技巧,考慮到預(yù)訓(xùn)練模型本身的效果和其與頂層模型的融合問題,在訓(xùn)練模型時,需要分兩步進行:先固定預(yù)訓(xùn)練模型的參數(shù),僅訓(xùn)練其上層特定任務(wù)網(wǎng)絡(luò),第二步再將整個網(wǎng)絡(luò)聯(lián)合訓(xùn)練。實驗結(jié)果如表4中所示,可以看出,由實驗結(jié)果可得,Bert+SimTransformer結(jié)合fine-tune Bert的FT-TM算法效果相較僅對BERT進行fine-tune的方法FT-NTM,準確率提升了近5個百分點,達到了目前的State-of-the-art。
為了確保實驗結(jié)論的有效性,除去Quora的數(shù)據(jù)集之外,我們還采用了SLNI數(shù)據(jù)集當中包含句子等價性的數(shù)據(jù)集,該數(shù)據(jù)集包括55萬條訓(xùn)練集和10000條測試集。很多學(xué)者都用了這些數(shù)據(jù)來測試他們的模型包效果,對比這些模型,F(xiàn)T-TM算法的準確率上有將近兩個點的提升,達到了目前的State-of-the-art,具體實驗結(jié)果如下表所示:
因此,從上面一系列的實驗結(jié)果可以看出,我們提出的結(jié)合上層復(fù)雜模型和fine-tune的算法FT-TM是有效的,并且在NLP任務(wù)中優(yōu)于fine-tune的算法FTNTM,同時在BERT預(yù)訓(xùn)練模型上面集成的神經(jīng)網(wǎng)絡(luò)模型好壞也會影響到最終的任務(wù)效果。
在NLP的預(yù)訓(xùn)練語言模型時代,針對已有的兩種主流算法NFT-TM和FT-NTM,本文提出了一種新算法FT-TM,它首先在BERT的基礎(chǔ)上建立一個上層神經(jīng)網(wǎng)絡(luò)(LSTM或者CNN等等),然后在適當?shù)牟呗韵聦烧哌M行同時訓(xùn)練,該算法融合了NFT-TM和FT-NTM兩種算法的優(yōu)勢,通過一系列NLP任務(wù)的實驗結(jié)果表明,新算法FT-TM能取得更好的效果,而且在公開的Quora和SLNI兩個問題語義等價數(shù)據(jù)集上,新算法FT-TM的效果都達到了目前的State-of-the-art。
作者單位:北京百分點信息科技有限公司