attention model--Neural machine translation by jointly learning to align and translate论文解读

  • attention模型基本框图

attention model

attention model如何得到上下文
上面的两幅图已经把attention model表示出来了,下面我再以文字加以描述。

  • 为什么需要attention
    传统的encoder-decoder模型大致如下图所示:
    这里写图片描述

    1. 可以看出传统模型把句子的所有语义信息浓缩为一个中间语义C,每一个输出的y都是利用了同一个C,所以输出的每个y都利用了相同的语义信息C,输入的每个单词对于不同的输出y都有相同的权重,并没有引入注意力权重。而我们在翻译时,当前单词的翻译结果应该和它临近的单词关系较大,所以应该有侧重点,不然和它不相关的单词可能会对它的翻译造成不利影响。和LSTM的忘记门和更新门功能类似,我们翻译时可能会需要“忘记”一些离当前单词很远的信息,从而突出临近的信息。而这种功能是传统的encoder-decoder网络结构无法学习的,即使它用了很多层。有相关实验发现,把源句子倒置后再输入encoder-decoder网络,取得了更好的效果,原因就是因为有些语言源句子中的字与翻译出的字的位置相差很大。
    2. 把语义信息浓缩为一个中间语义后,推断可能这种模型难于处理长的句子,NEURAL MACHINE TRANSLATION
      BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
      这篇论文通过实验也证实了这点。实验中越长的句子翻译表现越差,这也说明了传统的encoder-decoder翻译缺乏鲁棒性。

    解决思路: 给定一个句子,语义信息就确定了,那么一个很自然的想法就是让不同输出单词侧重(有选择地抽取)学习语义信息的不同部分。那么就需要给每个输出单词一套参数w,让不同单词学习不同的参数w,从而达到有选择的抽取学习语义信息的功能。举个例子:翻译
    这里写图片描述
    为:
    这里写图片描述
    其中area应翻译成zone,那么输出结果zone时,它利用的句子信息,可能更偏重于area的上下文,即相应的权重比较大。这也就是ALIGNMENT MODEL(对齐模型)的由来,即翻译中某个输出应该和原句子中相应的词对齐。
    网络结构如下图所示:
    这里写图片描述
    可以看出虽然还是使用了相同的语义信息,但是每个输出单词都可以有不同的对于语义信息的“理解”。
    按照上述思想,每个输出单词给它单独一套参数w,即可以实现以上功能。为何实际上的attention机制需要再利用一个小型网络来训练相应的权值呢,即:
    这里写图片描述
    这里训练权值的函数利用了si-1和hj
    我的理解有两点。
    (1)翻译模型和其他模型有一点不同,因为翻译过程是一步步进行的,后面的翻译结果会用到前面翻译结果的信息,所以权重的计算需要考虑已经decoder出的信息即si-1,然后再利用encoder的当前位置的信息hj求出相应的权重,而不是只利用encoder的信息hj。
    (2)即使是除了翻译模型,其他用不到si-1的模型也不可能每一个输出单独给它一套参数w,首先神经网络是共享参数的,循环神经网路即使每一步输出一次,每一步的输出再接一层全连接,全连接的参数也是共享的;其次每一个输出单独给它一套参数也是不合理的,因为这样就在每个位置的参数共享,很显然网络的输出和位置并不是很相关。
    那么如果不用attention,例如得到bilstm+crf中bilstm的输出h后,给每个位置相同的参数w得到crf的输入hw+b。这样有一个明显的缺点,就是没有考虑各个位置信息对当前输出的重要程度。因为由于共享参数,各个位置的信息对当前输出结果的影响是相同的。所以只有设想有一套可以综合考虑各个位置对当前输出结果影响大小的共享参数。于是想到了softmax综合所有位置的权重输出,那么同样也是只有一套参数(attention的参数也是共享的),但是却考虑了各个位置的信息对当前结果的“影响力”,点睛之笔就是softmax,使模型训练出来的一套参数可以考虑所有位置的权重。

  • 基本公式
    NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
    是最早提出attention思想的论文,这篇论文中的attention框图为:
    这里写图片描述
    基本公式有:
    这里写图片描述
    这里写图片描述
    注意这里的y(i-1)是上一步的真实标签,而非输出标签(在训练过程中)
    这里写图片描述
    这里写图片描述
    其中,a激活函数可以是:
    这里写图片描述

参考资料:
1. http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and-nlp/
2. https://blog.csdn.net/qq_21190081/article/details/53083516
3. NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE