关键词:Attention机制;CNN;卷积神经网络;文本分类;智能问答
文献:ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs
这篇文章结合卷积神经网络CNN和Attention机制,提出应用到文本分类中。
文本贡献:
- 第一:将Attention机制和CNN结合应用到句子建模
- 第二:提出三种结合Attention机制的建模方式
- 第三:核心是通过Attention机制将原先各自独立的句子,考虑句子之间的相关性,构建出包含句子上下文关系的新的句子模型
在一些自然语言处理任务中,构建合理的句子对是非常关键的。比如QA问题中,匹配问题和答案。从问题中抽取关键的决定性的词语,去匹配合理的答案。
文章中综述了Attention机制在自然语言和非自然语言处理中的一些应用文章。
- 深度学习+Attention机制机制在图像识别领域:计算机视觉针对可视化问答(Visual question answering)文章(Chen et.al2015),图像分类(Xiao 2015) 标题生成(Xu .2015),图像片段(image segmentation)(Hong et al.2016). Minih et al 2014将attention机制和循环神经网络结合从视频和图片中获取信息。 Gregor et al. 2015 使用空间attention机制和RNN网络 for image generation。。 Chorowski 2015 应用attention机制和RNN网络用来speech recognition.
- 深度学习+attention机制在NLP领域的应用:Attention机制在图像识别领域取得成功后,也被应用到NLP领域。主要做法是利用end-to-end encoder-decoder and RNNs . 最初是应用在机器翻译中(Bahdanau et al. 2015,Luong et al.2015)和 text reconstruction(Li et al.2015 ,Rush 2015)等。
主要思路
-
BCNN结构:使用基本CNN网络(无attention机制),每次处理一对句子。输出层解决sentence pair task.
-
Input layer
每个句子被填充为相同长度s,使用词向量映射每个句子为矩阵s*300维矩阵。
-
Convolution Layer
w 应该是卷积核过滤器的宽度。卷积时如果会对周边做填充。也就是当j<1 或 j>s时,就是按照w*d0的过滤器做卷积。
-
Pooling Layer
选用平均池化作为baseline
两次卷积和池化,输出层softmax
BCNN方式就是正常的一个CNN网络架构。
-
ABCNN结构:文章提出了三种结构,ABCNN-1,ABCNN-2,ABCNN-3
-
ABCNN-1结构
结构中增加了一个抽象层级,就是在原有单词级上增加了一个短语级的抽象。单词级的抽象文中重新命名为unit,作为低级别的表示,短语级的作为更高一级的表示。图中那个红色的与BCNN网络中的输入是一样的,是句子的词向量矩阵,两个句子。第一个句子5个单词,第二个句子7个单词。
蓝色的为短语级高一级的词向量表示。蓝色表示是由Attention Matrix A和红色词向量计算生成
Attention Matrix A是由左右两个句子的情况生成。 A中的 i 列值是由左边句子(五个单词)中第 i 个单词(unit)的向量与右边句子的Attention值分布(),j行值是由右边句子中第j个单词的向量与左边句子的Attention值分布. 计算在下面定义?
Matrix A的计算:
d 表示词向量维度,s表示的是句子的长度(句子长度填充为相同长度)。使用欧几里德距离。Matrix A中数值Ai,j的计算是由左边句子向量表示的第i列向量和右边句子第j列的距离度量, 度量方式有差异。作者使用的是两个向量的欧几里德距离。
获取的Matrix A后,对两个句子分别应用不同的权重矩阵(模型在学习的时候要学习的参数),生成两个句子的新的Attention特征表示。计算方法:
接下来将句子的原始词向量表示和Attention特征表示作为3D 张量形式输入到卷积层进行计算。
-
ABCNN-2机制
ABCNN-2架构是在以初始词向量形式输入并经过卷积后的输出的向量表示中(两个句子分别变成了7col和9col),计算出Attention Matrix A. 计算方法还是计算两个句子对应单词向量的欧式距离,生成向量矩阵,方法同ABCNN-1的架构。
第二步:计算卷积向量权重,给每个单词计算一个权重值。左边句子(7col)的每个单词对应的Attention权重是由Matrix A中列向量求和的值作为权重值,col-wise sum,右边句子中每个单词的权重值是Matrix A中行向量求和值作为权重值,row-wise sum.
句子原始输入是词向量矩阵,左边的是5d,右边是7d,w是3
将卷积输出的特征矩阵,基于Attention权重值,做池化。i 取值为0,1,j取值为句子长度。
ABCNN-1和ABCNN-2比较:1、ABCNN-1中Attention是间接的影响卷积,ABCNN-2中通过Attention权重直接影响池化。2、ABCNN-1需要两个权重矩阵需要学习,并且输入特征矩阵要两次, 相比ABCNN-2网络需要更多的参数学习,容易过拟合。3、ABCNN-2执行更大粒度的池化,如果在卷积层输入的是词粒度的,那么ABCNN-2在池化时就已经是短语粒度的(经过卷积了),池化时的w和卷积的w保持一致。
-
ABCNN-3机制
将ABCNN-1和ABCNN-2结合,作为架构,这样保留word level信息,也增加了phrase level的信息。更加高层次的特征抽象。
-
在不同任务上的实验结果
文中提到,在最后输出层,使用线性SVM和默认参数的LR分类器效果似乎比LR层更好,在输出层似乎能够获得更优的全局解。