记录:读Neural Machine Translation by Jointly Learning to Align and Translate
读Neural Machine Translation by Jointly Learning to Align and Translate
作者:Bahdanau,D et al.
目录
-
RNN Encoder-Decoder
-
Attention
-
Experiment
-
Conclusion
1 RNN Encoder-Decoder
本节描述传统的神经机器翻译--即encoder-decoder这一类,本文作者提出的新的架构也是以此作为底层架构的。
1.1 Encoder
总体流程:使用编码器将输入向量序列编码为一个固定长度的上下文向量c,解码器再利用c对每个时间步的单词预测即翻译解码的过程。
编码器的作用就是将输入序列编码得到上下文向量c,进而将它喂给解码器。
具体过程:首先对输入语句向量化后作为整个模型的输入,即\(X = (x_1,...,x_{T_x})\),经过编码器,将其转变为向量c,有很多种方法实现这一操作这里使用RNN(可以采用多种模型作为解码器这里就以RNN为例),如下公式。
其中,\(h_t\)为在时间t时的hidden state, c由hidden state序列得到,f和q均为非线性函数,一般都是自定义的,如根据文中描述,Sutskever et al. (2014)使用LSTM作为f,LSTM的最后一次循环的输出作为c,即\(q ({h1, · · · , hT}) = hT\)得到c。
1.2 Decoder
解码器的作用就是利用向量c和之前已经预测完的词{\(y_1,...,y_{t-1}\)}来对下一个词即时刻t的词\(y_t\)进行预测或者说翻译,如下公式。
其中y是一个序列,即\(y = (y_1,...,y_{T_y})\),解码器一般也可以使用多种结构包括混合结构这里以RNN为例,使用RNN作为解码器那么Eq. (2)中的条件概率可以建模为:
其中,g为非线性的(也可能是多层的)函数,类似RNN的激活函数嘛,\(s_t\)代表t时刻RNN的隐状态。
1.3 局限性
“encoder-decoder模型虽然非常经典,但是局限性也非常大。最大的局限性就在于编码和解码之间的唯一联系就是一个固定长度的语义向量c”\(^{[2]}\),但此encoder-decoder方法有一个问题就是其神经网络或者说编码器需要将原句的所有必要的信息都压缩到一个固定长度的向量c中,我们知道对于神经网络在数据流不断往顶层流动时,必然会有信息损失,更如RNN循环处理序列中每个词,随着句子长度的不断增加,也会有信息损失,如Sutskever et al. (2014)中\(q ({h1, · · · , hT}) = hT\)使用最后一次输出作为c。因此这使得传统神经机器翻译很难处理长序列或者说遇到长序列时性能会急剧下降,后续实验也证明了这一点。
另一方面根据上述公式Eq. (2)(3)可知,此方法对每个词的翻译预测都是使用同一个固定长度的c,先不说c可能没法很好的压缩整个语句的信息,它都用同一个一点侧重性都没有。
本文也就针对这一点提出了新的结构来解决上述问题--attention机制。
2 Attention
基本结构都一样变动不大,因为其底层结构用的就是RNN Encoder-Decoder。
2.1 Encoder
基本一样,只是考虑的上下文,使用双向RNN作为编码器那么每个时间步的hidden state就是双向的拼接了即\(h_t = [\overleftarrow{h_t};\overrightarrow{h_t}]\),主要不同在于上下文向量c的计算方式发生了变化详见Decoder部分。如下图为本文作者采用的模型的整体架构。
其中输入序列X经过双向RNN后,通过align model对其hidden state进行加权求和得到\(c_t\),作为解码器的每个时间步的输入。
2.2 Decoder
在这个新的模型架构中解码器仍然采用RNN,但由于语义向量或者说上下文向量c的变化,作者重新定义了Eq. (2)中的条件概率如下公式。
其中\(s_i\)代表时刻i, RNN的hidden state,\(s_i\)由\(s_i = f(s_{i-1},y_{i-1},c_i)\)计算得到(就是类似LSTM得到的每个时间步的单元状态吧,f可能是某个门的激活函数??),那么至此,除了context vector c不同外,其实与RNN encoder-decoder基本一致,本文主要的工作就是c的变化。
不同于传统RNN encoder-decoder方法使用同一个固定长度的c,本文新结构中的\(c_i\)代表针对时刻i的预测\(y_i\)的context vector,假设输入序列有T个词,那么就一共有T个\(c_i,i=1,...,T\)。其原理就是将输入序列编码为一个annotation序列即\((h_1,...,h_{T_x})\)(注意这里的h不同于Section 1.1中的h,我觉得此处的s可以认为是LSTM中的单元隐状态,h为节点每个时间步的输出即annotation), 然后根据这个annotation序列,每个时间步都计算一次\(c_i\),计算方式为对所有的注释\(h_i\)进行加权求和,且同一时刻的不同隐状态的权重不同,且不同时刻的权重也随之变化具体如何变,受何影响下面会讲。
\(c_i\)的具体计算方式如下:
其中每个\(h_j\)的权重\(\alpha_{ij}\)由以下公式计算得到:
其中,\(e_{ij} = a(s_{i-1,h_j})\)为align model,我们可以将其理解为输入语句第j个位置的词与输出语句即翻译语句中的第i个位置的词相匹配的程度或者说是得分,因此不同时刻i(其实就是一个一个词的依次次处理所以时刻i也就是位置i,只不过这个位置i不一定是按照句子中词的顺序依次排的,因为要软对齐,详见实验例子)的权重也就随着\(s_{i-1}\),和输入语句的第j个annotation \(h_j\)变化了。且这里每个时刻i都要计算一个\(c_i\),因此需要计算\(T_x*T_y\)次。
其实权重\(\alpha_{ij}\)就是做了一个softmax归一化,ELMo(Peters,M et al.,2018)中的softmax归一化权重类似这里。且我们说这个align model具体如何计算的?文中作者说是一个前馈神经网络,跟随整个网络结构的其他部分一块训练,详见附录。大致看了一下就是类似全连接层做了一个线性变换后激活函数再非线性变化一下吧,如下。
其中\(v^T_a,W_a,U_a\)都是权重参数矩阵,确实类似全连接层的权重矩阵参数随着整个网络小样本随机梯度下降训练得到。
原文这段话总结的挺好的:
意思就是这种方法实现了一种注意力的机制,由于使用了权重使得可以更加主要关注某些annotation,不再需要encoder必须尽可能好的把整个序列的信息(所有的annotation)压缩到一个固定长度的向量了,且由于注意力或者权重的使用实现了一种软对齐而不是语言学hard align,详见实验,当然align model也就是为了实现attention而设计的。
2.3 小结
主要改进在context vector c这里。
主要流程:输入word embedding序列; 编码得到对应的annotation\((h_1,...,h_{T_x})\)--即每个时间步的输出; 每个时间步通过权重相加所有的annotation得到一个当前时刻i的翻译预测\(y_i\)最贴切的expected annotation即\(c_i\),做为解码器的输入参数; 解码之后再将其喂给全连接输出层如用softmax、CRF做最后一层输出层。
3 Experiment
就简单看下图吧,详见原文。
简单说明一下,RNNsearch为本文作者提出的新的架构模型,RNNenc为传统RNN encoder-decoder,作者对这两个模型分别进行了两次训练后将其保存下来得到四个模型,RNNsearch-30-50,RNNenc-30-50,代表训练时分别使用的是长度为30和长度为50的句子训练后保存下来的模型,之后用这四个模型对测试集中的所有样本测试(包括各种长度的句子),结果如下图,确实随着句子的长度的增加RNNenc性能急剧下降如Figure2,且Table1中表明RNNsearch比RNNenc性能好。由Figure3可见,衡量权重相关度的,有几个点偏离了对角线,即并不是完全按照source sequence一个一个次翻译即不是hard align而是soft align,详见原文实验部分。
4 Conclusion
主要工作就是所谓的attention机制的提出吧,后续很多好像都是由此变化而来,而且好像很多如序列标注任务都会借鉴机器翻译的想法如encoder-decoder,如Cove(McCann et al., 2017)。
参考
[1] Dzmitry Bahdanau,KyungHyun Cho,Yoshua Bengio.Neural Machine Translation by Jointly Learning to Align and Translate.ICLR 2015.
[2] multiangle.深度学习笔记(六):Encoder-Decoder模型和Attention模型.CSDN 2016.https://blog.csdn.net/u014595019/article/details/52826423.
[3] Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner,Christopher Clark, Kenton Lee, Luke Zettlemoyer.Deep contextualized word representations.NAACL-HLT 2018.