《ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs》
代码:
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》的更多相关文章
- 论文笔记:(2019)GAPNet: Graph Attention based Point Neural Network for Exploiting Local Feature of Point Cloud
		
目录 摘要 一.引言 二.相关工作 基于体素网格的特征学习 直接从非结构化点云中学习特征 从多视图模型中学习特征 几何深度学习的学习特征 三.GAPNet架构 3.1 GAPLayer 局部结构表示 ...
 - 《A Convolutional Neural Network Cascade for Face Detection》
		
文章链接: http://pan.baidu.com/s/1bQBJMQ 密码:4772 作者在这里提出了基于神经网络的Cascade方法,Cascade最早可追溯到Haar Feature提取 ...
 - A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记
		
A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK 文章地址:https://ieeex ...
 - 论文笔记之《Event Extraction via Dynamic Multi-Pooling Convolutional Neural Network》
		
1. 文章内容概述 本人精读了事件抽取领域的经典论文<Event Extraction via Dynamic Multi-Pooling Convolutional Neural Networ ...
 - 《Kalchbrenner N, Grefenstette E, Blunsom P. A convolutional neural network for modelling sentences》
		
Kalchbrenner’s Paper Kal的这篇文章引用次数较高,他提出了一种名为DCNN(Dynamic Convolutional Neural Network)的网络模型,在上一篇(Kim ...
 - 论文阅读(Weilin Huang——【TIP2016】Text-Attentional Convolutional Neural Network for Scene Text Detection)
		
Weilin Huang--[TIP2015]Text-Attentional Convolutional Neural Network for Scene Text Detection) 目录 作者 ...
 - 卷积神经网络(Convolutional Neural Network,CNN)
		
全连接神经网络(Fully connected neural network)处理图像最大的问题在于全连接层的参数太多.参数增多除了导致计算速度减慢,还很容易导致过拟合问题.所以需要一个更合理的神经网 ...
 - 斯坦福大学卷积神经网络教程UFLDL Tutorial - Convolutional Neural Network
		
Convolutional Neural Network Overview A Convolutional Neural Network (CNN) is comprised of one or mo ...
 - 【转载】     卷积神经网络(Convolutional Neural Network,CNN)
		
作者:wuliytTaotao 出处:https://www.cnblogs.com/wuliytTaotao/ 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,欢迎 ...
 
随机推荐
- Rope整理(可持久化神器)
			
rope是什么?STL的内置的可持久化的数组.其最为方便的就是可以O1复制原来的数组.事实上rope的内置实现也是平衡树,由于只需要复制根结点,O1可以做到复制历史版本. 然而这个东西常数特大,不开O ...
 - Docker制作私有的基础镜像
			
debootstrap是debian/ubuntu下的一个工具,用来构建一套基本的系统(根文件系统).生成的目录符合Linux文件系统标准(FHS),即包含了/boot./etc./bin./usr等 ...
 - yii---判断POST请求
			
我们在进行数据的提交的时候,很多时候会判断请求状态来进行不同的选择.常见的就是判断POST以及GET的请求方式,下面是YII判断POST请求的代码示例: public function actionP ...
 - vue--父组件主动获取子组件的方法
			
父组件主动获取子组件的方法和属性 第一步:调用自组件的时候,给自组建定义一个Header <v-header ref='headerInfo'></v-header> 第二步: ...
 - SVN Hook造成SVN提交速度慢的问题
			
单就个人感情来说,我其实喜欢git.但显然subversion才是更普遍的版本控制管理工具,适合用在团队开发中. 那么,有一个很常见的需求就是把工程师提交的代码,更新到htdocs目录,这时候需要用s ...
 - 牛客网多校赛第九场A-circulant matrix【数论】
			
链接:https://www.nowcoder.com/acm/contest/147/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
 - MapReduce的洗牌(Shuffle)
			
Shuffle过程:数据从map端传输到reduce端的过程~ Map端 每个map有一个环形内存缓冲区,用于存储任务的输出.默认大小100MB(io.sort.mb属性),一旦达到阀值0.8(io. ...
 - HDU 6318 - Swaps and Inversions - [离散化+树状数组求逆序数][杭电2018多校赛2]
			
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=6318 Problem Description Long long ago, there was an ...
 - hihocoder 1334 - Word Construction - [hiho一下第170周][状态压缩+DFS]
			
题目链接:https://hihocoder.com/problemset/problem/1334 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Given N wo ...
 - iOS常用基础框架
			
一,简述 1.1,IOS操作系统的层次架构 iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa Touch Layer( ...