多標籤分類:Google‘s Neural Machine Translation System

文章地址:https://arxiv.org/pdf/1609.08144.pdf

文章標題:Google‘s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation(谷歌的神經機器翻譯系統:彌合人類和機器翻譯之間的鴻溝)2016

寫在前面:本文是2016年穀歌的GNMT模型,基於機器翻譯而不是多標籤分類,但是其主體是基於Seq2Seq的架構模型,因此,對於基於Seq2Seq模型的多標籤分類模型的改進有借鑑之處。對於這篇文章,本文只是粗略翻譯了其模型架構。

Abstract

神經機器翻譯 (NMT) 是一種用於自動翻譯的端到端學習方法,具有克服傳統基於短語的翻譯系統的許多弱點的潛力。在訓練和翻譯中計算成本高昂,有時在非常大的數據集和大型模型的情況下,這一點令人望而卻步。幾位作者還指責NMT系統缺乏健壯性,特別是當輸入句子包含稀有單詞時。在這項工作中,我們介紹了GNMT,谷歌的神經機器翻譯系統,試圖解決其中許多問題。我們的模型由具有 8 個編碼器 + 的深層 LSTM 網絡和 8 個解碼器層組成,使用殘差連接以及從解碼器網絡到編碼器的注意連接。爲了改進並行性,從而減少訓練時間,我們的注意機制將解碼器的底層連接到編碼器的頂層。爲了加快最終翻譯速度,我們在推理計算中採用低精度算法。爲了改進對稀有單詞的處理,我們將單詞劃分爲一組有限的常用子單詞單元(“單詞”),用於輸入和輸出。該方法在"字符"分隔模型的靈活性與"字"分隔模型的效率之間提供了良好的平衡,自然地處理稀有單詞的翻譯,並最終提高了系統的整體準確性。我們的光束搜索技術採用長度-規範化 - 過程,並使用覆蓋懲罰,這鼓勵生成輸出句子,最有可能涵蓋源句中的所有單詞。爲了直接優化BLEU分數的翻譯,我們考慮使用強化學習來優化模型,但我們發現BLEU分數的改進沒有反映在人的評價中。在 WMT’14 英語到法語和"英語對德國"基準上,GNMT 取得了最先進的競爭成果。與谷歌基於短語的生產系統相比,對一組孤立的簡單句子進行人工並排評估,將翻譯錯誤平均減少60%。

一、Introduction

神經機器翻譯(NMT)[39,2]是一種很有前途的方法,它可以解決傳統機器翻譯系統的許多缺點。NMT的優點在於它能夠以端到端方式直接學習從輸入文本到相關輸出文本的映射。它的體系結構通常由兩個遞歸神經網絡(RNNs)組成,一個用於消耗輸入文本序列,另一個用於生成翻譯後的輸出文本。NMT常常伴隨着一個注意機制[2],這有助於它有效地處理長輸入序列。

二、Related Work

三、Model Architecture

我們的模型(見圖1)遵循常見的順序到順序的學習框架[39]和注意[2]。它由三部分組成:編碼器網絡解碼器網絡注意力網絡編碼器將源語句轉換成向量列表,每個輸入符號一個向量。給定這個向量列表,解碼器每次生成一個符號,直到生成特殊的語句結束符號(EOS)。編碼器和解碼器通過注意模塊連接,該注意模塊允許解碼器在解碼過程中聚焦於源語句的不同區域

在我們的實驗中,我們發現爲了使NMT系統達到良好的精度,編碼器和解碼器的RNNs都必須足夠深,以捕獲源語言和目標語言中的細微異常。這一觀察結果與之前的觀察結果類似,即深度LSTMs明顯優於淺層LSTMs[39]。在這項研究中,每增加一層,困惑減少了近10%。與[30]類似,我們對編碼器RNN和解碼器RNN都使用了深度堆棧長短時記憶(LSTM)網絡

我們的注意力模塊類似於[2]。更具體地說,設yi−1爲過去解碼時間步長的decoder-Rnn輸出(在我們的實現中,我們使用雙向底層解碼器層的輸出)。當前時間步長的注意上下文ai按照以下公式計算:
在這裏插入圖片描述
在我們的實現中,注意功能是一個具有一個隱含層的前饋網絡
在這裏插入圖片描述
圖一:谷歌神經機器翻譯系統GNMT的模型體系結構左邊是編碼器網絡,右邊是解碼器網絡,中間是注意模塊。底部的編碼器層是雙向的:粉色節點從左到右收集信息,而綠色節點從右到左收集信息。編碼器的其他層是單向的。在編碼器和解碼器中,殘差連接從第三層開始。該模型被分割成多個gpu以加快訓練速度。在我們的設置中,我們有8個編碼器LSTM層(1個雙向層和7個單向層)和8個解碼器層。使用此設置,一個模型副本被劃分爲8個部分,並放置在通常屬於一臺主機的8個不同的gpu上。在訓練過程中,底層雙向編碼器層首先並行計算。一旦兩個完成,單向編碼器層可以開始計算,每個在一個單獨的GPU。爲了在運行解碼器層的過程中儘可能地保持並行性,我們使用底層解碼器層的輸出來獲得循環注意上下文,該上下文被直接發送到所有剩餘的解碼器層。softmax層也被分區並放置在多個gpu上。根據輸出詞彙表的大小,我們可以讓它們運行在與編碼器和解碼器網絡相同的gpu上,也可以讓它們運行在一組獨立的專用gpu上。

3.1 Residual Connections(殘差連接)

在這裏插入圖片描述
圖二:普通堆疊LSTM和我們的堆疊LSTM之間的區別。左側:簡單堆疊的LSTM層。在右邊:我們實現了具有殘差連接的堆疊LSTM層對於殘差的連接,底層LSTM層(xi到LSTM1)的輸入被作爲元素和添加到底層(xi)的輸出中。然後將這個和作爲新的輸入輸入到頂層LSTM層(LSTM2)

如上所述,與較淺的模型相比,深度疊加的LSTMs通常具有更好的精度。然而,簡單地將更多的LSTM層疊加到一定數量的層上是可行的,超過這些層,網絡就會變得過於緩慢和難以訓練,這可能是由於爆炸和消失的梯度問題造成的[32,21]。根據我們在大型翻譯任務方面的經驗,簡單堆疊的LSTM層最多可以工作4層,僅6層,8層以上的工作就非常糟糕

在[20]的激勵下,我們引入了棧中LSTM層之間的剩餘連接(如圖2所示),具體來說,讓LSTMi和LSTMi+1分別爲棧中的第i層和第(i+1)LSTM層,其參數分別爲Wi和Wi+1。在第t時刻,對於沒有殘差連接的堆疊LSTM,我們有:
在這裏插入圖片描述
其中,xit是第t步LSTMi的輸入,mit和cit分別是第t步LSTMi的隱藏狀態和內存狀態。

LSTMi與LSTMi+1之間存在殘差連接,則有:
在這裏插入圖片描述
殘差連接大大改善了後向通道中的梯度流,這使我們能夠訓練非常深入的編碼器和解碼器網絡。在我們的大多數實驗中,我們爲編碼器和解碼器使用了8個LSTM層,儘管殘差連接可以讓我們訓練更深層的網絡(類似於在[43]中觀察到的)。

3.2 Bi-directional Encoder for First Layer

在這裏插入圖片描述
圖三:在編碼器的第一層中的雙向連接的結構。LSTM層LSTMf從左到右處理信息,而LSTM層LSTMb從右到左處理信息。LSTMf和LSTMb的輸出首先連接起來,然後傳送到下一個LSTM層LSTM1。

對於翻譯系統,在輸出端翻譯某些單詞所需的信息可以出現在源端的任何位置。通常,源端信息近似於從左到右,類似於目標端,但根據語言對,特定輸出字的信息可以分佈在輸入端的某些區域,甚至可以被分割。

爲了在編碼器網絡的每個點上都擁有最好的上下文,使用雙向RNN[35]作爲編碼器是有意義的,這在[2]中也使用過。爲了在計算過程中實現最大可能的並行化(將在3.3節中詳細討論),雙向連接僅用於底層編碼器層——所有其他編碼器層都是單向的。圖3說明了我們在底層編碼器層使用的雙向LSTMs。層LSTMf從左到右處理源句,層LSTMb從右到左處理源句。LSTMf (xft)和LSTMb(xbt)的輸出首先連接起來,然後傳送到下一層LSTM1。

3.3 Model Parallelism(模型的並行性)

由於模型的複雜性,我們利用模型並行性和數據並行性來加速訓練。數據並行性很簡單:我們使用SGD算法[12]並行地訓練n個模型副本。n個副本共享一個模型參數副本,每個副本使用Adam[24]和SGD算法的組合異步更新參數。在我們的實驗中,n通常是10左右。在我們的實驗中,每一個副本一次只能處理一小批m個句子對,通常是128個。

除了數據並行性外,模型並行性還可以提高每個副本上梯度計算的速度。編碼器和解碼器網絡沿着深度維度進行分區,並放置在多個GPU上,有效地在不同的GPU上運行每一層。由於第一層以外的所有編碼器層都是單向的,所以第i+1層可以在第i層完全完成之前開始計算,提高了訓練速度。softmax層也被分區,每個分區負責輸出詞彙表中的一個符號子集。圖1顯示了分區如何完成的更多細節。

模型並行性給我們可以使用的模型架構設置了一定的約束。例如,我們不能爲所有的編碼器層提供雙向的LSTM層,因爲這樣做會減少後續層之間的並行性,因爲每一層都必須等到前一層的前向和後向都完成。這將有效地限制我們並行地使用兩個gpu(一個用於正向,一個用於反向)。對於模型的注意部分,我們選擇將底部解碼器輸出與頂部編碼器輸出對齊,以在運行解碼器網絡時最大化並行性。如果我們將頂層的解碼器層與頂層的編碼器層對齊,我們就會消除解碼器網絡中的所有並行性,並且不會從使用多個GPU進行解碼中受益。

四、Segmentation Approaches

五、Training Criteria

六、Quantizable Model and Quantized Inference

七、Decoder

在解碼過程中,我們使用集束搜索來找到序列Y,該序列最大化了一個給定訓練模型的得分函數s(Y,X)。介紹了基於最大概率的波束搜索算法的兩個重要改進:覆蓋懲罰[40]和長度歸一化。對於長度歸一化,我們的目標是考慮這樣一個事實,即我們必須比較不同長度的假設。如果沒有某種形式的長度規格化,常規的集束搜索將平均更傾向於短結果而不是長結果,因爲每一步都增加了一個負的log-probability,對長句子產生更低的(更負的)分數。我們首先嚐試簡單地除以長度來標準化。我們然後改進了原始的啓發式除以長度,0<α<1,優化開發的集。最後,我們設計了下面這個基於經驗的更好的評分函數,它還包含了一個覆蓋懲罰,以便根據注意力模塊來選擇完全覆蓋源句的翻譯。

在集束搜索中,我們通常保留8-12個假設,但我們發現使用更少的假設(4或2)對BLEU分數只有輕微的負面影響。除了修剪的數量考慮的假設,其他兩種形式的修剪被使用。首先,在每一步中,我們只考慮局部分數不超過該步最佳令牌下面的集束大小的令牌。其次,根據公式14找到歸一化的最佳得分後,我們將所有大於集束大小的假設都裁剪到目前爲止的最佳歸一化得分之下。後一種類型的剪枝只適用於完整的假設,因爲它比較了標準化空間中的分數,而標準化空間僅在假設結束時可用。後一種形式的修剪也有這樣的效果:一旦一個足夠好的假設產生了,很快就不會產生更多的假設已經找到了,所以搜索會很快結束。當在cpu上運行時,剪枝將搜索速度提高30% - 40%,而不進行剪枝(即在預定的最大輸出長度爲源長度的兩倍之後停止解碼)。通常我們使用beamsize = 3.0,除非另有說明。

爲了提高譯碼期間的吞吐量,我們可以將許多長度相似的句子(通常是35個)放入一個批處理中,然後並行地解碼所有這些句子,從而利用爲並行計算優化的可用硬件。在這種情況下,波束搜索只有在批處理中所有句子的所有假設都不在波束中時纔會結束,這在理論上效率略低,但在實踐中額外的計算成本可以忽略不計。

八、Experiments and Results

九、Conclusion

在本文中,我們詳細描述了谷歌的神經機器翻譯(GNMT)系統的實現,包括對其準確性、速度和魯棒性至關重要的所有技術。在公開的WMT’14翻譯基準上,我們的系統的翻譯質量接近或超過所有當前發佈的結果。更重要的是,我們還展示了我們的方法可以應用到更大的生產數據集,這些數據集有幾個數量級的數據,從而提供高質量的翻譯。

我們的主要發現是:1)零件建模有效地處理開放的詞彙表和形態豐富的語言來翻譯質量的挑戰和推理速度,2)的組合模型和數據並行性可以用來有效地訓練最先進的sequence-to-sequence NMT模型在大約一個星期,3)模型量化大大加速翻譯推理,允許使用在部署生產環境中,這些龐大的模型4)許多額外的細節,如長度規格化、覆蓋懲罰等,對於使NMT系統在真實數據上良好工作是必不可少的。

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