【论文笔记】Character-level Convolutional Networks for Text Classification

文章目录
  1. 1. 前期知识补充
    1. 1.1. 文本分类
    2. 1.2. 机器学习
  2. 2. 论文主要内容
    1. 2.1. 模型主要模块
    2. 2.2. 字符量化
    3. 2.3. 模型设计
    4. 2.4. 比较模型
    5. 2.5. 大规模的数据集和结果

本篇论文笔记基于《Character-level Convolutional Networks for Text Classification》。

注:笔记学习参考深度之眼人工智能Paper训练营NLP方向第九课时课程。

前期知识补充

文本分类

文本分类就是根据文本内容将其分到合适的类别。

文本分类发展历史如下:

机器学习

人工特征工程:
1.设计特征
(1) 统计词表内所有词在文本中出现的频率;
(2 )计算词表中每个词在文本中的TF-IDF;
(3) 统计N-gram词组信息;

2.特征选择和特征降维
(1) 信息增益,互信息等;
(2) PCA,SVD;

浅层分类模型:
SVM,KNN,决策树。

注:一般机器学习的方法可以作为baseline来体现深度学习的优势。

论文主要内容

模型主要模块

主要组件是时间卷积模块,它简单地计算一维卷积。
假如有一个离散输入函数:

还有一个离散的核函数:

然后卷积:

是基于f(x)和g(x)之间,并且步长d定义为:

其中c=k-d+1是一个偏移常量。正如在视觉中的传统卷积网络中一样,模块通过一组内容函数fij(x)(i=1,2,…,m和j=1,2,…,n)我们称之为权重,在一组输入gi(x)和输出hj(y)上进行参数化,我们调用每个gi(或hj)输入(或输出)功能,以及m(或n)输入(或输出)功能大小。输出hj(y)是通过gi(x)和fij(x)之间的卷积的总和来获得的。

另一个帮助训练更深层次模型的关键模块是最大池化,它是计算机视觉中使用的最大池化模块的1维版本,给定离散输入函数:

g(x)的最大池化函数:

可以定义为:

其中c=k-d+1是偏移常量。这个极池化的模块允许我们训练卷积网络深度超过6层,而其他的都失败了。

模型中使用的非线性是整流器或阈值函数 h(x)=max{0,x},它使得卷积层类似于整流线性单元(ReLU)。使用的算法是具有128个小批量的随机梯度下降,使用动量0.9和初始步长0.01,每3个时间段减半,持续10次。每个时期采用固定数量的随机训练样本,这些样本在类之间均匀采样。

字符量化

作者的模型接受一系列编码字符作为输入。通过为输入语言规定大小为m的字母表来完成编码,然后使用1-m编码(或“one-hot”编码)对每个字符进行量化。然后,将字符序列转换为具有固定长度的这种m大小的向量的序列。任何超过长度的字符都将被忽略,并且包含空白字符的字母表中不包含的任何字符都将被量化为全零向量。字符量化顺序是向后的,因此最新的字符读取始终位于输出的开头附近,使得完全连接的图层可以轻松地将权重与最新读数相关联。

模型中所有的字母都是是70个字符构成的,包括26个英文字母,10个数字,33个其他字符和其他新行字符。

模型设计

作者设计了两个卷积网络,一个大型一个小型,它们都是9层深,有6个卷积层和3个完全连接的层。

由于我们的字符量化方法,输入的特征数等于70,输入特征长度为1014。似乎1014个字符已经可以捕获大部分感兴趣的文本。我们还在3个完全连接的层之间插入2个dropout模块以进行规范化。他们的dropout概率为0.5。下面列出了卷积层的配置,卷积层步长均为1:

作者使用高斯分布初始化权重。用于初始化大型模型的平均值和标准偏差为(0,0.02)和小模型(0,0.05)。
下图列出了全连接层的配置:

对于不同的问题,输入长度可能不同(例如在我们的情况下为lo=1014),帧长度也是如此。从我们的模型设计中,很容易知道给定输入长度lo,最后一个卷积层之后(但在任何完全连接的层之前)的输出帧长度是l6=(lo-96)/27。此数字乘以第6层的帧大小将给出第一个完全连接的层接受的输入维度。

比较模型

作者使用传统的机器学习方法中的BOW还有TF-IDF模型以及深度学习中的LSTM来和他们提出的CovNet进行比较。
在基于词的CovNet中,其中一个差异是使用预训练或端到端学习单词表示的选择,作者提供了word2vec和查表的方式来比较。两种情况下的嵌入尺寸都是300维。

大规模的数据集和结果

使用的数据集大小类别如下:

各个数据集在不同的模型上的结果:

模型的对比误差如下: