从摘要中就可看出,这篇文章针对的问题是NLP这种RNN很擅长,但是CNN不怎么擅长的问题,据此我们猜想,NLP能用,那应该是时间序列之类的问题都可以用,像视频处理,动作识别也都有希望从中借鉴一二。

摘要中,作者介绍到:在NLP中,RNN从attention mechanism中获益匪浅,相比之下CNN就没有很好地借此来提升自己的性能。作者认为这个可能是因为CNN中attention mechanism主要是应用在了pooling上,而不是嵌入到卷积操作中。针对这种现状,作者在本文中提出attentive convolution network,这个网络将卷积操作的“视野”(context scope)加以扩大,在为每一个单词抓取特征的时候不仅仅是从局域信息入手,而是通过RNN中常用的attention mechanism为每个单词也同时抓取非近邻的信息,使得每一个单词都有更高层次的特征(higher level feature)。这种非近邻的信息有两个来源:1.从同一个输入文本​距离较远的部分;2.另一个文本​的某些部分。作者以“句子关系分类”(sentence relation classification,作者后面加括号解释是自然语言推理textual entailment和答句选择answer sentence selection)作为任务,做实验证实了本文提出的AttentiveConvNet的表现是state-of-the-art的,超越了有attention机制的RNN和没有attention机制的CNN。

在introduction部分,作者介绍了attention机制。还是以NLP这种任务为例,NLP的输入是整个文本,标准的DNN处理问题的方式是把整个输入全都接受,然后经过一层又一层的非线性变换提取特征。但是问题就在于NLP的输入太大了,系统一下子处理不了,但是又不知道如何从输入中(可以是第一层的输入,也可以是任意一层的输入,也就是上一层的输出)选择出那些对于做下一步决定有用的信息。attention mechanism应运而生,attention mechanism随着输入的大小而变动,在每一步动态地选出那些重要的信息。概括的讲,attention可称之为一个长度不固定的记忆模型(variable-length memory model)

CNN和RNN都是常见的DNN,但是attention的大部分研究都是用在RNN上的。基于attention的RNN一般来讲在当前这一步(current step)有三种类型的输入:1. 当前的输入状态;2. 局域信息的表示(representation);3. 由attention机制加权求和包含非局域信息的隐藏态(attention-weighted sum of hidden states)。本文技术上的motivation就是这个,是否以及如何能让CNN也从attention机制中获益。

作者接着指出除此之外的第二个motivation是NLU(natural language understanding),作者认为NLU是需要attentive convolution的。作者把NLU具体分为两种主要情况:文本内的(intratext)和文本间的(intertext)。文本间指的是:除了待处理的输入文本​,还有一个用来计算attention的文本​。作者给了一个例子,例子来源于SNLI(Stanford natural language inference斯坦福自然语言推理数据集),是textual entailment方向的(介绍下textual entailment任务,这个任务的形式是这样的:给定一个前提文本premise,根据这个前提文本去推断假说文本(hypothesis)的关系是蕴含关系还是矛盾关系,蕴含关系的话指的是从premise中可以推断出hypothesis,而矛盾关系指的是hypothesis与premise矛盾)。文中给出的例子如下:

这里面输入​就是待判断的句子hypothesis,而用来当做背景文本的​就是premise,要做的就是输入hypothesis,根据premise,输出结果(是蕴含还是矛盾)。凭直觉来讲,作者认为系统应该这样工作的:将premise中的three bikers和in town与hy1中的a group of bikers和in the street对应比较;将premise中的the bikers和stop与hy2中的the bikers和didn't stop对应比较。因此可以看出,在文本间比较的时候,短语作为整体进行比较是重要的,不能只是一个一个单词进行比较,我们需要将上下文考虑进来。以上是文本间的介绍,而文本内的(intratext)指的是:输入是​,用来计算attention的背景文本还是​,​=​。对于文本内的例子,作者举出的是一个情感分析的例子,如下所示

对这个文本进行分析的时候,除了考虑到相邻的上下文之外,如果考虑remember这个词对较远距离的单词ludicrous的作用,那么remember的作用只能是增加消极的感情。这也就是为了说明在文本分析的时候距离较远的上下文依然起着重要的作用(传统的情感分析大部分是只考虑局部的上下文背景local context)

作者接着指出,卷积神经网络中的卷积滤波器是用来模拟卷积核所覆盖的窗口内的局部文本的相互依赖关系的,但是却忽略了文本间的和文本内的大背景。2015和2016年那一阵,有一个叫attentive pooling CNN模型提出,这个模型也会模拟文本间的关系,但是仅仅是在卷积之后进行了短语比对,因此卷积操作的时候并没有丰富的文本内或文本间的背景信息被利用起来。

在introduction的最后部分,作者用了好几段来简介自己的模型。首先,本文提出了attentive convolution networks,名叫AttentiveConvNets。在intratext任务(本文中是文本分类)时,AttentiveConvNets将局部的抓取上下文信息的窗口(local context window)扩大使之能够覆盖整个输入文本。在intertext任务(本文中对应句子关系识别任务)中,AttentiveConvNets将local context window扩大到覆盖整个第二个输入​,也就是背景文本。可以看出,这两种任务虽然不同,但是形式可以是一样的,作者在文章中将对这两种问题 采取统一的标记,用​来标记用来计算attention的背景文本,也即intratext中的​和intertext中的​。作者接下来简要描述了本文设计的卷积操作。对于​上的一个窗口​,首先是将target的representation和背景文本​的所有hidden states比较,得到一个attentive context representation​,这里只说了要用这些东西得到​,具体是如何得到的还没有介绍。得到​之后,卷积网络就可以通过将​、​和​整合起来(应该就是加权求和的卷积操作,具体看后文)为target计算新的higher level representation​了。作者还针对intratext和intertext两种情形给出了这个卷积操作的两种解释:对于intratext而言,​是通过考虑局部的信息​和​,以及非局域信息​来得到的。对于intertext,​生成出来是表示着在​、​背景下的跨文本排列在一起的短语​,这句话说的很迷,不知道是什么意思,到后面结合后文具体的模型介绍再来分析。作者在两个句子关系识别的任务上应用了这个模型,包括SNLI上的文本蕴涵任务(textual entailment)、SQUAD上的question-aware answer sentence selection以及Yelp情感分类任务。在这三个任务上,AttentiveConvNet都达到了state-of-the-art的水平,超过了有attention机制和没有attention机制的DNN。

作者将自己文章的贡献总结如下:1. 首次将RNN中常用的attention机制应用到CNN中。2. 分离出来了可以灵活使用的模块:attention source、attention focus、attention beneficiary,这方面的工作极大的提升了CNN中attention机制的表达能力。3. AttentiveConvNet提供了一个新的途径来扩大CNN中滤波器的视野,更多丰富的背景信息可以从其他文本(intertext)或自身(intratext)获得。4. AttentiveConvNet展示出相对于其他DNN(无论是否有attention机制)的优越性。

related work部分,作者介绍了三部分内容:有attention机制的RNN;有attentive pooling的CNN;以及其他一些有attention机制的DNN。(还没有介绍完毕)

接下来是技术部分,是文章的核心部分,详细介绍AttentiveConvNet模型。此模型有两个版本,一个是light AttentiveConvNet一个是advanced AttentiveConvNet,light版本结构简单些,也就是轻量版的,advanced版本是升级版的,结构更加丰富一些。

light版本:结构如下图所示

每一个输入文本t都被表示成一个hidden state的序列,每一个hidden state都是一个d维向量。如上图所示,在输入文本​的某一个hidden state hi处进行卷积,步骤如下:首先,用一个能量函数(energy function)​为​和​中的每一个hidden state​都计算一个matching score​,能量函数的具体形式作者给出了三个

1. 点乘:

2. 双线性形式(bilinear form):​这个也就是看点乘的过于简单,而中间加上了一个权重矩阵来增加模型的变数,权重矩阵We是d×d维的。

3. 加性投影(additive projection)​这里面We和Ue都是d×d维的矩阵,而​是一个d维的向量。看这个表达式来理解这个加性投影的名字,加(additive)指的应该是​和​在与权重矩阵相乘之后是相加在一起的,加在一起之后经历了一个非线性变换,这个非线性变换也只能是对向量的每一个元素进行的操作。而投影(projection)指的应该就是两个东西相加之后与​相乘的操作,也就是在​这个向量上进行投影。

用能量函数计算出matching score之后,每一个​都用这个matching score进行加权,然后求和得到一个attentive context​,即​,这里出现了一个​,我怀疑是右括号的位置写错了,softmax应该是作用在整个matching score​上的,因为此处需要的是一个加权求和的权重系数,那么用softmax将所有的matching score变成归一化的系数看起来再合理不过了。对于​中的每一个hidden state,都要计算一个attentive context,所有的连接在一起​,记做​。接下来介绍卷积操作,在第n层​的第i个位置,有这个位置对应的​,左侧的上下文​,右侧的上下文​,以及attentive context​,生成第n+1层对应位置hidden state的卷积操作定义如下:

其中​,等于​和​连接在一起;

由方程6可看出,其实有attention的卷积只不过是由​上进行的常规的卷积操作再加上​进行的卷积操作,所以实际操作的时候只要把这两个平行的卷积操作的结果加起来而已,并不需要构建新的feature map将​和​所在的feature map连接起来成为一个。实验结果也证实了,这个;light版本的AttentiveConvNet比基础的CNN效果要好得多。但是,有两点考虑使作者意识到模型还有提升的空间:1. 在后续的网络中,需要更高层次,抽象层次更高的representation。这么说是因为作者在某些任务中,直接将​和​的hidden states进行前向传递,得到的结果不是最优的,事先预学习一些更高层次,抽象程度更高的representation会有利于后续的学习。2. 一些文本对模拟的时候,多尺度(multi-granular)的比较更加有利。这其实就是说不能只比较单词,也要考虑短语之间的比较,以及不同长度的短语之间的比较。作者举了一个SNLI的例子,如下图:

在单个词汇的层次,premise中的“out”和hypothesis中的“out”完美对应,但是这两个out表示的意思显然是不一样的,premise中的come out中的out表示的是空间上的位置,而hypothesis中“putting out”指的并不是这个意思。这个样本的ground truth是neutral(textual entailment的ground truth有三种,一个是premise能推理出hypothesis,一个是premise能推理出与hypothesis相反的结论,另一个是premise和hypothesis既不能相蕴含,又不能相矛盾)。这个例子也就是说,比较要从短语尺度上进行。

由这两点考虑,作者提出了改进版的advanced AttentiveConvNet。

Advanced AttentiveConvNet:结构图如下所示

首先,有两个概念要先区分出来,attention的source和attention的focus(2017年Adel和Schutze提出的)。attention的focus指的是网络中被attention weights重新加权的层;而attention的source指的是用来计算attention weights的信息来源。Adel和Schutze展示了,增加attention的source的视野(scope)是有利的。在本文中,作者将这个原则进行了延伸,定义了attention的beneficiary,这个beneficiary指的是由attentive context作为上下文背景考虑而得到的feature map。在light版模型中,attention的source就是输入文本​ 的hidden states,focus就是背景文本​的hidden states,而attention的beneficiary也是​的hidden states,和attention的source是一样的。在advanced版本的模型中,这三个概念是被区分开的,与light版本的不同,advanced版本中的attention的focus、source、beneficiary都是由函数另外计算出来的,也就是上图中所示的​。这些函数其实都是一样的,都是基于gated convolutional function​:

这里面​代表一个组合输入,就是​的形式,长度不固定,ui代表一个单词级别的hidden state。gate​在单词级别的ui和短语级别的输出​做了一个妥协和折中(trade-off)。由上面的网络结构图可看出,advanced版本的模型和light版本的模型相比区别在于advanced版本的模型不是直接使用,而是在中间进行了一些处理,加入了source、focus和beneficiary,因此,这些中间模块的操作搞明白了,也就是将advanced版本的模型搞明白了,下面具体介绍这三个模块。

attention source:在advanced版本模型中,多尺度比较采取的尺度是1和3,也就是单个单词的hidden state和三个单词的hidden states。生成attention source就是生成一个新的feature map,feature map用大写的H表示,H是所有hidden state hi连接在一起得到的,也就是说,生成多尺度H的过程也就是生成每一个多尺度hi的过程,对于第i个位置的hidden state hi,生成多尺度表示中单个词汇尺度的表示用的就是而hi的三个单词尺度的表示用的是,最终,两个合起来就成了hi的multi-granular(多尺度)表示。总的来说也就是,其中是原本的输入文本的hidden states合在一起的feature map,是进行多尺度表示之后得到的多尺度的feature map。这种全面的多尺度的hidden state可以将一个位置多个词汇共同表达的语义抓取到,例如out和come out of。

attention focus:这个东西的计算和attention source的计算框架是一样的,。因此focus就要承担起与source中的hidden state进行比对生成attentive context的任务。对比之下,之前的light版本中是用直接进行比对(matching)得到matching score,然后用attentive context加权输入文本得到卷积结果,而在advanced版本中,是先由分别计算出source和focus,再由他俩取代light版本中的位置,进行相同的操作,两者的联系和区别由此可见一斑。

attention beneficiary:beneficiary的计算较为简单直接,作者只是不想直接对的hidden states进行加权求和,而是要先计算出一个更高抽象层次的feature map来进行卷积,加权求和,具体来讲,作者仅仅对进行了一个gated convolution,即

总结来讲,整个文章解决的问题是CNN的视野太小,不能放眼全文,而解决的方式就是搞一个attentive context来参与卷积,将大范围的上下文信息带入到局部的卷积操作中。模型分两个版本,light版本就是这个思路的直接实现,而advanced版本是将其进行了改进,对于输入文本的feature map,并不直接让它参与卷积,而是先用gated convolution生成一个抽象程度更高的feature map,而计算attentive context也是,不直接使用,而是先计算出source和focus,接着对这两者的操作,和light版本中对的操作一模一样。

读书笔记6:Attentive Convolution相关推荐

  1. 《Deep Learning With Python second edition》英文版读书笔记:第十一章DL for text: NLP、Transformer、Seq2Seq

    文章目录 第十一章:Deep learning for text 11.1 Natural language processing: The bird's eye view 11.2 Preparin ...

  2. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第六章 纹理 Texturing

    写在前面的话:因为英语不好,所以看得慢,所以还不如索性按自己的理解简单粗糙翻译一遍,就当是自己的读书笔记了.不对之处甚多,以后理解深刻了,英语好了再回来修改.相信花在本书上的时间和精力是值得的. -- ...

  3. python图像处理《数字图像处理与python实现》读书笔记二:空间滤波

    文章目录 重要! 第三章 空间滤波 概览 3.1 空间滤波基础 3.1.1 空间滤波的机理 3.1.2 空间滤波器模板 3.2 平滑处理 3.2.1 平滑线性空间滤波器 3.2.2 统计排序滤波器 3 ...

  4. 《Real-Time Rendering 4th Edition》读书笔记--简单粗糙翻译 第七章 阴影 Shadows

    写在前面的话:因为英语不好,所以看得慢,所以还不如索性按自己的理解简单粗糙翻译一遍,就当是自己的读书笔记了.不对之处甚多,以后理解深刻了,英语好了再回来修改.相信花在本书上的时间和精力是值得的. -- ...

  5. 【读书笔记】知易行难,多实践

    前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...

  6. 读书笔记:编写高质量代码--web前端开发修炼之道(二:5章)

    读书笔记:编写高质量代码--web前端开发修炼之道 这本书看得断断续续,不连贯,笔记也是有些马虎了,想了解这本书内容的童鞋可以借鉴我的这篇笔记,希望对大家有帮助. 笔记有点长,所以分为一,二两个部分: ...

  7. 《编程匠艺》读书笔记

    <编程匠艺>读书笔记之一 <编程匠艺>读书笔记之二 <编程匠艺>读书笔记之三 <编程匠艺>读书笔记之四 <编程匠艺>读书笔记之五 <编 ...

  8. 《Java: The Complete Reference》等书读书笔记

    春节期间读了下<Java: The Complete Reference>发现这本书写的深入浅出,我想一个问题,书中很多内容我们也知道,但是为什么我们就写不出这样一本书,这么全面,这么系统 ...

  9. oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

    当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net  网友分享于:2013-08-23  浏览:9次 <> ...

最新文章

  1. Hadoop3.0基础平台搭建(三节点),以及案例运行并使用python生成词云
  2. 【深度学习】深入浅出CRF as RNN(以RNN形式做CRF后处理)
  3. IDEA新建spring boot项目没有Spring Initializr选项
  4. 改善ASP.NET2.0性能的五件法宝
  5. bzoj4665小w的喜糖 dp+容斥
  6. UidGenerator:百度开源的分布式ID服务(解决了时钟回拨问题)
  7. 第一个Ajax.net程序的实现及心得。
  8. 初识GaussDB(for Cassandra)
  9. java 弹幕游戏_JAVA 弹幕小游戏 1.0版本
  10. 0505.Net基础班第十三天(面向对象多态)
  11. 12、基于yarn的提交模式
  12. Oracle 客户端连接server 的方法
  13. ddr3配置 dsp6678_简简单单学TI 多核DSP(2):TMS320C6678的时钟配置
  14. laravel ajax分页实例,Laravel 的分页功能 - Laravel 5.6 中文文档
  15. Java餐厅点餐系统【附源码报告】
  16. android 链接打开app,Android 实现浏览器打开app
  17. 计算机如何重新进行硬盘分区,最简单办法,如何在不重装电脑系统的情况下对硬盘进行重新分区-电脑怎么分区...
  18. android手机壁纸
  19. UEFI Specification 第二章 概述
  20. 2021潍坊私立高中高考成绩查询,2021潍坊民办私立高中学校入学分数

热门文章

  1. 使用外网访问Microsoft 远程桌面(Microsoft Remote Desktop),实现对电脑的远程操控
  2. 区块链有哪些共识机制
  3. 如何把m4v转换成mp4?
  4. 人工智能-知识图谱的进阶一
  5. 必看系列—SCI论文投稿之那些你疑惑的事(附参考模板)
  6. 单选 性别选项(男,女)提交问题
  7. Altium designer PCB走线包地处理 教程
  8. 获取Android手机总内存和可用内存最佳方案
  9. 读书笔记——《设计心理学2:如何管理复杂》教你应付复杂
  10. android之ftp连接服务器,android ftp服务器实现