標籤:

《A Convolutional Neural Network for Modelling Sentences 》閱讀筆記

本文介紹了一種用DCNN對句子語義建模,模型採用動態的K——max pooling(取出得分top k的特徵值),處理不同長度的句子,不依賴於解析樹並且適用於任何語言。模型的目的是為了表示句子的語義用來之後的分類或生成。

單個句子很難被學習到,模型通過從句子中經常出現的單詞或短句的特徵提取出句子的特徵。

上圖就是一個動態CNN處理輸入句子的過程,卷積filters的寬度是2和3,通過動態pooling,可以在高層獲取句子中相離較遠詞語間的聯繫。

DCNN模型

1 寬卷積

寬卷積的輸出使feature map 的寬度更寬

2 K-max pooling

給定一個K值和一個序列P,選擇序列P中得分最大的前k個特徵值組成的子序列,並且保留原來序列的次序。

好處在於提取了句子中不止一個的重要信息,保留了它們的相對位置。並且由於最後的卷積層只需提取K個值,所以允許不同長度的輸入,只要大於K。

3 動態K—max pooling

K和k分別是輸入句子長度和網路深度兩個參數的函數

l是當前卷積層的層數,L是網路中總共卷積層的層數,Ktop為最頂層對應的K值,是固定值,s是句子的長度。例如網路中有3個卷積層,Ktop=3,s=18,第一層卷積層下面的pooling參數K1=12,K2=6,K3=3。

它的意義在於,從不同長度的句子中提取出相應數量的語義特徵信息,以保證後續的卷積層的統一性。比如,在情感預測中,首要特徵所對應的單詞提取出K1個,次要特徵提取出k2個單詞。

4 非線性特徵函數

Pooling層與下一個卷積層之間,是通過與一些權值參數相乘後,加上某個偏置參數而來,與傳統的CNN是一樣的。

5 多個feature map

與傳統CNN一樣,會提取出多個featured map以保證提取特徵的多樣性。

6 摺疊操作

之前的寬卷積是在輸入矩陣d×s中的每一行內進行計算操作,其中d是word vector的維數,s是輸入句子的詞語數量。而Folding操作則是考慮相鄰的兩行之間的某種聯繫,方式也很簡單,就是將兩行的vector相加;該操作沒有增加參數數量,但是提前(在最後的全連接層之前)考慮了特徵矩陣中行與行之間的某種關聯

傳統CNN和加入folding後的詞的表示。增強了表示能力:varphi(sum_{i=1}^{3}sum_{j=1}^{4}w_{ij}x_{ij})(左圖) varphi[sum_{j=1}^{2}varphi(sum_{i=1}^{3}w_{ij}x_{ij})]+varphi[sum_{j=3}^{4}varphi(sum_{i=1}^{3}w_{ij}x_{ij})](右圖)

模型的特點

1 保留了句子中詞序信息和詞語之間的相對位置;

2 寬卷積的結果是傳統卷積的一個擴展,某種意義上,也是n-gram的一個擴展,更加考慮句子邊緣信息;

3 模型不需要任何的先驗知識,例如句法依存樹等,並且模型考慮了句子中相隔較遠的詞語之間的語義信息。

實驗部分

1 模型訓練及參數

輸出層是一個類別概率分布(即softmax),與倒數第二層全連接;

代價函數為交叉熵,訓練目標是最小化代價函數;

L2正則化;

優化方法:mini-batch + gradient-based (使用Adagrad update rule, Duchi et al., 2011)

2 實驗結果

在三個數據集上進行了實驗,分別是(1)電影評論數據集上的情感識別,(2)TREC問題分類,以及(3)Twitter數據集上的情感識別。結果如下圖

結論

可以看出,DCNN的性能非常好,幾乎不遜色於傳統的模型;而且,DCNN的好處在於更全面地捕捉詞的信息,更有效地表示整個句子。

推薦閱讀:

[Practical ML] Factorization Machine
python 機器學習不會很慢嗎?

TAG:机器学习 |