ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs論文解讀

BCNN: Bi-CNN

介紹ABCNN之前,要先介紹BCNN,該網絡是基於孿生網絡,包括了兩個權重共享(weight-sharing)的CNN網絡,每個CNN網絡處理一個句子,最後的層處理句子對(sentence pair)任務. 其結構如下所示:
在這裏插入圖片描述
輸入層: 如上圖,假設有兩個句子,分別含有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-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任務
    在這裏插入圖片描述
    one-conv表示一個卷積-池化塊, two-conv表示兩個卷積-池化塊.
  2. PI任務
    在這裏插入圖片描述
  3. TE任務
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章