1. 程式人生 > >ABCNN基於注意力的卷積神經網路用於句子建模--模型介紹篇

ABCNN基於注意力的卷積神經網路用於句子建模--模型介紹篇

本文是Wenpeng Yin寫的論文“ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs”的閱讀筆記。其實該作者之前還發過一篇“Convolution Neural Network for Paraphrase Identification”。ABCNN是基於之前發的這篇論文加入了注意力機制。說到基於注意力的CNN,我們之前介紹過一篇Multi-Perspective CNN的論文。該論文也是在別的論文的基礎上加入了注意力機制,但其實Attentin機制一般用於RNN模型會有比較好的效果,CNN的話也可以用==

相比這兩篇Attention-based的論文,會發現,ABCNN提出了三個層面的Attention方法,有助於更加全面的理解attention在不同層面所能帶來的不同作用。下面我們就來介紹一下該論文的模型。

BCNN

BCNN就是ABCNN模型的基礎,即沒有新增Attention的模型結構。如下圖所示:

這裡寫圖片描述

1, 輸入層:
就是將輸入句子進行padding後轉化成詞向量即可。
2,卷積層:
當一開始看到這張結構圖的時候我以為採用的是per-dim的卷積方法,可是後來發現這樣做的話最後一層的sentence representation維度會非常大(15000維),並不適合作為特徵輸入給全連線層(邏輯斯特迴歸)。所以又仔細看了一下論文中對卷積層的描述,如下圖所示。可以看到,這裡使用的應該是Yoon Kim論文中所提出的卷積方式,即一個視窗最後只生成一個卷積值,然後再句子長度上進行滑動,得到一個長度為sent_len+ws-1的向量(wide conv)。而圖中為什麼是一個方陣呢,我們可以看一下Pi的秩為d1,我們這裡可以把d1理解為輸出的channels。這樣就可以把wide convolution層的縱深解釋為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距離計算。如下圖:

這裡寫圖片描述

2,分別計算兩個句子的attention map。如圖所示,使用兩個矩陣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。實驗結果分別如下圖所示:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述