利用CNN进行句子分类的敏感性分析

原文标题

A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification

Introduction

  1. 与逻辑回归、SVM相比,在文本分析中CNN应用困难的原因在于存在太多人为确定的超参。
  2. CNN训练缓慢——在SST-1数据集上,进行10-fold交叉验证训练需要1个小时
  3. 可能的超参和模型结构太多,至少需要确定:词向量表达式、过滤层尺寸、特征数、激活函数、池化策略、正则项。
  4. 调参的优化方法包括:随机搜索、贝叶斯优化,但这些方法需要明确开始调整的参数和调整范围。
  5. 本工作致力于从经验上确定一些和数据集无关的超参的最佳取值,以及所有超参最佳的取值范围。
  6. 本文介绍了不同的超参设置在9个文本数据集上的训练结果,准确性以AUC和平均准确率的方式呈现。

Background

  1. 目前使用CNN进行本文分类的输入均使用词向量或词嵌入
  2. 设一个句子长度为s,词向量长度为d,则一个句子对应的矩阵A∈R^{s*d}
  3. 对于一个filter,显然其是一个d*h的矩阵,h为region size
  4. 从A中选取连续的h行(即连续的h个单词),则oi=w·A[i:i+h-1],输出为d*d的矩阵,显然共有s-h+1个o
  5. 对应的特征矩阵为ci = f(oi+b)
  6. 可见特征矩阵的维度和句子的长度以及region size有关,因此在训练之前还需要进行池化
    常用的池化方法:1-max pooling,而后将各个filter对应的池化结果串联,作为一个单独的特征向量。
  7. 而后通过soft-max,计算分类结果,同时可使用dropout进行正则化防止
  8. 损失函数:交叉熵绝对值,涉及的参数是filter的权重矩阵、计算feature map c的偏差矩阵,以及soft-max的权重矩阵。

Baseline Model

  1. bowSVM: unigram and bigram features; wvSVM: average word vector; bowwvVM: concatenates bow vectors with average word2vec representations.
  2. word2vec, GloVe
  3. tuned hyperparameters via nested cross-fold validation

Effect

词向量的影响

  1. One-hot 词向量+单层CNN在文本分类上取得了好成绩,但在句分类上表现较差。
  2. 结论:当训练数据足够时,使用embedding的效果是好的

Region size的影响

  1. 常规的region size最优取值是1~10
  2. 对于句子长度较长的情况,要相应增加
  3. 可以使用combine several region sizes的方法获得更好的结果

Number of feature maps的影响

  1. 当特征数超过600时,会发生过拟合

激活函数的影响

  1. ReLU、tanh、Sigmoid、SoftPlus、Cube、tanh Cube、以及No function
  2. 整体来看,tanh的表现要优于ReLU,,甚至Iden(无函数)都要更好
  3. ReLU能够加速SGD收敛
  4. 当有多层隐藏层时,Iden将不再合适

池化策略的影响

  1. 1-max pooling是最好的

正则化的影响

  1. Drop out+L2 范数约束
  2. 改变drop out rate, 固定L2 norm为常数
  3. 结论:没有太大影响,建议rate在0到0.5之间,非0,以及使用较大的L2限制

结论

  1. word2vec、GloVe都要比one-hot好
  2. filter region size是调参的重点之一
  3. feature maps number也是调参重点
  4. 1-max pooling和Regularization相对影响较小
  5. 建议使用non-static embeddings
  6. 当增加feature maps number时,使用更大的正则化参数

你可能感兴趣的:(MachineLearning,NLP)