KIM2014_Convolutional Neural Networks for Sentence Classification
阿新 • • 發佈:2018-12-26
Convolutional Neural Networks for Sentence Classification
- 1. Abstract
- 2. Introduction
- 3. Model
- 4. Datasets and Experimental Set up
- 5. Results and Discussion
- 總結
1. Abstract
- 證實了:
- 一個簡單的CNN結構 + 微調少許超參 + 靜態向量
- 在fine-tuning階段學習task-specific向量能進一步提升效能
- 一個簡單的CNN結構 + 微調少許超參 + 靜態向量
- 為了能同時使用靜態向量和task-specific向量,對結構進行小調整,提出了Text CNN
- 在情感分析、問題分類等4個領域達到了十分好的效果
所謂靜態向量就是指預訓練好的詞向量;task-specific向量是指詞向量也可以在下游任務中,隨著模型一同微調。
2. Introduction
- Kim之前利用預訓練好的詞向量(全程保持不變,也就是靜態向量)載入到具體任務中,並只對模型的少許引數做微調,發現模擬結果也很好,證實了詞向量可以作為一個通用的特徵提取部件
- 不過Kim認為工作不止於此,如何在fine-tuning中學習task-specific向量更加重要。
3. Model
輸入文字 | ||||
---|---|---|---|---|
詞向量維度 | 輸入文字第 個詞的詞向量 | 輸入文字長度(不足補全,超過截斷) | 聯接符 |
- 一次卷積操作:
- 給定一個 : ,代表對一個 的視窗內詞語的卷積,並生成一個新的feature
- , 為偏置,可加可不加, 為非線性函式
- 將這個 應用於一個輸入文字,即視窗 ,可以得到一個feature map:
- 進行一次最大池化,得到 ,用以捕捉最重要的feature map
- 上述過程中,每個feature對應於一個 ,而模型會使用不同的 (帶有不同的window sizes)以得到不同的特徵
- 對雙通道(每個通道輸入不同的詞向量)CNN進行了模擬實驗,一個通道為靜止向量,另一個通道會在bp過程中不斷微調,且每個
會被用於每個通道,結果在計算
時進行累加,具體結構如下圖所示
4. Datasets and Experimental Set up
4.1 Hyperparameters and Training
constraint | mini-batch size | |||
---|---|---|---|---|
100 maps for each filter |
5. Results and Discussion
- 所有詞的詞向量均隨機初始化,在訓練過程中不斷調整的baseline模型CNN-rand,果不其然效果比較差
- 在baseline基礎上加了個靜態向量的CNN-static,果然提升很大
- 原以為使用多通道的CNN-multichannel能夠防止過擬合,(尤其在小資料集的情況下)比單通道的效能更好,結果發現並不盡然
- CNN-non-static相比CNN-static,在一些情況下還是很有用的
總結
- 儘管沒怎麼對超參做調整,一個簡單的單卷積層CNN已經很牛逼了
- 如何用Pytorch實現一個Text CNN