機器之心專欄
本專欄由機器之心SOTA!模型資源站出品,每周日于機器之心公眾號持續更新。
本專欄將逐一盤點自然語言處理、計算機視覺等領域下的常見任務,并對在這些任務上取得過 SOTA 的經典模型逐一詳解。前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現代碼、預訓練模型及 API 等資源。
本文將分 3 期進行連載,共介紹 18 個在機器翻譯任務上曾取得 SOTA 的經典模型。
第 1 期:RNNsearch、Multi-task、attention-model、Convolutional Encoder、Attention、Value-Network
第 2 期:Unsupervised NMT、PBSMT、coarse-to-fine、two-pass decoder translation、XLMs、MASS
第 3 期:FlowSeq、mBART、BERT-fused、mRASP、mRASP2、CeMAT
您正在閱讀的是其中的第 1 期。前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現代碼、預訓練模型及 API 等資源。
第 1 期回顧:RNNsearch、Multi-task、attention-model…你都掌握了嗎?一文總結機器翻譯必備經典模型(一)
本期收錄模型速覽
模型 | SOTA!模型資源站收錄情況 | 模型來源論文 |
---|---|---|
Unsupervised NMT | https://sota.jiqizhixin.com/project/unsupervised-nmt 收錄實現數量:2 支持框架:PyTorch | Unsupervised Neural Machine Translation |
PBSMT | https://sota.jiqizhixin.com/project/pbsmt 收錄實現數量:13 支持框架:PyTorch、TensorFlow | Phrase-based & Neural Unsupervised Machine Translation |
coarse-to-fine | https://sota.jiqizhixin.com/project/coarse-to-fine-2 | Addressing the Under-translation Problem from the Entropy Perspective |
two-pass decoder translation | https://sota.jiqizhixin.com/project/two-pass-decoder-translation | Modeling Coherence for Discourse Neural Machine Translation |
XLMs | https://sota.jiqizhixin.com/project/xlm 收錄實現數量:4 支持框架:PyTorch | Cross-lingual Language Model Pretraining |
MASS | https://sota.jiqizhixin.com/project/mass 收錄實現數量:2 支持框架:MidSpore、PyTorch | MASS: Masked Sequence to Sequence Pre-training for Language Generation |
機器翻譯(MT)是利用機器的力量「自動將一種自然語言(源語言)的文本翻譯成另一種語言(目標語言)」。機器翻譯方法通??煞殖扇箢悾夯谝巹t的機器翻譯(RBMT)、統計機器翻譯(SMT)和神經機器翻譯(NMT)。
一般而言,RBMT分析一段文字,通常會先建立目標語言中介的、象征性的表義字詞。再根據中介的表義字詞來決定使用人工國際語言(interlingual)化的機器翻譯,或是使用轉化原則法的機器翻譯(transfer-based machine translation)。這些方法都必須擁有具備足夠形態學的、語句學的以及語義學的資訊以及大量的字詞規則所建構的辭匯。常見RBMT的難處在于無法給于適當且足夠龐大的資訊,來滿足不同領域或是不同法則的機器翻譯法。
統計機器翻譯(SMT)的首要任務是為語言的產生構造某種合理的統計模型,并在此統計模型基礎上,定義要估計的模型參數,并設計參數估計算法。早期的基于詞的統計機器翻譯采用的是噪聲信道模型,采用最大似然準則進行無監督訓練,而近年來常用的基于短語的統計機器翻譯則采用區分性訓練方法,一般來說需要參考語料進行有監督訓練。
2014年Dzmitry Bahdanau和Yoshua Bengio等學者提出了神經機器翻譯。神經機器翻譯(NMT)基于深度神經網絡,為機器翻譯提供了端到端的解決方案,在研究社區中受到了越來越多的關注,且近幾年已被逐漸應用到了產業中。NMT 使用基于 RNN 的編碼器-解碼器框架對整個翻譯過程建模,編碼器是把源語言經過一系列的神經網絡的變換之后,表示成一個高維向量。解碼器負責把這個高維向量再重新解碼(翻譯)成目標語言。在訓練過程中,它會最大化目標語句對給定源語句的似然度。在測試的時候,給定一個源語句 x,它會尋找目標語言中的一個語句 y,以最大化條件概率 P(y|x)。由于目標語句的可能數目是指數量級的,找到最優的 y 是 NP-hard 的。因此通常會使用束搜索(beam search)以找到合理的 y。束搜索是一種啟發式搜索算法,會以從左向右的形式保留得分最高的部分序列擴展。特別是,它保存了一群候選的部分序列。在每個時間步長上,該算法都會通過添加新詞的方法擴展每一個候選部分語句,然后保留由 NMT 模型評分最高的新候選語句。當達到最大解碼深度或者所有的語句都完全生成的時候(即所有的語句都包含 EOS 符號后綴的時候),算法就會終止。
Unsupervised NMT完全消除了對平行數據的需求,并提出以完全無監督的方式訓練NMT系統,且只依靠單語語料庫。該模型建立在關于無監督嵌入映射的工作基礎上,由一個稍加修改的注意力編碼器-解碼器模型組成,可以使用去噪和回譯(Back-translation)的組合在單語語料庫上單獨訓練。具體架構見圖1。
圖11. Unsupervised NMT系統架構
對于語言L1的每個句子,交替進行兩個步驟的訓練:去噪,優化用共享編碼器對句子的噪聲版本進行編碼的概率,并用L1解碼器對其進行重建;即時回譯,在推理模式下對句子進行翻譯(用共享編碼器進行編碼,用L2解碼器進行解碼),然后優化用共享編碼器對該翻譯句子進行編碼的概率,用L1解碼器恢復原句。訓練在L1和L2的句子之間交替進行,對后者采取類似的步驟
在編碼器中使用一個兩層的雙向RNN,在解碼器中使用另一個兩層的RNN。所有的RNN都使用具有600個隱藏單元的GRU單元,設置嵌入維度為300。使用具有一般對齊功能的全局注意力方法。該系統在三個重要方面與標準NMT不同:
雙重結構。雖然NMT系統通常是為特定的翻譯方向而建立的(例如,法語→英語或英語→法語),但該方法利用機器翻譯的雙重性質,同時處理兩個方向(例如,法語→英語)。
共享的編碼器。該系統使用一個也是唯一的一個編碼器,由相關的兩種語言共享。例如,在法語和英語使用完全相同的編碼器。這個通用的編碼器旨在生成一個獨立于語言的輸入文本表示,然后每個解碼器將其轉換為相應的語言。
編碼器中的固定嵌入。大多數NMT系統隨機地初始化它們的嵌入,并在訓練中更新它們,而我們在編碼器中使用預先訓練好的跨語言嵌入,在訓練中保持固定。這樣,編碼器就得到了獨立于語言的詞級表征,它只需要學習如何組合這些表征來建立更大的短語表征。請注意,即使嵌入是跨語言的,也為每種語言使用單獨的詞匯表。這樣一來,在法語和英語中都存在的單詞chair(在前者是指 '肉體'),在每種語言中都會得到不同的向量,盡管它們都在一個共同的空間中。
由于NMT系統通常被訓練來預測平行語料庫中的翻譯,這種監督訓練程序在只能獲得單語語料庫的場景中是不可用的??梢允褂靡韵聝煞N策略以無監督的方式訓練整個系統。
(1)去噪(Denoising)。由于使用了共享編碼器,并利用了機器翻譯的雙重結構,模型可以直接被訓練來重建自己的輸入。更具體地說,整個系統可以被優化,以接受一個特定語言的輸入句子,使用共享編碼器對其進行編碼,并使用該語言的解碼器重建原句。鑒于我們在共享編碼器中使用了預先訓練好的跨語言嵌入,這個編碼器應該學會以獨立于語言的方式組成兩種語言的嵌入,而每個解碼器應該學會將這種表示分解為他們相應的語言。在推理時,只需將解碼器替換成目標語言的解碼器,這樣它就能從編碼器給出的獨立于語言的表示中生成輸入文本的翻譯。
然而,這種理想的行為由于所產生的訓練程序本質上是一個簡單的復制任務而受到嚴重影響。因此,這項任務的最佳解決方案不需要掌握任何有關語言的真正知識,因為會有許多退化的解決方案,盲復制輸入序列中的所有元素。如果是這樣的話,那么在推理的時候,系統在用于從一種語言翻譯到另一種語言時,最多只能進行非常直白的逐詞替換。為了避免這種退化的解決方案,并使編碼器真正以獨立于語言的方式學習其輸入詞的構成性,建議在輸入句子中引入隨機噪聲。這個想法是利用去噪自動編碼器的基本原理,即訓練系統重建被破壞的輸入句子的原始版本。為此,通過在相鄰的詞之間進行隨機交換來改變輸入句子的詞序。更具體地說,對于一個有N個元素的序列,進行N/2次這樣的隨機交換。這樣一來,系統就需要了解相關語言的內部結構,以便能夠恢復正確的詞序。
(2)即時回譯( On-the-fly backtranslation )。盡管采取了去噪策略,上述訓練程序仍然是一個帶有一些合成改變的復制任務,最重要的是,每次都涉及一種語言,而沒有考慮在兩種語言之間翻譯的最終目標。為了在真正的翻譯環境中訓練系統,同時又不違反只使用單語語料庫的約束,引入回譯方法。
更具體地說,給定一種語言的輸入句子,在推理模式下用貪婪解碼的方法將其翻譯成另一種語言(即應用另一種語言的共享編碼器和解碼器)。這樣,我們就得到了一個偽平行的句子對,并訓練系統從這個合成翻譯中預測原句。不過,與標準的回譯相反(使用一個獨立的模型來一次性回譯整個語料庫),該方法利用所提出的架構的雙重結構,使用正在訓練的模型本身來即時回譯每個小批次(minibatch)。這樣,隨著訓練的進行和模型的改進,它將通過回譯生成更好的合成句子對,這將有助于在接下來的迭代中進一步改進模型。
具體描述這一過程如下:首先L1 decoder和L2 decoder分別為兩個語言的語料庫的Language Modeling(語言模型)。
左邊的shared encoder是兩個語料庫公用的encoder,并且它的嵌入是fixed cross-lingual embedding(交叉語言的vocabulary)。
回譯的過程如下:
L1 sentence→shared encoder(L1)→L2 decoder→predict L2 sentence
predict L2 sentence→shared encoder(L2)→L1 decoder→L1 sentence
這樣就算完成了一個回譯過程,這個過程會去調整fixed cross-lingual embedding的值。
項目 | SOTA!平臺項目詳情頁 |
---|---|
Unsupervised NMT | 前往SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/unsupervised-nmt |
PBSMT
PBSMT是指phrase-based statistical machine translation(基于短語的機器翻譯),即,使用基于短語的統計機器翻譯(PBSMT)系統進行無監督機器翻譯(Unsupervised NMT)。當從x翻譯到y時,PBSMT根據以下情況對y進行評分:argmax_y P(y|x) = argmax_y P(x|y)P(y),P(x|y)來自所謂的 '短語表(phrase-based table)',而P(y)是由語言模型分配的分數。給定一個bitexts數據集,PBSMT首先推斷出源語言和目標語言短語之間的對齊情況。然后,填充短語表,其條目存儲了源/目標語言中某個n-gram映射到目標/源語言中另一個n-gram的概率。在無監督的情況下,可以很容易地在單語數據上訓練語言模型,但如何填充短語表卻不太清楚,而短語表是良好翻譯的必要組成部分。
初始化。使用從單語語料庫中推斷出的雙語詞典來填充初始短語表(從源語言到目標語言以及從目標語言到源語言)。在下文中,我們把短語稱為單字,但同樣的論證也適用于更長的n-grams。使用源詞翻譯成的分數來填充短語表:
其中,t_j是目標詞匯中的第j個詞,s_i是源詞匯中的第i個詞,T是用于調整分布峰值的超參數,W是將源嵌入映射到目標嵌入的旋轉矩陣,e(x)是x的嵌入。
語言建模。在源域和目標域,都使用KenLM(kenlm.code.Kenneth Heafield)學習平滑的n-gram語言模型。這些模型在整個訓練迭代過程中保持固定。
迭代回譯(Back-translation)。為了啟動迭代過程,使用無監督短語表和目標方的語言模型來構建一個種子PBSMT。然后用這個模型將源單語語料庫翻譯成目標語言(回譯步驟)。一旦生成數據,在監督模式下訓練一個PBSMT,將生成的數據映射到原始來源的句子上。接下來,同時進行生成和訓練過程,但方向相反。根據需要多次重復這些步驟。如下述Algorithm 2所示。直觀地說,短語表中的許多條目是不正確的,因為在訓練過程中任何給定點的PBSMT的輸入都是有噪聲的。盡管如此,語言模型依然能夠在生成時修復其中的一些錯誤從而確保較好的效果。
項目 | SOTA!平臺項目詳情頁 |
---|---|
PBSMT | 前往SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/pbsmt |
coarse-to-fine
為了解決高熵詞( high-entropy words)的回譯問題,提出了一個從粗到細的框架( high-entropy words)。在粗粒度階段,構建偽目標句子以減少熵。在細粒度階段,利用得出的偽句子來改進神經模型。
Coarse-grained Phase
在粗粒度階段,構建偽目標句子,以減少高熵詞的熵值。圖12給出一個方法示例。詞s1是一個高熵詞,包含四個候選詞t1、t2、t3和t4,概率分布均勻。假設訓練中的雙語數據集D_xy包含以下三對。在第m對(X^m, Y^m)中,s1應該被翻譯成t1。在第n對(X^n, Y^n)中,t2是s1的正確翻譯。在第p對(X^p, Y^p)中,s1需要同時翻譯成t3和t4。圖12(a)給出方法過程。在偽目標句中,用一個特殊的偽標記stoken_4s1代替候選詞t1、t2、t3和t4,而其他目標詞則保持不變。通過這樣處理,改變概率分布,如圖12(b)所示,同時,s1的熵急劇減少。假設有M個高熵詞,首先生成M個特殊的偽標記。然后,通過用相應的特殊標記stoken_4sm替換sm的所有候選翻譯來構建偽目標句子。
圖12. 構建方法的說明
(a)通過用stoken_4s1替換t1、t2、t3和t4來構建偽目標句子。(b)顯示了概率分布的變化
Fine-grained Phase
與原始目標句Y相比,得出的偽目標句Z是粗粒度的,它減少了高熵詞的熵,也降低了翻譯難度?,F在的任務是用偽句子Z改進細粒度的神經模型。具體提出了三種方法,如圖3所示。預訓練方法利用得出的偽句子來實現更好的參數啟動;多任務(Multitask)方法通過兩個翻譯任務同時訓練神經模型θ;雙通道Two-pass 方法將整個翻譯過程分為兩個步驟,即翻譯步驟和消歧義步驟。
圖13. 在細粒度階段提出的三種方法:(a)預訓練法,(b)多任務法,(c)雙通道法
項目 | SOTA!平臺項目詳情頁 |
---|---|
coarse-to-fine | 前往SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/coarse-to-fine-2 |
基于多輪解碼校對網絡的Two-pass decoder translation模型用于解決篇章翻譯過程中的一致性和連貫性問題。該模型首先進行第一輪(first-pass)解碼,根據單個句子生成初步的翻譯結果。然后,根據已經生成的上下文信息,對翻譯結果進行第二輪(second-pass)解碼,重新調整翻譯內容。利用深度增強學習技術,調整當前句子的譯文和已經生成的譯文以確保良好的連貫性和一致性,從而提高譯文的整體流暢性。
圖4. two-pass解碼器翻譯模型的整體架構圖。
first-pass譯碼器產生的譯文與經典的Transformer模型一樣。而second-pass解碼器利用一個額外的自注意力層,從first-pass解碼器生成的其他句子中探索更多的上下文信息。令模型學習策略,通過獎勵教師的獎勵,生成更流暢和連貫的翻譯
圖14給出 two-pass解碼器翻譯模型的整體架構。模型可以分為三個重要部分:first-pass解碼器、second-pass解碼器和話語獎勵教師。在first-pass解碼器中復制了原始Transformer編碼器-解碼器架構。second-pass解碼器則是在典型的Transformer解碼器中疊加了一個額外的自注意力層,從而生成一個三種自注意力層。理想情況下,額外的自注意力層能夠從first-pass解碼器生成的整體文件的翻譯中總結出上下文,使解碼器盡可能地生成話語連貫的翻譯,因為它已經了解了該文件中其他句子的潛在翻譯。模型的最后一個重要組成部分是話語獎勵教師,這是一個離線訓練的biRNN,獎勵模型能夠確保生成更多的話語連貫性翻譯。
First-pass Decoder
將由n個句子組成的源文件定義為S_x ={s_x:0, ..., s_x:n-1},其中,每個句子s_x:i有Ti個單詞。first-pass解碼器的目標是使預測目標詞的負對數可能性最小.
Second-pass Decoder
將First-pass解碼器和Second-pass解碼器視為兩個關聯學習任務,共享相同的編碼器,使以下損失最小化:
Reward Teacher
將每個目標句子s_y:i表示為:
與遞歸模型中的編碼器相同,將每個s_y:i 傳遞給一個GRU, h_i = GRU(h_i?1, s_y:i) 。將RNN的最終隱狀態用來作為文件的表示 f(S_y) = h_n。訓練出的絕對階梯教師是為了最小化兩個階梯之間的余弦相似度:
在對單語語料庫進行訓練后,使用這個學習的教師來生成一個獎勵,判斷生成的序列與黃金序列(gold sequences)的排序相似性。值得注意的是,在訓練NMT模型之前,獎勵教師是以無監督的方式對黃金序列進行離線訓練的,其參數在策略學習期間是固定的。
Policy Learning
由于用最大似然估計訓練two-pass解碼器生成的譯文是局部連貫的,所以不能保證產生連貫的話語。進一步,訓練一個獎勵教師來獎勵產生良好排序結構的模型,鼓勵模型明確學習產生話語連貫性翻譯的策略。本文使用自我批評的訓練方法學習策略
Absolute Order Reward
一旦生成了序列y?, y?,使用絕對順序獎勵教師來獎勵這些序列:
Joint Learning
該模型有兩個解碼器,即first-pass解碼器和second-pass解碼器,它們各自可以獨立地學習參數以使負對數可能性最小。直觀地說,這兩個解碼器是關聯的,兩者的性能都可以通過聯合學習技術來提高。如前所述,使用一個獎勵教師來獎勵產生話語連貫性文本的模型。根據模型架構,有兩種方法可以用來獎勵學習策略的模型。一種是上述介紹的通過自我批判的學習策略來獎勵second-pass解碼器。另一種方式,當first-pass解碼器也受到獎勵教師的獎勵時,性能可以得到進一步提高。此時,模型的最終目標是最小化:
Lrl1的計算幾乎與Lrl2相同,只是通過替換first-pass解碼器的模型分布而稍作修改:
項目 | SOTA!平臺項目詳情頁 |
---|---|
two-pass decoder translation | 前往SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/two-pass-decoder-translation |
在BERT的啟發下,提出了一個新的預訓練目標:MAsked Sequence to Sequence learning(MASS)用于語言生成。MASS是基于序列到序列(seq2seq)的學習框架:它的編碼器將一個帶有掩碼片段(幾個連續的標記)的句子作為輸入,它的解碼器根據編碼器的表示預測這個被提及的片段。與BERT或只對編碼器或解碼器進行預訓練的語言模型不同,MASS分兩步對編碼器和解碼器進行聯合預訓練:1)通過預測在編碼器一側被屏蔽的句子片段,MASS可以使得編碼器理解未被掩碼的標記的含義,以便在解碼器一側預測被掩碼的標記。2)通過掩碼源端未掩碼的解碼器的輸入標記,MASS可以令解碼器在預測下一個標記時更多地依賴源端表示,而不是目標端之前的標記,從而更好地促進編碼器和解碼器之間的聯合訓練。
MASS只需要對一個模型進行預訓練,然后在各種下游任務上進行微調。使用transformer作為基本的序列模型,在WMT單語語料庫上進行預訓練,然后在三種不同的語言生成任務上進行微調,包括NMT、文本總結和對話回應生成??紤]到下游任務涵蓋了像NMT這樣的跨語言任務,因此,需對模型進行多語言的預訓練。
圖6. MASS的編碼器-解碼器框架。符號'_'代表掩碼符號[M]
Sequence to Sequence Learning
令(x, y)∈(X , Y)表示一個句子對,其中,x = (x_1, x_2, ..., x_m)是有m個標記的源句,y = (y_1, y_2, ..., y_n)是有n個標記的目標句,而X和Y是源域和目標域。seq2seq模型學習參數θ來估計條件概率P(y|x; θ),通常使用對數似然作為目標函數
條件概率P(y|x; θ)可以根據chain rule進一步分解如下:
seq2seq學習的一個主要方法是 encoder-decoder 框架。編碼器讀取源序列并生成一組表征;解碼器根據源表征和其前面的標記估計每個目標標記的條件概率。在編碼器和解碼器之間進一步引入了注意力機制,以找到在預測當前標記時應關注的源表示法。
Masked Sequence to Sequence Pre-training
MASS通過預測句子片段x^(u:v)來預訓練一個seq2seq的模型,將被掩碼的序列x^(\u:v)作為輸入。使用對數似然作為目標函數:
圖6給出了一個示例,輸入序列有8個標記,對其中的片段x_3、x_4、x_5、x_6進行掩碼處理。模型只預測了被掩碼的片段x_3、x_4、x_5、x_6,給定x_3、x_4、x_5作為位置4-6的解碼器輸入,解碼器將特殊掩碼符號[M]作為其他位置的輸入。該方法適用于任何基于神經網絡的編碼器-解碼器框架,考慮到Transformer在多個序列學習任務中實現了最先進的性能,作者在實驗中選擇了Transformer。
當k=1時,源句中的掩碼片段只包含一個標記,解碼器在沒有任何標記作為輸入的情況下預測這個標記,但以未掩碼的源標記為條件,如圖17(a)所示。此時,模型就是BERT中使用的掩碼語言模型。當k=m時(m是句子x中的token數),編碼器一側的所有token都掩碼,解碼器需要在給定先前token的情況下預測所有token,如圖7(b)所示。條件概率為P(x^(1:m)|x^(\1:m); θ),此時,模型就是GPT中的標準語言模型,條件是來自編碼器的空信息,因為編碼器側的所有token都被掩碼了。
下面給出兩種跨語言模型( cross-lingual language models,XLMs)方法:一種是只依靠單語數據的無監督方法,另一種是利用平行數據與跨語言模型的有監督方法。XLMs中具體使用了三種目標函數,其中,兩個目標函數只依賴于單語數據(無監督),而第三個則需要平行句子(有監督)??紤]N種語言的情況,假設有N個單語語料庫{C_i}_i=1...N,使用n_i表示C_i中的句子數量。
Shared sub-word vocabulary
通過字節對編碼( Byte Pair Encoding,BPE)創建的同一套共享詞匯來處理所有語言,這極大地改善了不同語言的嵌入空間的一致性,這些語言共享相同的字母或錨定標記,如數字或專有名詞。在從單語語料庫中隨機抽取的句子的連接上學習BPE分詞。句子的抽樣根據概率為{q_i}_i=1...N的分布進行抽樣,其中q_i表示為
Causal Language Modeling (CLM)
因果語言建模(Causal Language Modeling,CLM)任務由一個Transformer語言模型組成,該模型經過訓練,可以根據句子中的前幾個詞來模擬一個詞的概率P(w_t|w_1, ... , w_t-1, θ)。
Masked Language Modeling (MLM)
掩碼語言建模masked language modeling (MLM)任務從文本流中隨機抽取15%的BPE標記,80%用[MASK]標記替換,10%用隨機標記替換,10%保持不動。
圖5. 跨語言的語言模型預訓練。
TLM目標將MLM擴展到平行句子對。為了預測一個被掩碼的英語單詞,該模型可以同時關注英語句子和它的法語翻譯,并鼓勵將英語和法語的表征對齊。重置目標句子的位置嵌入,以促進對齊
Translation Language Modeling (TLM)
CLM和MLM的目標函數都是無監督的,只需要單語數據。當平行數據可用時,進一步引入了一個新的翻譯語言建模( translation language modeling ,TLM)目標函數來改進跨語言的預訓練。TLM的目標函數是對MLM的擴展,不考慮單語文本流,而是將平行的句子連接起來,如圖5所示。在源句和目標句中隨機屏蔽單詞。為了預測英語句子中被掩碼的單詞,該模型既可以關注臨近的英語單詞,也可以關注法語翻譯,鼓勵該模型將英語和法語的表述統一起來。特別是,如果英語上下文不足以推斷出被掩碼的英語單詞時,該模型還可以利用法語上下文。為了促進對齊,重新設定了目標句子的位置。
Cross-lingual Language Models
考慮對本文提及的XLMs(CLM、MLM或TLM)進行跨語言模型預訓練。對于CLM和MLM的目標函數,使用由256個標記組成的64個連續句子流來訓練模型。在每次迭代中,利用來自同一語言的句子組成一個batch,從上述分布{q_i}_i=1...N中取樣,設定公式中α=0.7。當TLM與MLM結合使用時,在這兩個目標函數之間交替執行預訓練,并以類似的方法對語言進行抽樣。
項目 | SOTA!平臺項目詳情頁 |
---|---|
XLMs | 前往SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/xlm |
在BERT的啟發下,提出了一個新的預訓練目標:MAsked Sequence to Sequence learning(MASS)用于語言生成。MASS是基于序列到序列(seq2seq)的學習框架:它的編碼器將一個帶有掩碼片段(幾個連續的標記)的句子作為輸入,它的解碼器根據編碼器的表示預測這個被提及的片段。與BERT或只對編碼器或解碼器進行預訓練的語言模型不同,MASS分兩步對編碼器和解碼器進行聯合預訓練:1)通過預測在編碼器一側被屏蔽的句子片段,MASS可以使得編碼器理解未被掩碼的標記的含義,以便在解碼器一側預測被掩碼的標記。2)通過掩碼源端未掩碼的解碼器的輸入標記,MASS可以令解碼器在預測下一個標記時更多地依賴源端表示,而不是目標端之前的標記,從而更好地促進編碼器和解碼器之間的聯合訓練。
MASS只需要對一個模型進行預訓練,然后在各種下游任務上進行微調。使用transformer作為基本的序列模型,在WMT單語語料庫上進行預訓練,然后在三種不同的語言生成任務上進行微調,包括NMT、文本總結和對話回應生成??紤]到下游任務涵蓋了像NMT這樣的跨語言任務,因此,需對模型進行多語言的預訓練。
圖6. MASS的編碼器-解碼器框架。符號'_'代表掩碼符號[M]
Sequence to Sequence Learning
令(x, y)∈(X , Y)表示一個句子對,其中,x = (x_1, x_2, ..., x_m)是有m個標記的源句,y = (y_1, y_2, ..., y_n)是有n個標記的目標句,而X和Y是源域和目標域。seq2seq模型學習參數θ來估計條件概率P(y|x; θ),通常使用對數似然作為目標函數
條件概率P(y|x; θ)可以根據chain rule進一步分解如下:
seq2seq學習的一個主要方法是 encoder-decoder 框架。編碼器讀取源序列并生成一組表征;解碼器根據源表征和其前面的標記估計每個目標標記的條件概率。在編碼器和解碼器之間進一步引入了注意力機制,以找到在預測當前標記時應關注的源表示法。
Masked Sequence to Sequence Pre-training
MASS通過預測句子片段x^(u:v)來預訓練一個seq2seq的模型,將被掩碼的序列x^(\u:v)作為輸入。使用對數似然作為目標函數:
圖6給出了一個示例,輸入序列有8個標記,對其中的片段x_3、x_4、x_5、x_6進行掩碼處理。模型只預測了被掩碼的片段x_3、x_4、x_5、x_6,給定x_3、x_4、x_5作為位置4-6的解碼器輸入,解碼器將特殊掩碼符號[M]作為其他位置的輸入。該方法適用于任何基于神經網絡的編碼器-解碼器框架,考慮到Transformer在多個序列學習任務中實現了最先進的性能,作者在實驗中選擇了Transformer。
當k=1時,源句中的掩碼片段只包含一個標記,解碼器在沒有任何標記作為輸入的情況下預測這個標記,但以未掩碼的源標記為條件,如圖7(a)所示。此時,模型就是BERT中使用的掩碼語言模型。當k=m時(m是句子x中的token數),編碼器一側的所有token都掩碼,解碼器需要在給定先前token的情況下預測所有token,如圖17(b)所示。條件概率為P(x^(1:m)|x^(\1:m); θ),此時,模型就是GPT中的標準語言模型,條件是來自編碼器的空信息,因為編碼器側的所有token都被掩碼了。
項目 | SOTA!平臺項目詳情頁 |
---|---|
MASS | 前往SOTA!模型平臺獲取實現資源:https://sota.jiqizhixin.com/project/mass |
前往 SOTA!模型資源站(sota.jiqizhixin.com)即可獲取本文中包含的模型實現代碼、預訓練模型及API等資源。
網頁端訪問:在瀏覽器地址欄輸入新版站點地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平臺,查看關注的模型是否有新資源收錄。