子采样层
卷积层虽然可以显著减少连接的个数,但是每一个特征映射的神经元个数 并没有显著减少。这样,如果后面接一个分类器,分类器的输入维数依然很高, 很容易出现过拟合。为了解决这个问题,在卷积神经网络一般会在卷积层之后再加上一个池化(Pooling)操作,也就是子采样(Subsampling),构成一个子采样层。子采样层可以来大大降低特征的维数,避免过拟合。
对于卷积层得到的一个特征映射 X(l),我们可以将 X(l) 划分为很多区域 Rk, k = 1, · · · , K,这些区域可以重叠,也可以不重叠。一个子采样函数down(· · · ) 定义为:
其中,w(l+1)和 b(l+1)分别是可训练的权重和偏置参数。
down(Xl) 是指子采样后的特征映射。
子采样函数down(·)一般是取区域内所有神经元的最大值(Maximum Pool- ing)或平均值(Average Pooling)。
子采样的作用还在于可以使得下一层的神经元对一些小的形态改变保持不变性,并拥有更大的感受野。
卷积神经网络示例:LeNet-5
下面我们来看一个具体的深层卷积神经网络:LeNet-5[LeCun et al., 1998]。 LeNet-5 虽然提出时间比较早,但是是一个非常成功的神经网络模型。基于 LeNet- 5 的手写数字识别系统在 90 年代被美国很多银行使用,用来识别支票上面的手 写数字。LeNet-5 的网络结构如图5.4所示。
不计输入层,LeNet-5 共有 7 层,每一层的结构为:
1. 输入层:输入图像大小为32 × 32 = 1024。
2. C1层:这一层是卷积层。滤波器的大小是5 × 5 = 25,共有6个滤波器。 得到6组大小为28 × 28 = 784的特征映射。因此,C1层的神经元个数 为6 × 784 = 4,704。可训练参数个数为6 × 25 + 6 = 156。连接数为 156 × 784 = 122, 304(包括偏置在内,下同)。
3. S2层:这一层为子采样层。由C1层每组特征映射中的2 × 2邻域点次采 样为1个点,也就是4个数的平均。这一层的神经元个数为14×14 = 196。 可训练参数个数为6×(1+1) = 12。连接数为6×196×(4+1) = 5,880,(包括偏置的连接)
4. C3层:这一层是卷积层。由于S2层也有多组特征映射,需要一个连接表来 定义不同层特征映射之间的依赖关系。LeNet-5 的连接表如图5.5所示。这 样的连接机制的基本假设是:C3 层的最开始的 6 个特征映射依赖于 S2 层 的特征映射的每 3 个连续子集。接下来的 6 个特征映射依赖于 S2 层的特征 映射的每4个连续子集。再接下来的3 个特征映射依赖于S2层的特征映 射的每 4 个不连续子集。最后一个特征映射依赖于 S2 层的所有特征映射。 这样共有60个滤波器,大小是5 × 5 = 25。得到16组大小为10 × 10 = 100 的特征映射。C3 层的神经元个数为 16 × 100 = 1, 600。可训练参数个数为 (60 × 25 + 16 = 1,516。连接数为1,516 × 100 = 151,600。
5. S4层:这一层是一个子采样层,由2 × 2邻域点次采样为1个点,得到 16组5 × 5大小的特征映射。可训练参数个数为16 × 2 = 32。连接数为 16×(4+1) = 2000。
6. C5层:是一个卷积层,得到120组大小为1×1的特征映射。每个特征映 射与 S4 层的全部特征映射相连。有 120 × 16 = 1, 920 个滤波器,大小是 5×5 = 25。C5层的神经元个数为120,可训练参数个数为1, 920×25+120 = 48, 120。连接数为120 × (16 × 25 + 1) = 48, 120。
7. F6层:是一个全连接层,有84个神经元,可训练参数个数为84×(120+1) = 10, 164。连接数和可训练参数个数相同,为 10, 164。
8. 输出层:输出层由10个欧氏径向基函数(Radial Basis Function,RBF) 函数组成。这里不再详述。
梯度计算
在全连接前馈神经网络中,目标函数关于第 l 层的神经元 z(l) 的梯度为
在卷积神经网络中,每一个卷积层后都接着一个子采样层,然后不断重复。所以我们需要分别来看下卷积层和子采样层的梯度。
卷积层的梯度
我们假定卷积层为 l 层,子采样层为 l + 1 层。因为子采样层是下采样操作,l + 1 层的一个神经元的误差项 δ 对应于卷积层(上一层)的相应特征映射的一个区域。l 层的第 k 个特征映射中的每个神经元都有一条边和 l + 1 层的第 k 个特征映射中的一个神经元相连。根据链式法则,第 l 层的一个特征映射的误差项δ(l,k),只需要将 l + 1 层对应特征映射的误差项 δ(l+1,k)进行上采样操作(和第l层的大小一样),再和 l 层特征映射的激活值偏导数逐元素相乘,再乘上权重 w(l+1,k),就得到了 δ(l,k)。
第 l 层的第 k 个特征映射的误差项 δ(l,k)的具体推导过程如下:
其中,up 为上采样函数(Upsampling)。
在得到第 l 层的第 k 个特征映射的误差项 δ(l,k),目标函数关于第 l 层的第 k 个特征映射神经元滤波器 Wi,j(l,k,p)的梯度
公式5.23也刚好是卷积形式,因此目标函数关于第 l 层的第 k 个特征映射神 经元滤波器 W(l,k,p)的梯度可以写为:
目标函数关于第 l 层的第 k 个特征映射的偏置 b(l)的梯度可以写为:
子采样层的梯度
我们假定子采样层为 l 层,l + 1 层为卷积层。因为子采样层是下采样操作, l + 1 层的一个神经元的误差项 δ 对应于卷积层(上一层)的相应特征映射的一个区域。
第 l 层的第 k 个特征映射的误差项 δ(l,k) 的具体推导过程如下:
其中,⊗ ̃ 为宽卷积。
公式5.23也刚好是卷积形式,因此目标函数关于第 l 层的第 k 个特征映射神经元滤波器 W(l,k,p)的梯度可以写为:
目标函数关于第 l 层的第 k 个特征映射的偏置 b(l) 的梯度可以写为:
作者:邱锡鹏 犀语科技首席科学家复旦大学计算机学院,副教授
主要研究方向:深度学习、自然语言处理、自动问答系统以及表示学习。在ACL、EMNLP、IJCAI等计算机学会A类期刊、会议上发表40余篇学术论文。开源自然语言处理工具FudanNLP项目负责人,主要开发者。
领取专属 10元无门槛券
私享最新 技术干货