这篇论文主要是提出了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)的更多相关文章

  1. 课程五(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 ...

  2. 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 ...

  3. 神经机器翻译 - NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE

    论文:NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE 综述 背景及问题 背景: 翻译: 翻译模型学习条件分布 ...

  4. 对Neural Machine Translation by Jointly Learning to Align and Translate论文的详解

    读论文 Neural Machine Translation by Jointly Learning to Align and Translate 这个论文是在NLP中第一个使用attention机制 ...

  5. 【转载 | 翻译】Visualizing A Neural Machine Translation Model(神经机器翻译模型NMT的可视化)

    转载并翻译Jay Alammar的一篇博文:Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models Wi ...

  6. Sequence Models Week 3 Neural Machine Translation

    Neural Machine Translation Welcome to your first programming assignment for this week! You will buil ...

  7. [笔记] 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) ...

  8. Introduction to Neural Machine Translation - part 1

    The Noise Channel Model \(p(e)\): the language Model \(p(f|e)\): the translation model where, \(e\): ...

  9. 论文阅读 | Robust Neural Machine Translation with Doubly Adversarial Inputs

    (1)用对抗性的源实例攻击翻译模型; (2)使用对抗性目标输入来保护翻译模型,提高其对对抗性源输入的鲁棒性. 生成对抗输入:基于梯度 (平均损失)  ->  AdvGen 我们的工作处理由白盒N ...

随机推荐

  1. java并发编程 volatile关键字 精准理解

    1.volatile的作用 一个线程共享变量(类的成员变量.类的静态成员变量等)被volatile修饰之后,就具有以下作用: 1)并发中的变量可见性(不同线程对该变量进行操作时的可见性),即一个线程修 ...

  2. [vijos]lxhgww的奇思妙想(长链剖分)

    题意 题目链接 Sol 长链剖分 又是一个用各种花式技巧优化的暴力 它的主要思想是:对于每个节点,把深度最深的子节点当做重儿子,它们之间的边当做重边 这样就会有一些非常好的轻质 所有链长总和是\(O( ...

  3. js随堂初体验(一)

    Js初体验(-) 1 js的基础知识 A web三大标准:1 html:结构标准    2 css:表现标准  3 javascript:行为标准 B js三种书写方式:1 行内js:onclick ...

  4. 如何在K3 WISE BOS集成开发工具中自定义字段过滤条件

    1.结论 对于输入过滤条件后BOS报“列名不正确”的过滤条件,要在列名前增加x2标识 无效的过滤 FNumber ,,,,,) 正确的过滤 x2.FNumber ,,,,,) 2.完全可以不看的探索过 ...

  5. Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. 利 ...

  6. Web前端开发规范(二)

    3.HTML代码规范 .html文件必须存放在项目工程约定的目录中. .html文件的命名:以模块 + 功能的结合方式来命名,比如:newsList.html. 文档类型声明:HTML4中使用< ...

  7. easyUI 节点树选择

    定义: <input id="treeFFatherId" name="treeFFatherId" value="" style=& ...

  8. java设置随机数教程

    java作为程序猿开发人员都在使用的一款编程语言,许多入门的朋友都陷入了一个简单的问题就是,使用java开发时随机数要怎么设置?java怎么设置随机数?经常会有地方需要用到随机数,不用着急,一起来看看 ...

  9. Vim插件推荐

    看下文时要知道我的<leader>键就是\. ctags C程序阅读辅助工具.在看C/C++代码的时候经常需要在文件之间跳来跳去,这是很麻烦的事,ctags就是解决这种问题的.ctags是 ...

  10. PHP:global全局变量的使用

    global全局变量能够让我们更好的去运用,直接上例子: 1.一个函数,获取函数外的内容: 得到的结果: 2.两个函数,函数2获取函数1的全局变量内容:(重点) 结果: 以上就是我的总结啦 END