论文笔记《Character-level Convolution

作者: 阡陌哥哥 | 来源:发表于2018-08-14 20:09 被阅读11次

    Introduction

    一方,面目前文本分类技术主要考虑词或词的组合;另一方面,研究表明,卷积神经网络在从原始信号中抽取信息的方面,非常有用。在这篇论文中,作者将字符级的文本当做原始信号,并且使用一维的卷积神经网络来处理它。研究表明,单词嵌入表示可以直接用于卷积神经网络,而无需考虑语言的语法或语义结构。

    这篇论文,仅仅使用字符,运用在卷积神经网络上。作者发现,当训练大规模数据集的时候,深度卷积神经网络并不需要单词层面的意义(包括语言的语法和语义)。这是非常激动人心的工程简化,因为不管什么语言,它都是由字符组成的,因此这对于构建跨语言的系统至关重要。还有一个好处,对于异常的字符组成(比如拼写错误)和表情符,该模型依然能够应付。

    Character-level Convolutional Networks

    下面介绍这个用于文本分类的字符级ConNets的设计,该设计是模块化的,并且采用反向传播进行优化。

    假设我们有一个离散的输入函数g(x),它的取值范围是[1, l](小写L)中的实数。有一个离散的核函数f(x),它的取值范围是[1, k]中的实数。f(x)和g(x)以步长为d的卷积h(y)

    可定义为:

    其中,c = k - d + 1 是一个偏移常数。就像计算机视觉中的传统卷积神经网络,模型通过一系列的核函数来参数化,在输入为gi(x)和输出为hj(y)的时候,这些核函数我们表示为fij(x),(i = 1, 2,......,m,以及j = 1, 2,...,n),我们也将其称为权重。我们将每个gi称为输入特征,每个hj称为输出特征,m叫输入特征大小,n叫输出特征大小。输出hj(y)是通过gi(x)和fij(x)之间的卷积核来得到的。 帮助我们训练较深模型的一个关键模块是有时做的最大池化操作。若有一个离散的输入函数g(x),它的取值范围是[1, l](小写L)中的实数。则它的最大池化操作函数h(y)

    可定义为:


    注意论文中的这种写法可能容易导致和上面的混淆,但只要理解卷积神经网络模型,还是很清楚的。如果有点晕,不防去看看卷积神经网络的模型。

    同样,c = k - d + 1 是一个偏移常数。这个特有的池化模型能够使我们训练深度超过6层的ConNets。

    我们的非线性处理使用的是h(x) = max{0, x},这就比较像ReLUs了。算法使用的是随机梯度下降法,最小批量大小是128,使用0.9的动量以及0.01的初始步长,步长每3个时段减半,持续10次。每个时段都从各类中随机采取相同数量的样本。

    实验

    实验使用的是Torch 7这个框架。

    字符的量化方法

    首先,我们为我们要训练的语言建立一个大小为m的字母表,然后使用“1- of - m”或“one - hot”编码每个字符,论文中说“the sequence of characters is transformed to a sequence of such m sized vectors with fixed length l0.”我的理解当是,这里说的字符序列应该指的是比如一个单词,每个单词都由不同的字符组成,且不一定长度相同,但作者将每个字符序列(比如“number”或“weight”)都转换成固定长度为l0的矢量表示,其中每个字符是m维的向量。长度超过 l0.的任何字都被忽略掉,以及,任何不在我们定义的字母表中的字符(比如空白字符)都用零向量表示。字符量化顺序是向后的,因此最新读取的字符始终位于输出的开头附近,这使得全连接层可以轻松地将权重与最新读数相关联。

    在我们所有的模型中使用的字母表总共70个字符,包含26个英文字母,10个数字,33个其他的字符等,如下所示:


    模型设计

    我们设计了一大一小两个卷积网络,他们的深度都是9层,包括6个卷积层和3个全连接层,如下图所示:



    由于我们的量化方式,输入特征是70维的,即有70个特征,并且每个特征的长度是1014(对于不同的问题可能不一样)。看来,似乎1014个字符已经能够捕获大部分我们感兴趣的文本了。另外,我们在3个全连接层之间插入两个dropout模块以实现正则化(regularize)。(dropout一般是用来防止过拟合的)他们dropout的概率是0.5。

    下表1列出了卷积层的所有配置,表2列出了全连接层的配置。



    我们使用高斯分布初始化权重,初始化大模型和小模型的平均值和标准差分别是(0, 0.02)和(0, 0.05)。


    使用词典进行数据扩充

    研究表明,合适的数据扩充可以降低泛化误差。但文本的数据扩充不能像图像和语言进行数据转换,因为文本的序列顺序蕴含着丰富的语法和语义,因此最好的数据扩充方式应该是使用人类的重述文本类,然儿,由于数据集的庞大,这会导致昂贵的代价切不现实。综上,我们一般使用词汇和词组的近义词进行替代扩充。

    当前研究中,我们使用一份英语词典进行实验数据扩充。

    相关文章

      网友评论

      • 邵兴林:你好,L0这个地方是不是理解错了?应该指的是所有字符(即整个输入)的限制长度,而不是每个单词的字符限制长度吧

      本文标题:论文笔记《Character-level Convolution

      本文链接:https://www.haomeiwen.com/subject/fsmubftx.html