0
作者 | 馮凱 單位 | 小牛翻譯 馮凱,東北大學(xué)自然語言處理實(shí)驗(yàn)室研究生,研究方向?yàn)闄C(jī)器翻譯。 小牛翻譯,核心成員來自東北大學(xué)自然語言處理實(shí)驗(yàn)室,由姚天順教授創(chuàng)建于1980年,現(xiàn)由朱靖波教授、肖桐博士領(lǐng)導(dǎo),長期從事計(jì)算語言學(xué)的相關(guān)研究工作,主要包括機(jī)器翻譯、語言分析、文本挖掘等。團(tuán)隊(duì)研發(fā)的支持140種語言互譯的小牛翻譯系統(tǒng)已經(jīng)得到廣泛應(yīng)用,并研發(fā)了小牛翻譯云(https://niutrans.vip)讓機(jī)器翻譯技術(shù)賦能全球企業(yè)。 |
近年來,基于深度神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯取得了飛速發(fā)展。目前大多數(shù)NMT模型都使用了編碼器-解碼器框架來實(shí)現(xiàn),編碼器將源語句的表示送入到解碼器來生成目標(biāo)句子;解碼器通常以自回歸的方式來工作,從左到右逐字地生成目標(biāo)句子,第t個(gè)目標(biāo)詞的生成依賴于先前生成的t-1個(gè)目標(biāo)詞。
雖然最近提出的幾個(gè)模型利用卷積[1]或者自注意力[2]使得訓(xùn)練過程高度并行化,加快了訓(xùn)練速度。但由于其自回歸的特性,模型的推理過程非常緩慢,這對(duì)于對(duì)于實(shí)際的工業(yè)應(yīng)用是個(gè)很大的挑戰(zhàn)。因此,怎樣提升模型的推理速度成為了一個(gè)新的研究熱點(diǎn)。
自回歸(Autoregressive Translation , AT)模型需要用已生成的詞來預(yù)測下一個(gè)位置的詞,用概率模型來表示為:
這種自回歸的解碼方式符合閱讀和生成句子時(shí)的習(xí)慣,能有效地捕捉到真實(shí)翻譯的分布情況。它在機(jī)器翻譯等任務(wù)上取得了較好的性能,并且波束搜索也能夠?yàn)閷ふ医谱顑?yōu)譯文提供了一種有效的局部搜索方法。但是也有其自身的缺點(diǎn),主要表現(xiàn)在以下兩個(gè)方面:
1. AT模型存在Exposure Bias 問題。自回歸模型在前面產(chǎn)生錯(cuò)誤會(huì)傳遞到后面的位置,這也是模型在長句子的翻譯中表現(xiàn)差的原因之一。
2. 解碼器的每個(gè)步驟必須順序地而不是并行地運(yùn)行,因此自回歸解碼會(huì)阻止像Transformer這樣的體系結(jié)構(gòu)在推理過程中充分體現(xiàn)其訓(xùn)練時(shí)的性能優(yōu)勢。
非自回歸模型
非自回歸 (Non-Autoregressive Translation, NAT)模型打破了生成時(shí)的串行順序,希望一次能夠解碼出整個(gè)目標(biāo)句子,從而解決AT模型所帶來的問題。一個(gè)簡單的NAT模型將解碼問題建模為:
其假設(shè)生成的目標(biāo)句子的每個(gè)詞都是完全獨(dú)立的。但由于單詞之間確實(shí)是存在著依賴關(guān)系,因此與AT模型相比,所學(xué)習(xí)的NAT模型只能獲得較差的結(jié)果。為了緩解這種獨(dú)立性假設(shè)過強(qiáng)的問題,一種方案是引入一個(gè)隱變量z來建模目標(biāo)序列的相關(guān)性:我們首先從先驗(yàn)分布中采樣z,然后對(duì)z進(jìn)行條件化來非自回歸地生成翻譯:
隱變量提供一種聲明性語言,用于指定復(fù)雜數(shù)據(jù)集中的先驗(yàn)知識(shí)和結(jié)構(gòu)關(guān)系,能夠輕松地通過條件獨(dú)立性來指定模型約束。同時(shí),深度學(xué)習(xí)可以使用功能強(qiáng)大的函數(shù)逼近器對(duì)這些條件概率進(jìn)行參數(shù)化 ,可以天然的將兩者結(jié)合起來。但條件概率的深度參數(shù)化通常使后驗(yàn)推斷難以解決,而潛變量又會(huì)引入不可微點(diǎn)使反向傳播復(fù)雜化。
另外,計(jì)算隱變量模型需要估計(jì)其后驗(yàn)分布,這個(gè)過程過于復(fù)雜因此無法計(jì)算。一個(gè)簡單的方法是給隱變量賦予物理意義,為模型提供監(jiān)督信號(hào)就可以直接擬合其先驗(yàn)分布而不用計(jì)算后驗(yàn)分布。例如下面的兩種方法使用繁衍率或者語法樹作為隱變量來解決這些問題。
非自回歸神經(jīng)機(jī)器翻譯的概念在ICLR18上首次被Gu [3]等人提出。與自回歸模型相比,非自回歸模型在實(shí)現(xiàn)上主要有以下兩個(gè)區(qū)別:Decoder的輸入和目標(biāo)序列的長度。自回歸模型每步的輸入是上一步解碼出的結(jié)果,當(dāng)預(yù)測到EOS時(shí)序列的生成就自動(dòng)停止了,然而非自回歸模型卻沒有這樣的特性。該工作采用Fertility Predictors的結(jié)果來作為隱變量,巧妙的解決了上面的兩個(gè)問題。
模型細(xì)節(jié)
圖1 NAT的模型結(jié)構(gòu)圖
由圖1我們可以看出,NAT的Encoder與Transformer相比,多了一個(gè)Fertility Predictor,用來決定將源語的某個(gè)單詞復(fù)制多少次來作為Decoder的輸入。在上圖的例子中,源語的單詞”We”對(duì)應(yīng)的fertility的值是1,因此將會(huì)作為輸入出現(xiàn)在Decoder端一次,以此類推。因此,生成出fertility值以后,Decoder端的輸入和句子的長度也就確定了,即所有fertility值的總和。
在訓(xùn)練時(shí),使用外部的對(duì)齊工具(fast align)來生成fertility信息,從而將Fertility Predictor的訓(xùn)練轉(zhuǎn)換成為一個(gè)監(jiān)督問題。訓(xùn)練階段的loss由兩部分組成:translation loss 和 fertility loss。另外,盡管使用了fertility作為隱變量,但模型仍然不能很好應(yīng)對(duì)訓(xùn)練中的multi-modality問題。例如,盡管英語的"Thank you"的每個(gè)詞對(duì)應(yīng)的fertility都是1,但卻能得到兩種不同的翻譯:“Danke schon.”和“Vielen Dank.”。因此,該工作利用了Sequence-level knowledge distillation的方式,解決了上述問題。具體做法是,首先訓(xùn)練一個(gè)AT模型作為teacher,然后解碼整個(gè)訓(xùn)練集的句子作為NAT模型的ground truth來進(jìn)行學(xué)習(xí)。
在推理時(shí),由于fertility的存在,我們無法得到全局最優(yōu)解。因此Gu等人提出了Noisy parallel decoding的方法,首先從fertility空間中采樣多個(gè)樣本并生成每個(gè)fertility序列對(duì)應(yīng)的翻譯結(jié)果,然后用訓(xùn)練好的AT模型來對(duì)這些句子做re-ranking,挑選出得分最高的句子。這個(gè)過程相當(dāng)于對(duì)翻譯結(jié)果進(jìn)行強(qiáng)制解碼,它可以并行的提供所有解碼器輸入,因此整個(gè)過程不會(huì)太慢。
該工作首次提出了非自回歸神經(jīng)機(jī)器翻譯的概念,實(shí)現(xiàn)了推理過程的并行計(jì)算,取得了不錯(cuò)的加速效果。但也存在以下幾個(gè)問題:1) 利用了外部對(duì)齊工具來獲得 fertility信息,但對(duì)齊工具的誤差可能會(huì)影響解碼結(jié)果的質(zhì)量。2)丟失了目標(biāo)端的序列信息,造成大量重復(fù)翻譯或者漏譯的情況。3) 相比于AT模型,NAT模型的目標(biāo)端直接copy源端的輸入,使得解碼器必須處理在更少的信息條件下的翻譯任務(wù),從而導(dǎo)致較差的準(zhǔn)確度。
上面說到,忽略了目標(biāo)端序列信息的NAT模型,會(huì)使得解碼出的目標(biāo)序列存在大量重復(fù)翻譯的情況。因此,將序列信息合理的融入到非自回歸模型中是個(gè)非常關(guān)鍵的問題。這篇文章將句法樹作為序列信息的抽象,把句法信息看作隱變量,首先自回歸地預(yù)測出一個(gè)目標(biāo)句的句法塊序列,然后根據(jù)句法塊序列非自回歸地生成所有目標(biāo)詞。該工作由 Akoury[4]等人發(fā)表在ACL2019上。
模型細(xì)節(jié)
圖2 NAT with syntactic tree的模型結(jié)構(gòu)圖
該方法的Encoder與Transformer的Encoder完全相同,但解碼器分為兩個(gè)部分。第一部分的Parse Decoder根據(jù)源語信息自回歸的生成句法塊序列,然后第二部分的Token Decoder根據(jù)源語信息和上一步的生成句法塊信息來并行的生成整個(gè)目標(biāo)序列。
在訓(xùn)練期間,該工作通過目標(biāo)語言的外部解析器(Stanford CoreNLP)來將句法預(yù)測任務(wù)轉(zhuǎn)換為有監(jiān)督問題。值得注意的是,如果我們預(yù)測整個(gè)句法樹,這種方法將極大地增加自回歸步驟的數(shù)量,從而增大時(shí)間開銷。因此,為了維持句法信息與解碼時(shí)間的平衡,這里預(yù)測一些由句法類型和子樹大小組成的塊標(biāo)識(shí)符(如VP3)而不是整個(gè)句法樹。如圖3所示,其中k表示我們需要預(yù)測第幾層的句法信息,k越小我們所需要預(yù)測的句法信息越少,所蘊(yùn)含的信息也越抽象,解碼速度也會(huì)越快。
圖3 塊標(biāo)識(shí)符示例
通過這樣的操作,語法塊詞匯量非常小,因此自回歸過程不會(huì)顯著影響整體的解碼速度。另外,他們發(fā)現(xiàn)Parse Decoder的層數(shù)變化并不會(huì)顯著影響解碼結(jié)果,因此為了進(jìn)一步提升解碼速度,將Parse Decoder的層數(shù)設(shè)置為1。
在解碼的第二階段,使用了一個(gè)完全的非自回歸步驟,將第一個(gè)解碼器的輸出作為第二個(gè)解碼器的輸入,兩個(gè)解碼器的參數(shù)不共享。在訓(xùn)練過程中,使用真實(shí)的句法塊序列作為輸入,而在推斷時(shí),則使用預(yù)測的句法塊。另外,為了確保第二個(gè)解碼器中輸入和輸出單詞的數(shù)量相等(為了套用Transformer的框架),Akoury等人將占位符<MASK>標(biāo)記添加到塊描述符后,其中添加的數(shù)量與塊描述符的子樹大小相同。
該工作在性能相當(dāng)?shù)那闆r下,提升的速度都優(yōu)于之前的模型,在翻譯質(zhì)量上也取得了較好的效果。
自從NAT的概念被提出后,相關(guān)的論文層出不窮。但總得來說,可以分為以下三種方式:
基于latent variable的NAT,正如上面所示的兩種方法,其主要問題在于怎么找到更好的隱變量能夠充分表示NAT模型所丟失的序列信息。
基于Iterative Refinement的NAT, 具有代表性的是Jason Lee[5] 和Marjan Ghazvininejad[6] 等人的工作,其主要做法是將上一輪迭代生成的翻譯結(jié)果和源語作為下一次迭代的輸入,不斷的迭代精化,相當(dāng)于是句子級(jí)上的自回歸模型。
基于knowledge distillation的NAT,具有代表性的是Zhuohan Li[7] 和 Wei B[8]等人的工作,由于AT模型和NAT模型的結(jié)構(gòu)相差不大,因此我們完全可以將善于建模的AT模型作為老師,NAT模型可以逐塊的學(xué)習(xí)前者的分布。這樣,模型既可以獲得NAT的高速性能,又不會(huì)遭受相對(duì)較低的翻譯性能的困擾。
丟失了序列信息的非自回歸模型如何取得與自回歸模型相當(dāng)?shù)男阅苁悄壳把芯康年P(guān)鍵問題。引入額外信息的NAT模型可能會(huì)提升性能,但勢必會(huì)減慢推理速度。第三種方法為解決這個(gè)兩難問題提供了一個(gè)良好的思路,因此筆者認(rèn)為,如何用一種更精細(xì)的方式來學(xué)習(xí)AT模型中所蘊(yùn)含的序列信息將會(huì)是一個(gè)有潛力的研究方向。
參考文獻(xiàn)
[1] Jonas Gehring, Michael Auli, David Grangier, Denis Yarats, and Yann N Dauphin. 2017. Convolutional sequence to sequence learning. arXiv preprint arXiv:1705.03122.
[2] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, ?ukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Advances in Neural Information Processing Systems, pages 6000–6010.
[3] Jiatao Gu, James Bradbury, Caiming Xiong, Victor OK Li, and Richard Socher. Non-autoregressive neural machine translation. arXiv preprint arXiv:1711.02281, 2017.
[4] Akoury, Nader, Kalpesh Krishna, and Mohit Iyyer. Syntactically Supervised Transformers for Faster Neural Machine Translation. arXiv preprint arXiv:1906.02780 (2019).
[5] Jason Lee, Elman Mansimov, and Kyunghyun Cho. 2018. Deterministic non-autoregressive neural sequence modeling by iterative refinement. arXiv preprint arXiv:1802.06901.
[6] Marjan Ghazvininejad, Omer Levy, Yinhan Liu, and Luke Zettlemoyer. 2019. Constant-time machine translation with conditional masked language models. CoRR, abs/1904.09324.
[7] Zhuohan Li, Zi Lin, Di He, Fei Tian, Tao Qin, Liwei Wang, and Tie-Yan Liu. Hint-based
training for non-autoregressive translation. arXiv preprint arXiv:1909.06708, 2019.
[8] Wei B, Wang M, Zhou H, et al. Imitation Learning for Non-Autoregressive Neural Machine Translation[J]. arXiv preprint arXiv:1906.02041, 2019.
雷鋒網(wǎng)編輯。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。