最近想要看看Attention的机制,然后被网上博客引到这个论文,想要了解一下NMT(Neural Machine Translation)的架构。这篇paper没有发表在会议上,出自Google Brain,并公开了seq2seq的NMT框架代码。个人觉得文中的结论不太可信,但是对于NMT的介绍还是足够清晰。这里记录一些文中有意思的点,以及一些笔者自己的思考,欢迎指教。
详见文中Section2.1部分。
如下图所示,NMT分为Encoder部分和Decoder部分,中间接了一个Attention用于对Encoder部分的信息进行汇总。
具体地,输入是
Decoder部分则是输出部分,每次根据之前生成的输出
Attention即为注意力机制,它使得Decoder在每个位置上都可以看到不同的Encoder的信息,而其对于Encoder信息的筛选也基于之前时刻的输出
从而整体上构成一个End-to-End的架构。
笔者对于Attention还不是很了解,下文是结合paper的理解
如上所诉,Attention基于之前位置的输出
不同的Attention机制主要在于使用不同的Attention函数,文中提到了两种函数,分别为
文中还提到对于Attention的理解部分,说通常认为Attention是注意力机制,即使得Decoder不同时刻使用不同信息,而且Encoder也不用把所有信息都存储到一个固定维数的向量中;但Attention有效地原因可能是因为给Encoder(paper里面是Decoder,但笔者认为Encoder才对)部分加入了gradient highway(paper里面是用weighted skip connection),使得训练的时候梯度值更大。
神经网络模型因为初始参数不同会有不同的表现,笔者一直觉得应该有一个标准科学可靠的方法评价网络模型在某个问题上的结果,论文中介绍了其使用的方法,记录在此,方便以后查找。
Each experiment is run for a maximum of 2.5M steps and replicated 4 times with different initializations. We save model checkpoints every 30 minutes and choose the best checkpoint based on the validation set BLEU score. We report mean and standard deviation as well as highest scores (as per cross validation) for each experiment.
笔者对NLP领域不是很熟悉,看到一些比较有意思的观点,记录在此。
1. RNNs难于并行。(应该是由于其非固定长度,而且天生存在顺序)
2. LSTM不仅具有消除Gradient Vanishing(Exploding)的作用,还可以对信息进行筛选,如mask out irrelevant parts。(这部分应该是所有gate相关RNN变形的类似特性;同时把信息筛选功能融合到RNN模块不知是好是坏,基于分化的特性,此部分可能更适合于分类器模块或者Attention模块,而RNNs更多用于信息提取)
3. 文中提到了残差网络在RNN里面的拓展
4. RNN实际使用过程中Encoder部分的Reverse技巧(不了解原因,可能还有再看看论文)
5. Bidirection RNN比单向RNN难于并行