cs224n lecture10學習筆記

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的優點

  1. End-to-end training
  2. 採用的Distributed representations可以share word或phrase的相似性,傳統的one hot representation會導致數據稀疏。
  3. NMT可以使用大得多的context,因此翻譯更準確傳統的語言模型,如4-gram,5-gram等依賴於word sequence的出現的次數,導致在生成的時候僅僅使用了很小的context
  4. 生成的文本更加流暢
  5. 傳統的SMT系統有很多分離的component, 如reordering, transliteration,NMT是end-to-end的,沒有上述component

NMT的缺點

  1. 無法顯式的利用syntactic或者semantic的結構,但是已經有越來越多的paper關注這個方面。
  2. 無法顯示利用語篇結構和指代等等。

不同時期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

按照概率分布 x_t sim x_{t-1} dots x_1, Y 進行抽樣,優點是無偏差,缺點是實踐中會導致高方差。

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 | 機器翻譯 |