《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 国际许可协议进行许可,欢迎 ...
随机推荐
- 将Linux系统的字体全改成中文
# 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文 $ localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 $ export ...
- kafka 的quick start(windows平台)
h1, h2, h3, h4, h5, h6, p, blockquote { margin: 5px; padding: 5; } body { font-family: "Helveti ...
- C# DataTbale详细操作
1.创建DataTable对象 DataTable dt = new DataTable("Table_AX"); 2.为DataTable创建列 //方式一(我觉得这种好) dt ...
- [APP] Android 开发笔记 001-环境搭建与命令行创建项目
1. 安装JDK,SDK JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Android SDK http ...
- 配置java环境变量后没有生效的解决办法
参考文章:https://blog.csdn.net/tooky_poom/article/details/60768458 系统安装了jdk1.7,环境变量正常,但是安装jdk1.8后,修改环境变量 ...
- ssh连接超时时间(ssh timeout)的设置方法
问题:当某台远程主机宕机时,ssh远程过去会耗费很多的时间去连接,结果还是会失败. 这个时候可以设置超时时间 ssh -o ConnectTimeout= 192.168.0.10
- The end of the world
这首63年乡村及流行排行榜双料亚军的歌曲,(Cashbox 年终冠军)据说原是作者为怀念亡父写就,虽是流行曲风,但由Skeeter Davis演唱,却赋予其不同的生命,在键盘连绵的三连音中,少女诉说着 ...
- ELKStack之消息队列
redis消息队列 安装redis yum -y install redis 修改配置文件 修改ip 后台运行 启动 systemctl start redis 查看 lsof -i:6379 连接 ...
- 0004python中的map,reduce,lambda,filter
编程实现:a[0]*b[0] + a[1]*b[1] +...+a[i]*b[j] >>> a=[1,2,3,4,5]>>> b=[6,7,8,9,0] >& ...
- MySQL异步复制
准备:主备库版本一致,正常安装软件. 1.主库上设置一个复制使用的账户: mysql> grant replication slave on *.* to 'rep1'@'192.168.100 ...