1. 程式人生 > >A Convolutional Neural Network for Modelling Sentences

A Convolutional Neural Network for Modelling Sentences

引言

Nal Kalchbrenner等人在2014年arXiv上的paper,原文地址:arXiv:1404.2188v1 [cs.CL] 8 Apr 2014
自然語言處理的基礎問題在於句子的語義表示,其他特定的任務如分類等都是在語義表示的基礎上進行高層次的處理,所以如何對句子進行表達就成為了核心問題。
針對目前存在的模型,作者提出了DCNN–Dynamic Convolutional Neural Network,利用寬卷積和k-max pooling取樣,構造了一種了類似parse tree的結構,能夠提取長距離的資訊。
該模型在四個資料集上測試,包括情感分析等均取得了不錯的結果。

模型

網路結構

網路主要包括兩種不同的層,一維卷積層(one-dimensional convolutional layers)和動態k-max池化層(dynamic k-max pooling layers),結構如下:
在這裡插入圖片描述

Embedding

這裡和一般的網路沒有區別,將輸入句子s中的每個詞w對映為d維向量,同時在訓練的過程中對初始化的向量進行修改,如下:
在這裡插入圖片描述

Wide Convolution

卷積部分用的是one-dim卷積,也就是filter的height固定為1,如上圖所示。另一個需要注意的是這裡用的是寬卷積的方式,寬卷積指的是在卷積操作時對輸入矩陣的邊緣進行padding補零,這樣的好處是不會丟失邊緣資訊,如下:
在這裡插入圖片描述


可以看到,左邊是傳統的卷積方式,這樣卷積操作後的結果為l-m+1,其中l為句子的長度,m為卷積長度,m<=l;而右邊的寬卷積方式計算出來的結果則是l+m-1,可以看到傳統卷積其實是寬卷積方式的一個子集。
從卷積的形式來說,可以看成對輸入句子的每一維做了n-gram,其中n<=m。

Dynamic k-Max Pooling

k-max pooling是max-pooling更一般的形式,相比後著,k-max在序列p中,p>=k,提取出序列中前k個最大的值,同時保留它們的相對順序。這樣的好處在於能夠提取句子中的k個重要特徵,同時作者寫道,

It can also discern more finely the number of times the feature is highly activated in p and the progression by which the high activations of the feature change across p.

這應該是一種猜想,能夠捕捉特徵的啟用次數及變化過程。另一個是k-max pooling可以用來處理變長輸入,最終的全連線層k值是固定的,而中間的卷積k值由下述公式決定,
在這裡插入圖片描述
其中 l l 表示當前卷積層數, L L 代表模型中卷積層總數, k t o p k_{top} 表示全連線層的k值。如,網路中有三個卷積層 L = 3 L=3 k t o p = 3 k_{top} = 3 ,輸入的句子長度為 s = 18 s=18 ,則,
第一層卷積 k 1 = 12 k_1 = 12 ,第二層卷積 k 2 = 6 k_2 = 6 ,第三層即全連線層 k 3 = k t o p = 3 k_3 = k_{top}=3
值得注意的是,作者舉了一個例子,

a first order feature such as a positive word occurs at most k1 times in a sentence of length s, whereas a second order feature such as a negated phrase or clause occurs at most k2 times.

這裡的一階與二階應該是指代低維與高維特徵,類似影象中的邊角到簡單形狀,所以用正面情感詞與負面情感詞來做例子似乎顯得不是很恰當。

Non-linear Feature Function

在k-max pooling之後,與傳統的CNN一樣,對於pooling後的結果加上一個偏置b進行非線性啟用,作者提到,

Together with pooling, the feature function induces position invariance and makes the range of higher-order features variable.

pool使得區域性特徵不變,從高階特徵有更大的選擇範圍。

Multiple Feature Maps

這個和其他模型沒區別,都是使用多個filter提取多份特徵,最後進行組合。

Folding

在前面卷積計算中,由於是1-dim卷積,所以實際上對於輸入矩陣的操作都是在每一維上單獨進行的。
寬卷積能夠在詞序列的方面上進行特徵提取,但是在詞向量的維度上也應該建立依賴關係,作者用了一個簡單的方式建立聯絡,即在卷積操作之後,將相鄰兩個維度的向量進行相加。
這樣沒有增加任何引數,但是能夠在全連線層之前提前考慮到詞向量維度上的某些關聯。

Other

其他與大部分模型一致,如果在分類任務,增加全連線層後接softmax,損失函式使用交叉熵,正則化部分使用L2正則,使用mini-batch和gradient-based方法進行優化。

模型性質

Word and n-Gram Order

藉助寬卷積操作,在一定程度上形成了n-gram形式的特徵抽取,使得模型對於句子的先後順序更為敏感。當然這也是目前很多CNN模型用在文字處理方面的一個性質,對文字區域性的特徵可以進行一定的提取。

Induced Feature Graph

這個是DCNN模型一個有趣的特徵,藉助k-max pooling,實際上可以把這種低維到高維的特徵提取想象成一顆parse tree,如下:
在這裡插入圖片描述
由上圖可以看到,低維度的特徵被提取出來後,在更高的維度可以被關聯起來,從而使得高緯度的特徵在一定程度上能夠提取到整體句子的資訊。
針對CNN只能提取區域性資訊的問題,這裡能做到一定的改善。

實驗

電影評論情感分析

在這裡插入圖片描述

TERC問題資料集

在這裡插入圖片描述

Twitter情感識別

在這裡插入圖片描述

總結

從實驗結果來看,DCNN的表現都很不錯,相對於傳統的模型而言,DCNN不需要構造複雜的人工特徵,在簡便性上更勝一籌。
另一個是DCNN構造出來的類似parse tree的形式很有吸引力,對於文字的表示,假如能夠融入句法方面的知識,或者提取出這方面的特徵是一個很有想象力的方向。

引用

1、A Convolutional Neural Network for Modelling Sentences