TextCNN原理記錄

最近在做基於深度學習的文本分類,目前常見的神經網絡主要有CNN和RNN,相對來說CNN的速度較快。在這裏對於CNN用於文本分類的理解做一下記錄,主要基於論文和網上的一些參考資料。

一、論文原件

論文題目:Convolutional Neural Networks for Sentence Classification
作者:Yoon Kim
論文下載地址:https://arxiv.org/abs/1408.5882
在2014年,Yoon Kim在論文中提出了採用卷積神經網絡CNN用於文本分類,其核心思想是採用不同尺寸的濾波器來提取特徵,相當於統計語言模型中n-gram。並在原文中使用了預訓練的詞向量和基於訓練集的詞向量進行了對應的比較。

二、TextCNN

2.1 模型結構

模型結構如下圖所示:
在這裏插入圖片描述
在該模型中,輸入是語料庫中的每一個文本。其中文本中的每一個詞或者字對應於一個k維的向量,若一個文本的長度是n也就是說由n個詞或字組成,那麼一個文本就可表示成n行k列的矩陣。其中將一個詞或字映射成一個低維稠密的k維向量,目前主要基於word2vec或glove工具(如不懂詞向量,可先行百度瞭解一下)。

2.2 卷積

在傳統的機器學習方法中,如KNN,NB算法通常涉及到文本特徵選擇,而在CNN中,這裏的卷積運算相當於對文本進行特徵提取,不需要人爲參與。下圖所示爲圖像處理中的卷積運算:
在這裏插入圖片描述
上圖中,右側即爲卷積後提取的特徵。在文本中,濾波器的寬度即橫向大小是固定的,也就是詞向量的維度k,只能縱向滑動。如果濾波器橫向滑動的話相當於把一個詞從中間分開進行訓練,這是不合理的。濾波器的高度h可以設定,原文設置爲3-5,也就是每次掃描三個相鄰的詞,進行特徵提取。圖一模型結構中,紅色和黃色區域對應不同高度的濾波器。然後通過最大池化層和全連接層進行類別預測。下圖爲最大池化示意圖:
在這裏插入圖片描述

2.2 詳細結構

在這裏插入圖片描述
說明:
輸入層(嵌入層):輸入爲長度7,詞向量維度爲5的句子,也就是7x5的矩陣。
卷積層:卷積核(濾波器高度h)尺寸設置爲2,3,4,每個尺寸的濾波器有兩個,所以總共6個濾波器,如圖中第二列所示。通過卷積運算後,每個尺寸的濾波器,產生兩個特徵圖,共6個特徵圖。
最大池化層:通過最大池化層,對每個特徵圖選取最大特徵後,進行拼接(concatenation),生成一個單一的特徵向量,然後輸入到全連接層,進行類別預測。上圖中爲二分類示意。

參考資料:

1.TextCNN算法分析
2.[NLP] TextCNN模型原理和實現
3.Convolutional Neural Networks for Sentence Classification

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