TextCNN
在2014年,美國紐約大學的Yoon Kim提出了一種TextCNN模型,把卷積神經網絡(CNN)用於文本分類,利用多個不同大小的卷積核來提取文本中的特徵,從而能夠更好地捕捉局部的相關性。論文地址:Convolutional Neural Networks for Sentence Classification
1、網絡結構
模型結構是CNN結構的一個微小變體。設爲句子中第個單詞對應的k維單詞向量。長度爲的句子(在必要的地方進行填充)表示爲:
其中,是連接操作。表示單詞的連接。一個卷積操作對應一個卷積核,通過這個卷積覈對h個單詞進行卷積產生新的特徵。。是一個偏置項,是一個非線性函數,如雙曲正切。卷積核被用於句子中每個可能的單詞窗口來產生feature map ,。然後,在feature map上應用一個max-over-time池操作,並將最大值作爲對應於此特定卷積核的特性。其思想是捕獲最重要的特性,併爲每個特徵圖獲取值最高的特徵。這個合用方案自然處理可變的句子長度。模型使用多個卷積核(具有不同的窗口大小)來獲得多個特徵。這些特徵形成倒數第二層,並傳遞給一個全連接的softmax層,其輸出是標籤上的概率分佈。
TextCNN的詳細原理
TextCNN詳細過程:
Embedding:第一層是圖中最左邊的7乘5的句子矩陣,每行是詞向量,維度=5,這個可以類比爲圖像中的原始像素點。
Convolution:然後經過 kernel_sizes=(2,3,4) 的一維卷積層,每個kernel_size 有兩個輸出 channel。
MaxPolling:第三層是一個1-max pooling層,這樣不同長度句子經過pooling層之後都能變成定長的表示。
FullConnection and Softmax:最後接一層全連接的 softmax 層,輸出每個類別的概率。
通道(Channels):
圖像中可以利用 (R, G, B) 作爲不同channel;
文本的輸入的channel通常是不同方式的embedding方式(比如 word2vec或Glove),實踐中也有利用靜態詞向量和fine-tunning詞向量作爲不同channel的做法。
一維卷積(conv-1d):
圖像是二維數據;
文本是一維數據,因此在TextCNN卷積用的是一維卷積(在word-level上是一維卷積;雖然文本經過詞向量表達後是二維數據,但是在embedding-level上的二維卷積沒有意義)。一維卷積帶來的問題是需要通過設計不同 kernel_size 的 filter 獲取不同寬度的視野。