顏俊琦,孫水發(fā),吳義熔,裴 偉,董方敏
(1. 三峽大學 智慧醫(yī)療宜昌市重點實驗室,湖北 宜昌 443002;2. 三峽大學 計算機與信息學院,湖北 宜昌 443002)
當前,自然語言文本表示模型大多采用預訓練加微調(diào)的架構,即先使用深度網(wǎng)絡進行無監(jiān)督學習(預訓練),學習到自然語言中的復雜語義信息之后,再針對不同的下游任務進行特定的有監(jiān)督訓練(微調(diào))。預訓練是下游任務學習通用表征中的重要一環(huán),它決定了下游任務模型的泛化能力。BERT[1]和GPT[2]是其中的代表性模型,在各項自然語言處理任務中都表現(xiàn)優(yōu)異,顯示出預訓練模型對文本語義的良好表征能力。它們分別采用自編碼語言模型任務和自回歸語言模型任務作為預訓練任務,兩者都可以視為通過隱藏部分訓練語料,利用未隱藏的部分還原隱藏的部分,模型任務的目標是最大化文本序列的聯(lián)合概率密度。相較于BERT,GPT的缺點是只用到單向的上下文信息,而實際上文本蘊涵的信息總是與上下文內(nèi)容都相關。
然而,使用最大似然估計導出的目標函數(shù)進行模型訓練存在損失函數(shù)和評測指標不匹配(Loss mismatch)[3]、負例多樣性被忽視(Negative diversity ignorance)[4]等問題。損失函數(shù)和評測指標不匹配是指在語言模型任務中,采用最大似然估計導出的交叉熵損失函數(shù)進行訓練,模型的評價標準則采用困惑度或者模型在其他自然語言任務中的性能指標,但優(yōu)化損失函數(shù)不意味著最終的評測指標會相應地提高。為此,本文提出采用對抗訓練方式,生成器的訓練目標是生成更真實的文本而不是最大化文本序列的聯(lián)合概率密度,使得訓練目標與評測指標相統(tǒng)一。另外,本文借鑒強化學習(Reinforcement Learning,RL)的基本思想,將語言模型任務看作一個馬爾可夫決策過程,詞的上下文信息是當前時刻的狀態(tài)S,對詞的預測是策略π,生成的文本真實性是獎勵函數(shù)p,提出結合強化學習的預訓練語言建模方法。引入強化學習可以使得生成器探索可供替代但不會使得概率最大化的“選項”,使得生成的結果更具多樣性;同時對于不同錯誤預測,獎勵值r也會不同,有助于解決負例多樣性被忽視的問題。由于語言模型任務屬于無監(jiān)督任務,不存在強化學習中的獎勵機制,因此本文提出利用Actor-Critic算法[5]進行強化學習訓練模型,將用于語言模型任務的神經(jīng)網(wǎng)絡視作Actor網(wǎng)絡,訓練一個額外的Critic網(wǎng)絡對預測的字符進行“評分”。語言模型任務上,采用XLNet[6]提出的排列語言模型任務。排列語言模型任務不僅同掩碼語言模型任務一樣,利用雙向信息進行字符預測,還保留了自回歸語言模型任務逐詞預測的形式,與馬爾可夫決策過程相匹配。對于Critic網(wǎng)絡,其訓練任務為判斷輸入的文本序列的每個字符是否為真實字符,并給出概率值,從而提供有效的反饋信號,指導Actor網(wǎng)絡生成更真實、更難以被Critic網(wǎng)絡辨識出的文本。
本文的主要貢獻如下:
(1) 提出了基于對抗網(wǎng)絡預訓練語言建模方法,通過對抗網(wǎng)絡生成器和判別器的相互促進作用,強化生成器對語義的理解,提高了模型的學習能力。
(2) 利用強化學習方式,有效克服了生成器訓練過程中損失無法直接進行回傳的問題,并通過設置獎勵函數(shù)增強了文本語義特征表達。
上述改進使得所提方法在GLUE Benchmark任務集上取得了很好的成績,在六個任務中排名第1;在SQuAD 1.1任務上也取得了較好成績。
預訓練方法被廣泛應用于文本的上下文表征學習中,而預訓練任務決定了模型在各項任務中的泛化能力和性能[7]。BERT采用掩碼語言模型任務作為預訓練任務,在多項任務中取得顯著成果。由于生成任務的訓練過程與掩碼語言模型任務的訓練過程不一致,BERT不適合直接用于文本生成。為解決這個問題,MASS[8]采用序列到序列(Seq2Seq)結構[9],在預訓練時利用編碼器對隨機掩碼的語句進行編碼,利用解碼器預測掩碼字符。UNILM[10]則利用注意力掩碼矩陣實現(xiàn)在同一網(wǎng)絡結構下完成雙向語言模型任務、單向語言模型任務和序列到序列語言模型任務。類似地,XLNet提出排列語言模型任務,利用注意力掩碼矩陣實現(xiàn)以隨機順序進行自回歸形式下的文本生成[6]。另外該方法也不需要像BERT那樣引入[MASK]特殊字符,緩解了預訓練階段與微調(diào)階段的訓練差異。
文本生成類任務通常采用Seq2Seq模型,優(yōu)點是不限制輸入文本和生成文本的長度,缺點是在文本生成過程中只考慮當前語境,忽視了對未來文本的影響。通過強化學習方法引入人工定義的獎懲機制,使得模型能夠更重視遠期影響,提升文本整體的質(zhì)量。在對話生成任務中,容易出現(xiàn)無意義的回復以及死循環(huán)對話,Li等[11]提出新的獎勵值計算方法,通過調(diào)節(jié)獎勵值來鼓勵生成更容易被響應、語義連貫性更強的語句,生成區(qū)分度更大的對話。Ranzato等[12]提出MIXER訓練算法,將強化學習和一般的Cross-Entropy訓練相混合,使用BLEU分數(shù)[13]作為模型的訓練指標訓練模型。類似地,Bahdanau等[14]基于Actor-Critic算法,使用Critic網(wǎng)絡輸出的與具體任務相關的期望分數(shù)作為訓練指標。由于在完整的句子生成后再利用Critic網(wǎng)絡進行判別,容易出現(xiàn)模式下降(Mode Dropping)[15],使得生成的句子具有高度相似性。對此,F(xiàn)edus等[16]提出在詞級別上進行判別,訓練Actor網(wǎng)絡還原被隨機掩蓋部分詞的原句子,訓練Critic網(wǎng)絡判斷輸出的詞是否正確,判斷正確與否作為Actor網(wǎng)絡的訓練指標。
生成對抗網(wǎng)絡GAN(Generative Adversarial Network)常用于圖像生成[17],在文本生成領域由于在文本生成的過程中存在采樣的過程,導致最終的損失無法直行回傳,訓練無法進行。Zhang等[18]提出以LSTM作為GAN的生成器,以CNN作為GAN的判別器,并使用光滑近似的思想逼近生成器LSTM的輸出,從而解決離散導致的梯度不可導問題。Yu等[19]提出SeqGAN模型,使用策略梯度算法訓練生成器,使用判別器對策略進行打分。
強化學習方法和生成對抗網(wǎng)絡有效提高了文本生成類任務的性能,而排列語言模型任務能夠天然擬合生成類任務。因此本文希望將強化學習方法和生成對抗網(wǎng)絡引入到模型訓練中,強化語義的理解,提高文本的表征能力。
GPT和BERT都有各自的優(yōu)缺點[6]:
(1) 獨立性假設: BERT沒有考慮到掩碼之間的相關性,是對語言模型任務聯(lián)合概率的有偏估計。
(2) 輸入噪聲: BERT預訓練階段的特殊字符[MASK]并不會出現(xiàn)在微調(diào)階段,會造成兩階段不匹配問題。
(3) 上下文依賴: GPT僅能利用單向的上下文信息,而BERT用到了文本的雙向信息。
為了能同時保留兩種語言模型的優(yōu)點, XLNet的目標是從輸入文本的所有重排列方式中抽取一種,將排列后序列中部分字符作為預測目標,訓練模型利用其他字符以及目標的位置信息進行逐個詞的預測。這樣既不會引入特殊字符,不會有獨立性假設和輸入噪聲問題,同時由于改變了排列順序,預測詞的上文部分不僅有原始文本中的該詞的上文信息,同時包含了下文信息,這使得在預測時能用到上下文信息。
本文采用對抗訓練方式,生成器(Actor網(wǎng)絡)完成排列語言模型任務,預測選定字符;訓練判別器(Critic網(wǎng)絡)預測生成詞是否正確。判別器通過對現(xiàn)有樣本進行語義學習,基于強化學習方法,指導生成器的語言建模,提高生成器對語義的理解和表達能力。
2.1基于雙流注意機制的Actor網(wǎng)絡
Actor網(wǎng)絡完成與XLNet相同的排列語言模型任務,基于注意力掩碼矩陣確定文本序列中需要預測的詞以及預測時能利用到的上下文信息,對預測詞給出可能的概率分布。網(wǎng)絡結構如圖1所示。
圖1 Actor網(wǎng)絡結構圖
假設z是輸入序列的一種隨機排列方式,xzt為該種排列下的第t個字符,而xz 圖2 在某種重排列方式下的注意力掩碼矩陣 (1) (2) 全連接層Linear將Transformer-XL層提取到的特征輸出映射到一個維度和詞表大小相同的向量上,再通過Softmax層將得到的特征向量轉化為此表中每個單詞的概率。為了增加Actor網(wǎng)絡生成的多樣性,對概率最大的10個詞按照概率大小進行隨機采樣,將采樣到的詞作為x′t,生成該詞的概率作為pt。 Critic網(wǎng)絡使用Transformer-XL作為特征提取器,將Actor網(wǎng)絡生成的文本序列轉化為特征向量,通過全連接層進行分類任務,判斷序列中字符是否正確,輸出字符正確的概率值,得到概率列表ρ。網(wǎng)絡結構如圖3所示。 圖3 Critic網(wǎng)絡與Baseline網(wǎng)絡結構圖兩個網(wǎng)絡共享Transformer-XL層 Baseline網(wǎng)絡用于計算基準線b,它僅僅與狀態(tài)s有關,與動作無關。由于Critic網(wǎng)絡也通過分析狀態(tài)(已經(jīng)生成的上下文)得到近似的動作-價值函數(shù),兩者都有對狀態(tài)的信息提取過程。因此為了加快訓練過程,減少訓練量,Baseline網(wǎng)絡與Critic網(wǎng)絡共享Transformer-XL層參數(shù)。通過全連接層,特征向量轉化為一維序列向量基準線b。 我們采用類似于生成對抗網(wǎng)絡的訓練方式進行模型訓練,Actor網(wǎng)絡盡可能正確預測選定的字符,Critic網(wǎng)絡則盡可能找到文本序列中由Actor生成的錯誤字符。令Actor網(wǎng)絡G、Critic網(wǎng)絡D、Baseline網(wǎng)絡B的網(wǎng)絡參數(shù)分別表示為θ、φ、τ。在Actor-Critic算法中,Actor網(wǎng)絡的訓練目標是找到最佳策略π,使得累積獎勵最大,優(yōu)化方式是計算策略梯度?θJ(θ)來更新參數(shù)θ,如式(3)、式(4)所示。 其中,πθ(s,a)表示策略函數(shù),在狀態(tài)s下采取動作a的概率;Q(s,a)為狀態(tài)-動作值函數(shù),表示在狀態(tài)s下采取動作a得到的系統(tǒng)獎勵;α為學習率。可以發(fā)現(xiàn),在θ的更新過程中,高價值動作出現(xiàn)的概率增多,低價值動作出現(xiàn)的概率減少。 本文使用Actor網(wǎng)絡作為決策器,狀態(tài)s由上下文信息xz (5) Gθ(x′t)表示Actor網(wǎng)絡生成x′t的概率。 使用Critic網(wǎng)絡作為打分器,狀態(tài)s由xz (6) 由于使用了深度神經(jīng)網(wǎng)絡模擬參數(shù)化的策略函數(shù)πθ(s,a)與參數(shù)化的狀態(tài)-動作值函數(shù)Qφ(s,a),是真實策略梯度的近似,會引入偏差,導致最后無法收斂到一個合適的策略。同時,由于采用判別器對生成字符為正確的概率作為強化學習中的獎勵部分,始終是非負的。這一方面使得獎勵的區(qū)分度不夠大,難以對生成器產(chǎn)生的不佳結果進行懲罰,另一方面變相鼓勵了生成器生成更長而不是更合適的文本,容易導致模式崩潰(model collapse),生成某類單一的結果。因此,給狀態(tài)值函數(shù)添加基準線b,則策略梯度表示如式(7)所示。 (7) 為了保證不改變梯度本身,基準線b僅僅與狀態(tài)s有關,與動作無關,這里用Baseline網(wǎng)絡計算得到。Baseline網(wǎng)絡的損失值,如式(8)所示。 (8) (9) 我們希望Critic網(wǎng)絡對于正確的字符給出高概率值(更大的獎勵),對于錯誤的字符給出低概率值(更小的獎勵),同時對于不同的錯誤字符給出差異化的概率值以鼓勵多樣化的字符生成。訓練按照如圖4所示的算法進行,網(wǎng)絡的參數(shù)初始化符合特定分布,數(shù)據(jù)預處理后進入網(wǎng)絡訓練,設置小批量更新網(wǎng)絡的權重和偏差。訓練過程中,各模型參數(shù)需要分別進行更新,以免影響語義表示的學習。 算法1: Actor-Critic算法訓練算法數(shù)據(jù): 語料集輸入: 短文本S1 初始化Actor網(wǎng)絡G、Critic網(wǎng)絡D、Baseline網(wǎng)絡B的網(wǎng)絡參數(shù)θ、φ、τfor epoch=0→Max_Iters do2 for each mini-batch {S←DataSet} do3 構造注意力掩碼矩陣WC,WQ;4 S,P←G(S);5 ρ←D(S);6 b←B(S);7 由式(9)計算Critic網(wǎng)絡D的損失值LD;8 反向計算Critic網(wǎng)絡的超參數(shù)梯度,并更新參數(shù)φ;9 由式(7)計算Actor網(wǎng)絡G的策略梯度,并更新參數(shù)θ;10 由式(8)計算Baseline網(wǎng)絡的損失值LB;11 反向計算Baseline網(wǎng)絡的超參數(shù)梯度,并更新參數(shù)τ;12 end13 end Actor網(wǎng)絡在輸出文本序列時對于沒有被選定預測的詞,使用初始的詞,只將選定預測的詞替換為Actor網(wǎng)絡預測的詞,這樣在Critic網(wǎng)絡中對每個詞的真實性進行判斷時,根據(jù)的是真實的上下文信息,能提供正確的指導信息幫助Actor網(wǎng)絡優(yōu)化。 由于排列語言模型任務相較于判別任務難度更大,使得Actor網(wǎng)絡初始生成的文本質(zhì)量較差,Critic網(wǎng)絡能很容易發(fā)現(xiàn)更改詞,甚至將輸入全部判定為錯誤詞。這將導致Actor網(wǎng)絡得到的獎勵極小,發(fā)生梯度消失,Actor網(wǎng)絡得不到訓練。對此,Actor網(wǎng)絡先進行基于最大似然估計的排列語言模型訓練。 為了避免Critic網(wǎng)絡的損失很快收斂為零,從而沒有足夠強的梯度路徑可以繼續(xù)更新生成器,在訓練時采用軟標簽[20]的訓練技巧,令真樣本的標簽為0.9,假樣本的標簽為0.1。這樣的方法有助于使判別器的分類邊界變得平滑,從而阻止判別器過于自信,為生成器提供較差的梯度。 有研究表明[21],BERT編碼了豐富的語言學層次信息: 底層網(wǎng)絡主要捕捉簡單的短語級別結構信息,中間層網(wǎng)絡主要捕捉句法信息特征,語義信息特征在高層網(wǎng)絡。我們希望Critic網(wǎng)絡多從語義信息中找出更改詞,使用Actor網(wǎng)絡中Transformer-XL層的高層網(wǎng)絡部分初始化Critic網(wǎng)絡的Transformer-XL層。初始化后對模型中的三個網(wǎng)絡采用交替訓練的方式,當一個在訓練時,凍結其他網(wǎng)絡的參數(shù)。 為了驗證基于強化學習的對抗預訓練語言建模方法可以進一步提高預訓練模型的性能,將本模型與BERT模型和XLNet模型進行比較,采用通用語言理解評估基準(GLUE Benchmark)[22]和斯坦福問答任務(SQuAD 1.1)[23]。GLUE包含九項NLU任務,分別是CoLA文本語法可接受性分類、SST-2電影評論情感分類、MRPC語義等效性分類、STS-B語義相似性分類、QQP語義等效性分類、MNLI句子對關系分類、QNLI句子對蘊涵關系分類、RTE句子對蘊涵關系分類、WNLI句子對代詞消解判斷。其中WNLI數(shù)據(jù)集數(shù)量較少且訓練集與測試集分布不同,因此在本實驗中不作為評價指標。模型代碼與測試代碼都基于預訓練模型庫Transformers開發(fā)編寫。 對于CoLA任務,由于正負樣本分布不均衡,使用Matthews相關系數(shù)作為評價指標。計算如式(10)所示。 MCC= (10) 其中,TP表示真正例,TN表示真反例,F(xiàn)P表示假正例,F(xiàn)N表示假反例。Matthews相關系數(shù)用于衡量二分類任務中真實類別和預測類別之間的相關系數(shù),值介于-1和1之間。-1表示預測類別與真實類別完全相反,1表示完全正確預測。Matthews相關系數(shù)越大,表明模型分類效果越好。其他任務均采用準確率作為指標。 對于STS-B任務,由于該任務為回歸任務,使用Spearman相關系數(shù)作為評價指標,用于衡量模型與真實分布之間的差異,取值范圍為[-1,1],絕對值越大相關性越強。計算如式(11)所示。 (11) 其中,假設句子對集合{Si},對于每對句子之間的相似度,人工評價得分為集合{Xi},模型評價得分為集合{Yi}。構造新集合{xi}、{yi},xi為Xi在集合{Xi}按序排列時的等級值,yi為Yi在集合{Yi}按序排列時的等級值。 對于斯坦福問答任務,模型需要根據(jù)問題在原文中找到答案的范圍,采用完全匹配率(Exact Match,EM)和F1值。完全匹配率表示在所有問題中,模型回答與標準答案完全匹配的問題所占比例。F1值的計算如式(12)所示。 (12) 其中,TP表示模型回答與標準答案匹配的字符數(shù),F(xiàn)P表示只出現(xiàn)在模型回答中的字符數(shù),F(xiàn)N表示只出現(xiàn)在標準答案中的字符數(shù)。 其他任務均采用準確率作為指標。 考慮到算法性能比較需要及運算資源有限,訓練語料集分別采用大語料數(shù)據(jù)集BooksCorpus[24]、英文Wikipedia(訓練到4輪截止)和小語料數(shù)據(jù)集WikiText-103[25](訓練到40輪截止)。實驗中BERT、XLNet、RL-XLNet三個模型基本使用相同的超參數(shù),模型隱藏節(jié)點數(shù)為768,全連接層隱藏節(jié)點數(shù)為3 072,自注意力頭數(shù)為12,輸入文本最大長度為256。區(qū)別在于Transformer-XL層數(shù),BERT與XLNet使用12層的Transformer-XL網(wǎng)絡,RL-XLNet的Actor模塊使用10層的Transformer-XL網(wǎng)絡,Critic模塊與Baseline模塊使用2層的Transformer-XL網(wǎng)絡,同時這兩個模塊共享Transformer-XL層參數(shù)。 BERT模型與XLNet模型均采用原始論文中的訓練方式進行預訓練。RL-XLNet先采用與XLNet模型同樣的排列語言模型任務對Actor模塊進行兩輪訓練,再訓練Critic模塊至模型精度基本穩(wěn)定,然后以Actor模塊、Critic模塊、Baseline模塊的順序完成訓練(視作一輪),再輪流訓練至結束。 表1和表2為模型在大語料集上的訓練結果。其中加粗表明性能最優(yōu)的結果,下劃線表示性能次優(yōu)結果(后續(xù)同)。BERT-4表示經(jīng)過4輪訓練后的BERT模型,RL-XLNet-2.5表示經(jīng)過2.5輪訓練后的RL-XLNet模型,其他以此類推。 表1 大語料集下GLUE任務集上實驗結果統(tǒng)計 表2 大語料集下SQuAD 1.1任務集上實驗結果統(tǒng)計 從表1可以看出,在CoLA任務上RL-XLNet表現(xiàn)不佳,可能是由于CoLA中某些負例(不合語法的句子)錯誤并不嚴重,仍能正確地表達語義信息。而RL-XLNet在完成語言任務時更傾向于生成多樣化的詞,因此不適宜嚴謹?shù)恼Z法判斷。RL-XLNet在RTE和QNLI上取得各模型中的最佳效果而在MNLI任務集上卻取得較差的結果。對比這三類任務,它們同為自然語言推斷任務,不同的是在MNLI任務集中為三分類任務,標簽分別為中立、矛盾、蘊涵,而在RTE任務集中將中立和矛盾歸為一類,QNLI中也僅有蘊含和不蘊含兩類。據(jù)此推測可能是由于RL-XLNet對詞的語義刻畫精確性不強,在基于需要準確語義進行推理的任務上不能很好地分辨語義的區(qū)別,使得RL-XLNet在中立和矛盾標簽上的分類并不準確。 模型在SQuAD 1.1上的效果如表2所示,RL-XLNet在EM項上排名第二,在F1項上排名第一。EM指標表征模型精確查找答案的能力,而F1指標則更側重模型的整體性能。這表明RL-XLNet可能更擅長根據(jù)問題在原文中找到關鍵信息,而對修飾補充性的信息則不容易把握其重要性,使得在確認答案位置時往往遺漏邊緣詞,在EM指標上沒能得到第一。 表3、表4顯示了模型訓練40輪的結果。在與其他工作原文相同的訓練輪數(shù)的情況下,RL-XLNet仍在多項任務指標中取得第一。 表3 小語料集下GLUE任務集上實驗結果統(tǒng)計 表4 小語料集下SQuAD 1.1任務集上實驗結果統(tǒng)計 綜合表1~表4,RL-XLNet的性能普遍好于BERT模型與XLNet模型。由表1可以看出,RL-XLNet分別在3 epoch和3.5 epoch的時間步時就在大部分項目上超過了訓練完整4輪的BERT模型與XLNet模型,訓練輪數(shù)更少。在GLUE的8個任務中,有六個任務排名第1,一個任務排名第2。而在SQuAD 1.1數(shù)據(jù)集上,F(xiàn)1指標取得第1。 BERT的缺點是在訓練過程中引入的特殊字符[MASK],并不會出現(xiàn)在微調(diào)階段,使得預訓練階段與微調(diào)階段不一致。XLNet與RL-XLNet采用雙流自注意力機制,避免了特殊字符的引入,因此在多項任務中優(yōu)于BERT。相較于XLNet,本模型采用強化學習,在完成語言模型任務中有更多樣的預測結果,使得語義相近的詞在模型中有更接近的表征,因此在各項任務中性能均有顯著提升,顯示了強化學習方法對模型的提升作用。 在模型大小方面,我們僅使用Actor模塊作為特征提取器運用在微調(diào)階段以及下游任務中,由表5可以看出,參數(shù)量只有93.6M,小于BERT (110M)和XLNet(117M)。 表5 各模型參數(shù)量 本文提出了一種基于強化學習的預訓練語言模型RL-XLNet。為構建該模型,根據(jù)Actor-Critic算法構建了三個神經(jīng)網(wǎng)絡模塊,用作近似強化學習中的策略函數(shù)、動作價值函數(shù)、基準函數(shù),并采用生成對抗網(wǎng)絡形式訓練模型。 通過這種方法為生成器完成語言模型任務提供了更多的信息指導,有助于預訓練模型掌握語料中的知識與信息。最后,利用通用語言理解評估基準數(shù)據(jù)(GLUE Benchmark)和斯坦福問答任務(SQuAD 1.1)進行了實驗,結果顯示,本模型取得了較為理想的效果,證明了基于強化學習的對抗預訓練語言建模方法可以有效地推動預訓練模型性能提升。未來可以考慮利用其他強化學習算法如MuZero[26]等對現(xiàn)有模型做進一步改進。另外,本文構造了一個鑒別器作為強化學習的打分器,未來可以考慮利用其他指標更好地衡量生成效果。2.2 共享Transformer-XL層參數(shù)的Critic網(wǎng)絡和Baseline網(wǎng)絡
2.3 Actor-Critic算法在語言模型預訓練的實現(xiàn)
3 實驗結果及分析
3.1 評價指標
3.2 實驗設置
3.3 實驗結果
4 總結