TextCNN

TextCNN

在2014年,美國紐約大學的Yoon Kim提出了一種TextCNN模型,把卷積神經網絡(CNN)用於文本分類,利用多個不同大小的卷積核來提取文本中的特徵,從而能夠更好地捕捉局部的相關性。論文地址:Convolutional Neural Networks for Sentence Classification
1、網絡結構
在這裏插入圖片描述
模型結構是CNN結構的一個微小變體。設爲句子中第ii個單詞對應的k維單詞向量。長度爲nn的句子(在必要的地方進行填充)表示爲:

其中,\bigoplus是連接操作。xi:i+jx_{i:i+j}表示單詞xi,xi+1,...xi+jx_{i},x_{i+1},...x_{i+j}的連接。一個卷積操作對應一個卷積核wRhkw\in \mathbb{R}^{hk},通過這個卷積覈對h個單詞進行卷積產生新的特徵cic_{i}ci=f(wxi:i+h1+b)c_{i}=f(w \cdot x_{i:i+h-1}+b)bRb \in \mathbb{R}是一個偏置項,ff是一個非線性函數,如雙曲正切。卷積核被用於句子{x1:h,x2:h+1,...,xnh+1:n}\{x_{1:h},x_{2:h+1},...,x_{n-h+1:n}\}中每個可能的單詞窗口來產生feature map c=[c1,c2,...,cnh+1]c=[c_{1},c_{2},...,c_{n-h+1}]cRnh+1c \in \mathbb{R}^{n-h+1}。然後,在feature map上應用一個max-over-time池操作,並將最大值c^=max{c}\hat{c} = max\{c\}作爲對應於此特定卷積核的特性。其思想是捕獲最重要的特性,併爲每個特徵圖獲取值最高的特徵。這個合用方案自然處理可變的句子長度。模型使用多個卷積核(具有不同的窗口大小)來獲得多個特徵。這些特徵形成倒數第二層,並傳遞給一個全連接的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 獲取不同寬度的視野。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章