介绍ABCNN之前,要先介绍BCNN,该网络是基于孪生网络,包括了两个权重共享(weight-sharing)的CNN网络,每个CNN网络处理一个句子,最后的层处理句子对(sentence pair)任务. 其结构如下所示:
输入层: 如上图,假设有两个句子,分别含有5个词和7个词(实际应用中要将所有句子通过补padding,补成一样长度s,图中为了理解,按照不同长度展示),通过word embedding可以将每个词表示为一个 d d d维的向量,则输入为 d × s d \times s d×s.
卷积层: 卷积核在时间维(长度s)的大小设为w,则在进行卷积操作时,在输入矩阵的左右各补(w-1)列,输入矩阵变为(batchsize, 1, d d d, s+2(w-1)),然后卷积操作的卷积核大小设置为( d d d, w),滤波器数目为 N N N, 激活函数采用tanh,卷积操作后feature map为(batchsize, N, 1, s+w-1), 交换维度成(batchsize, 1, N, s+w-1).
均值池化层: 从上图可以看出,池化层包括两种, w − a p w-ap w−ap和 a l l − a p all-ap all−ap,对于输出层,采用 a l l − a p all-ap all−ap:对所有列求均值,feature map大小变为(batchsize, N), 即每个句子用一个N维向量表示,再对两个句子对应的N维向量经过某些操作来获取句子对任务得分; w − a p w-ap w−ap:pooling层kernel大小为(1, w),feature map变为(batchsize, 1, N, s),该feature map用于送入下一卷积层.
输出层: 根据具体任务进行选择,如二分类任务,输出层可以为逻辑回归层.
ABCNN顾名思义就是在BCNN的基础上添加注意力机制,本文提出三种注意力机制:ABCNN-1, ABCNN-2, ABCNN-3.
ABCNN-1: 采用注意力特征矩阵 A ∈ R s × s \bold A \in \bold R^{s \times s} A∈Rs×s来影响卷积, 是对卷积层的输入feature map进行操作的, A \bold A A的第 i i i行表示卷积层输入的左feature map的第 i i i个单元(长度为5的有5个单元)与右feature map每个单元的注意力分布,按Figure 3(a)举例, 为了便于理解,左右两个句子长度按照5和7不同长度介绍,此时矩阵 A ∈ R 5 × 7 \bold A \in \bold R^{5 \times 7} A∈R5×7 , A \bold A A的第1行第1列表示左句子第一个词和右句子第一个词的注意力分布(匹配度), 第1行第2列表示左句子第一个词和右句子第二个词的注意力分布(匹配度). 接下来看一下其数学表达式:
假设左右两个feature map分别为 F 0 , r ∈ R ( d × s ) F_{0,r} \in \bold R^{(d \times s)} F0,r∈R(d×s) 和 F 1 , r ∈ R ( d × s ) F_{1,r} \in \bold R^{(d \times s)} F1,r∈R(d×s) , 则:
A i , j = m a t c h − s c o r e ( F 0 , r [ : , i ] , F : , j ) = 1 1 + ∣ F 0 , 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}|} Ai,j=match−score(F0,r[:,i],F:,j)=1+∣F0,r[:,i]−F:,j∣1
论文中 ∣ ⋅ ∣ | \cdot | ∣⋅∣表示两个向量间的欧式距离, 基于此注意力特征矩阵 A \bold A A,生成两个注意力feature map:
F 0 , a = W 0 ⋅ A T , F 1 , a = W 1 ⋅ A \bold F_{0,a} = \bold W_0 \cdot \bold A^{T}, \bold F_{1,a} = \bold W_1 \cdot \bold A F0,a=W0⋅AT,F1,a=W1⋅A
其中 W 0 ∈ R ( d × s ) \bold W_0 \in \bold R^{(d \times s)} W0∈R(d×s), W 1 ∈ R ( d × s ) \bold W_1 \in \bold R^{(d \times s)} W1∈R(d×s),他们是网络要学习的参数, F 0 , a \bold F_{0,a} F0,a和 F 1 , a \bold F_{1,a} F1,a表现为Figure 3中的红色矩阵,然后将 F i , a \bold F_{i,a} Fi,a和 F i , r \bold F_{i,r} Fi,r作为两个channel构成新的feature map送入卷积层.
ABCNN-2: 由上述介绍可以知道,ABCNN-1在卷积层的输入上计算注意力权重,旨在改善卷积计算的feature map,接下来介绍的ABCNN-2是在卷积的输出上计算注意力权重,旨在reweighting卷积层的输出.
注意力矩阵 A ∈ R s × s \bold A \in \bold R^{s \times s} A∈Rs×s中的行列意义和ABCNN-1相同, a 0 , j = ∑ A [ j , : ] a_{0,j} = \sum \bold A[j,:] a0,j=∑A[j,:]表示左句子 s 0 s_0 s0中第j个单元的注意力权重, a 1 , j = ∑ A [ : , j ] a_{1,j} = \sum \bold A[:,j] a1,j=∑A[:,j]表示右句子 s 1 s_1 s1中第j个单元的注意力权重, F i , r c ∈ R d × ( s i + w − 1 ) \bold F_{i,r}^c \in \bold R^{d \times (s_i +w -1)} Fi,rc∈Rd×(si+w−1)(和BCNN中卷积层的输出对应上了)为卷积层输出, 则新的feature map F i , r p \bold F_{i,r}^p Fi,rp的第 j j j列通过w-ap产生:
F i , r p [ : , j ] = ∑ k = j : j + w a i , k F i , r c [ : , k ] \bold F_{i,r}^p[:,j]=\sum_{k=j:j+w}a_{i,k}\bold F_{i,r}^c[:,k] Fi,rp[:,j]=k=j:j+w∑ai,kFi,rc[:,k]
结合Figure 3(b)来理解一下这个公式,只看左侧(右侧同理),卷积输出feature map F i , r c \bold F_{i,r}^c Fi,rc大小为 8 × 7 8 \times 7 8×7 , w = 3 w=3 w=3, 看一下7 = 5+3-1(s+w-1),跟BCNN卷积层中的讲解相对应,左侧中间虚框的向量则为 a 0 a_0 a0, F : , 0 = a 0 , 0 F i , r c [ : , 0 ] + a 0 , 1 F i , r c [ : , 1 ] + a 0 , 2 F i , r c [ : , 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] F:,0=a0,0Fi,rc[:,0]+a0,1Fi,rc[:,1]+a0,2Fi,rc[:,2] , 则新feature map矩阵的第一列是由卷积输出feature map矩阵的前三列乘以对应前三个加权值的和, 可以看成是一个 8 × 3 8 \times 3 8×3的滑动窗, 步长为1, 第二列 F : , 1 = a 0 , 1 F i , r c [ : , 1 ] + a 0 , 2 F i , r c [ : , 2 ] + a 0 , 3 F i , r c [ : , 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] F:,1=a0,1Fi,rc[:,1]+a0,2Fi,rc[:,2]+a0,3Fi,rc[:,3] ,以此类推得到新feature map矩阵,大小为 8 × 5 8 \times 5 8×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 个相似度得分堆叠成一个一维向量,送入全连接层(权重 w ∈ R k × 2 \bold w \in \bold R^{k \times 2} w∈Rk×2) .