Unsupervised Neural Machine Translation with Weight Sharing


這是來自於中科院的的一篇文章,發表於2018年ACL。

文章鏈接:

Unsupervised Neural Machine Translation with Weight Sharing

代碼鏈接:

https://github.com/ZhenYangIACAS/unsupervised-NMT

知識點

  1. 使用兩個獨立的編碼器(每種語言對應一個),但共享一部分權重。
  2. 提出了兩種不同的生成對抗網絡(GANs),即局部GAN和全局GAN,以增強跨語言翻譯。
  3. 使用了 Directional self-attention。
  4. 使用了去噪自編碼器和回譯過程。
  5. 用到了跨語言詞嵌入。

摘要

無監督神經機器翻譯(NMT)是最近提出的一種機器翻譯方法,其目的是在不使用任何標記數據的情況下訓練模型。無監督NMT提出的模型通常只使用一個共享編碼器將不同語言的句子對映射到一個共享潛在空間,這種方法在保持每一種語言的特性和內在特徵,如風格、術語和句子結構上表現不好。爲了解決這個問題,我們引入了一個擴展方法,使用兩個獨立的編碼器,但共享一部分權重,負責提取輸入句子的高級表示。此外,還提出了兩種不同的生成對抗網絡(GANs),即局部GAN和全局GAN,以增強跨語言翻譯。通過這種新的方法,我們在英德、英法、漢英翻譯任務上取得了顯著的進步。

介紹

被最近無監督跨語言詞嵌入所取得的成功《Learning principled bilingual mappings of word embeddings while preserving monolingual invariance》、《Adversarial training for unsupervised
bilingual lexicon induction》、《facebook第一篇》所激勵,無監督NMT的模型經常假設: 來自於不同語言的句子對可以在共享的潛在空間中映射爲相同的潛在表示(如facebook第二篇文章中的工作)。基於這一假設,Lample等人(facebook第二篇文章)對源語言和目標語言都使用單一編碼器和單一解碼器。編碼器和解碼器,作爲一個標準的auto-encoder(AE),被訓練用以重建輸入。《Unsupervised Neural Machine Translation》中用了一個共享編碼器,但兩個獨立的解碼器。儘管有一些良好的性能,但它們都有一個明顯的缺陷,即,源語言和目標語言只共享一個編碼器。雖然共享編碼器對於將不同語言的句子映射到共享潛在空間至關重要,但它在保持每一種語言的獨特性和內在特徵(比如文體、術語和句子結構)方面是很弱的。由於每種語言都有自己的特點,源語言和目標語言都應該獨立編碼和學習。因此,我們推測共享編碼器可能是限制潛在翻譯性能的一個因素。

爲了解決這個問題,我們擴展了編碼器共享模型,即使用兩個獨立編碼器,一種語言對應一個。類似地,使用了兩個獨立的解碼器。對於每種語言,編碼器及其相應的解碼器執行AE,其中編碼器從擾動的輸入語句生成潛在的表示,而解碼器從潛在的表示重新構造語句。爲了將不同語言的潛在表示映射到共享潛在空間,我們提出對兩個AEs做權重共享約束。具體來說,我們共享負責提取輸入語句的高級表示的兩個編碼器的最後幾層的權重。類似地,我們共享兩個解碼器的前幾層的權重。爲了加強共享潛在空間,詞嵌入在我們的編碼器中被用作增強的編碼組件。對於跨語言翻譯,我們使用了反向翻譯(facebook第二篇中的方法)。此外,還提出了兩種不同的生成對抗網絡(GAN):local GAN and global GAN(《Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets》中的方法)。旨在進一步提高跨語言翻譯。我們利用局部GAN來約束源和目標的潛在表示,使其具有相同的分佈,因此編碼器試圖欺騙一個局部鑑別器,該鑑別器同時被訓練來區分給定的潛在空間所表示的語言。我們通過全局GAN對相應的生成器進行微調,比如,其他語言的編碼器和解碼器的組成,通過評估生成的句子與真實數據分佈的距離,利用全局鑑別器來指導生成器的訓練。
綜上所述,我們主要貢獻如下:

  1. 我們爲無監督的NMT提出了權重共享約束,使模型能夠爲每種語言使用獨立的編碼器。爲了加強共享潛空間,我們還提出了增強詞嵌入的編碼器和兩種GANs。
  2. 我們進行了大量的英德、英法、漢英翻譯實驗。實驗結果表明,該方法取得了較好的效果。
  3. 最後,針對所提出的模型,我們將定向self-attention引入到模型的時間序列信息中。實驗結果表明,研究 NMT self-attention層內的時間順序信息值得研究者付出更多的努力。

模型結構

在這裏插入圖片描述
如圖1所示,模型架構基於AE和GAN。它由七個子網絡組成:包括兩個編碼器Enc_s和Enc_t,兩個解碼器Dec_s和Dec_t,本地鑑別器D_l,和全局鑑別器D_g1和D_g2。編碼器和解碼器使用Transformer中的結構。具體來說,編碼器是由四個相同的層組成的堆棧。每一層由一個multi-head self-attention和一個簡單的全連接前饋神經網絡組成。解碼器也由四個相同的層組成。除了每個編碼器層中的兩個子層外,解碼器還插入第三個子層,該子層對編碼器堆棧的輸出執行多頭注意。局部GAN使用多層感知基實現,並基於卷積神經網絡(CNN)實現全局GAN。表1總結了幾種解釋子網角色的方法。該系統有幾個引人注目的組成部分,這些部分對於系統以無監督的方式進行訓練或提高翻譯性能都是至關重要的。

在這裏插入圖片描述

定向self-attention

遞歸神經網絡相比,簡單的self-attention的一個缺點是時間順序信息丟失。雖然Transformer在self-attention之前對序列做了位置編碼,如何對注意力內的時間順序信息進行建模仍然是一個有待解決的問題。使用《DiSAN: Directional Self-Attention Network for RNN/CNN-Free Language Understanding》一文中的方法,我們在模型中使用directional self-attention來建立編碼器,利用位置掩碼將時間順序信息編碼到attention輸出中。更具體地說,兩個位置掩碼,即前向掩碼M_f 和後向掩碼M_b,計算公式如下:

在這裏插入圖片描述
使用前向掩碼M_f, later token僅僅做 attention 連接到序列中的early tokens,反之亦然。我們利用一個 self-attention 網絡來處理前向輸入序列。這一層的輸出作爲 upper self-attention 層的輸入,並按相反的方向進行處理。

權重共享

以共享潛在空間假設爲基礎,我們應用了權值共享約束來關聯這兩個AEs。具體來說,我們共享Encs和Enct的最後幾層的權重,它們負責提取輸入語句的高級表示。類似地,我們也共享Decs和Dect的前幾層,它們被期望解碼對重建輸入語句至關重要的高層表示。《Neural Machine Translation with Pivot Languages》、《A Correlational Encoder Decoder Architecture for Pivot Based Sequence》兩篇文章中使用完全共享的編碼器,而我們只共享編碼器和解碼器的部分權重。在提出的模型中,兩個編碼器的獨立權值被期望學習和編碼每種語言內部特徵的隱藏特徵,如術語、風格和句子結構。利用共享權值將獨立權值提取的隱藏特徵映射到共享潛空間。

Embedding reinforced encoder

在編碼器中我們使用預訓練得到的跨語言詞嵌入,並且在訓練的過程中固定不變。在我們的編碼器中,固定詞嵌入被用作增強的編碼組件。正式的講,給定輸入序列詞嵌入E={e_1,…,e_t}和編碼器堆棧的初始輸出序列H={h_1,…,h_t},我們計算H_r:
在這裏插入圖片描述
H_r是編碼器的最終輸出序列,並且將作爲解碼器的輸入(在Transformer中,H是編碼器的最終輸出),g是門限單元,計算公式爲:
在這裏插入圖片描述
W_1、W_2和b是可訓練參數,他們被兩個編碼器共享。背後的動機是雙重的。首先,將固定的跨語言詞嵌入作爲編碼的另一個組成部分,有助於增強共享的潛在空間。此外,從多通道編碼器的角度來看,提供具有不同組合層次的編碼組件,使解碼器能夠根據自己的語言結構在不同的組合層次提取源句片段。

無監督訓練

基於上述架構,我們僅使用以下四種策略對單語語料庫的NMT模型進行訓練:

Denoising auto-encoding

首先,我們訓練這兩個AEs分別重建它們的輸入。在這種形式中,每個編碼器應該學會組合其相應語言的詞嵌入,每個解碼器應該學會將這種表示分解爲對應的表示語言。然而,在沒有任何約束的情況下,AE很快就學會了,只是一個一個地複製每個單詞,而沒有捕捉到所涉及語言的任何內部結構。爲了解決這個問題,我們使用去噪策略,在輸入句子中加入了一些噪聲,爲此,我們隨機打亂輸入的句子。具體來說,我們對輸入的句子進行隨機排列”,驗證條件爲:
在這裏插入圖片描述
其中n爲輸入語句的長度,steps爲模型已更新的全局步驟,k和s爲用戶可事先設置的可調參數。通過這種方式,系統需要學習相關語言的一些有用結構,以便能夠恢復正確的詞序。在實際中,我們令k = 2, s = 100000。

Back-translation

儘管進行了去噪自編碼,每次訓練過程仍然只使用一種語言,而不考慮將輸入語句從源/目標語言映射到目標/源語言的最終目標。在跨語言訓練中,我們採用了反向翻譯的方法。反向翻譯在單語數據模型的改進中取得了良好的效果。在我們的方法中,給定源語言中的一個輸入句子,我們應用另一種語言的相應編碼器和解碼器將其翻譯成另一種語言。將譯文與原句結合起來,得到一個僞平行語料庫,利用該語料庫訓練模型,從譯文中重構原句。

Local GAN

雖然權值共享約束對於共享潛在空間假設至關重要,但僅權值共享約束並不能保證兩種語言中相應的句子具有相同或相似的潛在碼。爲了進一步加強共享潛空間,我們訓練了一個判別神經網絡(稱爲局部判別器)來對源句編碼和目標句編碼進行分類。局部鑑別器是一個多層感知器,有兩個大小爲256的隱藏層,它接收編碼器的輸出,例如,上式得到的H_r作爲輸入,併產生關於輸入語句語言的二元預測。局部鑑別器被訓練通過最小化下面的交叉熵損失來預測語言:

在這裏插入圖片描述
Global GAN

我們應用全局GANs對整個模型進行微調,使模型能夠生成與真實數據難以區分的句子,比如,訓練語料庫中的句子。與局部GANs更新編碼器的參數不同,全局GANs用於更新整個模型的參數,包括編碼器和解碼器的參數。該模型有兩個全局GAN:GAN_g1和GAN_g2。在GAN_g1中,Enc_t和Dec_s作爲生成器,從xt生成句子xt^ 。基於CNN實現的D_g1可以判斷生成的句子xt^是真正的目標語句子還是生成的句子。全局判別器的目標是區分真實句子和生成的句子,並通過訓練使分類錯誤率最小化。在訓練期間,D_g1反饋它的評估,以對編碼器Enc_t 和解碼器 Dec_s 進行微調。由於機器翻譯是一個序列生成問題,我們利用策略梯度強化訓練來反向傳播評估。我們對GAN_g2應用了類似的處理(關於全局鑑別器的結構細節和訓練過程見附錄B和C)。無監督訓練分爲兩個階段。在第一個階段,我們對提出的模型進行去噪自編碼、反向翻譯和局部GANs的訓練,直到開發集沒有任何改進。具體來說,我們對源語言和目標語言進行了一批去噪自編碼,對這兩種語言進行了一批反向翻譯,對這兩種語言進行了另一批局部GAN。在第二階段,我們使用全局GANs對所提出的模型進行微調。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章