「乾貨」神經機器翻譯全流程解析,one-shot 和 zero-shot 學習成亮點
新智元編譯
曾經有人好奇,是否自然地認為翻譯問題應該是一種密碼學問題。被譽為機器翻譯之父的Warren Weaver,曾說過:「This is really written in English, but it has been coded in some strange symbols. I will now proceed to decode.」。希望計算機能夠應付翻譯問題,理論基礎之一是 McCulloch 和 Pitts 於 1943 年證明的定理。定理說明,用某種形式的再生迴路構建的機器程序,能夠從有限的前提中推斷出任何合法的結論。
神經機器翻譯(NMT)是近些年基於純的神經網路(NN)提出的一種機器翻譯框架。首先參考文獻 [Cho et al., 2014; Sutskever et al.,2014; Kalchbrenner and Blunsom, 2013] 等,解釋最基本的 encoder-decoder 模型。在 2015 年 Bahdanau et al. 把 attention 機制集成到基本的 encoder-decoder 模型中,當時在很多語言(en-fr, en-de, en-tr, en-zh)上得到 state-of-the-art 的機器翻譯結果 [Gulcehre et al.,2015; Jean et al., 2015]。同時,上述機器翻譯的技術框架也成功應用到圖像和視頻描述產生上 [Xu et al., 2015;Li et al., 2015]。
1. 統計機器翻譯
首先簡述一下基礎知識,如果讓機器把 A 語言的文本翻譯成 B 語言的話,那麼稱 A 語言為源語言,B 語言為目標語言。不失一般性,本文都以句子翻譯為例。機器翻譯發展了 20 多年,有多種技術框架,例如:讓即懂源語言又懂目標語言的人給出一些規則,顯然這不是一種好方法,因為總結出一種語言的通用規則都不是易事。隨後,用統計方法嘗試從大量語料中顯示地或隱式地「提取」這些規則。這些統計方法被統稱為統計機器翻譯。
簡單來說,統計機器翻譯就是找一個函數,把源語言映射到目標語言,如下圖所示:
機器翻譯的重要特性之一是目標函數,不是機器學習的常用應用中的一對一或多對一(例如分類是多對一),而是一對多,即源語言一句可能有目標語言正確的多句對應。所以,我們用條件概率 而不是確定的函數來建模,其中x為源語言,y為目標語言。統計機器翻譯系統的第一件重要的事情是獲取可用的雙語語料,記 和 表示有 n 對樣本,樣本集合記為 D 。( 對於想自己搗騰一下的可在 Workshop on Statistical Machine Translation 或 International Workshop on Spoken Language Translation上找到數據)。
有了訓練數據之後,怎麼評價模型的好壞呢?最直觀的想法是把每個樣本在模型上的 log-likelihood 進行平均來量化。樣本的 log-likelihood 是反應模型認為樣本的 log-probability(記為)一種方法,其中 是模型參數。於是評價函數如下:
如果 log-likelihood 較小,說明當前模型對正確結果給出的概率較小。所以我們希望找到更好的能最大化 log-likelihood,即大家熟悉的MLE。
在20多年前,IBM Watson 研究中心採用 log-linear 模型的方法,建模條件概率 [Brown et al., 1993]。此類方法用一些特徵的線性組合近似,如下式所示:
其中,C 是正則化常量。從而一批論文的貢獻集中在尋找好的特徵函數,值得一提的是 [Koehn, 2009] 著了一本很好的書。
在統計機器翻譯框架下,機器學習主要是為了平衡不同的特徵來找到一組參數,或者 re-rank 模型的候選 [Schwenk, 2007]。當前,深度學習已經用作特徵函數的一部分或者用作 re-rank 其中 n-best 的候選,如下圖所示 [Bahadanau et al., 2015] :
2. 神經機器翻譯(NMT)
近些年,NMT 不再依賴預先設計的特徵函數。然而,NMT 的目標是設計一個能通過語料可訓練的模型(記為 M )。它始於源語言的表達,終於目標語言的表達。
雖然,以 word 作為最小單元,對於自然語言來說可能不夠客觀,但是,對於基本原理解釋,卻不失一般性地,用字典中的 index 表示一句話中的每個 word 。設 為源語言序列,為目標語言序列。下面主要討論建立一個 NN 來近似條件概率 。
對於NLP的任務有個特點,輸入和輸出的序列長度 T 或 T』 都不是固定的。目前大多數演算法用 RNN 來解決此問題。廣泛使用的前饋 NN ,例如 CNN ,不能保持內部狀態,因為當一個 sample 進入前饋 NN 後,網路內部狀態或隱層單元的激活都從頭計算,不受先前 sample 計算的狀態影響。然而,RNN 保留了 word 序列輸入的內部狀態。假設在 t 步,RNN 依賴之前的積累 計算當前輸出向量和內部狀態,可簡單認為,它體現了之前所有信息,公式如下:
[Pascanu et al.,2014] 闡述了幾種 RNN 類型,框架如下圖:
其中 RNN 中的激活函數通常採用變數敏感的非線性函數,以起到仿射變換的目的。
其實,在創新此公式 :上還有很多可做的,前人工作中著名的有 LSTM [Hochreiter and Schmidhuber, 1997]、GRU [Cho et al., 2014]等:
言歸正傳,用上述 RNN 建模機器翻譯中的序列概率問題,需要把問題轉成 recurrent 形式:
所以 t 時刻的 RNN 模型可表示如下:
輸出基於截止到 t-1 步內的歷史的概率分布,即 RNN 在每一步都基於歷史預測下一個 word 。
3. 機器翻譯的 encoder-decoder 框架
試想一下,我們大腦是怎樣把 「 I love you 」 翻譯成」我愛你「的呢?一種思路是,翻譯過程包括2個過程:一個 encoder 和一個 decoder ,前者把一序列的 words 轉換成一系列的神經激活,後者從激活中得到目標語言的序列。在 2013 年 Kalchbrenner and Blunsom 在 Oxford 開始採用此框架,隨後著名的工作有 Sutskever et al., 2014; Cho et al., 2014; Bahdanau et al., 2015 等。此框架本身不對 encoder 和 decoder 的模型做任何限制,只是大多數論文都用 RNN 表示。下圖是一個 NMT 的總體框圖:
首先,encoder 過程按照 Fig. 4 中可分為 3 步:
1. 把一個 word 表示為 one-hot 向量;
2. one-hot 向量轉化成連續空間表達(例如,word2vec);
3. 由 RNN 網路 summarize 成一個序列;
句子中,每個 word 表示成 one-hot 向量或 1-of-K 編碼向量,這種表達讓 words 之間失去 relation 信息,是一種最簡單的表示。encoder 通過矩陣 E 把每個 word 線性映射成一個連續向量,此向量中的每個元素,通過最大化翻譯模型目標來更新。把一序列的 words 轉換成一序列的連續向量 ,輸入到 RNN 中,利用 RNN 能 summarize 序列的能力(長時記憶),使得內部狀態能表示完整一句的 summary 信息。
為了衡量此 summary 信息到底長啥樣,Sutskever et al. 2014做了個實驗,通過 PCA 把多維向量映射成 2 維空間上,從而在下圖能粗略地觀察到原始空間中 summary 向量的相互「距離」。
圖中我們可以看到 ,相似句子「距離」更近 ,上述 summary 向量一定程度保留了句子的語義(semantics)和句法結構(syntax)信息(請參見http://talks.cam.ac.uk/talk/index/58498)。
然後,decoder 按照 Fig. 4中可分為3步:
1. 計算內部狀態向量 ;
2. 計算下一 word 的概率;
3. 採樣下一個 word ;
源語言句子的 summary 向量、前一時刻預測出的詞 和前一時刻的內部狀態按如下公式計算出 :
待 計算完成後,我們能計算出,當前時刻每個候選詞的概率分布(總和為1,通常用 softmax [Bridle, 1990] 表示),思想是評價正在翻譯的詞後面最可能出現的下一個詞,下面是方法之一:
當目標 word 向量和中間狀態的維度相似(假設接近平行),那麼,上述第一項的點乘的結果就大,反之就小(假設接近垂直)。知道點乘含義,是一個向量,向另一向量的投影的長度,就不難理解了。所以,公式所描述的機制給出高分的話,就需要目標 word 向量與解碼器中間狀態排列很好。得分有了之後,就可以把得分轉換成合適的概率:
有了目標 word 的概率分布之後,就可以用多項式分布採樣的方法選擇一個 word 。
假設選擇了第 i 個 word ,那麼就又回到上述計算這步了,依次循環上述 3 步,直到選擇了
4. 最大似然估計
經過上述過程,一個 NMT 模型有了。可是怎麼訓練它呢?和大多數機器學習模型一樣,有多種方法訓練。下面,我們只介紹在 encoder-decoder 框架下的最 log-likelihood 的基本方法。
首先,準備好平行訓練語料,每個句子中的 word 用整數索引值代替,相當於 one-shot 向量。
然後,左乘矩陣(矩陣例如可用 word2vec 表示),得到矩陣的第 i 列( one-hot 中第 i 個元素是1 )。於是給定 計算的log 概率:,所以整個訓練語料的 log-likelihood 計算如下:
剩下,就是用類 SGD 的方法簇來最大化 log-likelihood 函數。能通過 backpropagation 方法有效計算,需要做的是畫出從最終的 log-probability 到第一層輸入的後向傳播圖。這樣就可以對圖中每個操作求偏導(可方便地使用 Amber 平台實現,也可以參考 theano.tensor.grad 例子)。有了偏導之後,我們能參考導數的方向逐步更新參數。很多人會在具體的參數更新速度和效果上「踩坑」,這裡面就包含技巧又包含技術,更有背後的深刻的底蘊。
很多工程師「隨便」調調初始學習率,mini-batch 大小,學習率自變化方案,動量因子及其自動變化方案等就認為很「牛逼「啦。這個話題不是本文的重點,故不展開描述。
目前來看,在機器翻譯的模型中使用 Adadelta [Zeiler, 2012] 或 Adam [Kingma and Ba,2015] 得到的結果不會太差(可參考 http://imgur.com/a/Hqolp 在馬鞍面上一點,採用不同學習率演算法的收斂可視化的例子)
眾所周知,深度學習演算法絕大部分都用 GPU 計算,NMT 也不例外。我們還是粗略地計算一下,一個樣本的 forward 過程的計算量(當然對於一條樣本不會包含所有的 word ):
1.源語言 embedding :T×|V|,其中 T 是源句子的 word 個數,|V| 是源語言詞表大小;
2. 從源語言 word 的 embedding 到 encoder:,其中 是 embedding的維度, 是 GRU 中 2 個 gate 和 1 個 unit 的隱層狀態的維度;
3. 從到
4. 從 context 向量到 decoder :
5. 從到
6. 從 decoder 到目標 word 的 embedding :其中 T』 是目標句子 word 的個數,是目標語言詞向量的維度;
7. 從目標 word 的 embedding 到輸出:其中是目標語言詞表大小;
8. softmax 輸出:
除了上述前向過程,還有同等量級的後向計算。上述中的 |V| 和 |V』| 通常是十萬到百萬量級, 在千級別,大部分計算是高維的矩陣與矩陣和矩陣與向量之間的計算,所以,用 GPU 是目前最合適的。
5. 簡單encoder-decoder框架的問題
在基本的 encoder-decoder 框架,encoder 轉換輸入序列到固定長度的向量(即 contex 向量),decoder 有此產生翻譯。直觀上看,context 向量應該包括源句子每個 word 的信息,無論句子結構怎樣複雜,那麼 encoder 應該是一個複雜的非線性函數。[Kyunghyun 2014] 闡述了當模型小的時候,翻譯質量隨著句子長度增加明顯下降。Sutskever et al. 2014 論文建議 encoder 的表達能力需要更大,意味著模型需要更大來處理更長的句子。
6. Soft Attention機制
簡單的框架不區分輸入句子的長度(意指信息含量多少),這顯然是違背直覺的。就連 zip 個文件的結果也與文件含有的信息複雜程度相關。
為了後續討論簡單,我們假設句子長度的大小與句子含有信息量成正比。於是想到不把句子表示成固定長度的向量,而是讓它體現出「層次」信息,BiRNN 分別從 2 個方向獨立地「讀」句子一遍。
假設表示從第 1 個 word 到第 j 個 word 的 summary 信息,同理,表示從句子尾部到第 j 個 word 的 summary 信息。由於序列本質,RNN 更傾向記住近期的信息,所以兩者合在一起,更好地表示在整句上下文中的表達,所以把上述表達稱為 context-dependent 詞表達。利用這個機制可以把句子表達成變長形式(相對於固定維度的 summary )。
考慮了源語言句子的變長表示之後,decoder 對於每個目標 word 來說,也需要選擇性地把注意力集中在一個或多個 context-dependent 詞表達或輔助向量( annotation vector )上。可是每次應該怎麼聚焦呢?想像一下,當人已經翻譯了 i-1 個 word 後,正在翻譯第 i 個 word ,人在翻譯時是怎麼決定的呢?通常,人在看每個詞(或他的 context-dependent 信息 )時,會綜合考慮當前已經翻譯的結果來決定此時的 應該怎麼翻譯,也就是說,是否與下一個目標詞相關,相關度有多大。下圖是反映上述過程的一種方式而已:
Dzmitry Bahdanau 2014 提出在 decoder 中引入一個 NN 來做上述的 attention model(記為 AM )。此 AM 的輸入是前一時刻的 decoder 隱狀態和 context-dependent 詞表達。AM 可用1層 NN 和 1 個標量表示。下圖把得分用到了源語言句子中的每一個 word 上:
一旦得到每個源 word 的得分後,就可以用 softmax進行歸一化:
這裡做歸一化的原因有多種解釋,其中一種解釋是把 attention 機制納入到概率論框架中,認為 attention 的權重是 decoder 在所有 T 個源語言 word 中選擇第 j 個 context-dependent 詞表達的概率。這樣就可以在這個分布下計算 context-dependent 詞表達的期望:
上述期望向量 以對所有 word 不同的重視程度概括了整個源語言句子的信息。輔助向量( context-dependent 向量)被認為是 AM 根據 attention 的權重來決定的相關性。隨後,用代替上面闡述的 decoder 中 3 步中的。
7. Soft attention機制的外延
當前 attention mechanism 已經成了 deep learning 中的一個熱點,不僅僅體現在 NLP 上 ,也體現在圖像研究中 [Cho et al., 2015]。下圖表示在沒有特意地針對對齊做監督的情況下,模型自己學習到了某種 attention 或對齊的一個例子:
線條的粗細表示 AM 模型給出的 attention 權重大小。通常弱監督形勢常被用來表示 reinforcement learning ,在此 attention 機制等同了弱監督效果,除了給定翻譯的目標句子外,沒有任何中間的對應和對齊的直接監督信息。
此外,再分別對比下 neural turing machine [Graves et al. 2014] 和 memory network [Weston et al. 2014]與帶有 attention 機制的 NMT 。首先,假設把 context-dependent 詞表達當作 memory 中的內容,把 attention 機制當作 NTM 中 read head ,把 decoder 作為 NTM 的控制器,這樣看 NMT 與 NTM 很相似。參考 2015 年 Sukhbaatar et al 描述的 memory network ,除了各自論文中對於特定應用的實現細節不一樣之外,基於 attention 的NMT、NTM 和 memory network 的思想是相通的。我們都好奇這類方法最終會以怎樣的形態體現,讓我們拭目以待吧。
8 .機器翻譯與image/videocaption
立刻會有人問,機器翻譯與 image caption 有什麼一毛錢關係嗎?回想一下,現在的 NMT 技術路線在做翻譯時不需要利用任何一種語言的特定信息,也就是說任何 2 種語言間的翻譯在 NMT 來看是一樣的。讓我們發散一下,這種技術框架,對於需要返回輸入數據的定長向量表達,或者尋求一系列它的映射空間下對應向量的需求,很可能是一種不錯的選擇,只要能把數據合適地灌進框架中。這已經被蒙特利爾大學和多倫多大學的 paper 證實了。論文中用 CNN 替換了 encoder ,在 attention-based encoder-decoder 框架下完成了 image caption 任務,如下圖所示:
此外類似的 papers 還有 Donahue et al.,2014; Fang et al., 2014; Karpathy and Li, 2014; Kiros et al., 2014; Mao et al.,2014 等。
值得一提的是,讓 decoder 利用 video 的時域結構, Li et al. 2015 和 Venugopalan et al. 2015 用類似的 attention-based 方法產生了 video 描述,如下圖所示:
同理,attention 機制 + 從一種結構化的輸入映射到另一種結構化的輸出的框架已經成功應用到多種任務上。 Vinyals et al.2015 應用到離散優化問題上,解決了旅行商問題。Kyunghyun et al. 2015 應用此框架到更多的多媒體任務中。
9. 展望
關於機器翻譯這個特定任務的全流程已經有很多研究者評論了,這裡說的展望不特指任何一種 task 。
目前大多數還是以 word 為單一單元建模句子序列,是否應該考慮 hierarchical 單元。在 RNN 中的反向傳播演算法的時間代價與序列長度成正比。是否有更好的演算法能處理更長的序列,例如段落,文檔等。在處理序列時,大部分的學習很可能還是局部的,權重還是不加區別地在線更新的,是否可以改變這種傳統形式。
NMT 考慮的是自然語言中的邏輯關係,它還可以擴展到以其他機制建立聯繫的任務上嗎?例如:基因序列、社交網路等以 relation 維繫的圖結構。
雖然 google 已經用 one-shot 和 zero-shot 方式,但是我們還是要思考如何引入其他信息源來做 multimodal learning 。
參考文獻
Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. 「Neural machine translation by jointly learning to align and translate.」 arXiv preprint arXiv:1409.0473 (2014).
Bastien, Frédéric et al. 「Theano: new features and speed improvements.」 arXiv preprint arXiv:1211.5590 (2012).
Bergstra, James et al. 「Theano: a CPU and GPU math expression compiler.」 Proceedings of the Python for scientific computing conference (SciPy) 30 Jun. 2010: 3.
Bridle, J. S. (1990). Training Stochastic Model Recognition Algorithms as Networks can lead to Maximum Mutual Information Estimation of Parameters. In Touretzky, D., editor, Advances in Neural Information Processing Systems, volume 2, (Denver, 1989).
Brown, Peter F et al. 「The mathematics of statistical machine translation: Parameter estimation.」 Computational linguistics 19.2 (1993): 263-311.
Cho, Kyunghyun et al. 「Learning phrase representations using RNN encoder-decoder for statistical machine translation.」 arXiv preprint arXiv:1406.1078 (2014).
Cho, Kyunghyun, Aaron Courville, and Yoshua Bengio. 「Describing Multimedia Content using Attention-based Encoder–Decoder Networks.」 arXiv preprint arXiv:1507.01053 (2015).
Denil, Misha et al. 「Learning where to attend with deep architectures for image tracking.」 Neural computation 24.8 (2012): 2151-2184.
Donahue, Jeff et al. 「Long-term recurrent convolutional networks for visual recognition and description.」 arXiv preprint arXiv:1411.4389 (2014).
Fang, Hao et al. 「From captions to visual concepts and back.」 arXiv preprint arXiv:1411.4952 (2014).
Forcada, Mikel L, and ?eco, Ramón P. 「Recursive hetero-associative memories for translation.」 Biological and Artificial Computation: From Neuroscience to Technology (1997): 453-462.
Graves, Alex, Greg Wayne, and Ivo Danihelka. 「Neural Turing Machines.」 arXiv preprint arXiv:1410.5401 (2014).
Graves, Alex, Greg Wayne, and Ivo Danihelka. 「Neural Turing Machines.」 arXiv preprint arXiv:1410.5401 (2014).
Gregor, Karol et al. 「DRAW: A recurrent neural network for image generation.」 arXiv preprint arXiv:1502.04623 (2015).
Gulcehre, Caglar et al. 「On Using Monolingual Corpora in Neural Machine Translation.」 arXiv preprint arXiv:1503.03535 (2015).
Kalchbrenner, Nal, and Phil Blunsom. 「Recurrent Continuous Translation Models.」 EMNLP 2013: 1700-1709.
Karpathy, Andrej, and Li, Fei-Fei. 「Deep visual-semantic alignments for generating image descriptions.」 arXiv preprint arXiv:1412.2306 (2014).
Kingma, D. P., and Ba, J. 「A Method for Stochastic Optimization.」 arXiv preprint arXiv:1412.6980 (2014).
Kiros, Ryan, Ruslan Salakhutdinov, and Richard S Zemel. 「Unifying visual-semantic embeddings with multimodal neural language models.」 arXiv preprint arXiv:1411.2539 (2014).
Koehn, Philipp. Statistical machine translation. Cambridge University Press, 2009.
Mao, Junhua et al. 「Deep Captioning with Multimodal Recurrent Neural Networks (m-RNN).」 arXiv preprint arXiv:1412.6632 (2014).
Mnih, Volodymyr, Nicolas Heess, and Alex Graves. 「Recurrent models of visual attention.」 Advances in Neural Information Processing Systems 2014: 2204-2212.
Pascanu, Razvan et al. 「How to construct deep recurrent neural networks.」 arXiv preprint arXiv:1312.6026 (2013).
Schwenk, Holger. 「Continuous space language models.」 Computer Speech & Language 21.3 (2007): 492-518.
Sukhbaatar, Sainbayar et al. 「End-To-End Memory Networks.」
Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. 「Sequence to sequence learning with neural networks.」 Advances in Neural Information Processing Systems 2014: 3104-3112.
Venugopalan, Subhashini et al. 「Sequence to Sequence–Video to Text.」 arXiv preprint arXiv:1505.00487 (2015).
Weston, Jason, Sumit Chopra, and Antoine Bordes. 「Memory networks.」 arXiv preprint arXiv:1410.3916 (2014).
Xu, Kelvin et al. 「Show, Attend and Tell: Neural Image Caption Generation with Visual Attention.」 arXiv preprint arXiv:1502.03044 (2015).
Yao, Li et al. 「Video description generation incorporating spatio-temporal features and a soft-attention mechanism.」 arXiv preprint arXiv:1502.08029 (2015).
(本文來源微信AI,經作者白明授權轉載,特此感謝!)
3月27日,新智元開源·生態AI技術峰會暨新智元2017創業大賽頒獎盛典隆重召開,包括「BAT」在內的中國主流 AI 公司、600多名行業精英齊聚,共同為2017中國人工智慧的發展畫上了濃墨重彩的一筆。


※「不騙你」CMU 召開 SIGBOVIK 2017 大會,生成對抗網路被轟下神壇
※胡郁:自然宇宙 VS 數字宇宙,AI 消滅超級馬太效應|新智元AI年度人物
※6萬多AI演算法科學家齊聚全球最大眾智平台挑戰癌症——解密英特爾阿里雲天池大賽
※萬象人工智慧研究院成立,上市公司+基金+科技公司組合憑什麼玩轉AI研究院
TAG:新智元 |
※谷歌全attention機器翻譯模型Transformer的TensorFlow實現
※如何正確翻譯I don t trust you because you are honest?
※小組討論谷歌機器翻譯Attention is All You Need
※幕上海綿狀血管畸形(附Spetzler、Aaron教授精彩講課視頻) | The Neurosurgical Atlas全文翻譯
※真實的死亡與戲劇的生活丨Mount Eerie《A Crow Looked at Me》碟評+翻譯
※科幻小說翻譯:The Solipsist
※快9倍!Facebook開源機器學習翻譯項目fairseq
※Microsoft Translator發布新功能,可實時翻譯PPT!
※SpringBoot文檔翻譯系列
※【屬靈精品翻譯】 凝視入榮耀(gazing into glory) 連載8
※Facebook開源PyTorch版本fairseq翻譯模型,訓練速度提高50%
※圖解神經網路機器翻譯原理:LSTM、seq2seq到Zero-Shot
※大學英語四六級翻譯備考資料之high technology(1)
※千萬不要把see the red light 翻譯成「看見紅燈」
※Microsoft Word近期將內置翻譯功能
※千萬不要把「the call of nature」翻譯為大自然的呼喚
※Google Pixel Buds:可以實時翻譯的無線智能耳機!
※Google Pixel Buds無線耳機的實時翻譯,只有Pixel系列手機支持
※耳機也能實時翻譯?Google Pixel Buds 超厲害的 4 大實用秘技