2016年底Google神經網路機器翻譯出來的時候, 本人有感於突破之快, 把當年的討論的部分收穫寫到了 「概率估值的光滑(Smoothing)」裡面。

今天有時間和大家一起討論下下, 深度神經網路機器翻譯。

前言

2016年年底, Google公佈了神經網路機器翻譯(GNMT), 從此宣告, 機器翻譯經過27年左右, 正式從1989年的IBM機器翻譯模型(PBMT,基於短語的機器翻譯),過渡到了神經網路機器翻譯模型。已經極大接近了普通人的翻譯了。

而從基於短語的翻譯到神經網路翻譯, 相對提升可以達到60%以上, 因此一下子引起了歡呼和驚嘆。 而這背後的大功臣,就是sequence to sequence (seq2seq)的端到端的模型。

而這個seq2seq模型,除了機器翻譯,還極大改變了整個自然語言處理相關應用。 包括基本的NLP功能:Parsing, NER等; 傳統的NLP應用:Summarization, QA, Conversation等; 還有多模的世界:圖像和文字, 語音和文字等。

譬如, Google除了GNMT以外還有基於seq2seq的TTS系統Tacotron

基於seq2seq的概要提取系統

接下來, 我們按如下順序介紹seq2seq模型:

  1. Seq2Seq的簡史
  2. PBMT 時代的基石和問題
  3. 端到端模型的出現
  4. 神經網路語言模型的出現
  5. RNN-LM的出現
  6. RNN的發展
  7. Seq2Seq的出現
  8. Seq2Seq的發展

一. Seq2Seq的簡史

目前seq2seq的突破,離不開:

a. Attention機制: 現在Attention機制幾乎將IBM模型中alignment對齊機制發揮出新的境界。

b. RNN模型升級: RNN出現了雙向RNN,堆棧RNN,和殘差RNN。在GNMT裡面把這些技術統統用上了。使得RNN模型的學習能力達到空前高度。

c. RNN-LM模型: RNN的使用開啟解決長距離依賴的問題, 也引發記憶計算在語言模型的新思考。

d. NNLM模型突破:NNLM模型的發展使得非線性的投影和Softmax的近似計算得到突破。

e. 端到端的編解碼模型:端到端的早期突破使得多模融合成為可能。

2015年,兩個小組: Tim Rocktaschel為代表的倫敦大學院、牛津大學、還有DeepMind的小組(Reasoning about Entailment with Neural Attention), 和愛丁堡大學的Jianpeng Cheng (Long Short-Term Memory-Networks for Machine Reading),發表了基於Attention的對齊機制細分和相關的可視化的分析。 尤其Jianpeng Cheng對Shallow Attention Fusion 和 Deep Attention Fusion的區分,代表了Attention機制在NLP裡面的成熟。

2014年 - 2015年,斯坦福計算機系Manning組的 Minh-Thang Luong 的論文 Effective Approaches to Attention-based Neural Machine Translation 正式基於高斯分佈推導了Local Attention,比較了Global Align Attention和Local Align Attention, 和視頻處理裡面 Soft Attention 和 Hard Attention建立了聯繫。

2015年 Bengio的團隊中來自德國的Dzmitry Bahdanau (NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE),將Attention機制引入到機器翻譯中,正式開啟了Attention作為Alignment的大門!

2014年 兩個人, Bengio團隊的Kyunghyun Cho (Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation) 和 Google的 Ilya Sutskever (Sequence to Sequence Learning with Neural Networks) 正式將RNN Encoder-Decoder搬上神經網路機器翻譯NMT的歷史舞臺, 並且命名為Seq2Seq模型!

從上面, 我們看到從Seq2Seq簡單模型到有Attention模型的Seq2Seq的經歷。

二. PBMT 時代的基石和問題

首先基於短語的機器翻譯,從IBM模型一路發展而來, 已經相當成熟。 並且開源系統也很多,極大促進了機器翻譯的研究和應用。

最重要的是完成機器翻譯的功能模塊的分解: 雙語對齊, 語言模型,翻譯模型, 解碼器, 測試。

這個使得, 神經網路語言模型誕生後,可以進行獨立測試, 逐步發展替代。

其中n-gram語言模型,基於全概率公式和馬爾可夫假設,

但是問題也出現在這個n-gram模型, 主要的3大問題

1. 通過頻率計算概率, 存在數據稀疏,概率為0的情況難以輕易搞定

雖然,眾多概率光滑的演算法(尤其 Modified Kneser-Ney 演算法)紛紛出現, 依然對人為先驗設計要求太高。

2. 長距離依賴的問題難以解決(短語N-Gram中N的侷限性)

3. 線性模型學習的侷限性

如何解決基於頻率的概率估算問題, 解決長距離依賴, 解決線性模型的問題在基於短語的機器翻譯PBMT框架下難以徹底截距。

其實, 還有兩個神器在PBMT時代已經廣泛應用了:

1. Log-Linear模型的提出

在「概率分佈の三奧義」 裡面,我們就提出了, 概率估計發展, 從基於頻率, 到基於經驗,再到基於最大熵。 需要的數據越來越少。 而Log-Linear就是基於最大熵的概率模型(細節參考「「66天寫的邏輯回歸」 引」) 如果想深入瞭解的, 簡單說來Log-Linear和最大交互熵之間的關係就是著名的Donsker-Varadhan定理:

Log-Linear表現為Softmax輸出

2. 束查詢 Beam Search

當把翻譯的詞拼成句子的時候, 要求整個句子的似然概率最大, 這時候Beam Search是介於貪心和動態規劃(譬如 Viterbi Algorithm)之間個一種均衡了效果和計算量的選擇。

三. 端到端模型的出現

端到端模型很早就出現了, Brandeis 的Jordan Pollack早在89年左右就思考如何基於encoder-decoder開始做機器翻譯。 不過,那時候叫dual-ported RAAM (recursive auto associate memory)。

大家都知道encoder-decoder的功能是重建對應的元素, 如果x和f(x),存在同樣的內在分佈表達, 那麼可以先訓練x重建, 再訓練f(x), 甚至可以訓練多個f(x)。 如果把f(x)看成是翻譯, 這就可以基於多模的翻譯, 也可以是多語言的翻譯。

不僅僅如此, 還引入了分佈表達映射的思想, 增強模型的表達能力。

這是早期的基於神經網路的端到端的機器翻譯, 但是侷限於當時的演算法和計算,效果並不突出。

四. 神經網路語言模型NNLM的出現

PBMT時代後期, Log-Linear的出現和應用, 基本上奠定了NNLM神經網路語言模型的基礎了。 本質上NNLM就是Log-Linear 保留了Softmax層, 替代了線性映射變成非線性映射tahn。 這樣, 引入了非線性映射。

Log-Linear對應的是線性Softmax網路

NNLM: 非線性(tanh)的Softmax網路

這裡使用的是tanh,某種意義就是截斷的對稱線性的光滑近似。

其實,直接在Log-Linear基礎上,引入非線性存在個兩個問題

1. 需要的網路參數太多, 訓練困難

2. Softmax網路的計算量很大, 而且不穩定, 雜訊的影響太大。

對於這兩個問題,Bengio建議可以嘗試RNN來減少參數, 同時提出了Hierarchy Softmax方式減少計算量,但是依然不夠穩定。

雖然NNLM引入了非線性, 也使用softmax計算概率問題(等價於最大熵估算概率), 但是並沒有解決長距離依賴問題。

五. RNN-LM的出現

Mikolov追隨Bengio的建議, 2010年引入了RNN, 雖然引入RNN有利於簡化參數, 但是同時引入了深度網路, 使得訓練和收斂變得困難。 為了簡化計算, 沒有採用tanh計算, 使用了sigmoid函數, 同時採用了分組計算softmax。

2年後, Mikolov在提出word2vec之前差不多搞定了Negative Sampling, 進一步提出了提高了Softmax的訓練的速度和穩定性。Negative Sampling可以看成2010年 Gutmann and Hyv?rinen 提出的 Noise Contrastive Estimation的一種近似。 現在NEG和NCE已經成為訓練softmax的主流。

有人說, RNN-LM好像就是把NNLM的NN網路換成了RNN網路, 但是訓練難度的增加,的確阻礙了好多人的實驗成功, 有興趣可以看一下 Bengio和Mikolov聯合在2012年發表的大作 On the difficulty of training Recurrent Neural Networks。

RNN的成功引入, 解決了長距離依賴的問題, 而且引入了上下文和記憶的概念。

RNN-LM 背後的翻譯能力的挖掘,還需要回歸到早期Encoder-Decoder的表達映射。

六. RNN的發展

RNN自身學習能力也在不停的發展, 譬如堆棧RNN,粗細的表達能力也開始分層次。 構建起一個時間和空間的縱橫網路。

在語言模型裡面, 就要看雙向網路了, 正向網路, 好比我的老家溧陽, 那麼你遇到溧字,後面只有兩個選擇溧陽和溧水,但是反過來陽和水前面可以跟的詞就多了。 反向網路, 好比New York, 正向看New 後面不一定跟York,但是反過來看York前面一般跟New。

再根據訓練收斂的快慢和梯度消失的影響, 引入殘差網路的機制, 就得到了殘差堆棧RNN。

合併到一起,就是GNMT裡面的雙向堆棧殘差RNN網路了。

除了結構的疊加, 也有人開始改進 RNN本身結構, 譬如增強記憶功能的增強RNN:

七. Seq2Seq的出現

有RNN作為語言模型, 再加上早期的Encoder-Decoder框架作為翻譯, 於是誕生了RNN Encoder-Decoder模型。

如果把這個模型水平展開,就不很像encoder-decoder了, 於是命名成Seq2Seq模型了。

再加上詞嵌入的發展和t-SNE可視化的發展, 剛出生的Seq2Seq翻譯的效果和影響力已經不是dual-ported RAAM可以比擬的啦。

從此端到端的翻譯重新回到歷史的舞臺!

八. Seq2Seq的發展

隨著前面簡史裡面介紹的Attention機制的引入, Seq2Seq的效果一飛衝天。Attention本質上也是一個Softmax的權重計算網路。

但是它很好的構建了注意力權重、上下文向量,注意力向量等模塊。

有了這樣的模塊化, 再加上合理的計算流程, 我們就可以得到基於Attention的候選詞計算了。 而Attention機制很好的替代了在PBMT裡面的對齊機制。

如果再回到PBMT裡面的幾大模塊: 雙語對齊, 語言模型,翻譯模型, 解碼器, 測試。 發現可以對應到Attention,RNN-LM,Encoder-Decoder, Beam.

似乎除了Beam之外,全部可以利用神經網路搞定了。 現在為Seq2Seq量身定做Beam Search也是一個研究熱點, 最近基於剪枝的演算法又開始出現了,希望找到計算量和效果的新的平衡點.

這樣,基於概率的剪枝, 是不是和AlphaGo接近了。 這或許就是未來使用AlphaGo做機器翻譯的開始。 有興趣大家可以看看IBM Watson研究院 Markus Freitag 的論文 Beam Search Strategies for Neural Machine Translation.

小結

通過逐層說明的方式,對比了從PBMT到NMT的進化實現, 通過問題解答的方式, 闡明瞭深度神經網路機器翻譯是怎麼發展起來的。


推薦閱讀:
查看原文 >>
相關文章