论文笔记《Character-level Convolutional Networks for Text Classification》

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维长度的向量表示,所以首先为我们要训练的语言建立一个大小为m的字母表,字母表由l0个字符组成,然后使用“1- of - m”或“one - hot”编码每个字符。超过出l0的任何字都被忽略掉,以及,任何不在我们定义的字母表中的字符(比如空白字符)都用零向量表示。字符量化顺序是向后的,因此最新读取的字符始终位于输出的开头附近,这使得全连接层可以轻松地将权重与最新读数相关联。

上面提到的m就是下面提到的1024,l0就是下面的70.

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


模型设计

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



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

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



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


使用词典进行数据扩充

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

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

论文实现代码:

https://github.com/zhangxiangxiao/Crepe (Torch)

https://github.com/mhjabreel/CharCNN (Tensorflow)

https://github.com/srviest/char-cnn-text-classification-pytorch (PyTorch)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容