文本分类方法TextCNN原理介绍

一句话:先将文本分词做embeeding得到词向量, 将词向量经过一层卷积,一层max-pooling, 最后将输出外接softmax 来做n分类。 


textCNN是什么

TextCNN是利用卷积神经网络对文本进行分类的算法。由 Yoon Kim 在 “Convolutional Neural Networks for Sentence Classification” 中提出,是2014年的算法。

该论文的motivation:

  1. 深度学习模型在计算机视觉与语音识别方面取得了卓越的成就. 在 NLP 也是可以的.
  2. 卷积具有局部特征提取的功能, 所以可用 CNN 来提取句子中类似 n-gram 的关键信息.

主要步骤如下:

  1. 第一步,对本文进行分词,使用Word Embedding对分词构建词向量。这样做的好处主要是将自然语言数值化,方便后续的处理。
  2. 第二步,对第一步得到的词向量做卷积。卷积是一种数学算子,它的作用是对文本进行特征抽取,经过卷积操作后,得到一个新的矩阵。
  3. 第三步,对上一步结果进行max-pooling,原理主要是从多个值中取一个最大值。该操作在保持主要特征的情况下, 减少了参数的数目,进一步加速计算,同时降低了过拟合的风险。
  4. 第四步,使用softmax层做k分类。将max-pooling的结果拼接起来, 送入到softmax当中, 得到各个类别的概率。如果是训练过程的话,便会根据预测label以及实际label来计算损失函数, 得到网络中需要更新参数梯度, 来依次更新这四个步骤中的参数,完成一轮训练。

优点

  1. TextCNN最大优势网络结构简单 ,在模型网络结构如此简单的情况下,通过引入已经训练好的词向量依旧有很不错的效果,在多项数据数据集上超越benchmark。 

  2. 网络结构简单导致参数数目少, 计算量少, 训练速度快,在单机单卡的v100机器上,训练165万数据, 迭代26万步,半个小时左右可以收敛。

缺点

  1. 模型可解释型不强,在调优模型的时候,很难根据训练的结果去针对性的调整具体的特征,因为在textCNN中没有类似gbdt模型中特征重要度(feature importance)的概念, 所以很难去评估每个特征的重要度。

Guess you like

Origin blog.csdn.net/pearl8899/article/details/120123302