1什么是注意力机制?
Attention是一种用于提升Encoder + Decoder模型的效果的机制。

2.Attention Mechanism原理

要介绍Attention Mechanism结构和原理,首先需要介绍下Seq2Seq模型的结构。Seq2Seq模型,想要解决的主要问题是,如何把机器翻译中,变长的输入X映射到一个变长输出Y的问题,其主要结构如图3所示。

图3 传统的Seq2Seq结构

从图中可以看出,seq2seq模型分为两个阶段:编码阶段和解码阶段。

编码阶段:

把一个变长的输入序列x1,x2,x3....xt输入RNN,LSTM或GRU模型,然后将得到各个隐藏层的输出进行汇总,生成语义向量:

也可以将最后的一层隐藏层的输出作为语义向量C :

这里的语义向量c有两个作用:1、做为decoder模型预测y1的初始向量。2、做为语义向量,指导y序列中每一个step的y的产出。

解码阶段:

Decoder主要是基于语义向量c和上一步的输出yi-1解码得到该时刻t的输出yi:

yi=g(yi-1,Si,C)

其中Si为隐藏层的输出。其中g代表的是非线性激活函数。

直到碰到结束标志(<EOS>),解码结束。

以上就是seq2seq的编码解码阶段。从上面可以看出,该模型存在两个明显的问题:

1、把输入X的所有信息有压缩到一个固定长度的隐向量C。当输入句子长度很长,特别是比训练集中最初的句子长度还长时,模型的性能急剧下降。

2、把输入X编码成一个固定的长度,对于句子中每个词都赋予相同的权重,这样做是不合理的,比如,在机器翻译里,输入的句子与输出句子之间,往往是输入一个或几个词对应于输出的一个或几个词。因此,对输入的每个词赋予相同权重,这样做没有区分度,往往是模型性能下降。

因此,需要引入Attention Mechanism来解决这个问题。

我们将解码yi时的公式改为如下形式:

yi=g(yi-1,Si,Ci)

即不同时刻的输出y使用不同的语义向量。

其中,si是decoder中RNN在在i时刻的隐状态,其计算公式为:

这里的语义向量ci的计算方式,与传统的Seq2Seq模型直接累加的计算方式不一样,这里的ci是一个权重化(Weighted)之后的值,其表达式如公式5所示:

其中,i表示decoder端的第i个词,hj表示encoder端的第j个词的隐向量,aij表示encoder端的第j个词与decoder端的第i个词之间的权值,表示源端第j个词对目标端第i个词的影响程度,aij的计算公式如公式6所示:

在公式6中,aij是一个softmax模型输出,概率值的和为1。eij用于衡量encoder端的位置j个词,对于decoder端的位置i个词的影响程度,换句话说:decoder端生成位置i的词时,有多少程度受encoder端的位置j的词影响。eij的计算方式有很多种,不同的计算方式,代表不同的Attention模型,最简单且最常用的的对齐模型是dot product乘积矩阵,即把解码端的输出隐状态ht与编码端的输出隐状态hs进行矩阵乘。常见的对齐计算方式如下:

常见的计算方式有以上几种方式。点乘(Dot product),权值网络映射(General)和concat映射几种方式。

seq2seq+attention解读的更多相关文章

  1. DL4NLP —— seq2seq+attention机制的应用:文档自动摘要(Automatic Text Summarization)

    两周以前读了些文档自动摘要的论文,并针对其中两篇( [2] 和 [3] )做了presentation.下面把相关内容简单整理一下. 文本自动摘要(Automatic Text Summarizati ...

  2. seq2seq attention

    1.seq2seq:分为encoder和decoder a.在decoder中,第一时刻输入的是上encoder最后一时刻的状态,如果用了双向的rnn,那么一般使用逆序的最后一个时刻的输出(网上说实验 ...

  3. 深度学习中的序列模型演变及学习笔记(含RNN/LSTM/GRU/Seq2Seq/Attention机制)

    [说在前面]本人博客新手一枚,象牙塔的老白,职业场的小白.以下内容仅为个人见解,欢迎批评指正,不喜勿喷![认真看图][认真看图] [补充说明]深度学习中的序列模型已经广泛应用于自然语言处理(例如机器翻 ...

  4. Tensorflow Seq2seq attention decode解析

    tensorflow基于 Grammar as a Foreign Language实现,这篇论文给出的公式也比较清楚. 这里关注seq2seq.attention_decode函数, 主要输入 de ...

  5. seq2seq&attention图解

  6. NLP Attention

    一.概述 自动摘要可以从很多角度进行分类,例如单文档摘要/多文档摘要.单语言摘要/跨语言摘要等.从技术上说,普遍可以分为三类: i. 抽取式摘要(extractive),直接从原文中抽取一些句子组成摘 ...

  7. attention 汇总(持续)

    Seq2seq Attention Normal Attention 1.  在decoder端,encoder state要进行一个线性变换,得到r1,可以用全连接,可以用conv,取决于自己,这里 ...

  8. Attention & Transformer

    Attention & Transformer seq2seq; attention; self-attention; transformer; 1 注意力机制在NLP上的发展 Seq2Seq ...

  9. NLP之基于Seq2Seq和注意力机制的句子翻译

    Seq2Seq(Attention) @ 目录 Seq2Seq(Attention) 1.理论 1.1 机器翻译 1.1.1 模型输出结果处理 1.1.2 BLEU得分 1.2 注意力模型 1.2.1 ...

随机推荐

  1. 基于操作系统原理的Linux 的基本操作和常用命令的使用

    一.实验目的 1.学会不同Linux用户登录的方法. 2.掌握常用Linux命令的使用方法. 3.了解Linux命令中参数选项的用法和作用. 二.实验内容 1. 文件操作命令 (1) 查看文件与目录 ...

  2. ViewModel 和 ViewModelProvider.Factory:ViewModel 的创建者

    本文翻译自:https://medium.com/koderlabs/viewmodel-with-viewmodelprovider-factory-the-creator-of-viewmodel ...

  3. 阿里云服务器ecs配置之安装jdk

    一.安装环境 操作系统:Centos 7.4 JDK版本:1.8 工具:Xshell5.Xftp5 二.安装步骤 第一步:下载安装包 (官网)链接: 下载适合自己系统的jdk版本,如图:我下载的是64 ...

  4. 【爬虫小程序:爬取斗鱼所有房间信息】Xpath(线程池版)

    # 本程序亲测有效,用于理解爬虫相关的基础知识,不足之处希望大家批评指正 from queue import Queue import requests from lxml import etree ...

  5. hadoop之yarn详解(基础架构篇)

    本文主要从yarn的基础架构和yarn的作业执行流程进行阐述 一.yarn的概述 Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管 ...

  6. Vue:获取当前定位城市名

    实现思想:通过定位获取到当前所在城市名: 1.在工程目录index.html中引入: <script type="text/javascript" src="htt ...

  7. 从干将莫邪的故事说起--java比较操作注意要点

    故事背景 <搜神记>: 楚干将.莫邪为楚王作剑,三年乃成.王怒,欲杀之.剑有雌雄.其妻重身当产.夫语妻曰:“吾为王作剑,三年乃成.王怒,往必杀我.汝若生子是男,大,告之曰:‘出户望南山,松 ...

  8. python编程基础之十四

    列表的增加元素 l1 = [10, 20, 30] l1.append(40)  # 末尾追加一个值为40的元素 l1.extend([50, 60])  # 末尾追加一系列元素,extend + 可 ...

  9. ACM-图论-同余最短路

    https://www.cnblogs.com/31415926535x/p/11692422.html 一种没见过的处理模型,,记录一下,,主要是用来处理一个多元一次方程的解的数量的问题,,数据量小 ...

  10. SQL SERVER数据库日常使用总结

    以下内容为平时工作自己个人总结,仅供参考,欢迎交流 SELECT A.CBM,A.CMC,SUM(B.MJE)MJE FROM YXHIS..TBZDZTHZ A,YXHIS..TBZDZTMX B ...