这篇论文主要是提出了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. Wpf鼠标点击坐标转为屏幕坐标/后台重新设置在Canvas和Grid上的位置

    Point getP = PointToScreen(Mouse.GetPosition(this)); DockPanel.SetValue(Canvas.LeftProperty, 1.0); D ...

  2. 秒懂JSON.parse()与JSON.stringify()的区别

    在网站开发中,Json是最为常见的一种数据交互手段.在使用过程中,常会遇到Json字段串和对象之间进行转换.很多朋友对于JSON.parse() 和JSON.stringify() 的区别,下面为大家 ...

  3. android libs库中的armeabi-v7a,armeabi和x86

    以下内容转载于:http://blog.csdn.net/liumou111/article/details/52949156 1.区别: 这三者都表示的是CPU类型,早期的Android系统几乎只支 ...

  4. python3绘图示例6-1(基于matplotlib,绘图流程介绍及设置等)

    #!/usr/bin/env python# -*- coding:utf-8 -*- import os import pylab as pyimport numpy as npfrom matpl ...

  5. 初看Mybatis 源码 (一)

    Mybatis 的使用,首先需要构建一个SqlSessionFactory 实例.而该实例可以通过SqlSessionFactoryBuilder来创建. String resource = &quo ...

  6. 洛谷 P1849 [USACO12MAR]拖拉机Tractor

    题目描述 After a long day of work, Farmer John completely forgot that he left his tractor in the middle ...

  7. MySQL入门很简单: 13 数据备份和还原

    1. 数据备份 1)使用mysqldump命令备份 第一种:备份一个数据库 mysqldump -u username -p dbname table1 table2 ... > BackupN ...

  8. IOS ScrollView的使用 and delegate

    ScrollView常用的属性设置 //设置内容尺寸 // CGFloat contentH=self.lastBtn.frame // .origin.y+self.lastBtn.frame.si ...

  9. HDU(1016),打素数环

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 哈哈,状态来了就是不一样,很快就A了. 注意的位置是,最后一个点,要与第一个点比较. #incl ...

  10. CentOS系统中使用iptables设置端口转发

    echo 1 > /proc/sys/net/ipv4/ip_forward 首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0  ...