BCNN: Bi-CNN

介绍ABCNN之前,要先介绍BCNN,该网络是基于孪生网络,包括了两个权重共享(weight-sharing)的CNN网络,每个CNN网络处理一个句子,最后的层处理句子对(sentence pair)任务. 其结构如下所示:
ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs论文解读
输入层: 如上图,假设有两个句子,分别含有5个词和7个词(实际应用中要将所有句子通过补padding,补成一样长度s,图中为了理解,按照不同长度展示),通过word embedding可以将每个词表示为一个dd维的向量,则输入为d×sd \times s.
卷积层: 卷积核在时间维(长度s)的大小设为w,则在进行卷积操作时,在输入矩阵的左右各补(w-1)列,输入矩阵变为(batchsize, 1, dd, s+2(w-1)),然后卷积操作的卷积核大小设置为(dd, w),滤波器数目为NN, **函数采用tanh,卷积操作后feature map为(batchsize, N, 1, s+w-1), 交换维度成(batchsize, 1, N, s+w-1).
均值池化层: 从上图可以看出,池化层包括两种, wapw-apallapall-ap,对于输出层,采用allapall-ap:对所有列求均值,feature map大小变为(batchsize, N), 即每个句子用一个N维向量表示,再对两个句子对应的N维向量经过某些操作来获取句子对任务得分; wapw-ap:pooling层kernel大小为(1, w),feature map变为(batchsize, 1, N, s),该feature map用于送入下一卷积层.
输出层: 根据具体任务进行选择,如二分类任务,输出层可以为逻辑回归层.

ABCNN: Attention-Based CNN

ABCNN顾名思义就是在BCNN的基础上添加注意力机制,本文提出三种注意力机制:ABCNN-1, ABCNN-2, ABCNN-3.
ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs论文解读
ABCNN-1: 采用注意力特征矩阵ARs×s\bold A \in \bold R^{s \times s}来影响卷积, 是对卷积层的输入feature map进行操作的,A\bold A的第ii行表示卷积层输入的左feature map的第ii个单元(长度为5的有5个单元)与右feature map每个单元的注意力分布,按Figure 3(a)举例, 为了便于理解,左右两个句子长度按照5和7不同长度介绍,此时矩阵AR5×7\bold A \in \bold R^{5 \times 7} , A\bold A的第1行第1列表示左句子第一个词和右句子第一个词的注意力分布(匹配度), 第1行第2列表示左句子第一个词和右句子第二个词的注意力分布(匹配度). 接下来看一下其数学表达式:
假设左右两个feature map分别为 F0,rR(d×s)F_{0,r} \in \bold R^{(d \times s)}F1,rR(d×s)F_{1,r} \in \bold R^{(d \times s)} , 则:
Ai,j=matchscore(F0,r[:,i],F:,j)=11+F0,r[:,i]F:,j\bold A_{i,j} = match-score(F_{0,r}[:,i], F_{:,j} ) = \frac{1}{1+|F_{0,r}[:,i]-F_{:,j}|}
论文中| \cdot |表示两个向量间的欧式距离, 基于此注意力特征矩阵A\bold A,生成两个注意力feature map:
F0,a=W0AT,F1,a=W1A\bold F_{0,a} = \bold W_0 \cdot \bold A^{T}, \bold F_{1,a} = \bold W_1 \cdot \bold A
其中W0R(d×s)\bold W_0 \in \bold R^{(d \times s)}, W1R(d×s)\bold W_1 \in \bold R^{(d \times s)},他们是网络要学习的参数,F0,a\bold F_{0,a}F1,a\bold F_{1,a}表现为Figure 3中的红色矩阵,然后将Fi,a\bold F_{i,a}Fi,r\bold F_{i,r}作为两个channel构成新的feature map送入卷积层.

ABCNN-2: 由上述介绍可以知道,ABCNN-1在卷积层的输入上计算注意力权重,旨在改善卷积计算的feature map,接下来介绍的ABCNN-2是在卷积的输出上计算注意力权重,旨在reweighting卷积层的输出.
注意力矩阵ARs×s\bold A \in \bold R^{s \times s}中的行列意义和ABCNN-1相同, a0,j=A[j,:]a_{0,j} = \sum \bold A[j,:]表示左句子s0s_0中第j个单元的注意力权重,a1,j=A[:,j]a_{1,j} = \sum \bold A[:,j]表示右句子s1s_1中第j个单元的注意力权重, Fi,rcRd×(si+w1)\bold F_{i,r}^c \in \bold R^{d \times (s_i +w -1)}(和BCNN中卷积层的输出对应上了)为卷积层输出, 则新的feature map Fi,rp\bold F_{i,r}^p的第jj列通过w-ap产生:
Fi,rp[:,j]=k=j:j+wai,kFi,rc[:,k]\bold F_{i,r}^p[:,j]=\sum_{k=j:j+w}a_{i,k}\bold F_{i,r}^c[:,k]
结合Figure 3(b)来理解一下这个公式,只看左侧(右侧同理),卷积输出feature map Fi,rc\bold F_{i,r}^c大小为8×78 \times 7 ,w=3w=3, 看一下7 = 5+3-1(s+w-1),跟BCNN卷积层中的讲解相对应,左侧中间虚框的向量则为a0a_0,F:,0=a0,0Fi,rc[:,0]+a0,1Fi,rc[:,1]+a0,2Fi,rc[:,2]\bold F_{:,0} = a_{0,0}\bold F_{i,r}^c[:,0] + a_{0,1}\bold F_{i,r}^c[:,1] + a_{0,2}\bold F_{i,r}^c[:,2] , 则新feature map矩阵的第一列是由卷积输出feature map矩阵的前三列乘以对应前三个加权值的和, 可以看成是一个8×38 \times 3的滑动窗, 步长为1, 第二列F:,1=a0,1Fi,rc[:,1]+a0,2Fi,rc[:,2]+a0,3Fi,rc[:,3]\bold F_{:,1} = a_{0,1}\bold F_{i,r}^c[:,1] + a_{0,2}\bold F_{i,r}^c[:,2] + a_{0,3}\bold F_{i,r}^c[:,3] ,以此类推得到新feature map矩阵,大小为8×58 \times 5,当卷积层filters数目N与输入feature map的H(每个词的向量维度)相同时,卷积层输入和输出尺度相同,这就使得可以堆叠多个这样的卷积-池化块来提取特征.
ABCNN-3: 该注意力机制是结合了ABCNN-1和ABCNN-2两种.

实验

设置

在三个任务上进行实验验证:AS PI TE
word Embedding通过word2vec初始化,维度为300,训练过程中word Embedding不变,其他参数随机初始化, k-1个卷积-池化块堆叠进行特征提取,最后输出采用逻辑回归层,逻辑回归层的输入为k个consine相似度得分,每个卷积层输出的feature map进行all-ap,左右两个all-ap输出向量求cosine相似度, 一共有k-1个cosine相似度得分,第一层卷积的输入也进行相同操作求cosine相似度,所以一共得到k个相似度得分,这k 个相似度得分堆叠成一个一维向量,送入全连接层(权重wRk×2\bold w \in \bold R^{k \times 2}) .

结果

  1. AS任务
    ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs论文解读
    one-conv表示一个卷积-池化块, two-conv表示两个卷积-池化块.
  2. PI任务
    ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs论文解读
  3. TE任务
    ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs论文解读

相关文章: