TextCNN

在文本分类时,可以使用卷积层进行文本特征抽取,模型结构如图:



首先利用卷积层和池化层,捕获序列特征,然后根据特征用softmax进行分类。
这里面主要涉及到两个操作,卷积操作和池化操作。

卷积操作

卷积神经网络的特点:

  1. 稀疏交互(sparse interactions): 也叫稀疏权重(sparse weights)、稀疏连接(sparse connectivity)
    在传统神经网络中,网络层之间输入与输出的连接关系可以由一个权值参数矩阵来表示。对于全连接网络,任意一对输入与输出神经元之间都产生交互,形成稠密的连接结构。这里面的交互是指每个单独的参数值,该参数值表示了前后层某两个神经元节点之间的交互。

在卷积神经网络中,卷积核尺度远小于输入的维度,这样每个输出神经元仅与前一层特定局部区域内的神经元存在连接权重(即产生交互),我们称这种特性为稀疏交互。

稀疏交互的物理意义:通常图像、文本、语音等现实世界中的数据都具有局部的特征结构, 我们可以先学习局部的特征, 再将局部的特征组合起来形成更复杂和抽象的特征。

  1. 参数共享(parameter sharing)
    参数共享是指在同一个模型的不同模块中使用相同的参数。卷积运算中的参数共享让网络只需要学一个参数集合,而不是对于每一位置都需要学习一个单独的参数集合。

参数共享的物理意义:使得卷积层具有平移等变性。在第三个特点中会谈到。

显然,我们可以看到,卷积神经网络在存储大小和统计效率方面极大地优于传统的使用矩阵乘法的神经网络。

  1. 等变表示(equivariant representations)
    假如图像中有一只猫,那么无论它出现在图像中的任何位置,我们都应该将它识别为猫,也就是说神经网络的输出对于平移变换来说应当是等变的。特别地,当函数f(x)与g(x)满足f(g(x))=g(f(x))时,我们称f(x)关于变换g具有等变性。在猫的图片上先进行卷积,再向右平移l像素的输出,与先将图片向右平移l像素再进行卷积操作的输出结果是相等的。
    (二)卷积(convolution)操作
    卷积运算实际是分析数学中的一种运算方式,在卷积神经网络中通常是仅涉及离散卷积的情形。因卷积运算的作用就类似于滤波,因此也称卷积核为filter即滤波器的意思。滤波器可以从原始的像素特征中抽取某些特征,如:边缘、角度、形状等。而在实际上,在卷积神经网络中我们并不会手工设计卷积核中的每个卷积核点值,而是通过学习算法自动学得卷积核中每个位置的值。

单个卷积核只能提取一种类型的特征,那么我们若想使卷积层能够提取多个特征,则可以并行使用多个卷积核,其中每个卷积核提取一种特征。

另外,必须要说明一下,现在大部分的深度学习教程中都把卷积定义为图像矩阵和卷积核的按位点乘。实际上,这种操作应该是互相关(cross-correlation),而卷积需要把卷积核顺时针旋转180度(即翻转)然后再做点乘。互相关是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。互相关和卷积的区别仅仅在于卷积核是否进行翻转,因此互相关也可以称为不翻转卷积。
下面将说明卷积层的参数含义:

在textCNN模型中,我们通常使用的是一维卷积,涉及到的以下几个参数(以keras中为例):
filters:卷积核数目,对于每一种尺寸的卷积核都会有这么多个相同的,因为每个卷积核只能够提取某一个特征。
kernel_size:卷积核尺寸,一个整数值,因为是一维卷积核,所以卷积核的尺寸就只有一个参数,比如卷积核的kernel_size是3,那就表示该卷积核可以捕获序列窗口为3的相关信息,由于是一维卷积,所以卷积核会将embedding维度看做channel,所以实际的卷积核是3*embed_size大小。
strides: 步长,表示卷积核在序列维度上每次移动的距离。
padding: b是否有padding操作,有两个取值,same和vaild,vaild就是不填充,same是填充,填充多少回根据其余参数自动选择。

了解一个结构的功能,可以从tensor的输入和输出入手,我们假设输入的shape为[batch_size,seq_len,embed_size],那我们在经过一维卷积之后,[batch_size,new_len,filters]
这里的new_len是和本身参数有关的,如果padding参数是vaild,则一般可以由如下计算得到:
new\_len =ceil( \frac {seq\_len-kernel\_size+1}{stride} )
如果padding参数是same,则
new\_len =ceil( \frac {seq\_len}{stride} )

池化(pooling)操作

池化也叫做亚采样、下采样(downsampling)或子采样(subsampling),主要针对非重叠区域,包括均值池化(mean pooling)、最大池化(max pooling)。池化操作的本质是降采样。例如,我们可以利用最大池化将4×4的矩阵降采样为2×2的矩阵。

均值池化通过对邻域内特征数值求平均来实现,能够抑制由于邻域大小受限造成估计值方差增大的现象,特点是对背景的保留效果更好。均值池化是求窗口中元素的均值。

最大池化则通过取邻域内特征的最大值来实现,能够抑制网络参数误差造成估计均值偏移的现象,特点是更好地提取纹理信息。最大池化是求窗口中元素的最大值。

特殊的池化方式还包括相邻重叠区域的池化以及空间金字塔池化。池化操作除了能显著降低参数量外,还能够保持对平移、伸缩、旋转操作的不变性。这里就不展开细讲了。

添加池化层的作用:

降维。这点很好理解,就是经过池化操作后,图像"变小"了。在图像处理中,把图像缩小就称为下采样或降采样,由此可窥见池化操作的降维性质。
不变性(invariance)。包括平移不变性(translation invariance),旋转不变性(rotation invariance),尺度不变性(scale invariance)。简单来说,池化操作能将卷积后得到的特征图中的特征进行统一化。另外,平移不变性,是指一个特征,无论出现在图片的哪一个位置,都会识别出来(也有人说平移不变性是权值共享带来的?)。
定长输出。比如我们的文本分类的例子中就是使用到了这个特性。无论经过卷积后得到的特征图有多大,使用池化操作后总能得到一个scalar,再将这些scalar拼接在一起,就能得到一个定长的向量。
下面依然从参数的角度来说明最大池化的含义:
pool_size:池化范围,因为是一维池化,所以这个范围也是一个整数值
strides: 步长,同理,每次池化窗口移动的步长
padding:填充模式
承接上面卷积层的输出为
(batch_size, new_steps, filters)
那经过池化之后就是
(batch_size, downsampled_steps, filters)
其中downsampled_steps就是和上面计算方式一样,如果是same
downsampled\_steps = \frac {new\_steps}{strides}
如果是vaild,
downsampled\_steps = \frac {new\_steps-pool\_size+1}{strides}
我们这里可以将pool_size设置为new_step,这样对于每个卷积核就只会有一个输出
所以最终所有尺寸的卷积核为经过转换后就(batch_size,filters*len_filter_size)
举例说明,如果pool_size是2,embedding_size是10,那么对两个词的最大池化是选择其中两个词在各embedding维度的最大值,比如两个词的embedding是[1,4,5]和[2,3,7],那么进行最大池化就是[2,4,7]

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