在Encoder-Decoder框架中,在预测每一个yi时对应的语义编码c都是一样的,也就意味着无论句子X中的每个单词对输出Y中的每一个单词的影响都是相同的。这样就会产生两个弊端:一是语义向量无法完全表示整个序列的信息,再者就是先输入的内容携带的信息会被后输入的信息稀释掉,或者说,被覆盖了。输入序列越长,这个现象就越严重。这就使得在解码的时候一开始就没有获得输入序列足够的信息, 那么解码的准确度自然也就要打个折扣了。
  为了解决上面的弊端,就需要用到我们的Attention Model(注意力模型)来解决该问题。在机器翻译的时候,让生成词不是只能关注全局的语义编码向量c,而是增加了一个“注意力范围”,表示接下来输出词时候要重点关注输入序列中的哪些部分,然后根据关注的区域来产生下一个输出。模型结构如下:
  
此时生成目标句子单词的过程就成了下面的形式:

比如输入的是英文句子:Tom chase Jerry,Encoder-Decoder框架逐步生成中文单词:“汤姆”,“追逐”,“杰瑞”。在没加入Attention Model之前,生成的语义编码C是一致的,而加入之后,对应的语义编码可能如下:

其中,f2函数代表Encoder对输入英文单词的某种变换函数,比如如果Encoder是用的RNN模型的话,这个f2函数的结果往往是某个时刻输入xi后隐层节点的状态值;g代表Encoder根据单词的中间表示合成整个句子中间语义表示的变换函数,一般的做法中,g函数就是对构成元素加权求和,也就是常常在论文里看到的下列公式:

假设Ci中那个i就是上面的“汤姆”,那么Tx就是3,代表输入句子的长度,h1=f(“Tom”),h2=f(“Chase”),h3=f(“Jerry”),对应的注意力模型权值分别是0.6, 0.2, 0.2,所以g函数就是个加权求和函数。如果形象表示的话,翻译中文单词“汤姆”的时候,数学公式对应的中间语义表示Ci的形成过程类似下图:

我们来看看现在的Encoder-Decoder模型结构:

用下图可以较为便捷地说明注意力分配概率分布值的通用计算过程:

Attention Model详解相关推荐

  1. Attention原理详解

    Attention原理详解 Attention模型 对齐 模型介绍 Attention整体流程 Step1 计算Encoder的隐藏状态和Decoder的隐藏状态 Step2 获取每个编码器隐藏状态对 ...

  2. [转载] 【全面总结】Tensorflow 2.0+与Keras的联系与应用(含model详解)

    参考链接: Tensorflow 2.0的新功能 Tensorflow 2.0+与Keras的联系与应用(含model详解) 事实上我个人入坑tensorflow比较晚,于是导致我其实并没有经历Ten ...

  3. 一文读懂——全局注意力机制(global attention)详解与代码实现

    废话不多说,直接先上全局注意力机制的模型结构图. 如何通过Global Attention获得每个单词的上下文向量,从而获得子句向量呢?如下几步: 代码如下所示: x = Embedding(inpu ...

  4. Attention机制详解

    一.Attention 原理 在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,因此, c中必须包含原始序列中的所有信息,它的长度就成了限制模型 ...

  5. Transformer 初识:模型结构+attention原理详解

    Transformer 初识:模型结构+原理详解 参考资源 前言 1.整体结构 1.1 输入: 1.2 Encoder 和 Decoder的结构 1.3 Layer normalization Bat ...

  6. 自然语言处理之Attention大详解(Attention is all you need)

    1. 写在前面 今天分享的论文是2017年谷歌团队发表的一篇论文,这是一篇非常经典的自然语言处理领域的文章,基于这篇文章,才有了最近非常火的bert, Albert等模型,接触这篇文章是在一次直播中看 ...

  7. 00x: Django models.Model详解

    Models model是对于信息的一种模型封装与定义.它包含了你要存储的必要字段和操作数据的方法.一句话概括就是,每个模型映射了一张数据表. 基本概念: 每个model都是继承于django.db. ...

  8. 基于Castle ActiveRecord开发Domain Model详解(一)对象关系到数据表的映射

    Castle Project非常庞大,ActiveRecord是其中一个非常适合用于Domain Model开发的O/R Mapping框架.它使用.NET的反射特性无需配置文件,集成NHiberna ...

  9. 自注意力(Self-Attention)与Multi-Head Attention机制详解

    自注意力机制属于注意力机制之一.与传统的注意力机制作用相同,自注意力机制可以更多地关注到输入中的关键信息.self-attention可以看成是multi-head attention的输入数据相同时 ...

  10. Seq2Seq Attention模型详解

    目录 一.从传统Seq2Seq说起 二.在Seq2Seq中引入Attention 三.引入Attention后,与传统的Seq2Seq的不同之处 四.Seq2Seq的损失计算和解码过程 Seq2seq ...

最新文章

  1. 如何把Windows安装的所有打印机列出来
  2. Ratatosk - Hybrid error correction of long reads enables accurate variant calling and assembly
  3. [转载]TFS测试管理
  4. Pycharm ipynb
  5. 云计算与分布式的一些关键词
  6. 一次性供应商不能用特别总账标准程序修改
  7. Spring Boot @ConfigurationProperties注解的使用
  8. 常用音频软件:Wavesufer
  9. webBroser获取cookie
  10. CCIE-LAB-SDN-第三篇-SD-WAN
  11. 2020年11月“省时查报告”十大热门报告盘点(文末附热门报告列表)
  12. Java8 本地DateTime API
  13. cloudfoundry servicce-broker部署错误分析
  14. yolov5学习率设置
  15. 基于php工程项目管理系统
  16. QT下以ADO连接ORACLE数据库
  17. 密度计算机公式,相对密度计算公式
  18. windbg调试kvm windows虚机
  19. 车轮轨迹原理_方向盘与车轮轨迹图解,方向盘和车轮的动态图
  20. C# Task不执行的一种情况

热门文章

  1. 关于离散数学的一点事情
  2. 【matlab】画正六边形、矩形、圆形点阵
  3. [Pytorch]PyTorch Dataloader自定义数据读取
  4. jquery获取父级元素、子级元素、兄弟元素
  5. 简单十步python使用django框架建立博客网站
  6. python3学习笔记(4)_function-参数
  7. 杭电2072 单词数
  8. self = [super init]的解释
  9. linux和windows下TIME_WAIT过多的解决办法
  10. Xml 学习 ---引自MSDN CHINA