7. 文本分类——DPCNN模型

一、 简介

ACL2017 年中,腾讯 AI-lab 提出了Deep Pyramid Convolutional Neural Networks for Text Categorization(DPCNN)。

论文中提出了一种基于 word-level 级别的网络-DPCNN,由于 TextCNN 不能通过卷积获得文本的长距离依赖关系,而论文中 DPCNN 通过不断加深网络,可以抽取长距离的文本依赖关系。

实验证明在不增加太多计算成本的情况下,增加网络深度就可以获得最佳的准确率。‍

二、 模型结构

7. 文本分类——DPCNN模型

2.1 区域嵌入

这里是将TextCNN的包含多尺寸卷积滤波器的卷积层的卷积结果称之为区域嵌入,即对一个文本区域/文本片段(比如3-gram)进行一组卷积操作后生成的embedding。

这里不同于textCNN的二维卷积,DPCNN采用的是一维卷积。以3-gram为例子回顾textCNN,设置了一个大小为 3D3*D 的二维卷积核进行卷积操作(其中 DD 是词嵌入的维度),其实这是一种保留词序的做法。那么对于DPCNN,采用的是不保留词序的做法,即:首先对3-gram中的3个词的词向量取均值得到一个大小为 1D1*D 的向量,然后设置一组大小为 1D1*D 的一维卷积核对该3-gram进行卷积操作。

2.2 等长卷积

经过区域嵌入后,是两层卷积层,这里采用的是等长卷积,以此来提高词位embedding的表示的丰富性。
首先先介绍一下三种卷积的概念:
假设输入的序列长度为 n,卷积核大小为 m,步长(stride)为 s,输入序列两端各填补 p 个零(zero padding),那么该卷积层的输出序列为 (n-m+2p)/s+1。
①窄卷积:步长 s=1,两端不补零,即 p=0,卷积后输出长度为 n-m+1。
②宽卷积:步长 s=1,两端补零 p=m-1,卷积后输出长度 n+m-1。
③等长卷积:步长 s=1,两端补零 p=(m-1)/2,卷积后输出长度为 n。
输入输出序列的位置数一样多,即为等长卷积,该卷积的意义是:输出的词是由该位置输入的词以及其左右词的上下文信息提取得到的,也就是说,这个词包含被上下文信息修饰过的更高级别的语义。

2.3 下采样(1/2池化)

本文使用一个 size=3,stride=2(大小为3,步长为2)的池化层进行最大池化,在此称为1/2池化层。每经过一个1/2池化层,序列的长度就被压缩成了原来的一半。因此,经过1/2池化后,同样一个size为3的卷积核,其能够感知到的文本片段就比之前长了一倍。
在堆叠多层卷积池化层之后,就得到了加深的可以抽取长距离的文本依赖关系的网络。最后的池化层把每段文本聚合为一个向量。

三、总结

主要区别在于输入层由无监督词嵌入层作为输入,把文档的每个词的词向量作出二维数组作为输入;卷积层有两个卷积层组成,卷积层输入通过跳跃连接,恒等映射和卷积层输出相加作为卷积层输出;采样层以尺度大小为2进行下采样,达到尺度缩放的目的。堆叠几层卷积层和采样层,形成尺度缩放金字塔,达到维度缩放的目的。最终将卷积层输出拼接成向量通过隐藏层和softmax层作为输出分类。