引言
本文是對《Convolutional Neural Networks for Sentence Classification》的原理解讀,簡稱TextCNN。
作者提出了一種基於CNN的新的文本分類模型。該模型結構簡單,支持靜態詞向量和可微調詞向量。作者做了一系列實驗驗證了該方法的優勢,在各種文本分類模型上取得state-of-the-art的結果。
模型結構
如上圖所示。
- 輸入長度為n的序列,序列中每個詞向量維度為k。模型輸入維度為
(n, k)
。 - 在詞向量階段,作者也使用了不同的處理方法。嘗試了以下三種詞向量獲取方式:
- 使用預訓練好的詞向量,在模型訓練階段詞向量可進行fine-tuning。
- 使用預訓練好的詞向量,在模型訓練階段詞向量凍結,不進行fine-tuning。
- 使用兩個詞向量獲取通道,一個是凍結的,一個可fine-tuning的。
實驗結果顯示,使用預訓練好的詞向量,在模型訓練階段詞向量進行fine-tuning的方式通常能取得最優結果,個別情況下雙通道方式能取得最有結果。
3. 輸入經過尺寸為(h, k)
的卷積核,這里跟圖像卷積不同是,這里卷積核的第二維的大小跟詞向量的維度大小相同,就是此處的卷積核在掃描特征的時候只沿着序列的方向進行掃描,生成(n-h+1,)
的一維向量。
直觀上理解,相當於使用卷積核提取窗口大小為h的n-gram特征。
4. 多個卷積核生成多個(n-h+1,)
的n-gram特征。
5. 卷積后面跟着GlobalAvgMaxpooling,這樣無論是多長的序列進來,輸出都是等長的。
6. 使用了多個不同尺寸的卷積核,相當於提取了不同窗口大小的n-gram特征。
正則
- 在倒數第二層使用了l2正則
- 在隱藏層使用了 Dropout
優缺點
- 通過CNN的方式捕捉n-gram特征,本質上是詞袋模型。計算速度快,預性能也不錯。
- 可解釋行不強