一 写在前面
未经允许,不得转载,谢谢~~
这篇主要是我这学期深度学习课程的作业,所以选了一篇NLP方向的简单学习一下。接下来有时间的话再整理一篇关于用DPCNN模型在AG news数据集上进行新闻类别分类任务的实验复现情况~~~
文章基本信息:
- ACL2017
- 原文链接
这篇文章的主要任务是做文本分类的,主要贡献在于提出了一个简单有效的深度金字塔神经卷积网络DPCNN模型。
关键词:text categorization, DPCNN;
二 基本背景介绍
1. 任务描述
- 文本分类是一个十分重要的任务,其应用场景包括垃圾邮件检测,情感和主题分类等。
- 近几年,神经网络利用词序进行文本分类的方法非常有效。最早是简单的浅层卷积神经网络,最近提出了更为复杂的深层神经网络,需要大概一百万的文档作为训练数据;
2. 论文动机
- 之前的实验已经证实单词级别的CNNs比字符级别的CNNs能更有效表达信息;
- 论文作者想为文本分类任务设计一个高效的深层单词级别的 CNNs 架构;
- 所以文章提出了一个DPCNN深层金字塔卷积神经网络,至于为什么叫深层金字塔以及这个模型有哪些优点会在接下来的模型结构分析中给出解释。
三 模型及方法介绍
1 DPCNN模型简介
先来看一波模型结构图:
我们自下而上看网络的处理过程:
- 输入一个句子"a good buy. ”, 先不管虚线框内的'unsupervised embedding'部分,直接到网络的第一个文本区域嵌入层 ( region embedding) ,这个层就是用在自然语言领域通常使用的词嵌入 (word embedding) 方式为句子中的每个词都生成向量表示;
- 在得到文本的向量表示之后,将这些特征向量依次输入到后面的卷积块中进行卷积操作提取文本信息,每个卷积块都由两个卷积层以及从输入直接到输出的 shortcut 残差连接构成。而卷积块与卷积块之间又由步长为 2 的池化层进行连接。
- 网络模型的最后一个池化层用于接受最后一个卷积块的输入(模型中所有的池化层均采用max pooling),最终得到表示文本的特征向量。
注: 关于文中的unsupervised embeddng
层是作者使用的一种训练技巧,对整个网络影响不大,关于具体的细节我看的不是很懂,从实验复现的情况来看这个部分的影响应该也不是很大,所以就不在这里描述了,这个部分感兴趣的可以去看一看原文(o゚▽゚)o
我们从网络层的设计情况也分析可以得到DPCNN 的关键特性:
-
在特征图维度固定的情况下降采样:
- 在每个卷积块之后都用大小为 3 的卷积核进行步长为 2 的最大池化操作。这样既可以得到相邻3个文本区域的中间特征表示,步长为2的池化操作又将每个文本的中间表示直接减少了一半。
- 很多现有模型都会在降采样的过程中增加特征图的维度,这会直接影响模型的计算复杂性。文章发现这些增加的维度除了增大计算复杂度外并没有带来模型准确度上的提升,因此文章采用了保持特征图维度不变(channel_size=250)的方式。
- 在此基础上,每次进行补偿为2的降采样操作都会导致卷积层的操作时间直接减半,这也是为什么本文将之称之为金字塔 (pyramid) 卷积神经网络的原因。如下图 2所示即为金字塔计算时间示意图。
- 基于以上的原理,DPCNN 网络模型能够保证总的计算时间也是固定不变的,其值等于单个卷积块计算时间的两倍,这在计算时间上非常具有友好性。
- 另外,步长为2的降采样操作可 以是得卷积操作的有效覆盖面积加倍。具体来说,经过 L 次这样的降采样操作后可以建立 起相邻 2L 个单词之间的联系得到特征表示。
- 因此,DPCNN 模型不仅在模型计算上具有有 效性,还能更好的表示长距离的关系,从而学习到更多的全局信息。
-
使用shortcut,且不需要做维度匹配:
- 在卷积块的设计中使用了 shorcut连接的方式,使得网络可以扩展为深层网络进行参数的训练。
- 虽然 shortcut 的用法是从 ResNet中借鉴过来的,但是 DPCNN模型比 ResNet 更加简单,因为 DCPNN 中的 shortcut 连接接近等值连接, 这个过程不需要做任何的维度匹配工作。
- 在DPCNN中,当 shortcut 碰上主流 (main street) 的时候,两边的数据维度是一样的,所以可以直接进行相加操作。当 shortout 中使用了类似于降采样等其他不同维度的特征图的时候就需要面临维度不匹配的问题,通常情况下需要在相加之前进行维度增加工作,这就会导致网络训练参数的增加和计算量的增大。
- 所以本文采用固定维度且不在卷积块内部采用降采样的方式,避免了维度不匹配以及由于维度不匹配带来的 网络参数增加的问题。整个网络会比较简单而且计算高效。
2 文本区域嵌入
这个部分我省略了unsupervised embedding的部分。
基于 CNN 卷积神经网络的文本分类方法通常从词嵌入(word embedding),即将文本中的每个单词转换为向量这一步工作开始。本文采用了一种更加通用的文本区域嵌入(region embedding)方法。
在区域嵌入层 (region embedding) 为文档中的每一个单词都计算 Wx+b,其中 x 表示 k个单 词的区域,权重参数 W 以及偏置参数 b 都由神经网络训练学习得到。定义 v 为单词词汇库的大小,即单词个数,那么对于 k 个单词区域具有如下三种典型的表示方法:
- 顺序输入:由 k 个单词的 one-hot 形式的向量 (维度为 v) 堆叠而成;
- 词袋模型:由 v 维的词袋向量构成;
- n-gram 模型:由区域中的单个词、两个词组或者三个词组构成的词袋表示;
用顺序输入的区域嵌入方式跟直接将一个卷积层应用在一系列 one-hot 向量上来表示一个文 档的效果是一样的。当k设置为1,即只有一个单词的时候,以上三种方式都退化成词嵌入。
区域嵌入层旨在获取比单个独立单词更加更复杂的语义信息,因此也有一些网络会用多层卷积来提取词嵌入中的特征,但通常情况下更少的层数意味着网络更加容易优化。
除此之外,最佳输入类型和最佳的区域大小只能通过经验来判定。
四 写在最后
我的方向是CV的,虽然选择了一篇结构和方法都较为简单的论文,但是也不能保证没有解读有偏颇甚至是错误的地方,路过的NLP大佬们还请多多包涵嘻嘻~~
有什么不对的欢迎评论或者简信,感谢。
文章在AG news上复现的实验能够达到91.49%的准确度,所以后面准备再整理一篇具体的实验过程的博客,欢迎关注喽ヾ(◍°∇°◍)ノ゙
最后感谢阅读~~~