cs224笔记:Lecture 8 Machine Translation, Seq2Seq and Attention

8 Machine Translation, Seq2Seq and Attention

1 Pre-Neural Machine Translation

机器翻译(Machine Translation, MT)的就是将一种语言(source language)的句子翻译到另一种语言(target language)的句子。

关于machine translation的研究最早能追溯到20世纪50年代,冷战时期,美国人需要将俄语翻译成英语,这时的MT系统大多数是基于规则的(rule-based),使用一个双语词典做俄语到英语的映射。

1990s-2010s的方法主要是统计机器翻译(Statistical Machine Translation,SMT),它的一个主要思想是从数据中学习一个概率模型,假设任务是将法语翻译成英语,source language-法语的句子为x,target language-英语的句子为y,SMT目标就是:
arg ⁡ max ⁡ y P ( y ∣ x ) \arg \max_{y} P(y|x) argymaxP(yx)
使用贝叶斯公式(Bayes Rule),
= arg ⁡ max ⁡ y P ( x ∣ y ) P ( y ) =\arg \max_{y} P(x|y)P(y) =argymaxP(xy)P(y)
两部分可以分开学习,第一部分 P ( x ∣ y ) P(x|y) P(xy)是翻译模型(translation model),从parallel data中学习单词和短语如何翻译 (追求的是 fidelity) 。第二部分 P ( y ) P(y) P(y)是语言模型(language model),从monolingual data中学习如何生成流利的英语 (追求的是 fluency )。换句话说,翻译追求的信达雅,信就是translation model的目标,达就是language model的目标,雅还不在考虑范围。

如何学习translation model P ( x ∣ y ) P(x|y) P(xy)

需要大量parallel data,就是表达同样意思但是语言不同的数据。对于 P ( x ∣ y ) P(x|y) P(xy)进一步分解, P ( x , a ∣ y ) P(x, a|y) P(x,ay),其中 a a a代表指派(alignment),即法语句子x与英语句子y之间词一级别的联系,例如Japan-Japon,two-deux。

如何计算argmax

简单的想法枚举出每个可能的y然后计算概率,但是这种方法too expensive。一般的做法是使用一个启发式搜索算法(heuristic search algorithm)来搜寻最好的翻译,这个过程被称作解码(decoding)。

2 Neural Machine Translation(NMT)

2.1 seq2seq

Neural Machine Translation就是指使用一个神经网络来做机器翻译,这种神经网络结构被称为sequence-to-sequence(seq2seq),其中包含两个RNN。

在这里插入图片描述

seq2seq模型如上,包括两个RNN,一个作为编码器(encoder),将源句子(source sentence)通过RNN编码成向量表达,然后作为解码器(decoder)的输入,然后解码器不断的生成目标句子(target sentence)。

seq2seq结构不仅仅只能做机器翻译,它可以用于很多NLP任务中,例如summarization,dialogue,parsing,code generation。

seq2seq模型可以视为条件语言模型(conditional language model),称之为language model的原因是解码器预测target sentence中的下一个单词,称之为conditional的原因是预测基于给定句子的条件下。

2.2 Decoding

Greedy Decoding

所谓greedy decoding就是在解码的过程中,每一个时刻生成一个预测,这种方法显然有其漏洞,因为很多时候获取到后面的信息后,会对前面已生成的内容有所改变,而greedy encoding无法更改。

Exhaustive search Decoding

一个naive的解决greedy decoding的办法就是在解空间内做搜索,例如长度为T的序列,就是最大化下面的概率:
P ( y ∣ x ) = P ( y 1 ∣ x ) P ( y 2 ∣ y 1 , x ) ⋯ P ( y T ∣ y 1 , … y T − 1 , x ) = ∏ t = 1 T P ( y t ∣ y 1 , … , y t − 1 , x ) P(y|x)=P(y_1|x)P(y_2|y_1,x)\cdots P(y_T|y_1, \dots y_{T-1},x)\\ = \prod_{t=1}^T P(y_t|y_1, \dots , y_{t-1},x) P(yx)=P(y1x)P(y2y1,x)P(yTy1,yT1,x)=t=1TP(yty1,,yt1,x)
我们对每一个可能的序列y,都可以求出上面的概率,然后选出最大概率的序列作为预测。但是这样的做法计算过于昂贵,因为这样的序列有 ∣ V ∣ T |V|^T VT个,其中 ∣ V ∣ |V| V是词典大小。

Beam search Decoding

针对exhaustive search的弊端,一个解决方案就是beam search,中心思想就是在解码器的每一步生成k个最可能的预测值(称之为hypothesis),k代表beam的大小,一般5到10,这样大大减少了计算量,而且有效的保存了许多可能性。

对hypotheis打分,保留分数高的k个hypothesis,计算如下
s c o r e ( y 1 , … , y t ) = log ⁡ P ( y 1 , … , y t ) = ∑ i = 1 t log ⁡ P ( y i ∣ y 1 , … , y i ) score(y_1, \dots, y_t)=\log P(y_1, \dots, y_t) = \sum_{i=1}^{t} \log P(y_i | y_1, \dots, y_i) score(y1,,yt)=logP(y1,,yt)=i=1tlogP(yiy1,,yi)

例如一个k=2的decoding过程如下:

在这里插入图片描述

在第一步时,通过计算,挑选k个得分最大的hypothesis保留下来, log ⁡ P ( h e ∣ < S T A R T > ) = − 0.7 \log P(he|<START>) = -0.7 logP(he<START>)=0.7 log ⁡ P ( I ∣ < S T A R T > ) = − 0.9 \log P(I|<START>) = -0.9 logP(I<START>)=0.9;第二步的时候,再计算hypothesis,然后挑选k个得分最大的, log ⁡ P ( h i t ∣ < S T A R T > , h e ) + − 0.7 = ( − 1.7 ) \log P(hit|<START> , he) + -0.7 = (-1.7) logP(hit<START>,he)+0.7=(1.7) log ⁡ P ( s t r u c k ∣ < S T A R T > , h e ) + ( − 0.9 ) = − 2.9 \log P(struck|<START>, he) + (-0.9) = -2.9 logP(struck<START>,he)+(0.9)=2.9 log ⁡ P ( w a s ∣ < S T A R T > , I ) + ( − 0.9 ) = − 1.6 \log P(was|<START>, I) + (-0.9)= -1.6 logP(was<START>,I)+(0.9)=1.6 log ⁡ P ( g o t ∣ < S T A R T > , I ) + ( − 0.9 ) = − 1.8 \log P(got|<START>, I) + (-0.9)= -1.8 logP(got<START>,I)+(0.9)=1.8,然后再在这 k × k = 4 k\times k=4 k×k=4个结果中挑选k个最大的hypothesis,到最后一步backtrack获取整个序列。

对于上面beam search的一个问题就是,序列越长则他的score越小(由score定义的式子可以看出)。解决方法就是做一个长度的正则化: 1 t ∑ i = 1 t log ⁡ P ( y i ∣ y 1 , … , y i ) \frac{1}{t} \sum_{i=1}^{t} \log P(y_i | y_1, \dots, y_i) t1i=1tlogP(yiy1,,yi)

2.3 Cons & Pros

NMT相较以前SMT的优点有:1、更好的性能,更加流畅,更好的利用context信息;2、使用一个神经网络可以端到端的优化(end-to-end),这样不需要对一些子系统做单独优化:3、不需要太多人工的特征工程
缺点有:1、很少的可解读性(interpretable);2、难以控制,难以对翻译规定规则,加入先验知识

2.4 评估系统的方法

BLEU(Bilingual Evaluation Understudy)

BLEU compares the machine-written translation to one or several human-written translation(s), and computes a similarity score based on:

n-gram precision (usually for 1, 2, 3 and 4-grams)

• Plus a penalty for too-short system translations

3. Attention

3.1 seq2seq中的attention机制

seq2seq一个瓶颈是encoder太难了,需要把所有输入序列编码到一个向量里面,难度过大。所以提出了attention机制,以更好的获取输入序列的信息,中心思想就是decoder直接和输入序列连接,根据”自己“的需要,获取其中的信息。

如下图,在第一个时刻,解码器会获取每个时刻编码器隐层的信息,做一个点积,然后接softmax,获得一个概率分布,称之为attention distribution,根据这个概率分布获取编码器隐层的加权和,然后和编码器输出拼接起来,作为这个时刻解码器的输入做计算。

在这里插入图片描述

形式解释如下,

encoder hidden states: h 1 , … h N ∈ R h \mathbf{h}_1, \dots \mathbf{h}_N \in \mathbb{R}^h h1,hNRh

timestep t, decoder hidden state: $\mathbf{s}_t \in \mathbb{R}^h $

attension socres at this timestep: e t = [ s t T h 1 , … , s t T h N ] ∈ R N \mathbf{e}^t = [\mathbf{s}_t^T\mathbf{h}_1,\dots, \mathbf{s}_t^T\mathbf{h}_N] \in \mathbb{R}^N et=[stTh1,,stThN]RN

softmax to get attention distribution: α t = s o f t m a x ( e t ) ∈ R N \alpha^t = softmax(\mathbf{e}^t) \in \mathbb{R}^N αt=softmax(et)RN

get weighted sum of encoder hidden states : a t = ∑ i = 1 N α i t h i \mathbf{a}^t = \sum_{i=1}^{N} \alpha^t_i \mathbf{h}_i at=i=1Nαithi

Concatanate: [ a t ; s t ] ∈ R 2 h [\mathbf{a}^t; \mathbf{s}^t] \in \mathbb{R}^{2h} [at;st]R2h

3.2 一般的attention技巧

attention是一个通用的深度学习技巧,更形式的定义如下;

给定一组键值对(key-values),对于一个查询(query),attention就是根据这个查询和key的相似度,输出value的加权值。

在这里插入图片描述

对于相似度的评价方法有很多,如上面使用的点积,根据评价方法的不同,attention有下面的一些变体( q ∈ R d 1 \mathbb{q}\in \mathbb{R}^{d_1} qRd1代表query, k ∈ R d 2 \mathbf{k} \in \mathbb{R}^{d_2} kRd2代表key)

  1. Basic Dot-product attention(基本的点积形式,就是上面用的那个)

e i = q T k i ∈ R e_i = \mathbf{q}^T \mathbf{k}_i \in \mathbb{R} ei=qTkiR

这里假设 d 1 = d 2 d_1 = d_2 d1=d2

  1. Multiplicative attention
    e i = q T W k i ∈ R e_i = \mathbf{q}^T \mathbf{W} \mathbf{k}_i \in \mathbb{R} ei=qTWkiR

其中 W ∈ R d 1 × d 2 \mathbf{W} \in \mathbb{R}^{d_1 \times d_2} WRd1×d2是权重矩阵

  1. Additive attention

e i = v T t a n h ( W 1 k i + W 2 q ) ∈ R e_i = \mathbf{v}^T tanh(\mathbf{W}_1 \mathbf{k}_i + \mathbf{W}_2 \mathbf{q}) \in \mathbb{R} ei=vTtanh(W1ki+W2q)R

其中 W 1 ∈ R d 3 × d 2 \mathbf{W}_1 \in \mathbb{R}^{d_3 \times d_2} W1Rd3×d2 W 2 ∈ R d 3 × d 1 \mathbf{W}_2 \in \mathbb{R}^{d_3 \times d_1} W2Rd3×d1 v ∈ R d 3 \mathbf{v} \in \mathbb{R}^{d_3} vRd3是权重矩阵, d 3 d_3 d3是一个超参数。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值