曹 航,胡 馳,肖 桐,王成龍,朱靖波
(東北大學(xué) 自然語言處理實驗室,遼寧 沈陽 110819)
機器翻譯是自然語言處理中的重要分支,其目標是把一種自然語言(源語言)自動翻譯成另一種自然語言(目標語言)。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,神經(jīng)機器翻譯逐漸成為了主流范式,它通過基于編碼器-解碼器的框架實現(xiàn)了語言之間的轉(zhuǎn)化,在性能上表現(xiàn)出了顯著的優(yōu)越性。大多數(shù)神經(jīng)機器翻譯模型采用自回歸神經(jīng)機器翻譯(Autoregressive Neural Machine Translation,ART)模型從左到右逐詞生成譯文,這使得解碼的速度比較慢,盡管有一些工作提出的模型如CNN[1]、Transformer[2]等加快了訓(xùn)練階段的速度,但是自回歸的特性仍然限制了模型在推斷階段的并行化。為了緩解這個問題,Gu等人[3]提出了Non-Autoregressive Transformer(NAT)的概念,用非自回歸神經(jīng)機器翻譯(Non-Autoregressive Neural Machine Translation, NART)模型并行生成完整目標語言,并明顯加快了推斷速度。然而,由于NART沒有考慮目標語言句子中各個詞匯之間的依賴關(guān)系,導(dǎo)致在翻譯質(zhì)量方面與ART相比有很大差距。
近年來,很多研究人員被NART的潛力吸引,提出了一系列的工作[4-7]提高NART的生成質(zhì)量。但目前仍然缺少對NART現(xiàn)有方法的全面梳理和總結(jié)。在我們的調(diào)查中,一部分工作只對NART的概念進行了介紹[8]。而與本文工作相似的現(xiàn)有綜述[9]把NART流程模塊化,根據(jù)每個模塊進行介紹,并對非自回歸在其他任務(wù)中的應(yīng)用進行了擴展。但是他們?nèi)鄙賹Σ煌椒▋?yōu)缺點的分析。而我們主要從捕獲目標序列之間依賴關(guān)系的角度對NART方法進行了分類,側(cè)重于對非自回歸機器翻譯方法的介紹,總結(jié)了相應(yīng)方法的優(yōu)缺點,并增加了最新的相關(guān)論文。同時,為了幫助研究人員快速查閱資料,了解該領(lǐng)域的研究進展,本文整合了收集到的非自回歸相關(guān)論文,并按照時間、方法以及會議進行了仔細的標注(1)地址為: https://github.com/LittleRooki/NAT-survey。
本文的組織結(jié)構(gòu)如下: 第1節(jié)簡要介紹ART和NART的背景;第2節(jié)總結(jié)分析NART的研究進展;第3節(jié)展望NART未來的研究方向;第4節(jié)總結(jié)全文。
本節(jié)主要介紹了ART和NART的概念,分析了它們的特點和問題,并對提升NART翻譯質(zhì)量所面臨的挑戰(zhàn)進行了闡述。
ART指的是按照從左到右的順序逐字生成譯文,如圖1(a)所示。具體地,給定一個輸入的源語言序列X={x1,…,xm},使用ART模型從左到右地生成輸出譯文序列Y={y1,…,yn}的概率表示如式(1)所示。
圖1 ART和NART的解碼對比圖
其中,yi表示當前的輸出譯文單詞,y
盡管這種自回歸的解碼方式在很多任務(wù)上取得了成功,但存在一些結(jié)構(gòu)上的問題:
(1) 存在錯誤累積的特性,即前面產(chǎn)生的錯誤會隨著句子生成往后傳遞,翻譯質(zhì)量常常隨著句子的長度增加而下降。
(2) ART模型的自回歸性使得只能串行生成譯文,導(dǎo)致解碼效率較低。
NART移除了翻譯的自回歸性,對每個目標詞的生成進行獨立建模,不再依賴之前的譯文輸出,解決了ART模型結(jié)構(gòu)存在的問題,如圖1(b)所示。對NART模型的譯文概率建模如式(2)所示。
其中,yi表示當前的輸出譯文單詞。顯然,在NART模型中當前位置的輸出只依賴于輸入的源語言句子,與其他位置的輸出無關(guān)。
這種非自回歸的解碼方式使得翻譯的速度成倍提升,但是由于假設(shè)獨立性過強,忽視掉了目標句子間的依賴關(guān)系,導(dǎo)致生成的句子重復(fù)或者缺失,使得翻譯的質(zhì)量大幅下降。
根據(jù)以上概念,NART模型只能依靠源語端的信息來生成目標語,這大幅增加了模型的訓(xùn)練和推斷難度。所以與ART模型相比,NART模型仍然面臨以下的主要挑戰(zhàn)。
(1) 如何確定解碼端的輸入。ART模型的解碼端輸入來自于上一步解碼出的結(jié)果,然而NART模型缺少了這樣的依賴性,所以在NART模型中的一個關(guān)鍵問題是如何確定解碼端的輸入。
(2) 如何確定目標序列的長度。ART模型中可以根據(jù)輸出的截止符(
(3) 如何解決多峰問題?,F(xiàn)有的NART模型與ART模型相比,翻譯質(zhì)量還有很大差距的一個主要原因是存在多峰問題。所謂的多峰問題是在給定原文時,用于參考的目標詞的概率具有多峰性,更通俗的來講就是一個源語對應(yīng)多個意思相同的目標語。一個簡單漢譯英的例子,源語“干得好!”可以翻譯成“Good job!”或者“Well done!”,ART模型因為是順序生成,所以很容易獲取目標語之間的依賴關(guān)系,得到正確譯文。但是由于NART模型的條件獨立假設(shè),第一個位置生成的詞并不會影響第二個位置生成詞的概率,這就會使得模型生成“Good done !”或者“Well job !”這樣的錯誤譯文。
自從NART的概念被提出后,各種NART模型層出不窮,它們的研究趨勢是在保持速度優(yōu)勢的同時獲得與ART模型相當甚至更好的翻譯質(zhì)量。提升NART翻譯質(zhì)量的方法主要包括: ①改善訓(xùn)練數(shù)據(jù)的方法;②基于迭代的方法;③引入隱變量的方法;④改進訓(xùn)練目標的方法;⑤用自回歸模型輔助非自回歸模型的方法;⑥其他改進方法。它們從不同的角度來學(xué)習(xí)目標序列中缺失的依賴關(guān)系。具體地,改善訓(xùn)練數(shù)據(jù)的方法從知識蒸餾的角度減少訓(xùn)練數(shù)據(jù)的復(fù)雜度,基于迭代的方法采用多次迭代生成的方式優(yōu)化輸出,引入隱變量的方法通過隱變量來建模目標序列之間的關(guān)系,改進訓(xùn)練目標的方法是去找到一個更適合的損失函數(shù),用自回歸模型輔助的方法的主要思路是轉(zhuǎn)移自回歸機器翻譯的知識,其他改進方法從半自回歸、訓(xùn)練策略以及其他方面來增強NART性能,具體如圖2所示。
圖2 NART模型的方法框架圖
接下來將詳細介紹上述方法并進一步分析和探討當前的研究和技術(shù)進展。
提升NART模型翻譯質(zhì)量最直接的方法就是使用序列級的知識蒸餾[10]。具體是使用原始數(shù)據(jù)(X,Y)訓(xùn)練一個ART模型,再通過訓(xùn)練后的ART模型對原始數(shù)據(jù)的源語X重新生成目標語Y′,最后將原始數(shù)據(jù)的目標語替換成ART模型的輸出得到新的訓(xùn)練數(shù)據(jù)(X,Y′)。 這種方法的好處是減少了訓(xùn)練數(shù)據(jù)中的噪聲和不確定性,并有效緩解了譯文的多峰問題,從而達到降低NART模型學(xué)習(xí)難度的目的。
知識蒸餾的作用為了更深層次地探索序列級知識蒸餾在NART中發(fā)揮的作用,Zhou等人[11]首先可視化不同模型的合成數(shù)據(jù)集,證明了知識蒸餾可以減少數(shù)據(jù)集中的模式,并且表明ART模型生成的數(shù)據(jù)更易于NART模型學(xué)習(xí)。他們還通過復(fù)雜度和忠實度兩種指標來衡量訓(xùn)練集,并以此分析訓(xùn)練數(shù)據(jù)的復(fù)雜性和NART模型性能之間的相關(guān)性。實驗表明,雖然知識蒸餾提高了NART模型的性能,但并不是ART模型越大、性能越好就越有益于NART模型,而是需要讓數(shù)據(jù)的復(fù)雜性和NART模型的容量相匹配才可以實現(xiàn)最佳性能。Xu等人[12]認為不同類型的復(fù)雜性具有不同的影響,他們發(fā)現(xiàn)知識蒸餾降低了詞匯多樣性和重排序復(fù)雜性,這可以幫助NART模型更好地學(xué)習(xí)源語和目標語之間的對齊。
豐富訓(xùn)練數(shù)據(jù)在知識蒸餾的啟發(fā)下,有很多工作從訓(xùn)練數(shù)據(jù)的層面對NART進行改進。Zhou等人[13]增加了一個單語語料庫來讓ART模型生成額外的雙語數(shù)據(jù),用于NART模型的訓(xùn)練,并在實驗中證明了這可以幫助NART更好地泛化。Ding等人[14]從詞匯選擇的角度探索,發(fā)現(xiàn)知識蒸餾會傳播低頻詞匯選擇錯誤,因此他們提出用KL散度把原始數(shù)據(jù)先驗集成到NART訓(xùn)練中來恢復(fù)低頻詞的有用信息。Ding等人[15]對他們上一個方法做出了進一步改進,通過原始數(shù)據(jù)預(yù)訓(xùn)練和反向蒸餾的方式充分利用平行語料來恢復(fù)低頻詞匯。Shao等人[16]認為只學(xué)習(xí)單一的參考譯文會限制NART模型的潛力,所以提出了具有可選擇參考譯文的多樣化蒸餾。他們利用隨機種子來讓模型生成多樣化的譯文,得到具有多個參考譯文的數(shù)據(jù)集,讓NART模型從多個參考譯文中選擇性地學(xué)習(xí),從而提高了模型性能的上限。Huang等人[17]通過數(shù)據(jù)集的條件總相關(guān)性來衡量目標語詞匯之間丟失的依賴信息,并采用一個統(tǒng)一的視角揭示NART實際是最大化代理分布的可能性,從而減少NART學(xué)習(xí)中的信息丟失。
隨著NART模型的不斷更新,一類基于迭代的解碼方法進入了研究人員的視野。該類方法的主要思路是,先用非自回歸的方法解碼出比較差的初始譯文,然后再把初始譯文作為解碼器的輸入得到第二次的譯文,通過多次迭代讓模型對之前的錯誤進行修改,來達到提高翻譯質(zhì)量的目的。為了更清晰地了解基于迭代方法的脈絡(luò),我們進一步根據(jù)迭代的操作方式把該類方法劃分為了四種。
迭代隱變量Lee等人[4]開創(chuàng)性地提出了基于迭代的NART模型,如圖3所示。該工作把隱變量模型解釋為一個迭代精化的過程,首先Decoder1復(fù)制源語作為第一次迭代的輸入(類似于Gu等人[3]的工作),然后再將生成的譯文的詞嵌入向量和最終激活向量序列在對應(yīng)位置相加作為Decoder2的輸入,最后重復(fù)多次迭代,直到滿足停止標準。Shu等人[5]以Lee等人[4]的研究為基礎(chǔ),提出使用連續(xù)的隱變量來捕捉目標句子中的依賴關(guān)系,并在隱變量上加入Delta后驗來增加目標詞預(yù)測的確定性,最后通過更新隱變量上的Delta后驗來完成迭代精化。Lee等人[18]優(yōu)化了他們的上一個模型[5],在連續(xù)空間中使用估計的梯度替代Delta推理完成隱變量的迭代更新。
圖3 Lee等人文中的模型結(jié)構(gòu)圖
插入刪除Stern等人[19]提出了基于插入操作(Insertion)的迭代方法,他們將需要插入的目標詞和插入的位置聯(lián)合建模作為一次插入操作,通過對初始為空的輸出序列進行重復(fù)插入操作,使得輸出序列可以動態(tài)調(diào)整,從而免去了提前預(yù)測目標序列長度的步驟。為了實現(xiàn)這種模型,Stern等人把左右相鄰的向量拼接起來得到對應(yīng)的槽表示,并將所有的槽表示作為解碼器的輸出。Gu等人[20]使用插入操作(Insertion)、刪除操作(Deletion)兩個基本操作來進行解碼。插入操作是在單詞之間插入占位符,然后用預(yù)測的實際字符來替換占位符。而相比于Stern等人[19]的工作,增加的刪除操作使得模型可以修改之前插入的錯誤單詞。
掩碼預(yù)測Ghazvininejad等人[6]參考了Devlin等人[21]的研究,把條件掩碼語言模型(Conditional Masked Language Models, CMLM)和并行解碼相結(jié)合。該工作在解碼時分為掩碼和預(yù)測兩步,首先掩碼掉整個句子,再并行預(yù)測所有單詞,隨著迭代的增加而線性減少掩碼低置信度單詞的數(shù)量,讓模型可以在雙向上下文中選擇生成更好的譯文。Kasai等人[7]對掩碼預(yù)測(Mask-Predict)方法[6]進行改進,提出了簡單優(yōu)先(Easy-First)推理方法,該方法會把所有生成的譯文單詞按照概率降序排列,根據(jù)概率更大的單詞來對所有單詞進行修改,減少了所需要的迭代次數(shù)。Ghazvininejad等人[22]為掩碼預(yù)測的解碼方法設(shè)計了更加貼合的訓(xùn)練方法,它模仿解碼的過程,對目標序列隨機掩碼,把預(yù)測出來的目標序列再次掩碼作為訓(xùn)練數(shù)據(jù)的一部分。Guo等人[23]通過實驗發(fā)現(xiàn)NART模型中的編碼器對翻譯質(zhì)量的影響更大,因此他們用BERT[21]中的策略對編碼器的輸入做掩碼操作,再讓編碼器使用掩碼之后的輸入編碼完整的輸入信息,使得對編碼器的訓(xùn)練更加嚴格。這種方法在推斷算法和Ghazvininejad等人[6]相同的情況下,獲得了更好的效果。Ding等人[24]在迭代NART模型中增加了一個局部交叉注意力模塊,對于目標詞是在注意力權(quán)重最高的源詞周圍以一個窗口的范圍做局部交叉注意力,然后通過一個門控機制把它和原始交叉注意力結(jié)合起來。Norouzi等人[25]提出了適用于迭代模型的蒸餾算法,讓學(xué)生模型在一次解碼過程中學(xué)習(xí)到教師模型(預(yù)訓(xùn)練的迭代NART模型)的多個迭代行為,在保留迭代NART模型翻譯質(zhì)量的同時還減少了迭代的次數(shù)。Geng等人[26]針對CMLM算法識別錯誤詞的問題,提出了重寫機制來明確學(xué)習(xí)重寫錯誤的翻譯片段。重寫包括定位和修改兩部分,首先利用定位器模塊定位錯誤詞匯,再對其進行掩碼和修改,明確的錯誤分類提升了解碼速度。
優(yōu)缺點分析該方法的優(yōu)點是,通過迭代的方式對譯文重復(fù)修改,大幅地提高了非自回歸翻譯的質(zhì)量,其中的一些方法逼近甚至超過了自回歸的解碼方法。缺點是,這種質(zhì)量提升讓NART模型犧牲了應(yīng)有的速度優(yōu)勢,因為使用足夠深的編碼器和單層解碼器的ART模型可以在保證譯文質(zhì)量不下降的情況下?lián)碛信c它相當?shù)乃俣萚27]。
引入隱變量的方法是當前NART的一種主流方法,它通過引入一個隱變量來建模NART模型中目標句子間缺失的條件依賴關(guān)系,然后再根據(jù)隱變量并行地生成譯文,具體如式(3)所示。
(3)
其中隱變量z可以理解為一種額外信息。
Gu等人[3]首次將非自回歸模型應(yīng)用在機器翻譯中,并提出引入隱變量的方法來緩解多峰問題,如圖4所示。Gu等人把繁衍率(Fertility)建模為隱變量,然后把源語單詞按照Fertility Predictor生成的對應(yīng)整數(shù)值進行復(fù)制,作為解碼端的輸入,而目標序列的長度就是繁衍率生成的所有整數(shù)之和,不需要額外的方法來建模。為了進一步解決訓(xùn)練數(shù)據(jù)中的不確定問題,他們采用了序列級知識蒸餾[9]的方法,用自回歸模型的輸出替換訓(xùn)練數(shù)據(jù)中的目標語句,減少了訓(xùn)練數(shù)據(jù)中的噪聲,使得非自回歸模型能夠更容易去學(xué)習(xí)。在解碼時,使用Noisy Parallel Decoding(NPD)算法,其做法是采樣多個繁衍率序列并對每個序列生成的譯文打分。除此之外,我們把使用隱變量的方法總結(jié)為以下的類別。
圖4 Gu等人文中的模型結(jié)構(gòu)圖
采用端到端的隱變量框架Kaiser[28]等人提出了端到端的Latent Transformer(LT)模型,該工作首先把目標序列自編碼為一個短的離散隱變量序列,然后在推斷時根據(jù)源語自回歸地生成離散隱變量序列,最后再從該序列并行生成譯文。Akoury等人[29]從LT模型出發(fā),對隱變量空間進行句法信息監(jiān)督學(xué)習(xí)。他們在遵循LT模型兩階段解碼設(shè)置的情況下,把短語塊序列作為離散隱變量序列。Bao等人[30]受到Kaiser等人[28]和Akoury等人[29]工作的啟發(fā),在LT模型框架下,把目標詞隱含的分類信息建模為隱變量,從而彌補了缺失的依賴關(guān)系并提高了模型容量。Roy等人[31]基于向量量化變分自編碼器(VQ-VAE)提出學(xué)習(xí)離散隱變量的訓(xùn)練技術(shù),使用最近鄰搜索來訓(xùn)練模型并利用其與期望最大化算法的聯(lián)系進一步提升性能,實現(xiàn)了與ART模型相近的效果。
建模位置信息Bao等人[32]認為位置信息在NART中至關(guān)重要,他們將位置信息建模為隱變量,在機器翻譯任務(wù)上取得了明顯的效果提升。Ran等人[33]把重排序信息建模為隱變量,在編碼器和解碼器之間增加了一個重排序模塊,重排序模塊的作用是提供重排序信息,幫助解碼器捕獲目標序列之間的依賴關(guān)系。Song等人[34]顯式建模單詞對齊信息為隱變量,利用對齊信息降低目標分布的模態(tài)。為了引導(dǎo)解碼器專注于簡單的一對一翻譯,他們通過Aligner模塊來估計對齊并生成解碼器的輸入。
建模連續(xù)隱變量除了基于離散變量的工作,建模連續(xù)隱變量也是一個主要的探索方向。Ma等人[35]提出了基于流的模型,用生成流(Generative Flow)[36]對隱變量的條件密度建模,同時這個框架也可以更好地建模復(fù)雜分布。具體來說,他們從當前的后驗中抽取隱變量z,再把z和源編碼一起作為解碼器的輸入。與之前方法不同的是,長度預(yù)測是通過分類器在一個范圍內(nèi)預(yù)測源語和目標語的長度差異。
優(yōu)缺點分析該方法的優(yōu)點是,通過引入額外的信息進行建模,模型能夠更好地捕獲依賴關(guān)系,減小了譯文的搜索空間。該方法的缺點是,對隱變量的選取以及建模并不是一項簡單的工作,而且建模隱變量會增加額外的計算代價并降低模型的翻譯速度。
訓(xùn)練目標通常不會增加解碼的次數(shù),所以也是完全NART探索的主要方向。之前的NART模型大多數(shù)都是沿用ART模型的訓(xùn)練目標使用交叉熵進行訓(xùn)練,但是對于缺乏自回歸性的NART模型來說,要求預(yù)測的每個詞都與目標詞位置對應(yīng)的交叉熵并不是最合適的,因此有很多方法開始嘗試改進訓(xùn)練目標來提高模型性能。
加入額外信息現(xiàn)有的一些工作通過增加模塊、正則化項和語法信息輔助NART模型進行訓(xùn)練和解碼,其本質(zhì)上可以看作是利用額外的信息來指導(dǎo)NART模型學(xué)習(xí)。Libovicky 和Helcl[37]將翻譯看作是一個序列標注問題,考慮到目標語可能比源語更長,他們將輸入編碼后的隱藏狀態(tài)進行線性投影,再把投影后的每個狀態(tài)按照投影的倍數(shù)分割成多個向量,最后采用CTC損失訓(xùn)練模型。Saharia等人[38]進一步地提出了Imputer模型讓預(yù)測序列與目標序列構(gòu)建映射對齊,在解碼時是對不同迭代間的依賴關(guān)系進行建模。Wang等人[39]將NART的質(zhì)量下降歸結(jié)于低質(zhì)量的解碼器隱藏狀態(tài),在解碼器的訓(xùn)練過程中加入了兩個正則化項。相似度正則化(Similarity Regularization)讓相鄰隱藏狀態(tài)的相似度和對應(yīng)相鄰目標詞的相似度對齊,而重構(gòu)正則化(Reconstruction Regularization)讓隱藏狀態(tài)重新生成源語,有效提高了解碼器隱藏表示,從而緩解了重復(fù)翻譯和翻譯不全的問題。Sun等人[40]的想法和CTC的工作[37]類似,也是將機器翻譯視為序列標注問題,區(qū)別是他們在NART模型中加入了CRF模塊,把簡單的填充符(〈pad〉)和截止符(〈eos〉)作為解碼器的輸入,并使用CRF建模輸出的多峰目標分布。Liu等人[41]認為語法和語義結(jié)構(gòu)信息對NART模型的影響至關(guān)重要,他們把連續(xù)文本和結(jié)構(gòu)標簽作為輸入,根據(jù)預(yù)測的結(jié)構(gòu)標簽得到譯文,為了捕獲目標語之間的依賴信息,他們還考慮將中間解碼器和目標語進行對齊。
使用序列級目標Shao等人[42]把強化算法應(yīng)用在NART模型中,用序列級目標替換傳統(tǒng)的交叉熵進行序列級訓(xùn)練,并把序列信息融入Decoder的頂層來引導(dǎo)目標語句的生成。Shao等人[43]認為詞級的交叉熵損失與翻譯質(zhì)量相關(guān)性低,會過度糾正NART在對應(yīng)位置生成的目標詞,而不考慮全局正確性,針對這個問題,他們提出把縮小模型輸出和目標句子的Bag-of-Ngrams(BoN)差異作為訓(xùn)練目標,以此來讓模型捕獲目標端的依賴關(guān)系。Shao等人[44]在之前的工作基礎(chǔ)上,應(yīng)用三階段訓(xùn)練策略將強化算法和BoN兩種方法結(jié)合起來,進一步提升了NART模型的性能。
減輕詞順序懲罰Ghazvininejad等人[45]從減輕交叉熵對詞順序錯誤的懲罰角度提出了對齊交叉熵損失(Aligned Cross Entropy, AXE),它采用動態(tài)規(guī)劃的方式來單調(diào)對齊模型預(yù)測輸出和目標句子,把懲罰集中在錯誤的詞上而不是詞的絕對順序。Du等人[46]進一步提出的順序無關(guān)交叉熵(Order-Agnostic Cross Entropy, OAXE),消除了對詞順序錯誤的懲罰,他們使用Hungarian Algorithm找到模型預(yù)測和目標句子的最佳對齊,相比于交叉熵和AXE,OAXE更關(guān)注詞匯的匹配,與NART的并行解碼也更兼容。不同交叉熵的對比如圖5所示。
圖5 Du等人文中的交叉熵對比圖
優(yōu)缺點分析該方法的優(yōu)點是,對訓(xùn)練目標的改進只會出現(xiàn)在訓(xùn)練過程中,而不會對推斷算法進行修改,所以不會為推斷增加額外的計算代價,相比于迭代的NART模型,這種方法在大幅提高翻譯質(zhì)量的同時還保留了NART模型的主要優(yōu)勢。該方法的缺點是,設(shè)計的訓(xùn)練目標并不是簡單的替換,通常還需要借助外部工具或者高效的實現(xiàn)算法才能獲得好的效果。
由于ART模型和NART模型的結(jié)構(gòu)相似,并且ART模型的性能更好,所以一些工作嘗試利用ART模型輔助訓(xùn)練NART模型,讓NART學(xué)習(xí)ART模型的輸出分布,以此把知識轉(zhuǎn)移到NART中,從而在只需要解碼一次的情況下提高NART模型的性能。
ART模型進行指導(dǎo)Wei等人[47]直接引入模仿學(xué)習(xí)來提升NART的性能,如圖6所示。他們把ART模型生成的動作序列分布作為監(jiān)督信號,對NART模型不同層和不同時間步的每個解碼狀態(tài)進行監(jiān)督,逐步學(xué)習(xí)ART模型的行為,有效緩解了搜索空間大的問題。Li等人[48]提出了基于提示的方法, 從ART模型中設(shè)計隱藏狀態(tài)和詞對齊的兩種提示,讓NART模型學(xué)習(xí)隱藏狀態(tài)的差異和注意力分布,以此幫助NART模型進行訓(xùn)練。Tu等人[49]將NART模型視為推斷網(wǎng)絡(luò),并給出了多種方法放松ART模型的能量(Energy),讓模型以最小化ART模型的能量進行訓(xùn)練,這種方法充分結(jié)合了自回歸能量的有效性和非自回歸的推理速度。
圖6 Wei等人文中的模型結(jié)構(gòu)圖
結(jié)合課程學(xué)習(xí)Guo等人[50]將解碼器輸入和注意力掩碼(Attention Mask)作為課程,通過課程學(xué)習(xí)微調(diào)的策略讓模型完成從簡單的ART模型到困難的NART模型的訓(xùn)練過程,從而將ART模型強大的語言建模能力轉(zhuǎn)移到NART模型中。Liu等人[51]提出了任務(wù)級的課程學(xué)習(xí),把半自回歸翻譯(SAT)任務(wù)作為課程,利用一個超參數(shù)讓模型訓(xùn)練由ART任務(wù)先轉(zhuǎn)移到SAT任務(wù),最后再過渡到NART任務(wù),他們還嘗試用一個任務(wù)窗口去減少每個階段之間的差距,讓整個過程更加平滑。
聯(lián)合優(yōu)化Sun等人[52]認為以往只在訓(xùn)練數(shù)據(jù)集上做一次知識蒸餾不足以優(yōu)化NART模型,因此他們提出期望最大化(EM)的方法,讓ART模型學(xué)習(xí)NART模型的輸出,再把更新后的ART模型的輸出用來訓(xùn)練NART模型,通過這種迭代聯(lián)合優(yōu)化ART和NART模型。Hao等人[53]將ART模型作為輔助任務(wù)增強NART模型,提出在多任務(wù)學(xué)習(xí)的框架下共享ART模型和NART模型的編碼器而分離解碼器,并在訓(xùn)練過程中采用動態(tài)的方式給ART任務(wù)分配權(quán)重。
優(yōu)缺點分析該方法的優(yōu)點是,由ART模型過渡到NART模型降低了NART模型的訓(xùn)練難度,可以有效結(jié)合ART模型的翻譯質(zhì)量和NART模型的推斷速度。該方法的缺點是,需要訓(xùn)練ART模型作為指導(dǎo),這增加了額外的訓(xùn)練時間,同時也讓模型更為復(fù)雜。
除了上面主流的方法之外,還有很多方法嘗試從數(shù)據(jù)、訓(xùn)練策略和半自回歸等角度提高NART的翻譯質(zhì)量,并且都取得了不錯的結(jié)果。
增強解碼器Guo等人[54]提出了兩種方法增強解碼器的輸入,一種是基于短語表的方法,直接將源語變成目標語作為解碼器輸入,但由于短語表是預(yù)訓(xùn)練生成的,所以無法更新。另一種是嵌入映射的方法,把源語的嵌入線性映射到目標語嵌入空間,用對抗訓(xùn)練的思想學(xué)習(xí)映射。Zhan等人[55]在輸出嵌入矩陣上應(yīng)用注意力機制,將原始解碼器輸入從源語言空間轉(zhuǎn)換到目標語空間,再從目標語空間重新組裝解碼器輸入。Li等人[56]提出詞匯注意(Vocabulary Attention,VA)機制,讓每個位置都關(guān)注詞表的所有詞來建模長期依賴關(guān)系,再利用環(huán)顧(Look-Around,LA)策略,預(yù)測左右相鄰的詞以生成當前位置的詞,避免翻譯成相同的詞。Deng等人[57]使用搜索網(wǎng)格替換解碼器,該方法首先基于源語構(gòu)建目標語候選網(wǎng)格,再根據(jù)編碼器對網(wǎng)格進行評分,最后采用動態(tài)規(guī)劃尋找最佳路徑,在保持非自回歸性的同時降低了深解碼器的計算成本。Zheng等人[58]設(shè)計了沒有顯式編碼器和解碼器區(qū)別的可逆雙工Transformer(Reversible Duplex Transformer),通過非自回歸建模解決了編碼器與解碼器的異構(gòu),在實現(xiàn)可逆機器翻譯的同時,也讓NART的性能接近ART模型。
采用半自回歸半自回歸是自回歸和非自回歸的一種過渡狀態(tài),其對速度和質(zhì)量進行了權(quán)衡。Wang等人[59]首次提出了半自回歸的方法,這種方法在全局保持自回歸性,而在每個時間步并行生成多個連續(xù)的詞匯。Ran等人[60]提出了RecoverSAT模型,與Wang等人[59]工作不同的是,他們讓模型并行生成多個片段,而在片段內(nèi)是用自回歸生成每個詞的,這有利于減少重復(fù)詞。為了從重復(fù)翻譯和翻譯缺失的錯誤中恢復(fù),他們在模型中引入了動態(tài)終止機制和段刪除機制來確定段的長度以及刪除重復(fù)的片段,有效緩解了多峰問題。Kong等人[61]通過在每個目標解碼位置使用自回歸的方式預(yù)測一個詞匯序列來捕獲輸出之間的局部依賴關(guān)系,再通過增量對齊和合并相鄰的片段得到最終譯文。Deng等人[62]對ART模型進行擴展,提出了馬爾可夫Transformer模型,可以對特定的自回歸上下文進行解碼。同時,在給定正確的參數(shù)的情況下,可以探索不同程度的自回歸依賴關(guān)系,實現(xiàn)翻譯質(zhì)量和翻譯速度的平衡。
改進訓(xùn)練策略Qian等人[63]提出了一種自適應(yīng)的掃描采樣策略,類似于課程學(xué)習(xí),它在訓(xùn)練開始階段采樣很多詞并給予參考目標詞的信息去學(xué)習(xí)預(yù)測少部分未選擇的詞,而隨著模型不斷變好,采樣的詞逐漸減少,模型逐漸學(xué)習(xí)一次性地生成整個句子。Ding等人[64]認為NART模型更容易學(xué)習(xí)細粒度的知識,因此他們將訓(xùn)練數(shù)據(jù)劃分為單詞、短語和句子三種粒度,提出從細粒度到粗粒度的訓(xùn)練策略,引導(dǎo)NART模型逐步學(xué)習(xí)。Xie等人[65]提出了一致性訓(xùn)練的方法,強制同一個目標句子在不同掩碼方式或者不同模型下對于相同掩碼位置的預(yù)測一致,即掩碼一致性和模型一致性,從這兩個方面繼續(xù)開發(fā)基于CMLM的NART模型的潛力。Zeng等人[66]采用對齊約束訓(xùn)練的方式,利用約束對齊把源語端上下文翻譯為目標端的上下文。從而緩解了NART模型不能很好處理低頻約束的問題。
不依賴知識蒸餾現(xiàn)在的NART模型都依賴知識蒸餾來生成訓(xùn)練數(shù)據(jù),也就是需要預(yù)先訓(xùn)練一個ART模型,這使得訓(xùn)練過程變得復(fù)雜且影響了NART的實際應(yīng)用。同時,讓NART學(xué)習(xí)ART模型會給NART增加一個上限,限制了NART的潛力。Bao等人[67]引入一組離散隱變量來捕獲目標詞匯的分類信息,并讓原始目標進行隱變量建模和句子重構(gòu),這樣所得到的分類信息簡化了原始目標語中的多峰現(xiàn)象,從而不依賴于知識蒸餾進行學(xué)習(xí)。Huang等人[68]通過有向無環(huán)解碼器直接捕獲多種翻譯模態(tài),避免了知識蒸餾,并將隱藏狀態(tài)組裝成有向無環(huán)圖,沿預(yù)測路徑生成譯文,在不依賴知識蒸餾的情況下獲得了與ART模型相近的性能。Huang等人[69]通過暴露位置編碼來區(qū)分相鄰的詞匯表示,并加入校正損失讓模型糾正初始的翻譯錯誤兩種措施,使得NART模型可以在沒有知識蒸餾的情況下充分利用原始數(shù)據(jù)。
融合有效方法Gu等人[70]以減少目標之間的依賴關(guān)系作為指導(dǎo),在訓(xùn)練數(shù)據(jù)、模型架構(gòu)、訓(xùn)練目標和訓(xùn)練策略四個方面把現(xiàn)有的有效方法結(jié)合起來,通過利用這些技術(shù)的優(yōu)勢,縮小了NART模型和ART模型之間的性能差距。
現(xiàn)有的NART模型性能對比如表1所示。
表1 NART模型的性能(BLEU)對比
NART模型的主要動機之一是加速推斷過程,但Helcl等人[71]指出現(xiàn)有NART工作的速度評估方法存在兩大缺陷: 一方面,大多數(shù)方法的解碼速度是在不同硬件架構(gòu)上測試的,這讓結(jié)果無法比較;另一方面,這些方法只測試了在GPU上每個Batch用單個句子進行解碼的速度,Helcl等人通過GPU和CPU上五個場景的實驗結(jié)果證明這是唯一有利于NART模型的設(shè)置,而隨著GPU上Batch增大,NART模型的速度優(yōu)勢就會不斷減小,而真實場景下ART模型能從更大的Batch中受益。這也導(dǎo)致了在一定程度上,NART研究工作的實驗結(jié)果不容易復(fù)現(xiàn),對比不充分。所以,在統(tǒng)一的環(huán)境下公平地評估NART模型的速度,增加系統(tǒng)的可復(fù)現(xiàn)性,提高NART模型的實際應(yīng)用速度,是促進NART模型真實場景應(yīng)用的一個重要方向。
非自回歸在機器翻譯中的成功應(yīng)用,也給很多其他任務(wù)提供了思路,例如,文本到語音[72-73]、自動語音生成[74-76]和圖像描述[76-77]等任務(wù)已經(jīng)把非自回歸的方法結(jié)合到任務(wù)中,并獲得了不同程度的性能提升。從另一個角度來看,相比于ART模型只能獲得當前詞之前的歷史信息,NART模型可以同時建模上下文信息,更有利于提升生成質(zhì)量。Susanto等人[79]提出了一種基于詞約束的NART模型,通過在推斷的時候加入術(shù)語約束,把機器翻譯轉(zhuǎn)換成了填空優(yōu)化的問題,實驗表明在術(shù)語約束的機器翻譯任務(wù)上,獲得了比ART模型更好的性能。所以,將NART技術(shù)應(yīng)用到契合非自回歸特性的任務(wù),或者進一步研究NART模型如何更好地捕獲上下文信息也是一個值得探索的方向。特別是,對于需要引入上下文信息的任務(wù),NART模型也有很大潛力。
預(yù)訓(xùn)練模型已經(jīng)在很多工作中證實可以顯著改善神經(jīng)機器翻譯的性能,所以也有一些研究人員探索了提高NART模型性能的預(yù)訓(xùn)練模型。Li等人[79]提出了一個由雙向編碼器和雙向解碼器組成的多語言條件掩碼模型,由于解碼器具有雙向結(jié)構(gòu),所以提出的模型也可以為NART模型提供初始化參數(shù),帶來了大幅的性能增益。Zhang等人[81]提出了基于插入的非自回歸預(yù)訓(xùn)練方法,使用漸進插入的目標對模型進行預(yù)訓(xùn)練,在受控文本生成方面實現(xiàn)了最先進的性能。然而,采用預(yù)訓(xùn)練模型來增強NART模型的工作極少,并且都是對非自回歸訓(xùn)練技術(shù)的初步嘗試,遠不及自回歸預(yù)訓(xùn)練技術(shù)的探索程度,所以進一步地研究NART和其他相關(guān)任務(wù)的非自回歸預(yù)訓(xùn)練方法是一個值得思考的問題。
本文首先系統(tǒng)性地把近年來非自回歸機器翻譯方法的研究進展進行了分類,總結(jié)分析了各類方法的優(yōu)缺點,并對非自回歸的未來研究方向進行了展望。最后,本文對相關(guān)論文進行了歸納整理,包括方法分類、會議類型和發(fā)表年份。希望本文可以幫助研究人員開展與非自回歸相關(guān)的工作,起到促進非自回歸技術(shù)發(fā)展的作用。