機械翻譯的發展里程碑
機械翻譯的發展可以用方法作為里程碑,分為下面三類:
以語言學規則為主(Rule-based): 和許多機械學習的領域起源相似,在一開始發展時,受限於訓練資料的不易取得,多半是以語言學研究中所歸納出的語言規則作為翻譯的準則。這些規則包括了語法結構和文法規則。也和許多領域相似,規則為主的學習多遭遇規則僵硬的問題,無法將語言學中的規則適用於所有訓練例子。 以資料驅動為主(Data-driven): 在網路時代,訓練資料變得大量且容易取得,於是以統計方法為基礎,藉由資料驅動的機械學習成為了機械翻譯的主流。在這個階段,不同長度的翻譯,或所謂的 phrase-based translation 在此系統中也可達成。該演算法的訓練目標為建構一語言模型,使給定來源語言句子,在此模型的評估下,給定來源語言句子,擁有最大似然機率(maximum likelihood)的目標語言句子。這個方法則受限於某些語言或語詞的範例稀少,以致於仍需要語言學的專業知識來做選取或設計特徵。 以類神經網路為主(Neural-based): 類神經網路則是資料驅動的分支,與資料驅動方法不同的是,類神經網路本身可以作為學習特徵的系統,無需語言學家的專業知識或手動設計便可獲得極佳品質的翻譯結果。
而在以類神經網路為主的方法,因為深度學習的興起,訓練適合建立長序列模型的循環神經網路(
Recurrent Neural Network )成為可能,發展出了一對編碼和解碼序列模型(encoder-decoder),通常被稱為
Sequence to Sequence 模型。
在此模型中,一個固定長度其語義被編碼與解碼模型共享的 Thought vector , 或 Context vector 會在編碼與解碼模型相接的介面實現,用來維持兩個語言間語義相通的部分。然而,單一固定長度的 Thought vector 仍無可避免的無法捕捉來源和目標句子間的複雜對應關係,於是 Attention 機制便被發展出來,於今不僅廣泛地在機械翻譯中使用,更應用在影像註解等相關領域。
類神經網路機械翻譯簡介
Sequence to Sequence Attention Mechanism Beam Search
類神經網路機械翻譯(Neural Machine Translation, NMT )是指用類神經網路為主的方法。在此以 Sequence to Sequnce (encoder-decoder) 的類神經網路架構為主,同時這也是目前最受歡迎的機械翻譯系統。
Sequence to Sequence Sequence to Sequence 的基本架構可見下圖:
圖一(圖片來源:Massive Exploration of Neural Machine Translation Architectures 論文)
這一序列模型包括了一對循環網路結構:
編碼(encoder) 循環網路結構和
解碼(decoder) 循環網路結構。編碼循環網路結構用於建立來源語言序列模型,而解碼循環網路結構則用於建立目標語言序列模型。關於 Sequence to Sequence 架構,可以見
此篇說明 。
文獻中,因為結構上的變異而又衍生出兩個不同的機械翻譯系統:
Sutskerever 機械翻譯模型 Cho 機械翻譯模型
前者在 2014 年為 Google 使用類神經網路作為翻譯服務的雛形,後者則由 MILA 實驗室發表(同時也是開源的 python 深度學習套件 Theano 發源地)。
兩個模型都以英文到法文的翻譯作為主要訓練資料,其差異在於前者使用
Long Short Term Memory Unit (LSTM) 循環神經網路記憶單元。後者則使用簡化的
LSTM ,被稱為
Gated Recurrent Unit(GRU) 。
LSTM 已在不同的文獻報告中,證明其在訓練較長序列的循環神經網路成功解決梯度消失,並有效捕捉長序列間的相依關係。關於這兩個記憶單元的差異,可見
這篇 。
後者在實驗的過程中,發現單純的
Sequence to Sequence 模型,在翻譯的表現上會隨著
來源句子的增長與字彙集的增加而下降 。 為了能更有效提升機械翻譯的準確度,又發展了
Attention 機制
。
Attention Mechanism Attention 機制在最初的發展又可分為兩類,分別由不同的實驗室發展出來:
Bahdanau Attention :在 2015 年由 MILA 實驗室所發展, Luong Attention :在 2015 年由史坦佛大學的 NLP group 提出。
Attention 機制除了希望能更提高翻譯的品質,但也意外地提供了類神經網路研究者一扇窗口。透過這個窗口,可以檢視原本認為是黑盒子不透明的訓練結果。在了解
Attention 機制如何達到此目的,可以先了解
Attention 機制的設計原理。
在此將其數學原理簡化,以較為直觀的方法解釋。Attention 機制可以看作是一個學習來源語言和目標語言每一個單詞之間關係的小型類神經網路。此小型類神經網路可以基於目標語言目前的解碼狀態決定該對來源語言的哪一個編碼狀態給予較多的注意,或以數學表示為權重。
以 Luong et al 在 2015 年發表的論文為例:
可以看到在來源語言 - 英文的輸入句子 - “I am a student” 與目標語言 - 法文的輸出句子 - ”je suis étudiant ” 的對應中,je 對於 I 給予較多的注意(約為 0.5 的權重),而給予其他的輸入則給予較少的注意(分別為 0.3, 0.1 和 0.1)
事實上我們可以將學得的 Attention 權重畫成一個矩陣圖,並以顏色的深淺來表示每一個目標單詞所分配給來源單詞的權重是多少,如下圖所示:
Beam Search 最後在產生最佳目標語言翻譯結果的階段,則利用近似搜尋的 Beam search 演算法,來輸出多個高可能性的目標語言翻譯結果。
機械翻譯語言模型,在訓練階段主要的任務在於估算模型參數值,使得符合該翻譯語言模型的目標語言輸出都能獲得較高的條件機率估算。然而,當使用已訓練完成的翻譯語言模型來進行目標語言翻譯生成,就必須採用搜尋的方式來找出符合來源語言輸入以及解碼語言模型的最佳的序列輸出。
一個找出最佳輸出的方法,便是在解碼器中的每一個狀態輸出的機率估算分佈,選取最大機率的單詞做輸出,進而導致最大的序列輸出聯合機率(joint probability)。然而,這樣的選取方式有一個隱憂,即是每一步的最大機率並不一定能導致該輸出序列的最大聯合機率。
一個比較好的方式,則是在每一步中保持一定數量的輸出語詞作為候選名單,而在輸出最終結果時將列在候選名單上輸出。由於在選入單詞於候選名單中,必定依據該時步的機率分佈大小排序,由最大機率詞語往下選多個候選詞語,可保證在候選名單中的輸出句子,必定都有較高的機率估算。
其次,因為有多個候選名單並列,所以可以免除單一輸出遺漏掉最佳輸出的可能。
在實踐上,我們可以依賴
Beam search 來達成,這個演算法需要使用者給予一個參數來決定要輸出多少個候選輸出翻譯。這個參數被稱為
Beam Width (如上圖紅色的樹節點為
Beam Width = 3 ,而留下最高三個候選名單),較為技術性但簡化的
Beam search 介紹可見
此篇 。
如何建立一個類神經網路機械翻譯系統流程
對導入類神經網路機械翻譯系統有興趣的讀者,可以依循以下的流程來建立一個簡單的模型,這也是一般學術文獻中進行評鑑不同機械翻譯系統的大致流程。在這裡,筆者企圖將與深度學習架構相關等技術細節抽離,希望先為讀者們架構巨觀的系統概念。
在此流程中大致可以分為三個部分:
訓練資料的取得 模型的建構 參數調整
訓練資料的取得 在自然語言的領域中,有三個主要的學會舉辦與計算語言相關的研討會。這三個學會分別是 Association for Computational Linguistics (ACL), 在歐洲的 EACL 和 International Conference on Computational Linguistics (COLING)。 ACL 和 EACL 所舉辦的年會,會提供資料集供相關領域的研究者以競賽的方式來呈現自己的研究工作。
在機械翻譯的領域,則有兩個頂級學術會議值得關注。一個是以機械翻譯為主的 Workshop on Statistical Machine Translation (簡稱為 WMT ),原本為由 Association for Computational Linguistics (簡稱為 ACL )在年度大型會議如 Empirical Methods in Natural Language Processing (EMNLP) 所舉辦一個工作坊,最後在 2016 年終於成長為學術會議。此會議除了供研究者發表論文並相互交流,並提供新的新聞和醫學文件的資料集供機械翻譯的研究團隊們以競賽的方式測試其創新的方法。
另外一個會議則為 2014 年開始加入機械翻譯競賽的 The International Workshop on Spoken Language Translation(IWSLT) 則提供了 TED 和 TEDx 演講翻譯資料集。
使用這些年會所提供的資料集作為訓練模型的訓練資料,第一個好處在於該訓練資料已經經過前處理,並將之分為 training / validation 和最後評分的 test set。所以任何人想要單純的比較模型的優劣,都可以使用這個資料集,而無需擔心資料不同所造成的差異。第二個好處在於公認的衡量模型標準,以及相關領域研究團隊在每年的競賽中提出模型的排名。此類競賽雖然不一定具有立即的商業價值,但是可當作指標,了解目前何類模型和演算法拔得頭籌,以及易於從文獻中查詢各個參賽模型的優劣,而基於一個公平的標準進而評估與比較。
而在機械翻譯的領域中,用來使用評估模型的標準為 BLEU 量度。BLEU 是 Bilingual Evaluation Understudy 的縮寫,其量度翻譯品質的方法是和一組經過挑選的人類翻譯結果進行比對,量測機械翻譯結果命中人類翻譯結果集合的精準度。此精準度可以依據使用者的需求以及對文本的依賴性而採用比單一詞彙(1-gram)更長長度的來量測,如選定 2-4 gram 長度,在不失去詞語間的順序,來量測機械翻譯命中人類翻譯的精準度。
然而,要應用這些現成的資料集,可能會遭遇下列問題:
這些資料集多半是針對某專業領域或對較為正式用語而成的翻譯,如 WMT 資料集中主要使用的是新聞,而 IWSLT 除了 TED 和 TEDx 的演講,更有針對生醫文件的領域所產生的資料集。若要應用在如對話機器人場景,多半會失去如生活用語的親切語氣。 競賽中可能不涵有欲建立的來源語言和目標語言標準。在訓練這樣的模型,又希望能和目前頂尖的學術模型進行比較,可以使用第三種語言(通常為英文)作為參考語言,來估算出來源語言和目標語言之間的差距的最大極限值。而一個最大極限值計算的方法可以由參考語言和來源語言的表現,加上參考語言和目標語言的表現求得,但前提是翻譯表現的量度必須符合三角不等式定理。
模型的建構 在網路上已有許多教學文,使用不同的深度學習套件建立一個 Sequence to Sequence 包含 Attention 機制的類神經機械翻譯模型,有興趣的讀者可以參見參考資料。
參數調整
在這篇論文中,作者們主要使用 WMT 2015 年,英語到德語之間的翻譯大型資料集(4.5 M,約四百五十萬英德翻譯對例子)作為模型參數調整的訓練資料集,另外再以英德語言模型的參數調整結果,作為英語到法語之間的小型資料集的參數調整初始值。在這個實驗中,主要是藉由語源相似但在語詞變化較富變化性,且普遍認為較難訓練的法語來了解參數調校的結果是否具有通用性。
除了將近 4.5 M 的大型訓練資料(training set),該論文作者們並自行準備驗證和最終測試資料。他們以 newstestset 2013 為驗證資料集(validation set),並合併 newstest 2014 和 newstest 2015 為最後的測試資料集(test set)。
測試的參數可以粗淺分為下述類別:
字彙的連續表示複雜度:包括了,字詞向量的長度(Word Embedding Dimensionality) 循環網路的架構:包括了,使用何者循環記憶體單元(Rnn Cell Variant ),用幾層的深度來增加編碼器和解碼器學習複雜特徵的能力(Encoder and Decoder Depth) ,編碼器的方向性(Bidirectional or Unidirectional encoder) , Attention 模組的引入:包括了 Attention 的向量長度(Attention Dimensionality) ,和種類(Attention Type) 使用 Beam Search 來產生目標語言序列:包括了 Beam Width 和 Length normalization Penalty 。
而詳細的參數調整的結果可以對照著下圖來查閱論文的各個章節,在此簡述如下:
論文的 4.1 節調查來源語言和目標語言的單詞向量長度(Source embedding and Target embedding) 的影響:來源和目標語言的單詞向量使用相同的長度,一般而言,單詞向量長度是愈大愈能得到較佳的表現,直到模型本身的複雜度超過資料的變異,也就是所謂的過度擬合(over-fitting)問題。 在論文的 4.2 節調查循環網路單元的架構的影響(RNN Cell Variants) :在論文中,比較了較為複雜的 LSTM 記憶單元,和簡化 LSTM 的 GRU 記憶單元。另外,為了檢視解碼器(decoder) 是否不需要具有閘門的記憶單元,而只憑 Attention 機制便可學習到最佳的翻譯對其位置,另外又設計了一個不具有閘門機制的 RNN 單元所構成的基本解碼器(Vallina-Decoder) 。 在論文的 4.3 節調查編碼器和解碼器的深度的影響:編碼器和解碼器的深度會影響單詞的表示,在此節中,作者並應用影像中所使用的 Residual block 的 skip connection 來解決深層網路,梯度消失和不易訓練的問題。 在論文的 4.4 節調查使用單向或雙向編碼器的影響:雙向編碼器較不易平行化,但可以捕捉序列兩個方向的相依關係。同時,作者也利用單向編碼器,但反轉來源語言的句子序列,企圖達到雙向編碼器的同等效果。 在論文的 4.5 節調查 Attention 機制的影響:在這節中,作者們選用不同的 Attention 實作方式並調整 Attention 的參數大小,此參數大小在論文中被稱為 Attention 維度,同時也比較不具有 Attention 機制的模型。 在論文的 4.6 節調查 Beam Search 參數的影響:除了 Beam Search 的 Beam Width 參數,更調整 Length Normalization Penalty 參數對計算編碼器的輸出序列產生機率影響。
而總結根據論文的實驗結果,所得到的訓練指引可以簡述如下:
參數調整對模型表現差異較大: 循環網路單元的架構使用 LSTM 可得到最佳結果,且訓練時間不會與 GRU 相差太遠。另外,解碼器不能光靠 Attention 機制來獲得最佳結果,必須仰賴具有閘門機制的循環網路單元。 模型有無 Attention 機制對於模型表現影響極大,但選擇何種 Attention 機制的差異不大(Bahdanau Attention 表現稍微較 Luong Attention 佳)。 Beam search 的 Beam Width 參數選取 5 - 10,可以得到最佳結果。但若 Beam Width 選取過大,則會造成模型表現下降。
參數調整對模型表現差異不大: 單詞向量長度使用小一點的數值(如:128 ),訓練時間是將近最大向量長度(如:2048)的一半,且兩者表現只有些微差距。然而,在論文中作者也指出,在擁有如此大量的參數模型(參數量為 187.09 M 當單詞向量長度為 2048)模型的訓練並未出現過度擬合(over-fitting),表示他們的實驗中,擁有最大向量長度的模型其損失值或許並未收斂。 深度對編碼和解碼器的影響不高,即使加上了 Residual block 也難以訓練。作者們建議編碼和編碼器使用兩或四層,若要在深層網路訓練快速收斂,則可加上在影像中使用的 Residual block 變異 - Dense Residual Skip Connection 。 雙向編碼器較反轉來源語言的單向編碼器為佳,而單向編碼器的表現雖然是最差,但與其他兩種方法差距不遠。 Length Normalization Penalty 對模型表現有影響,但影響不大。
經過測試後的最佳參數可以見下表:
圖五(圖片來源:Massive Exploration of Neural Machine Translation Architectures 論文)
類神經網路機械翻譯的訓練限制
雖然類神經網路機械翻譯在頂級的學術年會中,如卷積網路(Convolution Neural Network) 之於電腦視覺,獲得了空前的進展,然而卻有一些限制,以致於將該系統整合至商業應用有一定的門檻,在這個段落中我們將簡單討論這些限制。
訓練時間耗時
:因為循環網路的相依性,而造成平行化執行上的限制,而雙向 循環網路比起單向更加難以訓練,即使使用數十個 GPU 在架構上盡可能地做平行化處理,仍需幾天甚至到數週的訓練時間才能使損失函數停止波動。 參數數量較卷積網路多 ,而造成不易調校的情況:目前 針對電腦視覺的大型卷積網路架構已有自動參數搜尋的架構,然而對於 Sequence to Sequence 架構因為其龐大的參數量,而使參數搜尋困難。
在往後的文章,會再針對各個細節做充分的說明。
致讀者:
十月,我的寫作生活也產生了一些變化:那就是我參加了 2019 IT 邦幫忙鐵人賽,這也是未能及時更新此寫作專案的原因。
參加這個鐵人賽是希望能改變我有如「隨機梯度下降」(Stochastic Gradient Descent)最佳化演算法般的工作方法,而能夠藉由比較紀律的方式,對單一領域產生專注的動量,最後快速達到「最低點」(啥?!)
另外一個比較實際的原因,則是為了下一年度寫作計畫計畫。下一年度的寫作計畫將會以這些較短的鐵人文章們作為草稿,做觀念更正和實作驗證,繼續往下垂直深度挖掘。
此篇則為 2019 鐵人賽的延伸導讀文,2019 鐵人賽的完整目錄
見此 。
參考資料:
本篇主要的參考資料是來自於 Machine Learning Mastery (英)的一系列關於機械翻譯的文章(見下) Tensorflow 的 NMT 教學文 (英):從沒有 Attention 的 Sequence to Sequence 教學,到併入 Attention 的模型建構教學,非使用 keras。
延伸閱讀:
Sequence Modeling With CTC (英):發表在 distill 上解說 CTC 的文章,文中有清楚的 Beam Search 說明。