代码:

keras:https://github.com/phdowling/abcnn-keras

tf:https://github.com/galsang/ABCNN

本文是Wenpeng Yin 该作者之前还发过一篇《Convolutional Neural Network Architectures for Matching Natural Language Sentences》

。ABCNN是基于之前发的这篇论文加入了注意力机制。

相比这两篇Attention-based的论文,会发现,ABCNN提出了三个层面的Attention方法,有助于更加全面的理解attention在不同层面所能带来的不同作用。

BCNN

BCNN就是ABCNN模型的基础,即没有添加Attention的模型结构。如下图所示:

1, 输入层: 
就是将输入句子进行padding后转化成词向量即可。 
2,卷积层: 
这里使用的应该是Yoon Kim论文中所提出的卷积方式,即一个窗口最后只生成一个卷积值,然后再句子长度上进行滑动,得到一个长度为sent_len+ws-1的向量(wide conv)。输出channel是卷积核的个数。

3,pooling层 
论文中提到了两种pooling层,一种是最后一个pooling层–all-ap,还有一种是中间卷积层所用的pooling层–w-ap。区别就是池化时的窗口大小不同。 
all-ap:将卷积之后的结果在句长维度上进行Average Pooling, 得到一个列向量,如上图中最上面的pooling层所示。 
w-ap:使用滑动窗口的形式,以窗口宽度w对卷积输出进行Average Pooling。因为输入层经过宽卷积后会变成sent_len+w-1,之后经过窗口大小为w的pooling层后仍然会变回sent_len。这样的话,conv-pooling层就可以无限叠加起来。

4,输出层 
因为我们的任务是一个2分类,所以论文中使用的是logistic 回归层。不过这里需要注意的是,最后一层的输入特征除了最后一个conv层的输出之外,还额外添加了对每个conv层做all-ap得到的特征也将作为其输入。这么做是为了是逻辑回归可以观察到不同层面的抽象信息。

ABCNN-1

上面介绍了BCNN的基础模型,加下来分别介绍三种加入Attention的方式。首先是在输入层加入Attention,其示意图如下:

其原理就是将输入拓展成双通道,类似于图片的RGB模式。而添加的通道便是attention feature map,即上图中的蓝色部分。其计算方式如下: 
1,计算attention矩阵A,其每个元素Aij代表句子1中第i个单词对句子二中第j个单词的match_score,这里使用Euclidean距离计算。如下图:

其中   ,, d是embding size, s是句子长度。

2,两个句子的attention map与系数W相乘得到最终的结果。如图所示,使用两个矩阵W0,W1分别和A还有 A的转置相乘即可获得与原本feature尺寸相同的特征图了。这里W0和W1都是模型参数,我们可以使用相同的W,即共享两个矩阵。这样我们就将原始的输入拓展成了两个通道。剩下的与BCNN保持不变即可。

ABCNN-2

ABCNN-1直接在输入层加Attention,目的是为了改善卷积层的输出,现在提出ABCNN-2,其目的是为了在卷积层输出的结果上进行改善。其示意图如下:

Attention矩阵A的计算方法与上述相同,计算完A,需要分别为两个句子计算两个Attention权重向量,如上图中的两个虚线部分。得到的两个向量中的每个元素分别代表了相应单词在做Average Pooling时的权重。即ABCNN-2模型中修改了pooling方法,不再是简单的Average Pooling,而是根据计算出的Attention权重向量计算。公式如下:

相比ABCNN-1而言,2是为了通过对conv卷积输出结果过进行赋权重改善pooling的结果,使获得的高层次抽象特征(短短语,长短语。。)中不同词按照不同的权重进行叠加。而且2添加的参数更少,更不易过拟合。

ABCNN-3

ABCNN-3其实就是将前面两个模型融合在一起组成一个新的模型,示意图如下所示:

实验结果

论文为了证明模型的普适性,对三个不同领域的数据集做了实验,都达到了很好的实验效果。这三个数据集分别是:answer selection(AS)领域的WiKiQA,paraphrase identification(PI)领域的MSRP,Textual Entailment(TE)领域的SenEval 2014 Task。实验结果分别如下图所示:

《ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs》的更多相关文章

  1. 论文笔记:(2019)GAPNet: Graph Attention based Point Neural Network for Exploiting Local Feature of Point Cloud

    目录 摘要 一.引言 二.相关工作 基于体素网格的特征学习 直接从非结构化点云中学习特征 从多视图模型中学习特征 几何深度学习的学习特征 三.GAPNet架构 3.1 GAPLayer 局部结构表示 ...

  2. 《A Convolutional Neural Network Cascade for Face Detection》

    文章链接:   http://pan.baidu.com/s/1bQBJMQ  密码:4772 作者在这里提出了基于神经网络的Cascade方法,Cascade最早可追溯到Haar Feature提取 ...

  3. A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记

    A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK 文章地址:https://ieeex ...

  4. 论文笔记之《Event Extraction via Dynamic Multi-Pooling Convolutional Neural Network》

    1. 文章内容概述 本人精读了事件抽取领域的经典论文<Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networ ...

  5. 《Kalchbrenner N, Grefenstette E, Blunsom P. A convolutional neural network for modelling sentences》

    Kalchbrenner’s Paper Kal的这篇文章引用次数较高,他提出了一种名为DCNN(Dynamic Convolutional Neural Network)的网络模型,在上一篇(Kim ...

  6. 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)

    Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者 ...

  7. 卷积神经网络(Convolutional Neural Network,CNN)

    全连接神经网络(Fully connected neural network)处理图像最大的问题在于全连接层的参数太多.参数增多除了导致计算速度减慢,还很容易导致过拟合问题.所以需要一个更合理的神经网 ...

  8. 斯坦福大学卷积神经网络教程UFLDL Tutorial - Convolutional Neural Network

    Convolutional Neural Network Overview A Convolutional Neural Network (CNN) is comprised of one or mo ...

  9. 【转载】 卷积神经网络(Convolutional Neural Network,CNN)

    作者:wuliytTaotao 出处:https://www.cnblogs.com/wuliytTaotao/ 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,欢迎 ...

随机推荐

  1. MySQL里面的子查询

    一.子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中. 子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询. 子查询可以包含普通select可以包括的任何子句,比如:dis ...

  2. Bulk Convert DOC to DOCX

    原文链接 :http://blogs.msdn.com/b/ericwhite/archive/2008/09/19/bulk-convert-doc-to-docx.aspx 帮助文档:http:/ ...

  3. Microsoft Office Enterprise 2007 在安装过程中出错的解决方法

    今天笔者在使用PowerPoint 2007打开一个ppt的内嵌的excel表格时报如下错误: 无法找到 服务器应用程序.源文件.和项目,或返回的未知错误.请重新安装服务程序 然后就先把ppt文件发给 ...

  4. 自动释放池autoreleasepool

    自动释放池是NSAutoreleasePool的实例,其中包含了收到autorelease消息的对象.当一个自动释放池自身被销毁(dealloc)时,它会给池中每一个对象发送一个release消息(如 ...

  5. spark脚本日志输出级别设置

    import org.apache.log4j.{ Level, Logger } Logger.getLogger("org").setLevel(Level.WARN) Log ...

  6. mysql多列索引优化

    “把Where条件里面的列都建上索引”,这种说法其实是非常错误的! 这样一个查询,假设actor_id与film_id都单独建立索引 SELECT film_id , actor_id FROM sa ...

  7. linux下配置Java_web环境

    I安装JDK 1下载jdk*.bin/jdk*.rpm文件 2把安装包copy到安装目录 cp jdk*.bin /www/java 3安装JDK 如果是.bin文件,直接在复制的当前目录执行即可 . ...

  8. POJ-2336 Ferry Loading II(简单DP)

    Ferry Loading II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3763 Accepted: 1919 Desc ...

  9. opencv学习网站

    强烈推荐一个老外的网站,pyimagesearch 网址:https://www.pyimagesearch.com/

  10. MapReduce规约

    深入了解Combiners编程(相当于Map端的Reduce) 每一个map可能会产生大量的输出,combiner的作用就是在map端对输出先做一次合并,以减少传输到reducer的数据量. comb ...