针对文本分类问题,作者在这篇论文里,详细讲解了如何对神经网络进行调参。论文主要内容如下。
1.论文背景
CNN已经广泛应用于文本分类任务中,但是训练模型需要精通模型结构,以及如何进行调参,包括filer的大小,正则化参数等等。而且模型的性能对参数非常敏感。这篇论文主要研究的是,单层神经网络调参。因为对于很多问题,单层CNN已经足够应对。作者最后给出了关于调参的实际建议。
2. Baseline模型
2.1 非NN模型:
首先比较了常用的非NN模型,包括线性kernel SVM模型,使用uni和bi-gram特征。然后比较了word2Vec和GloVe词向量,以及将二者组合,和RBF-kernel 的SVM模型。不同的模型比较结构如下图所示。
2.1 NN模型:
作者首先给出了一个NN baseline模型,在此的基础上进行调参。
3. 调参
3.1 词向量的影响:
比较了两种常用的词向量:word2vec和GloVe。词向量可以训练为动态(Non-static),否则为静态(static)。Non-static 均超过staic模型,所以在此只比较non-static模型。比较结果如下所示。
结论:Non-static word2vec-CNN表现最好.
3.2 filter大小的影响:
filter的大小起到非常大的作用,这是以前所没想到的。
从实验结果看出,filer size=7的时候表现最好,同时作者建议,对于更长的文本,可以尝试更大的filter。
多个filter相组合可以得到比单层CNN更好的结果。
结论:首先找到单层最佳的filter大小,建议范围1-10。最佳大小附近的几个数值相互组合能提高性能。
3.3 feature map数量的影响:
对于不同的数据集,feature map的最优数量差别很大,此处仅给出作者的实验结果,具体还有根据实际调参。作者实验的范围:10, 50, 100, 200, 400, 600, 1000,2000。
结论:根据实验结果而定,建议范围100-600。
3.4 激活函数的影响:
可供选择的激活函数有,ReLU,tanh,Sigmoid,SoftPlus。平常只用ReLU,可以尝试tanh。
结论:大部分情况下tanh,ReLU表现最好。
3.5 池化(pooling)的影响:
作者尝试了多种方法,包括:k-max(选取最大的k个值),平均池化等等。
结论:1-max pooling表现最好
3.6 正则化(regularization)的影响:
首先比较了Dropout的影响,实验范围: 0.0-0.9。实验发现Dropout带来的效果很小,和常见的结论所违背,有可能是因为只有一层神经网络。深层网络可能会带来明显的影响。
然后比较了L2范数的影响。此处严重超出认知,L2竟然可以设置这么大。
结论:Dropout和L2能带来巨大的影响。Dropout建议范围:0-0.5。可尝试较大的L2标准化。
4. 结论
4.2 结论汇总:
- 输入词向量的选择具有明显的影响,word2vec或者Glove均比单纯的onehot要好;
- filter的大小影响巨大,应该调参;
- feature maps的数量同样有小的影响;
- 1-max pooling要比其他池化策略都好;
- 归一化的影响很小。
4.1 调参步骤:
- 从baseline出发,使用non-static或者GloVe;
- 对filter size进行线性搜索直到找到最好的单个region size,过长文本可以尝试比较大的filter。一旦确定filter size,尝试多个filter并联;
- 从100到600调整feature maps的数量,使用比较小的Dropout rate(0.0–0.5),以及较大的L2 标准化;
- 考虑使用不同的激活函数,大部分情况下ReLU和tanh效果最好,可以尝试无激活函数;
- 使用1-max pooling;
- 当增加feature maps数量的时候,尝试增加归一化系数;