Neural Machine translation中的Attention机制

来源:互联网 发布:应象中医 知乎 编辑:程序博客网 时间:2024/05/16 05:35

随着深度学习的发展,NMT(Neural machine translation)已经逐渐取代了SMT(statistic MT)。其最大的有点就是系统的整体和简单,少去了统计机器翻译中的分词,对齐。抽短语等繁琐的步骤。

而NMT的大致流程和思想可以去参考下面的链接,讲的很详细。
https://devblogs.nvidia.com/parallelforall/introduction-neural-machine-translation-with-gpus/

说到NMT不得不提到RNN,GRU,LSTM这些网络结构。这些东西在这里就不做介绍。另外一个已经被大家公认的很有价值的发现就是Attention机制。首先通俗的介绍一下它的思想。

例如我们在翻译(我 昨天 有事,所以 他 替我 去 北京 了)的时候翻译“去”这个词的时候,人们的注意力是集中于几个词上面,而不是整句话上面的。这里 这里(昨天,他)都对去的翻译起很大的影响,Attention的思想就是将所有词分配一个权重来表示对现在的翻译的上下文的重要性。
1,首先介绍Attention机制解决的问题。
这里写图片描述
上图说明一个问题,当用传统encoder-decoder框架的时候,encoder的表达能力有限,任意长度的句子都会把encoder压缩到一个有限制维度的向量中,难免会有信息丢失,所以,当句子长度达到一定的时候翻译效果骤降。

2,改变保存句子的方式,采用biRNN
以前encoder会将句子压缩到一个vector中,现在使用下面的结构,用两个向量表示一个词。
这里写图片描述
一个代表从前往后的RNN迭代过程输出的向量,一个表示从后往前。两个向量分别保存了单词前面和后面的信息。

3,上面的表达方式可以叫做一个句子的可变长表示(variable-length representation),但是如何让decoder选择性的采取和舍弃其中的信息。
Dzmitry Bahdanau and Yoshua Bengio还有前面博客的作者Kyunghyun Cho三位大牛提出了Attention(2014年)
用一个简单的单层神经网络,输入为前一个隐层节点Zi和每一个biRNN得到的单词表示{h1,h2……},每个都通过网络传播传播得到一个值{a1,a2,a3…..},
这里写图片描述

4最后将所有值做一个softmax正则化,得到所谓的权重,而现在翻译所要用到的上下文则根据这一组权重和biRNN得到的单词表示得到,这里写图片描述

这里写图片描述

5 Soft Attention的副产品

作者将其中对齐的权重采用不同颜色的线连接到双语的词之间,在词对齐和无监督,弱监督学习方面也有一定的贡献。
这里写图片描述

博文中大部分内容是来自开头提到的博文中的讲解,大部分地方只是通俗简略的翻译过来,其中夹杂了一些自己学习过程中的理解,有不对的地方请大家指出。

0 0
原创粉丝点击