基于 CNN 的文本分类算法

2020-01-13  本文已影响0人  NLP与人工智能

CNN 是卷积神经网络,通常用于图像领域,并且在图像分类取得非常好的效果。2014 年 Yoon Kim 在论文《Convolutional Neural Networks for Sentence Classification》中将 CNN 的思想应用到文本处理中,后续很多把 ConvNet 用在 NLP 任务上的工作都是基于这篇论文进行的。

1. CNN 文本分类模型

本文主要是对原始论文《Convolutional Neural Networks for Sentence Classification》内容的整理,首先了解 CNN 文本分类模型整体结构,下图是论文中的模型图。

CNN 文本分类模型

可以看到模型比较简单,主要分为四个部分:输入层、卷积层、最大池化层、全连接层。

1.1 输入层

给定一个句子,输入层接收的输入是一个句子单词词向量矩阵 XX 是一个 (n×k) 的矩阵,n 表示句子中单词数量,k 表示词向量维度。可以看到 X 的每一行对应了一个单词的词向量,而单词的词向量按照它们在句子中的顺序进行排列。

1.2 卷积层

在得到输入的词向量矩阵 X 之后,需要对 X 进行卷积操作。卷积核是一个 (h×k) 的矩阵,注意卷积核的列数是固定的 (为 k),与词向量维度一样。卷积核不断地向下移动,得到卷积后的值。

卷积层

因为卷积核的列数与词向量矩阵 X 是一样的,所以经过卷积后的 feature map 也只有一列。有多个卷积核会生成多列向量,如下图所示,下图为 4 个卷积核卷积后的输出。

4 个卷积核

1.3 最大池化层

在卷积层中,多个不同的卷积核会生成多列向量 (feature map),最大池化会取出每一列中的最大值,最终形成一个一维向量。

1.4 全连接层

最后一层是全连接层,全连接层使用了 Dropout 防止过拟合,然后利用 Softmax 进行分类。

2. 模型的其他细节

2.1 使用多个不同尺寸的卷积核

刚刚我们了解到这个模型的卷积核列数必须为 k,但是其高度 (行数) 是可以变的,在使用的过程中可以采用不同高度的卷积核进行卷积操作,如下图所示。

多个不同尺寸的卷积核

2.2 模型的变种

作者在论文中还提出了模型的 4 种变种

下图是 4 种模型的结果,可以看到 CNN-static 比 CNN-rand 效果更好,说明使用预训练的词向量比较有效;另外 CNN-non-static 比 CNN-static 效果要好,说明微调会使词向量更加适合当前任务。在实验中 CNN-multichannel 通常在小数据集效果更好。

实验结果

3. CNN 文本分类总结

CNN 用于 NLP 任务中与 N-Gram 有相似之处,我们定义卷积核的高度为 3,则相当于使用卷积核在句子中进行一个 3-Gram 的操作,同时 CNN 具有很高的效率,比传统 N-Gram 要快很多。

CNN 中的卷积核宽度要与词向量的维度一样大,并且卷积核是在句子中单词的方向上进行移动的。

参考文献

论文:Convolutional Neural Networks for Sentence Classification
Understanding Convolutional Neural Networks for NLP

上一篇下一篇

猜你喜欢

热点阅读