本文主要是介绍Convolutional Neural Networks for Sentence Classification论文解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本信息
作者 | Yoon Kim | doi | |
---|---|---|---|
发表时间 | 2014 | 期刊 | EMNLP |
网址 | https://doi.org/10.48550/arXiv.1408.5882 |
研究背景
1. What’s known 既往研究已证实
CV领域著名的CNN。
2. What’s new 创新点
将CNN应用于NLP,打破了传统NLP任务主要依赖循环神经网络(RNN)及其变体的局面。
用预训练的词向量(如word2vec)作为输入,而不是传统的one-hot编码,提高了模型的泛化能力和性能。
采用了多个不同尺寸的卷积核来提取句子中的关键信息,类似于多窗口大小的ngram,从而能够更好地捕捉局部相关性,提高模型的特征提取能力。
3. What’s are the implications 意义
TextCNN模型结构相对简单,但计算快速、实现方便,且准确性较高
研究方法
1. TextCNN
● 嵌入层
embedding layer,用于把单词映射到一组向量表示。
● 卷积层
使用了多个filters,这里有3,4,5个单词一次遍历。
在处理图像数据时,CNN使用的卷积核的宽度和高度的一样的,但是在text-CNN中,卷积核的宽度是与词向量的维度一致。这是因为我们输入的每一行向量代表一个词,在抽取特征的过程中,词做为文本的最小粒度。而高度和CNN一样,可以自行设置(通常取值2,3,4,5),高度就类似于n-gram了。由于我们的输入是一个句子,句子中相邻的词之间关联性很高,因此,当我们用卷积核进行卷积时,不仅考虑了词义而且考虑了词序及其上下文(类似于skip-gram和CBOW模型的思想)。
● 池化层
max-pooling,就是选出其中最大的一个。
因为在卷积层过程中我们使用了不同高度的卷积核,使得我们通过卷积层后得到的向量维度会不一致,所以在池化层中,我们使用1-Max-pooling对每个特征向量池化成一个值,即抽取每个特征向量的最大值表示该特征,而且认为这个最大值表示的是最重要的特征。当我们对所有特征向量进行1-Max-Pooling之后,还需要将每个值给拼接起来。得到池化层最终的特征向量。在池化层到全连接层之前可以加上dropout防止过拟合。
● 全链接层
利用dropout防止过拟合,之后利用softmax将每个分类的score转化为概率。
通过score我们可以计算得出模型的loss,而我们训练的目的就是最小化这个loss。对于分类问题,最常用的损失函数是cross-entropy 损失。
【NLP】保姆级教程:手把手带你CNN文本分类(附代码)
结果与讨论
- 参数少,计算快,耗时少。
- 不可解释性强,计算时不能考虑到文本位置和顺序信息。
重要图
文献中重要的图记录下来
这篇关于Convolutional Neural Networks for Sentence Classification论文解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!