機器翻譯的主要原理和相關技術 | 筆記

導語

本篇文章是李嫣然自然語言處理與深度學習系列課程之機器翻譯的課程筆記,文末附有課程鏈接。

近年來,機器翻譯有了長足的進步,這是自然語言處理與人工智慧的一次重大飛躍。Google的神經翻譯機器(Google Neural Machine Translation,簡稱GNMT)在很多語言上的翻譯表現已經接近了人類翻譯的水平。本次課程就是介紹Google的GNMT的主要原理和相關技術。

背景

所謂的機器翻譯可以看作是如下這張圖:

我們的翻譯機器就是其中帶有問號的黑箱,它的作用就是能夠將一個語言的序列(如Economic growth has slowed down in recent years)轉化成目標語言序列(如La croissance economique sest ralentie ces dernieres annees)。其中翻譯機器在正式工作之前可以利用已有的語料庫(Corpora)來進行學習和訓練。

所謂的神經網路機器翻譯就是利用神經網路來實現上述的黑箱翻譯機器。基於神經網路的很多技術都是從Bengio的那篇開創性論文(一種神經網路的語言模型)衍生出來的。它的架構如下圖所示:

其中,我們用一個神經網路替換了上圖中的黑箱。在神經網路中存在著大量的鏈接權重,這些權重就是我們要通過數據訓練、學習的參數。訓練好的神經網路可以將輸入的源語言轉換為輸出的目標語言。我們要讓神經網路學習的目標就是要能準確的翻譯。這裡的準確是指機器生成的語句是比較符合我們人類的說話習慣的。這裡的log p(f|e)就是指給定源語言後機器所產生的語言f的概率,我們希望這個概率對於實際的數據來說越大越好,這就是所謂的語言模型。

基於神經網路的機器翻譯模型的一個最大的優點就在於它不需要我們用複雜的特徵工程去設計其過程中的環節,也就是所謂的End2End(端到端)的模型。這種模型設計還可以避免中間環節的誤差累計。

最近幾年神經機器翻譯的準確度就一直在提高,尤其是到2016年Google的GNMT的大突破。GNMT主要涉及的技術包括:

  • 編碼解碼框架(2014年中期提出)
  • 注意力機制(2014年末提出)
  • 外存(2015年新星)
  • 殘差網路(2015年新星)
  • 其它輔助手段(2016年新技術)

我們這節課主要介紹前面的四項基本技術,它們都代表著深度學習人工智慧技術的最前沿。最後一個輔助手段是屬於一種錦上添花的技術。

編碼-解碼框架

編碼-解碼框架如上圖所示其中<EOS> - W的左側為編碼器,它的右側為解碼器。A,B,C,<EOS>表示的源語言的輸入序列,X,Y,Z,<EOS>表示的是翻譯機器給出的目標語言輸出序列。<EOS>表示的是一句話的終結符。W為編碼器對輸入的語言序列A,B,C,<EOS>的編碼向量。圖中的每一個框表示的是一個時刻展開的RNN(Recurrent Neural Network或者LSTM)神經網路。

這種編碼-解碼結構模擬了人類大腦翻譯的過程,就是先將聽到的語言存儲在腦子裡,然後再根據腦子中的理解給出目標語言的輸出。在這裡,W向量就模擬了大腦中存儲的讀取源語言對應的向量。

這種架構還將語言理解和語言模型聯合到了一起,最終實現了端到端的機器翻譯。另外,這種編碼-解碼結構還極其具有靈活性,它可以應用到圖像標註、視頻、詞語等任務中。另外,這種架構還可以很好地結合外部語料,具有很好的可擴展性。

  • 編碼器

這張圖展示了編碼器的詳細架構。在這裡從下到上有三個層,第一層是詞向量嵌入,它可以根據輸入的單詞向量通過查找編碼表得到壓縮維度的單詞表徵向量(第二層),之後輸入給第三層,這是RNN遞歸單元的狀態。

  • 解碼器

接下來,在讓我們看解碼端。在這裡最底層紫色的節點表示由編碼端計算出來的隱含層節點狀態,它就相當於是對輸入的源語言的編碼向量。之後,我們將這個信息輸入給解碼器的RNN單元,之後到第二層,解碼器會根據RNN單元計算概率向量。即對於目標語言單詞表上的每一個單詞的概率是多少。最後,在第三層,我們再根據這個計算得到的概率採樣生成目標語言。

然而,當我們回顧整個編碼-解碼過程就會發現,機器翻譯的本質就是先將源語言的句子編碼成一個向量,然後再將這個向量映射為目標語言,然而這種編碼是將句子壓縮成向量,顯然會損失很多信息。於是,我們便需要引入新的機制來解決這個問題。

注意力機制

為了解決由解碼器引入的過分的信息壓縮問題,人們引入了注意力機制以解決問題。在這裡,注意力機制是加入到編碼器和解碼器之間的。如下圖所示:

編碼器先將編碼後的信息輸入給注意力機制,注意力機制再將處理過的編碼傳遞給解碼器。那麼,注意力機制是如何發揮作用的呢?讓我們看下面的圖:

在這張圖中,我們展現了一個法語句子翻譯為英語句子的過程,其中連線代表的是在單詞這個層面,兩種語言的對應和關聯,例如英語的Economic對應的法語是economique。由於兩種語言在表達的時候單詞的語序是不一樣的,所以當我們按照一個給定的順序翻譯一個單詞的時候,必須先找到與這個單詞相關的源語言單詞是哪一個。那麼,注意力機制就解決了這個問題。

所謂的注意力機制實際上就是一種動態地分配權重的機制。如下圖所示:

在這裡h1,h2,...,hT表示解碼器端在接受源語言向量x1,x2,...,xT的時候得到的隱含層狀態向量,為了盡最大努力保留信息,人們採用了雙向RNN,也就是分別從正向和反向讀入原始的詞序列,並計算得到隱含層的狀態向量。然後,我們將這些正向的向量和反向的向量對應地編成一組,也就是同一個輸入單詞分別從正向讀取和反向讀取得到的對之前信息的編碼。之後,注意力機制就會為這些狀態向量分配權重,這些權重就是at,1, at,2, ..,at,T。將隱含層的狀態向量加權求和就得到了輸入給解碼器的向量需要注意的是,這些權重at,T是隨著時間t而動態變化的。那麼,at,T的數值是怎麼取的呢?在GNMT中,權重是按照如下函數計算的:

其中AttentionFunction是一個從整個機器的輸入信息和輸出信息決定注意力分配權重的函數,它也是一個可以訓練的神經網路。這裡yi-1是解碼器的輸出,xt是網路的輸入,由st再經過後面兩步的變換就得到了最後的權重值向量ai。

事實上,現在注意力機制也是一種通用的機制被廣泛地應用於其他領域之中。比如:

這張圖展示了機器在做閱讀理解的時候,注意力在一篇文章不同短語部分上的注意力分配權重。

這張圖則展示了機器在做圖片標註的時候注意力在圖像不同區域上的分配情況。其中,左上角的為原始的輸入圖片,之後的每一張圖都是機器在吐出不同的標註詞語(在圖片的左上角顯示)的時候,注意力在圖片上的分配情況。

關於記憶機制我們將在下一節課中講解。在這裡,我們介紹第三個機制:殘差網路。

殘差網路(Residual Network)

所謂的殘差網路就是一種跨層次的鏈接機制。如上圖所示,被灰粉色遮蔽的部分就是使用了殘差網路機制的網路鏈接。注意,原始網路中,每一個跨層次的鏈接都僅僅鏈接上下兩個層次,但是在這裡由x10到+號的鏈接就是這種跨層次的殘差網路機制鏈接。

有了這樣一種跨層次鏈接的機制就使得網路可以做得很深很深,從而實現了深度上的革命,而且可以讓準確率得到非常顯著的降低。那麼,殘差網路是如何實現這種跨層次鏈接,同時又加速網路學習的呢?讓我們看下圖:

我們知道,其實神經網路就是一個從輸入到輸出的函數。那麼對於一個局部的兩層的網路來說,它也可以被看作是一個小型的函數。我們不妨記這個小型的網路是H(x),它恰恰就是我們的兩層網路要學習的函數。

我們不妨可以把這個函數分解為兩部分,一部分是直接從輸入端輸入進來的信號x,以及一部分剩餘的量(殘差)F(x),而這部分殘差F(x)就可以交給這兩層網路來學習。這樣,當我們的網路逼近F(x)函數的時候,我只需要加上輸入信號x就可以自然得到我們想要的函數H(x)。

那麼,我們為什麼要把H(x)拆成F(x)和x兩部分呢?答案就在於,當我們直接把輸入信號x導入給輸出節點+的時候,我們實際上創造了一個信息傳輸的捷徑,這就可以大大節省訓練這個局部小網路的世界。當然,這裡面的前提是說,在大多數情況下,正確的H(x)函數是和x這個信號具有類似的數量級的。所以,我們創造了捷徑後,網路只需要做微調,以學習實現一個殘差函數F(x)的神經網路就可以了。

有了這種殘差的機制,我們就可以讓信息更快地通過網路,從而大大地節省了網路訓練的時間,這也就自然可以讓我們將網路的層次加深,這就是殘差網路的基本原理。

有了殘差機制,現在的網路可以深到1000層之多。

特殊的輔助機制

這種特殊的輔助機制是華為諾亞方舟提出來的一種特殊技術,它要解決的問題就是為了避免過翻譯或欠翻譯的問題。所謂的過翻譯就是指某些詞或短語會在翻譯的文本中重複地出現,而欠翻譯或漏翻譯則是指有些詞語沒有得到有效的翻譯。

如上圖,這種機制就是利用一個向量記錄哪些詞已經被翻譯,哪些沒有被翻譯的信息,然後把這個向量傳遞給注意力機制,注意力機制就會自動學習得到一種正確的輸入輸出,從而注意到那些漏翻和重複翻譯的詞。在圖中Ci就是那個遮蓋(Coverage)向量。

尾聲

最後,綜合了上述各種機制之後,Google刷新了機器翻譯的準確率。

如上圖所示,這是GNMT在各個語言對之間翻譯準確率的比較。其中桔黃色的柱子高度是人類的水平,綠色的是Google模型的水平,藍色的是經典的基於短語的模型的水平,我們看到雖然人類的準確率仍然遙遙領先,但是GNMT的水平已經在英語-西班牙語,以及法語-英語這兩種翻譯中接近了人類水平。

參考文獻

  • Googles Neural Machine Translation System: Bridging the Gap between Human and Machine Translation
  • 李嫣然自然語言處理與深度學習系列視頻之機器翻譯課程campus.swarma.org/gcou=

campus.swarma.org/gcou= (二維碼自動識別)

  • 龔力的機器翻譯原理簡介視頻課程campus.swarma.org/gcou=

campus.swarma.org/gcou= (二維碼自動識別)

搜索公眾號:集智俱樂部

集智QQ群|292641157

加入「沒有圍牆的研究所」

weixin.qq.com/r/NDsxKXD (二維碼自動識別)

讓蘋果砸得更猛烈些吧!

推薦閱讀:

Relation Extraction: Perspective from Convolutional Neural Networks
序列標註任務的常見套路
流程圖識別(1)
中文編碼問題

TAG:機器翻譯 | 人工智慧 | 自然語言處理 |