作者:zhbzz2007 出處:http://www.cnblogs.com/zhbzz2007 歡迎轉載,也請保留這段聲明。謝謝!
本文主要是翻譯及整理MSRA 劉鐵岩團隊在NIPS 2016 會議上發表的論文“Dual Learning for Machine Translation”。對於論文中的算法思想可能還沒有理解透徹,還請諸位大牛多多指教。
1 簡介
最先進的機器翻譯系統,包括基於短語的統計機器翻譯方法、最近出現的基於神經網絡的翻譯方法,嚴重依賴於對齊的平行訓練語料。然而,實際收集這些平行語料數據的代價非常大,因此語料的規模也往往有限,這將會限制相關的研究和應用。
我們知道在互聯網中存在海量的單語數據,很自然的想到,能否利用它們去提升機器翻譯系統的效果呢?實際上,基於這個想法,研究人員已經提出了許多不同的方法,這里可以粗略的分為兩類。第一類,目標語言的單語語料被用於訓練語言模型,然后集成到翻譯模型(從平行雙語語料中訓練出)中,最終提升翻譯質量。第二類,通過使用翻譯模型(從對齊的平行語料中訓練)從單語數據中生成偽雙語句對,然后在后續的訓練過程中,這些偽雙語句對被用於擴充訓練數據。盡管上述方法能夠在一定程度上提升翻譯系統的效果,但是它們依然存在一定的局限性。第一類的方法只使用了單語數據來訓練語言模型,並沒有解決平行訓練數據不足這個問題。盡管第二類方法可以擴充平行訓練數據,但是並不能保證偽雙語句對的質量。
在這篇文章中,劉鐵岩團隊提出了一種Dual-Learning(對偶學習)機制,可以有效地利用單語數據(源語言與目標語言)。通過使用他們提出的機制,單語數據與平行雙語數據扮演着相似的角色,在訓練過程中,可以顯著降低對平行雙語數據的要求。對偶學習機制應用在機器翻譯中,可以想象成兩個agent(機器)在玩通信游戲,如下圖所示,
- 第一個機器,只理解語言A,通過噪聲信道,發送一條信息(是語言A)給第二個機器,噪聲信道通過翻譯模型會將語言A轉換成語言B;
- 第二個機器,只理解語言B,接收到翻譯過來的信息(是語言B)。它檢查這條信息,並通知第一個機器(第二個機器可能無法確認這個翻譯的正確性,因為它不知道原始的消息)。然后,它通過另一個噪聲信道(使用另外一個翻譯模型,將接收到的消息從語言B轉換為語言A)將接收到的信息發送給第一個機器。
- 從第二個機器接收到信息后,第一個機器會檢查它,並通知第二個機器它接收到的信息是否包含它原來的信息。通過這個反饋,兩個機器就可以知道這兩個通信信道(也就是兩個翻譯模型)表現是否良好以及能否提高它們的效果。
- 這個游戲也可以從第二個機器開始,那么原始的消息就是語言B,這兩個機器將會經過一個對稱化的過程,通過反饋從而提高兩個信道(翻譯模型)的效果。
從上面的描述中,很容易發現,盡管兩個機器可能沒有對齊的雙語語料,它們依然可以獲得兩個翻譯模型的翻譯質量方面的反饋,然后基於反饋持續提升模型的效果。這個游戲可以玩任意輪,兩個翻譯模型通過強化過程(例如,通過策略梯度方法)得到持續改善。通過這種方式,他們開發了一個通用的學習框架,通過對偶學習游戲,這個框架可用於訓練機器翻譯模型。
對偶學習機制很一些不同的特點。首先,我們通過強化學習從未標注數據中訓練翻譯模型。這個工作顯著降低了對對齊雙語數據的要求,它打開了一個新的窗口,可以從頭開始(甚至不使用任何平行數據)學習一個翻譯模型。實驗結果顯示,這個方法很有前景。
其次,顯示出深度強化學習(DRL)在復雜真實世界中的應用,而不僅僅是在游戲這個領域。在最近幾年,深度強化學習吸引了很多科研人員的注意力。但是,大部分應用還是集中在視頻或者棋盤游戲,將深度強化學習應用到更加復雜的應用(規則沒有事先定義好,並且沒有明確的獎勵信號),依然存在很大挑戰。對偶學習提供了一種很有前景的方式,可以在真實世界應用中,例如,機器翻譯,抽取出強化學習需要的獎勵信號。
2 相關背景
對偶學習框架可以應用到基於短語的統計機器翻譯和神經機器翻譯中。在這篇文章中,我們主要聚焦在后者--神經機器翻譯,因為它作為一個端到端的系統,很簡單,不需要人工設計精巧的工程。
神經機器翻譯系統通常是通過基於編碼-解碼框架的循環神經網絡(RNN)來實現。這個框架從源語言句子 \(x = {x1,x2,...,x_{Tx}}\) 到目標語言 \(y = {y1,y2,...,y_{Ty}}\) 學習了一個概率映射 P(y|x),其中,xi 和 yt 分別是句子x的第i個詞和句子y的第t個詞。
更具體一些,神經機器翻譯的編碼器讀取源語言句子 x ,然后基於RNN生成 \(T_{x}\) 個狀態,
\(h_{i} = f(h_{i-1},x_{i})\ \ \ \ \ \ (1)\)
\(h_{i}\) 是時刻t的隱狀態,函數f是循環單元,例如Long Short-Term Memory(LSTM)單元或者Grated Recurrent Unit(GRU)。然后,神經網絡的解碼器計算每個目標詞 \(y_{t}\) 的條件概率,對於 \(y_{t}\) ,已知它先前的詞 \(y_{<t}\) 和源語言句子,例如, 基於概率鏈式法則, 使用 \(P(y_{t}|y_{<t},x)\) 來確定 \(P(y|x)\) 。\(P(y_{t}|y_{<t},x)\) 如下列所示,
\(P(y_{t}|y_{<t},x) \varpropto exp(y_{t};r_{t},c_{t})\ \ \ \ \ \ (2)\)
\(r_{t}=g(r_{t-1},y_{t-1},c_{t})\ \ \ \ \ \ (3)\)
\(c_{t}=q(r_{t-1},h_{1},...,h_{T_{x}})\ \ \ \ \ \ (4)\)
其中, \(r_{t}\) 是解碼器RNN在時刻t的隱狀態,相似地,也是通過LSTM或者GRU進行計算; \(c_{t}\) 根據編碼器的隱狀態定義了生成詞 \(y_{t}\) 的上下文信息。 \(c_{t}\) 可以是句子 x 的全局信息,例如 \(c_{1}=c_{2}=...=c_{T_{y}}=h_{T_{x}}\) , 或者是局部信息,局部信息通過注意力機制實現,例如 \(c_{t}=\sum_{i=1}^{T_{x}}\alpha_{i}h_{i},\alpha_{i}=\frac{exp\{a(h_{i},r_{t-1})\}}{\sum_{j}exp\{a(h_{j},r_{t-1})\}}\) , 其中, \(a(.,.)\) 是一個前饋神經網絡。
我們將神經網絡中待優化的所有參數定義為 \(\Theta\) ,將用於訓練的源語言-目標語言數據集定義為 D ,然后要學習的目標函數就是尋找最優的參數 \(\Theta^{*}\) 。
\(\Theta^{*}=argmax_{\Theta}\sum_{(x,y)\in{D}}\sum_{t=1}^{T_{y}}logP(y_{t}|y_{<t},x;\Theta)\ \ \ \ \ \ (5)\)
3 對偶學習在機器翻譯中的應用
在這章中,我們將會介紹對偶學習機制在神經機器翻譯中的應用。注意到翻譯任務經常是兩個方向,我們首先設計一個有兩個機器人的游戲,包含前向翻譯步驟和反向翻譯步驟,即使只使用單語數據,也可以給兩個對偶翻譯模型提供質量反饋。然后我們提出了對偶學習算法,稱之為對偶神經機器翻譯(簡稱dual-NMT),在游戲中,基於反饋回來的質量,提升兩個翻譯模型。
有兩個單語語料 \(D_{A}\) 和 \(D_{B}\) ,分別包含語言A和語言B的句子。需要注意的是,這兩個語料並不需要互相對齊,甚至互相之間一點關系都沒有。假設,我們右兩個弱翻譯模型,可以將句子從語言A翻譯到語言B,反之亦然。我們的目標是使用單語語料而非平行語料來提高兩個模型的准確率。從任何一個單語數據的句子開始,我們首先將其翻譯為另一種語言,然后再將其翻譯回原始語言。通過評估這兩個翻譯結果,我們將會了解到兩個翻譯模型的質量,並根據此來提升它們。這個過程可以迭代很多輪直到翻譯模型收斂。
假設語料 \(D_{A}\) 有 \(N_{A}\) 個句子, \(D_{B}\) 有 \(N_{B}\) 個句子。定義 \(P(.|s;\Theta_{AB})\) 和 \(P(.|s;\Theta_{BA})\) 為兩個神經翻譯模型,這里 \(\Theta_{AB}\) 和 \(\Theta_{BA}\) 是它們的參數(正如第2章中所描述)。
假設我們已經有兩個訓練好的語言模型 \(LM_{A}(.)\) 和 \(LM_{B}(.)\) (很容易獲得,因為它們只需要單語數據),每個語言模型獲取一個句子作為輸入,然后輸出一個實數值,用於表示這個句子是它所屬語言自然句子的自信度。這里,語言模型既可以使用其他資源,也可以僅僅使用單語數據 \(D_{A}\) 和 \(D_{B}\)。
如果游戲是從 \(D_{A}\) 中的句子 s 開始 ,定義 \(s_{mid}\) 作為中間翻譯輸出。這個中間步驟有一個中間的獎勵 \(r_{1} = LM_{B}(s_{mid})\) , 表示輸出句子在語言 B 中的自然程度。已知中間翻譯輸出 \(s_{mid}\) ,我們使用從 \(s_{mid}\) 還原過來的 s 的對數概率作為通信的獎勵(我們將會交替使用重構和通信)。數學上定義, 獎勵 \(r_{2} = log P(s|s_{mid};\Theta_{BA})\) 。
我們簡單采用語言模型獎勵和通信獎勵的線性組合作為整體獎勵,例如, \(r = \alpha r_{1} + (1-\alpha) r_{2}\) , 這里 \(\alpha\) 是超參數。由於游戲的獎勵可以視為s , \(s_{mid}\) 以及翻譯模型 \(\Theta_{AB}\) 和 \(\Theta_{BA}\) 的函數,因此,我們可以通過策略梯度方法來優化翻譯模型中的參數,從而達到獎勵最大化,這個方法在強化學習中應用很廣泛。
我們基於翻譯模型 \(P(.|s;\Theta_{BA})\) 采樣出 \(s_{mid}\) 。然后我們計算期望獎勵 \(E[r]\) 關於參數 \(\Theta_{AB}\) 和 \(\Theta_{BA}\) 的梯度。根據策略梯度定理,很容易得到,
\(\bigtriangledown_{\Theta_{BA}}E[r]=E[(1-\alpha)\bigtriangledown_{\Theta_{BA}}log P(s|s_{mid;\Theta_{BA}})]\ \ \ \ \ (6)\)
\(\bigtriangledown_{\Theta_{AB}}E[r]=E[r\bigtriangledown_{\Theta_{AB}}log P(s_{mid}|s;\Theta_{AB})]\ \ \ \ \ (7)\)
這里期望替換掉 \(s_{mid}\) 。
基於公式(6)和公式(7),我們可以采用任何的采樣方法來估計期望的梯度。考慮到隨機采樣將會帶來非常大的方差,並且會導致機器翻譯中出現不合理的結果,針對梯度計算,我們使用束搜索來獲取更加有意義的結果(更加合理的中間翻譯輸出),例如,我們貪婪地產生top-K個高概率的中間翻譯輸出,然后使用束搜索的平均值來近似真實的梯度。如果游戲是在 \(D_{B}\) 中的句子 s 開始,梯度的計算就是一個對稱,在此,我們忽略掉它。
游戲可以重復很多輪。在每一輪中,一個句子從 \(D_{A}\) 中采樣,另一個句子是從 \(D_{B}\) 中采樣,我們基於游戲(分別從兩個句子開始)來更新這兩個翻譯模型。具體的細節在算法1中給出。
4 相關實驗
我們做了一系列實驗來測試提出的對偶學習機制在機器翻譯上的效果。
4.1 實驗設置
我們使用兩個基准系統和對偶機器翻譯方法進行對比,1)標准神經機器翻譯(簡稱NMT),2)最近提出的基於NMT的方法,通過單語語料生成偽雙語句對用於輔助訓練(簡稱pseudo-NMT)。我們的所有實驗都是使用Theano實現的輔助NMT系統來完成。
我們評估這些算法在一對翻譯任務上的效果,包括英語翻譯為法語(En->Fr)和法語到英語(Fr->En)。具體地,我們使用相同的雙語語料,語料來源於WMT14,共有1200萬句對。然后將newstest2012和newstest2013作為開發數據集,newstest2014作為測試數據集。WMT14 提供的“News Crawl:articles from 2012”作為單語數據。
我們使用GRU網絡並遵循論文1(D. Bahdanau, K. Cho, and Y. Bengio. Neural machine translation by jointly learning to align
and translate. ICLR, 2015.)中的實踐來設置實驗參數。對於每種語言,我們用平行語料中最頻繁的3萬個詞構造詞匯表,將包含至少一個OOV單詞的句子刪除。每個詞被映射到620維的連續向量空間,循環單元的維度是1000。我們將訓練集中超過50個詞的句子刪除。batch的大小為80,每20個batch被預取,並按照句子長度排序。
對於基准的NMT模型,我們完全按照論文1提出的設置。對於基准的pseudo-NMT模型,我們使用訓練好的NMT模型從單語數據中生成偽雙語句對,刪除超過50個詞的句子,將生成的數據與原始平行訓練數據融合在一起,然后訓練這個模型,並用於測試。每個基准系統通過AdaDelta算法在K40m GPU進行訓練,直到它們的效果在開發集上不再提升為止。
對偶神經機器翻譯(簡稱dual-NMT)模型需要每種語言的語言模型。我們對於每種語言,使用相應的單語語料,訓練了基於RNN的語言模型。實驗中,語言模型就固定了,然后收到信息的對數似然作為通信信道(例如,翻譯模型)的獎勵。
在玩游戲時,我們使用暖啟動翻譯模型(已經從雙語語料中訓練出來的)來初始化信道,然后觀察dual-NMT模型能否有效提升模型翻譯准確率。在我們的實驗中,為了從雙語數據訓練的初始模型平滑過渡到完全從單語數據訓練的模型,我們采用了以下軟着陸策略。在每次對偶學習過程的開始,對於每個mini batch,我們使用單語數據一半的句子和雙語數據(從數據中采樣出來的用於訓練初始模型)中一半的句子。目標就是基於單語數據最大化獎勵(在第3部分定義的)的加權之和以及基於雙語數據的似然度(在第2部分定義)。隨着訓練過程的持續,我們逐漸在mini batch中增加單語數據的比例,直到完全不使用雙語數據。這里,我們在實驗中測試了兩個測試:
- 第一個設置(參考Large),我們在軟着陸階段,使用全部的1200萬雙語句對。也就是,暖啟動模型是基於全部雙語數據進行學習的;
- 第二個設置(參考Small),我們在1200萬雙語句對中隨機采樣了10%的數據,並在軟着陸階段使用它;
對於每個設置,我們都是訓練對偶機器翻譯算法一周。我們在中間翻譯過程中設置束搜索大小為2。實驗中的所有超參數通過交叉驗證來設置。我們使用BLEU作為評估標准,由moses提供的 腳本工具 進行計算。遵循常規的實踐,在測試階段,如同先前許多的工作,我們對於所有的算法均使用大小為12的束搜索。
4.2 實驗結果分析
我們在這部分分析實驗結果。回憶之前提到的兩個基線系統,英語->法語和法語->英語是分別訓練的,但是,dual-NMT系統一起訓練這兩個基線系統。我們在表1中總結了所有系統的效果,在源語言句子的各個長度上的BLEU分值曲線在圖1中畫出。
從表1中,我們可以看到dual-NMT系統在所有的設置中均超過了基線系統。在從英語翻譯為法語的任務上,dual-NMT系統分別在第一種/第二種暖啟動方式超過基線NMT系統大約2.1/3.4個百分點,超過pseudo-NMT大約1.7/3.1個百分點。在從法語翻譯為英語的任務上,提升更加顯著,dual-NMT系統在第一個/第二個暖啟動方式上分別超過NMT大約2.3/5.2個百分點,超過pseudo-NMT大約2.1/4.3個百分點。令人驚訝的是,在只有10%的雙語數據上法語翻譯為英語的任務中,相比使用100%的常規NMT系統,dual-NMT取得了可比的翻譯正確率。這些結果顯示了dual-NMT算法的有效性。另外,我們也觀察到如下結果:
- 盡管pseudo-NMT的效果超過NMT,它的提升並不顯著。我們認為,可能是從單語數據中生成的偽雙語句對質量不好,這個限制了pseudo-NMT的效果提升。需要注意的就是需要仔細選擇和過濾生成的偽雙語句對,以便pseudo-NMT可以取得更好的效果;
- 當平行雙語數據較少時,dual-NMT可以有更大的提升。這個顯示了對偶學習機器可以很好的利用單語數據。因此,我們認為dual-NMT在較少的有標簽平行數據和更大的單語句對上更有用。dual-NMT打開了一個新的窗口,可以從頭開始學習一個翻譯模型。
我們在源語言句子的各個長度上的BLEU分值曲線在圖1中畫出。從這個圖中,我們可以看出dual-NMT算法在所有的長度上超過了基准系統。
我們對dual-NMT算法做了一些更深入的研究,如表2所示。我們研究了各個算法的重構后的效果:對於測試集的每個句子,我們將它翻譯到第4次並返回,然后使用BLEU分值來檢查返回的翻譯句子。我們使用束搜索生成所有的翻譯結果。很容易地從表2中觀察到,dual-NMT的重構后的BLEU分數比NMT和pseudo-NMT更高。實際上,在從大規模平行數據上訓練的暖啟動模型上,dual-NMT超出NMT大約11.9/9.6,在10%數據上訓練的暖啟動模型上,dual-NMT超出NMT大約20.7/17.8。
我們在表3上列出了幾個例句,用於對比使用對偶學習之前和之后模型的重構結果。很明顯,在對偶學習之后,重構的效果在兩個方向(英語->法語->英語,法語->英語->法語)上都有很大提升。
總之,所有的結果均顯示出對偶學習機器很有前景並且可以更好地利用單語數據。
5 擴展
在這部分,我們討論對偶學習機制可能的擴展。
首先,盡管在我們在這篇文章中集中在機器翻譯任務上,但是對偶學習的基本思想具有通用的應用性:只要兩個任務具備對偶形式,我們就可以利用強化學習算法將對偶機學習機制應用到從未標注數據中同時學習兩個任務。實際上,許多人工智能任務天然的是對偶形式,例如,語音識別和語音合成,圖像抓取和圖像合成,問題回答和問題生成,搜索(匹配查詢詞與文檔的相似度)和關鍵詞抽取(從文檔中抽取關鍵字/查詢詞)等等。對於更多的對偶任務,而不僅僅是機器翻譯,設計和測試對偶學習算法將會很有意義。
第二,盡管我們將對偶學習集中在兩個任務上,但是我們的技術並不僅僅局限在兩個任務。實際上,我們主要的想法是形成一個閉環,目的是我們通過比較原始輸入數據和最終輸出數據,能夠提取出反饋信號。因此,如果有多於兩個相關的任務可以形成閉環,我們可以應用這個技術來提升每個任務在無標簽數據的效果。例如,對於英語句子 x ,我們可以先將它翻譯為中文句子 y ,然后將 y 翻譯為法語句子 z ,最終再將 z 翻譯為英文句子 \(x^{'}\) 。句子 x 和 \(x^{'}\) 的相似度可以表示閉環中三個翻譯模型的有效性,我們基於閉環中的反饋信號可以再次使用策略梯度方法來更新和提升這些模型。我們更願意將這種通用的對偶學習命名為閉環學習,並且在未來會測試它的有效性。
6 展望
我們計划在后續探索如下的方向,第一,在實驗中,我們使用了雙語數據用於暖啟動dual-NMT的訓練。更加激動的方向就是從頭學習,例如,直接從兩種語言的單語數據(可能需要詞匯詞典)開始學習。第二,dual-NMT是基於NMT系統的,我們基本的想法也可以用於基於短語的統計機器翻譯系統中,我們將會探索這個方向。第三,我們僅僅考慮一對語言,我們將會進行擴展,使用單語數據,聯合訓練至少3種語言的翻譯模型。
7 從控制系統的角度思考對偶學習
在第5章中,提到了對偶學習可以視為一個閉環學習。閉環學習的概念來源於反饋控制系統。反饋控制系統,輸入信號經過控制器、執行器,得到輸出信號,然后再將輸出信號采集回來,輸入信號減去采集回來的輸出信號,得到誤差,根據誤差來調節控制器,使得輸出能夠跟隨輸入信號。
對偶神經機器翻譯系統可以視為一個反饋控制系統,這里以中文翻譯為英文,再將英文翻譯為中文為例。
- 通過中->英翻譯模型將中文翻譯為英文,就是將輸入信號通過控制器、執行器,轉換為輸出信號,也就是英文;
- 通過英->中翻譯模型將英文翻譯為中文,就是將輸出信號通過信號采集器返回給輸入端,轉換為與輸入信號同等量綱的信號,也即中文;
- 通過指標,比較原始中文與翻譯過來的中文的相似性,來評估兩個翻譯模型的效果,也就是計算輸入信號與采集回來的信號之間的誤差,從而通過控制器的調節,調整輸出信號的變化;
循環迭代,直到輸出信號能夠跟隨輸入信號。
在控制系統的設計中,需要考慮三個指標:
- 穩定性
- 准確性
- 快速性
分別將這三個指標對應到對偶機器翻譯系統中,
- 穩定性就是對偶機器翻譯系統中兩個翻譯模型的穩定性,如果翻譯系統存在漏翻譯、翻譯質量低等問題,能否在迭代過程中逐漸改善?如果不能得到改善,將會導致翻譯質量會越來越低,而非越來越好,這個系統就會逐漸的變差,也就是這個系統是不穩定的。
- 准確性,也就是對偶機器翻譯系統最終穩定時,翻譯質量能達到多少?
- 快速性,如果對偶翻譯系統需要達到一個期望的准確度,需要多少時間能達到?另外,如果要超越NMT基線系統,需要多少時間?
因此,我們可以發現,對偶機器翻譯系統是反饋控制系統的一個特例,對偶機器翻譯系統在設計時,同反饋控制系統一樣,需要考慮穩定性、准確性和快速性三個指標。很期待對偶學習以及其在機器翻譯領域的發展。
8 Reference
Di He, Yingce Xia, Tao Qin, Liwei Wang, Nenghai Yu, Tie-Yan Liu, and Wei-Ying Ma , Dual Learning for Machine Translation , NIPS 2016.