TextCNN算法

132 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

CNN(卷积神经网络)实际上就是设置多种卷积核对输入的二维数据进行卷积运算,同时在每层加上非线性的激活函数,例如:Relu函数或者tanh函数。CNN与传统的神经网络不同,它利用输入二维数据的卷积结果计算输出结果而不是直接将当前层的输出结果作为下一层神经网络的输入,使用这种方式类似于局部连接,每一块局部区域的卷积计算结果与下一个神经元相连接。对每一层使用不同的卷积核,并且可以设计不同的卷积核个数,然后通过merge层将结果汇总。然后将汇总的结果输入池化层,通常选择最大化策略将汇总结果降维成一维向量。通过资料库进行训练时,CNN网络会不断学习每一种卷积核最佳的权重值,在网络的最后一层设置分类器进行分类,卷积核计算过程如图所示。

image.png

(1)当CNN用于文本分类时,如上图所示,首先将文本分词然后向量化通常使用word2vec实现。

(2)k表示词向量的维度,n是一段文本的长度。文本被表示成[sentence_lengh * word_dimension]的一个二维向量。图中表示为7*5。

(3)在对图像进行处理时,卷积核可以设置相应的参数对某一块区域进行计算。但在处理自然语言文本时卷积核一般是覆盖几个词即(上下几行)。因此,卷积核的宽度一般就是每一个词向量的向量维度,卷积核的高度可以自由设置以适应不同的任务,但是通常情况下卷积核上下移动的范围是2~5行。

(4)示意图中我们设置了两种滤波器,分别是高度为2以及高度为3,得到4个feature map。

(5)每种滤波器对相应区域进行卷积运算,将得到的结果通过merge层进行汇总,然后将汇总结果经过池化层的处理,一般采用最大值策略进行池化操作。

(6)最后将这个四个特征向量拼接成一个向量,然后将这个向量输入最后设置的softmax层,进行分类处理,这里假设一共有五个类别,那么最后将得到五个可能的结果。