cs224n lecture10學習筆記
來自專欄機器學習與數學1 人贊了文章
前言
Stanford的CS224n課程主要講的是Natural Language Processing with Deep Learning的知識,其中Lecture 10的主題是Machine Translation and Models with Attention,授課教師是Christopher Manning.
本文是學習完Lecture 10之後的筆記,基本按照講課的順序寫的。
ps:本來想看2018年最新的上課視頻,但是網上只找到2017年的,如果有最新的麻煩告訴我一下。
本節課的主要內容
1.介紹機器翻譯和神經機器翻譯
2.介紹sequence model的attention機制
3.介紹sequence model的decoders
期間助教來講了下google的多語言NMT系統。
機器翻譯(Machine Translation,MT)
機器翻譯是使用計算機來實現不同語言之間翻譯的技術,被翻譯的語言通常稱為源語言(source language),翻譯成的結果語言稱為目標語言(target language),機器翻譯是機器對語言理解的傳統衡量方法,涉及到語言的分析和生成,是自然語言處理的重要研究領域之一。
機器翻譯是一個蓬勃發展的行業:Google每天翻譯1000億個單詞,Facebook於2016年研發了自己的翻譯系統,eBay用機器翻譯來促進跨境交易
神經機器翻譯(Neural Machine Translation,NMT)
概念
NMT是通過一個大型神經網路來建模整個機器翻譯過程的機器翻譯方法。
NMT的青銅時代
神經網路在很長一段時間都是邊緣化的領域,當時提出的系統是比較原始的和受限的,但也從側面反映了當時的計算能力。
Robert Allen 1987年在《Several Studies on Natural Language and Back-Propagation》中構建了只有3310個English-Spanish 句子對作為數據集,其中的33個作為測試集,vocabulary只有31個English words和40個Spanish words, 架構如圖所示:
僅僅是簡單的encoder-decoder模型,沒有recurrent 的功能。
Chrisman 1991年在《Learning Recursive Distributed Representations for Holistic Computation》提出了 Dual-ported RAAM(Recursive Auto Associative Memories) 架構,在某種程度上有點像recurrent網路。
現代NMT
現代NMT的模型:
實際使用的模型並不像上圖那樣簡單,而是類似於:
Conditional recurrent language model
現代NMT架構首先把source encoding得到Y,然後根據Y來decoding,因此可以把decoder看作Conditional Recurrent Language Model,如圖所示:
RNN的encoder
Encoder的特點如下:
- 每次讀取source sentence的一個symbol
- 最後一個hidden state Y 作為整個source sentence的summary.
- 可以使用的recurrent activation function:
- Hyperbolic tangent tanh
- GRU,見文章《Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation》
- LSTM,見文章《Sequence to Sequence Learning with Neural Networks》
- 也可以用Convolutional network,見文章《A Convolutional Neural Network for Modelling Sentences》
RNN的Decoder
既然Y是整個source sentence的表示,那麼如何通過它來得到翻譯的句子呢?
一種方案是《Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation》提出的把Y作為starting point。但是Y包含了source的所有信息,在生成target sentence的時候難以保證source的語義信息不丟失。
另一種方案是,把Y作為生成時的每一個時間步輸入的一部分
這兩種方案都是依賴source sentence的表示——Y,導致處理長句的時候效果嚴重下降,解決方法是用後面講到的attention。
NMT進步神速
可以看出NMT的斜率更大,進步更快,NMT在2014年還是一個邊緣化的研究主題,但是2016年之後成為MT領域被廣泛採用的主導方式,相當的amazing。
NMT的優點
- End-to-end training
- 採用的Distributed representations可以share word或phrase的相似性,傳統的one hot representation會導致數據稀疏。
- NMT可以使用大得多的context,因此翻譯更準確傳統的語言模型,如4-gram,5-gram等依賴於word sequence的出現的次數,導致在生成的時候僅僅使用了很小的context
- 生成的文本更加流暢
- 傳統的SMT系統有很多分離的component, 如reordering, transliteration,NMT是end-to-end的,沒有上述component
NMT的缺點
- 無法顯式的利用syntactic或者semantic的結構,但是已經有越來越多的paper關注這個方面。
- 無法顯示利用語篇結構和指代等等。
不同時期google翻譯的測試
其中2013年比以前略有進步,但是14-16年又退步了並且3年沒有任何進步,直到2017年才取得了巨大進步,這是由於2016年底,google在其翻譯系統中應用了NMT。
可以發現的是即使是2017年,也沒有解決指代的問題。
Attention
下面正式介紹attention
Vanilla seq2seq encoder-decoder model的問題
source sentence被表示成為一個fixed-dimensional representation Y,導致處理長句的時候效果嚴重下降。
Attention的提出
Attention最初是在計算機視覺領域被提出的,在NLP領域,首先提出的是《NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE》這篇文章:
Attention最初是把last hidden states作為Y,那麼可以把encoding過程中的所有hidden states作為一個pool(圖中的pool of source states,有點像random access memory),在翻譯的時候可以按需retrieve。
這篇文章是一個開創性的idea,接下來的幾年中有很多進一步的exciting的研究成果,比如neural turing machines。
Attention的思路是非常直觀的:比如人在翻譯的英語句子時候,不是先把一個長句熟記於心後再開始閉著眼睛翻譯,通常的做法是通讀全文,把握整體,然後一邊查看原文一邊翻譯,Attention就是這樣一個過程,有點像傳統機器翻譯中的語料對齊的過程,即找出哪部分原文對應哪部分譯文,而NMT中的attention是隱式的對齊。
Scoring
在需要輸出下圖中問號的word時,應該retrieve pool裡面的哪些source states?
因此提出了一種打分機制,即把前一刻的decoder states和某個source states為參數,放入score函數,得到一個分數:然後進行歸一化處理,用softmax得到一個概率分布,
然後combines所有memories的加權值得到一個weighted sum,也就是context vector
把context vector,作為條件之一生成decoder的下一個hidden state
attention代表性的方式
代表性的方式有三個,《Neural Machine Translation by Jointly Learning to Align and Translate》提出的是第三個,兩個向量之間沒有interaction.
而《Effective Approaches to Attention-based Neural Machine Translation》提出的是第二個,兩個向量interaction比第一個更複雜,被廣泛採用。
Local Attention
Local Attention認為attention不必關注所有的source states,採用其中的某幾個即可。
Local attention聽起來對於處理長句子也許有潛力,但是實驗結果卻不行:
還有個奇怪的現象是在句子比較短的時候,BLEU較低,原因可能是用的data是Euroapean Parliament data,其中的句子不像是"I Love my mum"這樣直白,而是有些含義不明,比如採用某些標題或從長句子中斷章取義的。
Attention的更多應用
比如根據圖片生成描述、doubly Attention、或者通過以前alignment models中的linguistic ideas來擴展attention,不再贅述,具體看相關論文
Decoder
Decoder在inference的時候對inference序列的選擇有以下幾種方法:
Exhaustive Search
窮舉每種可能的情況,然後打分,挑出分數最高的,這顯然是不實用的,因為譯文數量是詞表大小的指數函數。
Ancestral Sampling
按照概率分布 進行抽樣,優點是無偏差,缺點是實踐中會導致高方差。
Greedy Search
每次直接選擇概率最大的抽樣
優點是效率高,缺點是不容易找到最佳值,由於每次採樣不是全局最優,采錯一步會影響後面。
Beam Search
Beam search是常用的採樣方法
具體流程如下:
設置採樣為K,第一次迭代出現K個,第二次出現K平方個並在其中在挑選K個,以此類推,這樣每個時刻保持k個最可能的選項(剪枝),k是常數,在其中進行搜索。
優點是質量好,缺點是計算量大。
k值的選取應該以最大化validation set的翻譯質量為準。
顯然如果k是無窮大的時候,模型是無偏差的,但是實際中k較小,就有偏差,提升K並不會導致效果單調的提升。
效果對比
Ancestral sampling要采50輪才得到比貪心搜索稍好的結果,但是beam size為5或10的beam search就可以超越它們。此外phrase-based MT常用的beam search的size是100到150,比NMT的大很多。
推薦閱讀:
※第七篇 自然語言處理與語音合成
※ACL 2018資源:100+ 預訓練的中文詞向量
※【轉】某新出的NLP教材
※SQL(五、複雜查詢)
※用注意力機制進行句子蘊含推理
TAG:自然語言處理 | 深度學習DeepLearning | 機器翻譯 |