深度学习在NLP中的应用——TextCNN

2022-03-04 17:36:11 浏览数 (1)

1. 概述

卷积神经网络(Convolutional Neural Networks,CNN)的提出使得深度学习在计算机视觉领域得到了飞速的发展,大量基于CNN的算法模型被提出,同时深度学习算法在多个视觉领域实现了突破。最初在文本领域,主要使用的深度学习模型是RNN,LSTM等,既然CNN在图像领域得到广泛的应用,能否将CNN算法应用于文本分类中呢?Kim在2014的文章《Convolutional Neural Networks for Sentence Classification》成功将CNN模型应用在文本分类中。

2. 算法原理

2.1. 卷积神经网络

卷积神经网络中最重要的两个操作是卷积和池化,由卷积 池化构成CNN的基本操作,通过堆叠卷积 池化的过程实现图像深层语义特征的抽取。卷积神经网络的基本结构如下图所示:

在图中的CNN网络由两组基本操作(卷积Convolutions和池化Subsampling)和全连接层构成。卷积操作是CNN 中最为重要的部分,与全连接层不同,卷积层中每一个节点的输入只是上一层神经网络中的一小块,如下图所示:

通过卷积核(如图中的卷积核大小为3times 3 )对二维的图像(图像大小为6times 6 )进行卷积操作,得到的大小为4times 4 。池化操作可以有效地缩小特征图的大小,池化又可以分为最大池化(max-pooling)和平均池化(average-pooling),以最大池化为例,池化层的操作如下:

2.2. TextCNN的算法原理

为了能够将CNN应用在文本建模上,需要对图像和文本的特征做比较。有了如上对卷积神经网络的基本了解,对于图像特征,可以看成是二维的,又长和宽构成(通常还有深度,此处以二维的为例),对应的卷积核也是二维的。然而对于文本的特征,通常是一维的,只存在时间维度。对于将CNN应用在文本建模上如下图所示:

其中,x 表示的每个词的词向量维度。TextCNN的网络结构如下图所示:

如上如所示,TextCNN的模型结构中主要包含如下的几个部分:

  • Embedding层:将词映射成对应的向量。以上图为例,7个词被影射到对应的k 维向量中,构成7times k 的矩阵;
  • Convolutional层:对词映射后的特征做一维卷积操作;
  • Pooling层:对卷积后的结果做pooling操作,如图中采用的是max-pooling;
  • 全连接层:最后接一层全连接的 softmax 层,输出每个类别的概率。

对于TextCNN的详细的计算过程,如下图所示:

如上图所示,假设输入的文本为“I like this movie very much!”,假设每一个词的维度为d=5 ,则输入的特征大小为7times 5 ,如图中设计6 个卷积核,从上到下大小分别为:4times 54times 53times 53times 52times 52times 5 ,计算得到6 个特征图,从上到下的大小分别为:4times 14times 15times 15times 16times 16times 1 ,采用最大池化,最终得到6times 1 的语义特征,最终通过全连接网络得到最终分类目标。

2.3. 词向量的计算方法

词向量的计算方法主要有两种方式:

  • 动态:通过随机初始化词向量,并在模型的训练过程中同步学习词向量的表示,适用于数据量比较大的情况;
  • 静态:利用word2vec等词向量训练方法,通过预先训练得到固定的词向量,在使用的时候通过查表的方式取得,不参与模型的训练。

参考文献

  • Y. Kim, “Convolutional neural networks for sentence classification,” in Proceedings of EMNLP 2014
  • Modern Deep Learning Techniques Applied to Natural Language Processing
  • cs231n.github.io/convolutional-networks

更多优质内容可以访问:www.felixzhao.cn

0 人点赞