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 ...
随机推荐
- Spring课程 Spring入门篇 4-3 Spring bean装配(下)之Autowired注解说明2 集合运用
课程链接: 本节主要讲了以下几块内容 1 注解相关解析 2 代码演练 集合for循环的使用 2.1 list集合应用 2.2 map集合应用 2.3 集合排序(只对list有效,对map无效(list ...
- jq中事件绑定的方法
在唯品会实习生面试中,被面试官问了这么一个问题,“jQuery中绑定事件的方法有几个?”,以click事件为例,我当时想到的只有.click(),.bind(),.on()这三种,然后面试官又追问,“ ...
- [C#]为什么Interface里的成员不能使用static修饰?
首先引用MSDN里的原文 Interface members are automatically public, and they can't include any access modifiers ...
- Python:Tkinter的GUI设计——物体实时移动
参考: 1.Tkinter之Canvas篇 2.python GUI实践:做一个满图乱跑的小球 3.[Tkinter 教程08] Canvas 图形绘制 4.tkinter模块常用参数(python3 ...
- 【起航计划 024】2015 起航计划 Android APIDemo的魔鬼步伐 23 App->Notification->IncomingMessage 状态栏通知
应用程序可以使用Notifications来通知用户某个事件发生了(如收到短信).类NotificationManager 用来处理Notification, NotificationManager可 ...
- WebRTC协议
webrtc协议介绍 MDN webrtc协议 ICE 交互式连接建立Interactive Connectivity Establishment (ICE) 是一个允许你的浏览器和对端浏览器建立连接 ...
- 06、部署Spark程序到集群上运行
06.部署Spark程序到集群上运行 6.1 修改程序代码 修改文件加载路径 在spark集群上执行程序时,如果加载文件需要确保路径是所有节点能否访问到的路径,因此通常是hdfs路径地址.所以需要修改 ...
- 详解如何利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入
我们先来简单了解一下WinForm和FarPoint,WinForm是·Net开发平台中对Windows Form的一种称谓.而FarPoint是一款模拟EXCEL的控件.它可以根据用户的要求实现很大 ...
- Java I/O 工作机制(二) —— Java 的 I/O 的交互方式分析
简介: BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善. ...
- April 17 2017 Week 16 Monday
You will find that it is necessary to let things go; simply for the reason that they are heavy. 你会明白 ...