TensorFlow LSTM 注意力机制图解
TensorFlow LSTM Attention 机制图解
深度学习的最新趋势是注意力机制。在接受采访时,现任OpenAI研究主管的Ilya Sutskever提到,注意力机制是最令人兴奋的进步之一,他们在这里进行投入。听起来令人兴奋但是什么是注意机制?
基于人类视觉注意机制,神经网络中的注意机制非常松散。人的视觉注意力得到了很好的研究,虽然存在着不同的模式,但它们基本上都是以“低分辨率”感知周围的图像,以“高分辨率”的方式集中在图像的某个区域,然后随着时间的推移调整焦点。
注意力机制解决什么问题?
为了理解我们可以做什么,我们以神经机器翻译(NMT)为例。传统的机器翻译系统通常依赖于基于文本统计属性的复杂特征工程。简而言之,这些系统是复杂的,并且大量的工程设计都在构建它们。神经机器翻译系统工作有点不同。在NMT中,我们将一个句子的含义映射成一个固定长度的向量表示,然后基于该向量生成一个翻译。通过不依赖于n-gram数量的东西,而是试图捕捉文本的更高层次的含义,NMT系统比许多其他方法更广泛地推广到新句子。也许更重要的是,NTM系统更容易构建和训练,而且不需要任何手动功能工程。事实上,Tensorflow中的一个简单的实现不超过几百行代码。
大多数NMT系统通过使用循环神经网络将源语句(例如,德语句子)编码为向量,然后基于该向量来解码英语句子,也使用RNN来工作。

在上述图中,将“Echt”,“Dicke”和“Kiste”字馈送到编码器中,并且在特殊信号(未示出)之后,解码器开始产生翻译的句子。解码器继续生成单词,直到产生句子令牌的特殊结尾。这里,h向量表示编码器的内部状态。
如果仔细观察,您可以看到解码器应该仅基于编码器的最后一个隐藏状态(上面的h_3)生成翻译。这个h3矢量必须编码我们需要知道的关于源语句的所有内容。它必须充分体现其意义。在更技术术语中,该向量是一个嵌入的句子。事实上,如果您使用PCA或t-SNE绘制不同句子在低维空间中的嵌入以降低维数,您可以看到语义上类似的短语最终彼此接近。这太棒了
然而,假设我们可以将所有关于潜在的非常长的句子的信息编码成单个向量似乎有些不合理,然后使解码器仅产生良好的翻译。让我们说你的源语句是50个字。英文翻译的第一个词可能与源句的第一个字高度相关。但这意味着解码器必须从50个步骤前考虑信息,并且该信息需要以矢量编码。已知经常性神经网络在处理这种远程依赖性方面存在问题。在理论上,像LSTM这样的架构应该能够处理这个问题,但在实践中,远程依赖仍然是有问题的。例如,研究人员已经发现,反转源序列(向后馈送到编码器中)产生明显更好的结果,因为它缩短了从解码器到编码器相关部分的路径。类似地,两次输入输入序列也似乎有助于网络更好地记住事物。
我认为把句子颠倒一个“黑客”的做法。它使事情在实践中更好地工作,但这不是一个原则性的解决方案。大多数翻译基准都是用法语和德语来完成的,与英语非常相似(甚至中文的单词顺序与英语非常相似)。但是有一些语言(如日语),一个句子的最后一个单词可以高度预测英语翻译中的第一个单词。在这种情况下,扭转输入会使事情变得更糟。那么,有什么办法呢?注意机制
使用注意机制,我们不再尝试将完整的源语句编码为固定长度的向量。相反,我们允许解码器在输出生成的每个步骤“参加”到源句子的不同部分。重要的是,我们让模型基于输入句子以及迄今为止所产生的内容,学习了要注意的内容。所以,在很好的语言(如英语和德语)中,解码器可能会顺序地选择事情。在制作第一个英文单词时参加第一个单词,等等。这是通过联合学习来整合和翻译的神经机器翻译所做的,看起来如下:

在这里,y是我们由解码器产生的翻译词,x是我们的源语句。上图说明使用双向循环网络,但这并不重要,您可以忽略反向方向。重要的部分是每个解码器输出字y_t现在取决于所有输入状态的加权组合,而不仅仅是最后一个状态。 a的权重定义为每个输出应考虑每个输入状态的多少。所以,如果a_ {3,2}是一个大数字,这意味着解码器在产生目标句子的第三个单词时,对源语句中的第二个状态给予了很大的关注。 a通常被归一化为总和为1(因此它们是输入状态的分布)。
关注的一大优点在于它使我们能够解释和可视化模型正在做什么。例如,通过在翻译句子时可视化注意力矩阵a,我们可以了解模型的翻译方式:

原文链接:http://www.wildml.com/2016/01/attention-and-memory-in-deep-learning-and-nlp/
更多 Tensorflow 教程:http://www.tensorflownews.com/
TensorFlow LSTM 注意力机制图解的更多相关文章
- TensorFlow从1到2(十)带注意力机制的神经网络机器翻译
基本概念 机器翻译和语音识别是最早开展的两项人工智能研究.今天也取得了最显著的商业成果. 早先的机器翻译实际脱胎于电子词典,能力更擅长于词或者短语的翻译.那时候的翻译通常会将一句话打断为一系列的片段, ...
- NLP教程(6) - 神经机器翻译、seq2seq与注意力机制
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...
- 深度学习之注意力机制(Attention Mechanism)和Seq2Seq
这篇文章整理有关注意力机制(Attention Mechanism )的知识,主要涉及以下几点内容: 1.注意力机制是为了解决什么问题而提出来的? 2.软性注意力机制的数学原理: 3.软性注意力机制. ...
- tensorflow 1.0 学习:十图详解tensorflow数据读取机制
本文转自:https://zhuanlan.zhihu.com/p/27238630 在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找 ...
- DeepLearning.ai学习笔记(五)序列模型 -- week2 序列模型和注意力机制
一.基础模型 假设要翻译下面这句话: "简将要在9月访问中国" 正确的翻译结果应该是: "Jane is visiting China in September" ...
- 深入理解BERT Transformer ,不仅仅是注意力机制
来源商业新知网,原标题:深入理解BERT Transformer ,不仅仅是注意力机制 BERT是google最近提出的一个自然语言处理模型,它在许多任务 检测上表现非常好. 如:问答.自然语言推断和 ...
- 十图详解tensorflow数据读取机制
在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下 ...
- 十图详解TensorFlow数据读取机制(附代码)
在学习TensorFlow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下 ...
- 自适应注意力机制在Image Caption中的应用
在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...
随机推荐
- 区间的连续段~ST表(模板题)
链接:https://www.nowcoder.com/acm/contest/82/B来源:牛客网 时间限制:C/C++ 7秒,其他语言14秒 空间限制:C/C++ 262144K,其他语言5242 ...
- Mego开发文档 - 快速概述
Mego 快速概述 Mego 是一款轻量级,可扩展和跨平台的数据访问技术. Mego 是一个对象关系映射器(O / RM),它使.NET开发人员能够使用.NET对象处理数据库.它消除了开发人员通常需要 ...
- 微信接口(一)创建菜单&自动回复
刚划拉完微信.做一个笔记这里的数据是写死的,还有一份是通过查询数据库进行自动回复,自定义菜单设置的.不过因为使用到数据库,最好在网站后台吧微信平台开发集成进去.所以代码较多就先不放了.有问题的地方请留 ...
- 新概念英语(1-95)Tickets,please!
Lesson 95 Tickets, please. 请把车票拿出来. Listen to the tape then answer this question. Why did George and ...
- SpringCloud的EurekaClient : 客户端应用访问注册的微服务(无断路器场景)
演示客户端应用如何访问注册在EurekaServer里的微服务 一.概念和定义 采用Ribbon或Feign方式访问注册到EurekaServer中的微服务.1.Ribbon实现了客户端负载均衡,2. ...
- 百度资深架构师带你深入浅出一致性Hash原理
一.前言 在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用. 但是普通的余数h ...
- 使用生成器把Kafka写入速度提高1000倍
title: 使用生成器把Kafka写入速度提高1000倍 toc: true comment: true date: 2018-04-13 21:35:09 tags: ['Python', '经验 ...
- Windows安装SVN服务器和客户端
我的操作系统版本是windows10 64位.接下来我会先介绍SVN服务器的安装,然后再介绍安装SVN客户端,并进行测试. 下载 首先我们需要到官网上去下载svn服务器程序. [svn官网地址] (h ...
- 确认过眼神,你是喜欢Stream的人
摘要:在学习Node的过程中,Stream流是常用的东东,在了解怎么使用它的同时,我们应该要深入了解它的具体实现.今天的主要带大家来写一写可读流的具体实现,就过来,就过来,上码啦! 码前准备 在写代码 ...
- 关于myeclipse启动报错:An internal error has occurred. java.lang.NullPointerException解决办法
启动myeclipse报错,百度了一下网友处理方式,对比日志,发现现在已有的教程真的是巨人坑: 如果出现了上述的错误按照如下的3个步骤解决:1.首先关闭MyEclipse工作空间.2.然后删除工作空间 ...