《Convolutional Neural Networks for Sentence Classification》
别人的笔记
论文《Convolutional Neural Networks for Sentence Classification》总结 Convolutional Neural Networks for Sentence Classification论文解读
别人代码
pytorch
https://github.com/649453932/Chinese-Text-Classification-Pytorch https://github.com/Cheneng/TextCNN
tensorflow
https://github.com/brightmart/text_classification https://github.com/norybaby/sentiment_analysis_textcnn https://github.com/XqFeng-Josie/TextCNN
keras
https://github.com/yongzhuo/Keras-TextClassification https://github.com/ShawnyXiao/TextClassification-Keras
模型结构:
文章部分翻译
Abstract
我们报告了一系列的实验,使用卷积神经网络(CNN)在预先训练的单词向量上进行训练,用于句子级分类任务。我们证明了一个简单的CNN,具有很少的超参数调整和静态向量,在多个基准测试中取得了很好的结果。通过微调学习特定于任务的向量可以进一步提高性能。此外,我们还建议对体系结构进行简单的修改,以允许使用特定于任务的向量和静态向量。本文讨论的CNN模型改进了7项任务中的4项,包括情绪分析和问题分类。
2 Model
其思想是捕获最重要的特征,每个特征映射的值最高。这种合并方案自然处理可变的句子长度。
我们描述了从一个滤波器中提取一个特征的过程。该模型使用多个过滤器(具有不同的窗口大小)来获取多个特征。这些特征形成倒数第二层,并传递给完全连接的softmax层,该层的输出是标签上的概率分布。
在其中一个模型变体中,我们尝试使用两个字向量“通道”,一个在整个训练过程中保持静态,另一个通过反向传播进行微调(第3.2节)。在图1所示的多通道结构中,每个滤波器应用于两个通道,并将结果相加以计算等式(2)中的第i个c。该模型在其他方面等同于单通道体系结构。
2.1 Regularization
对于正则化,我们在倒数第二层上使用衰减,并对权重向量的l2范数进行约束(Hinton等人,2012)。在正向反向传播期间,通过随机退出(例如,将隐藏单元的比例p设置为零),退出防止隐藏单元的协同适应。也就是说,给定倒数第二层z=[c?1,…,c?m](注意,这里我们有m个滤波器),不在正向传播中使用y=w·z+b作为输出单元y,dropout使用y=w·(z? r) +b,其中? 是与元素等长的乘法运算符,r∈ m维空间,是概率p为1的伯努利随机变量的“掩蔽”向量。梯度仅通过未屏蔽单元反向传播。在测试时,学习的权重向量按p进行缩放,以使w?=pw,并使用w?(无辍学)对没见过的句子进行评分。此外,我们还通过在梯度下降步骤后| | w | | 2>s时重新缩放w使| | w | 2=s来约束权重向量的l2范数。
3 Datasets and Experimental Setup
3.1 Hyperparameters and Training
除了在开发集上提前停止之外,我们不会执行任何特定于数据集的调优。对于没有标准开发集的数据集,我们随机选择10%的培训数据作为开发集。使用Adadelta更新规则,通过随机梯度下降法对洗牌小批量进行训练(Zeiler,2012)
3.2 Pre-trainedWord Vectors
使用从无监督神经语言模型获得的词向量初始化词向量是在缺乏大型监督训练集的情况下提高性能的常用方法(Collobert et al.,2011;Socher et al.,2011;Iyyer et al.,2014)。我们使用公开可用的word2vec向量,这些向量是根据谷歌新闻1000亿字进行训练的。向量的维数为300,并使用连续词袋结构进行训练(Mikolov等人,2013年)。预先训练的单词集中不存在的单词将随机初始化。
为了理清上述变化对其他随机因素的影响,我们消除了随机性的其他来源CV折叠分配、未知词向量的初始化、CNN参数的初始化,使它们在每个数据集中保持一致。
|