Effective Approaches to Attention-based Neural Machine Translation(Global和Local attention)
这篇论文主要是提出了Global attention 和 Local attention
这个论文有一个译文,不过我没细看
Effective Approaches to Attention-based Neural Machine Translation 中英文对照翻译 - 一译的文章 - 知乎
https://zhuanlan.zhihu.com/p/38205832
看这个论文的时候我主要是从第三小节开始看起的,也就是 attention-based models
我们基于attention机制的模型大致上可以分为广泛的两类:一类就是全局attention,一类就是局部attention。这两类的区分点在于attention是基于原始句子的全部位置,还是原始句子中一部分位置。
在这篇论文中的attention,获得解码器在t时刻真正的隐层输出的过程是这样的:
\(\vec{h_{t}}=tanh(W_{c}[c_{t};h_{t}])\)
对于这个公式,需要注意的一点就是说\(\vec{h_{t}}\)对应的是解码器在t时刻真正的隐层的输出,也是下一个时刻t+1时刻的隐层输入之一;
而\(h_{t}\)对应的则是t时刻的初始隐层输出。
这里有一个初始隐层输出\(h_{t}\),我们使用这个变量和编码器的所有时刻的隐层输出进行权重和的操作得到环境向量\(c_{t}\).
之前那个论文的操作是对解码器t-1时刻的隐层输出和编码器所有的隐层输出进行操作得到权重和,这个作为环境向量。(写到这里我产生了一个疑问,就是说对于解码器,它的输入对应的究竟有什么)
在这个论文中,解码器的输入包含上一层真正的隐层输出\(\vec{h_{t}}\)和上个单词
在之前那篇论文中,我现在的理解就是应该是有这上一个单词,上一层隐层,和上一层产生的环境向量,可以看一下相关的图片理解一下这个问题。
得到t时刻真正的隐层输出之后,我们想要得到预测出来的单词怎么做呢?
这篇论文中是这么操作的,对真正的隐层输出(这个隐层输出已经使用到了环境向量)加上一个softmax层,公式大概是这样的:
\(p(y_{t}|y_{<t},x)=softmax(W_{s}\vec{h_{t})}\)
接下来,会详细介绍一个全局attention和局部attention是如何产生环境向量\(c_{t}\)
对于全局attention,它是考虑所有的输入单词的,公式大概是这样的:
\(a_{t}(s) = align(h_{t},\vec{h_{s})}=\frac{exp(score(h_{t},\vec{h_{s}}))}{\sum_{s^{'}}exp(score(h_{t},\vec{h_{s}}))}\)
讲到这里,我们就知道现在最重要的就是,我们如何获得\(score(h_{t},\vec{h_{s}})\).
一般来说,我们有三种方式可以计算这个分式。
第一种 dot:
\(score(h_{t},\vec{h_{s}})=h_{t}^{T}\vec{h_{s}}\)
这个公式怎么理解呢?
\(\vec{h_{s}}\)表示为其中编码器的一个隐层状态,size应该是\([n_h,1],n_h\)代表的是隐层神经元的个数。然后\(h_{t}^{T}\)。\(h_{t}\)在t时刻的解码器隐层的输出,注意这里是直接的隐层输出,而是我们上面说的真正的隐层输出。size是\([n_h,1]\)。两者dot,得到一个值。
第二种方式 general:
\(score(h_{t},\vec{h_{s}})=h_{t}^{T}W_{a}\vec{h_{s}}\)
对于这种,增加了一个参数\(W_{a}\)
第三种方式 concat:
\(score(h_{t},\vec{h_{s}})=v_{a}^{T}tanh(W_{a}[h_{t};\vec{h_{s}}])\)
这种方法就简单来讲就是单层的多层感知机
还有一种方式我们称之为 location-based:
\(a_{t} = softmax(W_{a}h_{t})\)。这个直接得到所有的权重了。注意这里是\(a_{t}\)不是\(a_{t}(s)\)
局部attention
作者在论文中说,自己提出来全局attention和局部attention是来源于soft和hard attention,soft和hard attention是从图片领域扩展过来的概念。
局部attention原理是把注意力放在一个小窗口内的句子内容,而不是全部内容。这个局部内容是这样获取的。首先模型为每一个目标时刻单词产生一个对齐位置\(p_{t}\),然后我们找到一个窗口区间[p_{t}-D,p_{t}+D];D靠经验获得,在这个区间内容的内容产生我们的环境向量。
在局部attention下,我们有两种模式。
第一种就是Monotonic(中文叫做无变化的)的对齐模型,local-m,我们简简单单的就令\(p_{t}=t\),这个公式的意思就是我们认为目标单词和我们的元单词是一一对应的。
另一种就是Predictive对齐模型(local-p),我们使用下面的公式预测\(p_{t}\):
\(p_{t}=S*sigmoid(v_{p}^{T}tanh(W_{p}h_{t}))\)
\(W_{p}\)和\(v_{p}\)属于模型参数,是会在训练过程中被学习更新的。\(S\)代表的是原始句子长度。sigmoid之后,\(p_{t}\)的范围是\([0,S]\)
为了让我们的对齐点更加的接近\(p_{t}\),我们以\(p_{t}\)为中心点,加上了一个高斯分布,标准差\(\sigma=\frac{D}{2}\):
\(a_t(s)=align(h_{t},\vec{h_{s}})exp(-\frac{(s-p_{t}^2)}{2\sigma^2})\)
要注意\(p_{t}\)是一个真实的值,\(s\)是处于窗口空间的整数
参考1 写的不错
Effective Approaches to Attention-based Neural Machine Translation(Global和Local attention)的更多相关文章
- 课程五(Sequence Models),第三周(Sequence models & Attention mechanism) —— 1.Programming assignments:Neural Machine Translation with Attention
Neural Machine Translation Welcome to your first programming assignment for this week! You will buil ...
- On Using Very Large Target Vocabulary for Neural Machine Translation Candidate Sampling Sampled Softmax
[softmax分类器的加速器] https://www.tensorflow.org/api_docs/python/tf/nn/sampled_softmax_loss This is a fas ...
- 神经机器翻译 - NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
论文:NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE 综述 背景及问题 背景: 翻译: 翻译模型学习条件分布 ...
- 对Neural Machine Translation by Jointly Learning to Align and Translate论文的详解
读论文 Neural Machine Translation by Jointly Learning to Align and Translate 这个论文是在NLP中第一个使用attention机制 ...
- 【转载 | 翻译】Visualizing A Neural Machine Translation Model(神经机器翻译模型NMT的可视化)
转载并翻译Jay Alammar的一篇博文:Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models Wi ...
- Sequence Models Week 3 Neural Machine Translation
Neural Machine Translation Welcome to your first programming assignment for this week! You will buil ...
- [笔记] encoder-decoder NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE
原文地址 :[1409.0473] Neural Machine Translation by Jointly Learning to Align and Translate (arxiv.org) ...
- Introduction to Neural Machine Translation - part 1
The Noise Channel Model \(p(e)\): the language Model \(p(f|e)\): the translation model where, \(e\): ...
- 论文阅读 | Robust Neural Machine Translation with Doubly Adversarial Inputs
(1)用对抗性的源实例攻击翻译模型; (2)使用对抗性目标输入来保护翻译模型,提高其对对抗性源输入的鲁棒性. 生成对抗输入:基于梯度 (平均损失) -> AdvGen 我们的工作处理由白盒N ...
随机推荐
- java 通过反射获取和设置对象属性值
public static Object parseDate(Object object){ SimpleDateFormat sdf = new SimpleDateFormat("yyy ...
- IntelliJ IDEA实时模板变量
返回由当前方法返回的值的类型IntelliJ IDEA 实时模板中的模板变量允许用户输入.扩展模板后,变量将作为输入字段显示在编辑器中. IntelliJ IDEA 声明实时模板变量 模板中的变量以下 ...
- Python面向对象(三)
一.绑定方法与非绑定方法 一.绑定方法:绑定给谁就应该由谁来调用,谁来调用就会将谁当作第一个参数传入 1.绑定给对象的方法:类中定义的函数默认就是绑定给对象的 2.绑定给类的方法:为类中定义的函数加上 ...
- div多选控制
此点击按钮,弹出DIV,div内容可以多项选择,点击确定,被选项回填至文本框.功能类似之前写过的一篇日期多选,不过是在其基础上,新增点击页面其他区域,隐藏div功能. 1.css部分代码 .multi ...
- 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
转自博客http://blog.csdn.net/xd195666916/article/details/5419316,同时感谢博主 今天做了个用hibernate直接执行原生sql的查询,报错No ...
- Android Recyclerview隐藏item的所在区域显示大空白问题的解决方案
最近搞了下Recyclerview,做了增加.删除item的功能.item上方有卡签 插个图片看下效果,点击底下的添加上去,同时,底下的item消失,这个用notifyItemInserted和not ...
- (转)轻松解决 MyEclipse、Eclipse 编译时提示 @Override The method of type must override a superclass method 即 @Override 标注问题
刚才在把工程从其他地方导入到自己机子的 MyEclipse 下时,出现了 The method of type must override a superclass method ,提示的是实现类必须 ...
- yii2.0安装ElasticSearch及使用
yii2.0安装ElasticSearch安装及使用教程:https://www.yiichina.com/tutorial/1046 Elasticsearch 权威指南(中文版):https:// ...
- JAVA StringBuffer的用法
在使用StringBuffer 的时候,习惯性的像String一样把他初始化了 StringBuffer result = null; 结果警告:Null pointer access: The va ...
- ASP.NET Core - VSCode安装和配置
在深入了解ASP.NET Core之前先研究了下主要的两个开发工具(VS 2015和VS Code), VS 2015对Core的支持已经相当的完备,很多操作得到简化用起来很是方便.VS Code是微 ...