KIM2014_Convolutional Neural Networks for Sentence Classification

Convolutional Neural Networks for Sentence Classification

  • 1. Abstract
  • 2. Introduction
  • 3. Model
  • 4. Datasets and Experimental Set up
    • 4.1 Hyperparameters and Training
  • 5. Results and Discussion
  • 总结

1. Abstract

  • 证实了:
    • 一个简单的CNN结构 + 微调少许超参 + 静态向量 = 性能超好
    • 在fine-tuning阶段学习task-specific向量能进一步提升性能
  • 为了能同时使用静态向量和task-specific向量,对结构进行小调整,提出了Text CNN
  • 在情感分析、问题分类等4个领域达到了十分好的效果

所谓静态向量就是指预训练好的词向量;task-specific向量是指词向量也可以在下游任务中,随着模型一同微调。

2. Introduction

  • Kim之前利用预训练好的词向量(全程保持不变,也就是静态向量)加载到具体任务中,并只对模型的少许参数做微调,发现仿真结果也很好,证实了词向量可以作为一个通用的特征提取部件,并可被广泛用于各类分类任务中。当然从今天的角度来看,这已经是共识了。
  • 不过Kim认为工作不止于此,如何在fine-tuning中学习task-specific向量更加重要。

3. Model

k k k x i ∈ R k x_i∈R^k xiRk n n n ⊕ ⊕ 输入文本
词向量维度 输入文本第 i i i个词的词向量 输入文本长度(不足补全,超过截断) 联接符 x 1 : n = x 1 ⊕ x 2 ⊕ . . . ⊕ x n x_{1:n}=x_1⊕x_2⊕...⊕x_n x1:n=x1x2...xn
  • 一次卷积操作:
    • 给定一个 f i l t e r filter filter w ∈ R h k w∈R^{hk} wRhk,代表对一个 w i n d o w = h window=h window=h的窗口内词语的卷积,并生成一个新的feature
    • c i = f ( w ⋅ x i : i + h − 1 + b ) c_i=f(w·x_{i:i+h-1}+b) ci=f(wxi:i+h1+b) b b b为偏置,可加可不加, f f f为非线性函数
    • 将这个 w w w应用于一个输入文本,即窗口 { x 1 : h , x 2 : h , . . . , x n − h + 1 : n } \{x_{1:h},x_{2:h},...,x_{n-h+1:n}\} {x1:h,x2:h,...,xnh+1:n},可以得到一个feature map c = [ c 1 , c 2 , . . . , c n − h + 1 ] c=[c_1,c_2,...,c_{n-h+1}] c=[c1,c2,...,cnh+1]
    • 进行一次最大池化,得到 c ^ = m a x { c } \hat{c}=max\{c\} c^=max{c},用以捕捉最重要的feature map
  • 上述过程中,每个feature对应于一个 f i l t e r filter filter,而模型会使用不同的 f i l t e r s filters filters(带有不同的window sizes)以得到不同的特征
  • 对双通道(每个通道输入不同的词向量)CNN进行了仿真实验,一个通道为静止向量,另一个通道会在bp过程中不断微调,且每个 f i l t e r filter filter会被用于每个通道,结果在计算 c i c_i ci时进行累加,具体结构如下图所示
    KIM2014_Convolutional Neural Networks for Sentence Classification_第1张图片

4. Datasets and Experimental Set up

4.1 Hyperparameters and Training

f i l t e r filter filter w i n d o w s windows windows f e a t u r e feature feature m a p s maps maps d r o u p o u t droupout droupout r a t e rate rate l 2 l_2 l2 constraint mini-batch size
[ 3 , 4 , 5 ] [3,4,5] [3,4,5] 100 maps for each filter 0.5 0.5 0.5 3 3 3 50 50 50

5. Results and Discussion

KIM2014_Convolutional Neural Networks for Sentence Classification_第2张图片

  • 所有词的词向量均随机初始化,在训练过程中不断调整的baseline模型CNN-rand,果不其然效果比较差
  • 在baseline基础上加了个静态向量的CNN-static,果然提升很大
  • 原以为使用多通道的CNN-multichannel能够防止过拟合,(尤其在小数据集的情况下)比单通道的性能更好,结果发现并不尽然
  • CNN-non-static相比CNN-static,在一些情况下还是很有用的

总结

  • 尽管没怎么对超参做调整,一个简单的单卷积层CNN已经很牛逼了
  • 如何用Pytorch实现一个Text CNN

你可能感兴趣的:(论文阅读)