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 注意力机制图解的更多相关文章

  1. TensorFlow从1到2(十)带注意力机制的神经网络机器翻译

    基本概念 机器翻译和语音识别是最早开展的两项人工智能研究.今天也取得了最显著的商业成果. 早先的机器翻译实际脱胎于电子词典,能力更擅长于词或者短语的翻译.那时候的翻译通常会将一句话打断为一系列的片段, ...

  2. NLP教程(6) - 神经机器翻译、seq2seq与注意力机制

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  3. 深度学习之注意力机制(Attention Mechanism)和Seq2Seq

    这篇文章整理有关注意力机制(Attention Mechanism )的知识,主要涉及以下几点内容: 1.注意力机制是为了解决什么问题而提出来的? 2.软性注意力机制的数学原理: 3.软性注意力机制. ...

  4. tensorflow 1.0 学习:十图详解tensorflow数据读取机制

    本文转自:https://zhuanlan.zhihu.com/p/27238630 在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找 ...

  5. DeepLearning.ai学习笔记(五)序列模型 -- week2 序列模型和注意力机制

    一.基础模型 假设要翻译下面这句话: "简将要在9月访问中国" 正确的翻译结果应该是: "Jane is visiting China in September" ...

  6. 深入理解BERT Transformer ,不仅仅是注意力机制

    来源商业新知网,原标题:深入理解BERT Transformer ,不仅仅是注意力机制 BERT是google最近提出的一个自然语言处理模型,它在许多任务 检测上表现非常好. 如:问答.自然语言推断和 ...

  7. 十图详解tensorflow数据读取机制

    在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下 ...

  8. 十图详解TensorFlow数据读取机制(附代码)

    在学习TensorFlow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下 ...

  9. 自适应注意力机制在Image Caption中的应用

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

随机推荐

  1. 区间的连续段~ST表(模板题)

    链接:https://www.nowcoder.com/acm/contest/82/B来源:牛客网 时间限制:C/C++ 7秒,其他语言14秒 空间限制:C/C++ 262144K,其他语言5242 ...

  2. SQL Server 实现递归查询

    基础数据/表结构                 Sql 语句 ;With cte(id,pid,TName)As ( Select id,pid,TName Union All Select B.i ...

  3. python RE模块的使用

    摘要: re模块包括操作正则表达式的函数,一些工作中都需要用到,现在说明下使用方法. 使用说明: 一,re模块下的函数:            函数             描述 compile(pa ...

  4. java基础复习(1)

    用记事本写java文件 打开记事本,编写java文件,需要注意文件名与类名要相同 注意文件的后缀名(也叫拓展名)改为.java java对大小写是敏感的 public class nihao{\ pu ...

  5. python flask框架 数据库的使用

    #coding:utf8 from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # ...

  6. Android 6.0 以后webview不加载图片的问题

    /** * Webview在安卓5.0之前默认允许其加载混合网络协议内容 * 在安卓5.0之后,默认不允许加载http与https混合内容,需要设置webview允许其加载混合网络协议内容 */if ...

  7. 深入理解JavaScript的this指向问题

    Javascript的this用法 this是Javascript语言的一个关键字.它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如: function test(){ this.x ...

  8. Xshell与虚拟机不能正常连接

    1.发现Xshell与虚拟机下的两个CentOS都不能正常连接,在这些系统下采用ifconfig查询发现eth0都没有ip地址,进而想到可能是虚拟机的设置出了问题,后来又想到自己之前曾经尝试过设置VM ...

  9. POJ-2349 Arctic Network---MST的第m长的边

    题目链接: https://vjudge.net/problem/POJ-2349 题目大意: 要在n个节点之间建立通信网络,其中m个节点可以用卫星直接连接,剩下的节点都要用线路连接,求剩下这些线路中 ...

  10. 深度学习中Xavier初始化

    "Xavier"初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文<Understanding the difficulty of training ...