神经网络与深度学习 邱锡鹏 第5章 卷积神经网络 读书笔记
卷积神经网络(CNN)是一种具有局部连接、权重共享等特性的深层前馈神经网络。
卷积神经网络最早主要是用来处理图像信息。在用全连接前馈网络来处理图像时,会存在以下两个问题:
(1)参数太多:随着隐藏层神经元数量的增多,参数的规模也会急剧增加。这会导致整个神经网络的训练效率非常低,也很容易出现过拟合。
(2)局部不变形特征:自然图像中的物体都具有局部不变性特征,比如尺度缩放、平移、旋转等操作不影响其语义信息。而全连接前馈网络很难提取这些局部不变性特征,一般需要进行数据增强来提高性能。
目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络,使用反向传播算法进行训练。
卷积神经网络主要使用在图像和视频分析的各种任务(比如图像分类、人脸识别、物体识别、图像分割等)上,其准确率一般也远远超出了其他的神经网络模型。近年来卷积神经网络也广泛地应用到自然语言处理、推荐系统等领域。
5.1 卷积
一维卷积:一维卷积经常用在信号处理中,用于计算信号的延迟累积。假设一个信号发生器每个时刻t产生一个信号xt,其信息的衰减率为wk,即在k-1个时间步长后,信息为原来的wk倍。假设w1 = 1,w2 = 1/2,w3 = 1/4,那么在时刻t收到的信号yt为当前时刻产生的信息和以前时刻延迟信息的增加。
我们把w1,w2,...称为滤波器或卷积核。假设滤波器长度为K,它和一个信号序列x1,x2,...的卷积为
信号序列x和滤波器w的卷积定义为 y = w * x
下图给出了一维卷积示例。滤波器为[-1,0,1],连接边上的数字为滤波器中的权重。
二维卷积 卷积也经常用在图像处理中,因为图像为一个二维结构,所以需要将一维卷积进行扩展。给定一个图像X ∈ RM×N和滤波器W ∈ RU×V,其卷积为
一个输入信息X和滤波器W的二维卷积定义为:
Y = W * X
下图给出了二维卷积示例。
5.1.1 互相关
互相关是一个衡量两个序列相关性的函数,通常是用滑动窗口的点积计算来实现。给定一个图像X∈RM×N和卷积核W∈RU×V,它们的互相关为
互相关和卷积的区别仅仅在于卷积核是否进行翻转。因此互相关也可以称为不翻转卷积。
5.1.2 卷积的变种
在卷积的标准定义基础上,还可以引入滤波器的滑动步长和零填充来增加卷积的多样性,可以更灵活地进行特征抽取。
滤波器的步长是指滤波器在滑动时的时间间隔。下图给出了步长为2的卷积示例。
零填充是在输入向量两端进行补零。下图给出了输入的两端各补一个零后的卷积示例。
假设卷积层的输入神经元个数为M,卷积大小为K,步长为S,在输入两端各填补P个0,那么该卷积层的神经元数量为(M - K + 2P)/S +1
一般常用的卷积有以下三类:
(1) 窄卷积:步长S = 1,两端不补零 P = 0,卷积后输出长度为M - K + 1
(2) 宽卷积:步长S = 1,两端补零 P = M - 1,卷积后输出长度M + K -1
(3) 等宽卷积:步长 S = 1,两端补零 P = (K-1) / 2,卷积后输出长度M。
下图是一个等宽卷积示例。
5.1.3 卷积的数学性质
卷积有很多很好的数学性质。
5.1.3.1 交换性
如果不限制两个卷积信号的长度,真正的翻转卷积是具有交换性的,即 x * y = y * x。对于互相关的“卷积”,也同样具有一定的“交换性”。
5.1.3.2 导数
5.2 卷积神经网络
卷积神经网络一般由卷积层、汇聚层和全连接层构成。
5.2.1 用卷积来代替全连接
采用卷积来代替全连接,第l层的净输入 z(l) 为第l-1层活性值 a(l-1) 和滤波器 w(l) ∈ RK的卷积,即
根据卷积的定义,卷积层有两个很重要的性质:
(1)局部连接 在卷积层中的每一个神经元都只和下一层中某个局部窗口内的神经元相连,构成一个局部连接网络。如下图所示,卷积层和下一层之间的连接数大大减少,由原来的
Ml × Ml-1个连接变为 Ml × K个连接,K为滤波器大小。
(2)权重共享:在上图中,所有的同颜色连接上的权重是相同的。权重共享可以理解为一个滤波器只捕捉输入数据中的一种特定的局部特征。因此,如果要提取多种特征就需要使用多个不同的滤波器。
5.2.2 卷积层
卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器。由于卷积网络主要应用在图像处理上,而图像为二维结构,因此为了更充分地利用图像的局部信息,通常将神经元组织为三维结构的神经层,其大小为高度M×宽度N×深度D,由D个M×N大小的特征映射构成。
特征映射为一幅图像(或其他特征映射)在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征。
不失一般性,假设一个卷积层的结构如下:
(1) 输入特征映射组:X ∈ RM×N×D为三维张量,其中每个切片矩阵Xd∈RM×N为一个输入特征映射,1 <= d <= D
(2) 输出特征映射组:Y ∈ RM’×N‘×P为三维张量,其中每个切片矩阵 YP∈ RM’×N‘为一个输出特征映射,1 <= p <= P
(3) 卷积核:W∈RU×V×D×P为四维张量,其中每个切片矩阵Wp,d∈RU×V为一个二维卷积核,1 <= d <=D,1 <= p <= P
下图给出卷积层的三维结构表示:
为了计算输出特征映射Yp,用卷积核Wp,1,Wp,2,...,Wp,D分别对输入特征映射X1,X2,...,XD进行卷积,然后将卷积结果相加,并加上一个标量偏置b得到卷积层的净输入Zp,再经过非线性激活函数后得到输出特征映射Yp
整个计算过程如下图所示。
5.2.3 汇聚层
汇聚层也叫子采样层,其作用是进行特征选择,降低特征数量,从而减少参数数量,卷积层之后加上一个汇聚层,从而降低特征维数,避免过拟合。
汇聚是指对每个区域进行下采样得到一个值,作为这个区域的概括。
常用的汇聚函数有两种:
1.最大汇聚:对于一个区域,选择这个区域内所有神经元的最大活性值作为这个区域的表示。
2.平均汇聚:一般是取区域内所有神经元活性值的平均值。
下图给出了采样最大汇聚进行子采样操作的示例。可以看出,汇聚层不但可以有效地减少神经元的数量,还可以使得网络对一些小的局部形态改变保持不变性,并拥有更大的感受野。
5.2.4 典型的卷积网络结构
一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。目前常用的卷积网络结构如下图所示。一个卷积块为连续M个卷积层和b个汇聚层(M通常设置为2~5,b为0或1)。一个卷积网络中可以堆叠N个连续的卷积块,然后在后面接着K个全连接层。
目前,整个网络结构趋向于使用更小的卷积核(比如1×1和3×3)以及更深的结构(比如层数大于50)。此外,由于卷积的操作性越来越灵活(比如不同的步长),汇聚层的作用也变得越来越小,因此目前比较流行的卷积网络中,汇聚层的比例正在逐渐降低,趋向于全卷积网络。
5.3 参数学习
和全连接前馈网络类似,卷积网络也可以通过误差反向传播算法来进行参数学习。在卷积神经网络中,主要有两种不同功能的神经层:卷积层和汇聚层。而参数为卷积核以及偏置,因此只需要计算卷积层中参数的梯度。
不失一般性,对第l层为卷积层,第l-1层的输入特征映射为X(l-1) ∈ RM×N×D,通过卷积计算得到第l层的特征映射净输入Z(l) ∈ RM’×N‘×P。第l层的第p个特征映射净输入
损失函数L关于第l层的卷积核W(l,p,d)的偏导数为
损失函数关于第l层的第p个偏置b(l,p)的偏导数为
5.3.1 误差项的计算
卷积层和汇聚层中误差项的计算有所不同,因此我们分别计算其误差项。
汇聚层:当第l+1层为汇聚层时,因为汇聚层是下采样操作,l+1层的每个神经元的误差项δ对应于第l层的相应特征映射的一个区域。第l层的第p个特征映射的误差项δ(l,p)的具体推导过程如下:
卷积层:当l+1层为卷积层时,假设特征映射净输入Z(l+1) ∈ RM'×N’×P,其中第p个特征映射净输入
其中W(l+1,p,d)和b(l+1,p) 为第l+1层的卷积核以及偏置。第l+1层中共有P×D个卷积核和P个偏置。
第l层的第d个特征映射的误差项δ(l,d)的具体推导过程如下:
5.4 几种典型的卷积神经网络
本节介绍几种广泛使用的典型深层卷积神经网络
5.4.1 LeNet-5
LeNet-5的网络结构如下所示:
LeNet-5共有7层,接受输入图像大小为32×32 = 1024,输出对应10个类别的得分。
5.4.2 AlexNet
AlexNet是第一个现代深度卷积网络模型,其首次使用了很多现代深度卷积网络的技术方法,比如使用GPU进行并行训练,采用了ReLU作为非线性激活函数,使用Dropout防止过拟合,使用数据增强来提高模型准确率等。
AlexNet的结构如下图所示,包括5个卷积层、3个汇聚层和3个全连接层。
5.4.3 Inception网络
下图给出了v1版本的Inception模块结构,采用了4组平行的特征抽取方式,分别为1×1、3×3、5×5的卷积核3×3的最大汇聚。
Inception网络有多个版本,其中最早的Inception v1版本就是非常著名的GoogLeNet。
GoogLeNet由9个Inception v1模块和5个汇聚层以及其他一些卷积层和全连接层构成,总共为22层网络,如下图所示。
5.4.4 残差网络
残差网络通过给非线性的卷积层增加直连边的方式来提高信息的传播效率。
假设在一个深度网络中,我们期望一个非线性单元(可以为一层或多层的卷积层)f(x;θ)去逼近一个目标函数为h(x).如果将目标函数拆分为两部分:恒等函数x和残差函数h(x) - x。
下图给出了一个典型的残差单元示例。残差单元由多个级联的(等宽)卷积层和一个跨层的直连边组成,再经过ReLU激活后得到输出。
5.5 其他卷积方式
5.5.1 转置卷积
在一些任务中,我们需要将低维特征映射到高维特征,并且依然希望通过卷积操作来实现。
假设有一个高维向量为x ∈ Rd和一个低维向量为z∈Rp, p < d.如果用仿射变换来实现高维到低维的映射。
z = Wx
其中W ∈ Rp×d为转换矩阵,我们可以很容易地通过转置W来实现低维到高维的反向映射,即
x = WTz
卷积操作也可以写为仿射变换的形式。假设一个5维向量x,经过大小为3的卷积核w = [w1,w2,w3]T进行卷积,得到3维向量z。卷积操作可以写为
如果要实现3维向量z到5维向量x的映射,可以通过仿射矩阵的转置来实现,即
5.5.2 空洞卷积
空洞卷积是一种不增加参数数量,同时增加输出单元感受野的一种方法,也称为膨胀卷积。空洞卷积通过给卷积核插入“空洞”来变相地增加其大小。如果在卷积核的每两个元素之间插入D-1个空洞,卷积核的有效大小为
5.6 总结和深入阅读