TextCNN原理记录

最近在做基于深度学习的文本分类,目前常见的神经网络主要有CNN和RNN,相对来说CNN的速度较快。在这里对于CNN用于文本分类的理解做一下记录,主要基于论文和网上的一些参考资料。

一、论文原件

论文题目:Convolutional Neural Networks for Sentence Classification
作者:Yoon Kim
论文下载地址:https://arxiv.org/abs/1408.5882
在2014年,Yoon Kim在论文中提出了采用卷积神经网络CNN用于文本分类,其核心思想是采用不同尺寸的滤波器来提取特征,相当于统计语言模型中n-gram。并在原文中使用了预训练的词向量和基于训练集的词向量进行了对应的比较。

二、TextCNN

2.1 模型结构

模型结构如下图所示:
TextCNN原理记录_第1张图片
在该模型中,输入是语料库中的每一个文本。其中文本中的每一个词或者字对应于一个k维的向量,若一个文本的长度是n也就是说由n个词或字组成,那么一个文本就可表示成n行k列的矩阵。其中将一个词或字映射成一个低维稠密的k维向量,目前主要基于word2vec或glove工具(如不懂词向量,可先行百度了解一下)。

2.2 卷积

在传统的机器学习方法中,如KNN,NB算法通常涉及到文本特征选择,而在CNN中,这里的卷积运算相当于对文本进行特征提取,不需要人为参与。下图所示为图像处理中的卷积运算:
TextCNN原理记录_第2张图片
上图中,右侧即为卷积后提取的特征。在文本中,滤波器的宽度即横向大小是固定的,也就是词向量的维度k,只能纵向滑动。如果滤波器横向滑动的话相当于把一个词从中间分开进行训练,这是不合理的。滤波器的高度h可以设定,原文设置为3-5,也就是每次扫描三个相邻的词,进行特征提取。图一模型结构中,红色和黄色区域对应不同高度的滤波器。然后通过最大池化层和全连接层进行类别预测。下图为最大池化示意图:
TextCNN原理记录_第3张图片

2.2 详细结构

TextCNN原理记录_第4张图片
说明:
输入层(嵌入层):输入为长度7,词向量维度为5的句子,也就是7x5的矩阵。
卷积层:卷积核(滤波器高度h)尺寸设置为2,3,4,每个尺寸的滤波器有两个,所以总共6个滤波器,如图中第二列所示。通过卷积运算后,每个尺寸的滤波器,产生两个特征图,共6个特征图。
最大池化层:通过最大池化层,对每个特征图选取最大特征后,进行拼接(concatenation),生成一个单一的特征向量,然后输入到全连接层,进行类别预测。上图中为二分类示意。

参考资料:

1.TextCNN算法分析
2.[NLP] TextCNN模型原理和实现
3.Convolutional Neural Networks for Sentence Classification

你可能感兴趣的:(文本处理,机器学习)