理论教育 深度学习中的卷积神经网络探析

深度学习中的卷积神经网络探析

时间:2023-07-01 理论教育 版权反馈
【摘要】:卷积神经网络是一种用来处理类网格结构数据的神经网络,可被视为一种使用参数共享与局部连接的卷积运算正则化后的多层感知机。V1区的若干性质都与卷积网络相对应。卷积网络通过将特征定义在二维图上来体现这种性质。最后介绍几种经典的深度卷积网络及其设计思想。而在卷积神经网络中,核的每一个元素都重复作用在输入图像的每一个位置上。

深度学习中的卷积神经网络探析

卷积神经网络是一种用来处理类网格结构数据的神经网络,可被视为一种使用参数共享与局部连接的卷积运算正则化后的多层感知机。它在图像分类、图像检索(image retrieval)、物体检测(object detection)等计算机视觉任务上表现优异,在自然语言处理、数据挖掘等领域也有广泛应用。卷积网络由卷积层和池化层组成。卷积层使用卷积核(同样为网格结构)对输入图像的局部区域进行卷积操作。通过将卷积核滑动遍历输入图像的各个位置,并进行相应的卷积操作,其结果就是卷积层的输出。池化层对输入数据进行空间维度上的下采样,在降低模型计算代价的同时,使其特征具有一定程度的平移不变性。卷积层和池化层的设计受到了人类大脑视觉感知机制的启发。

初级视觉皮层(primary visual cortex),也称V1区,是大脑视觉皮层接收视觉信号的第一个区域,它高度特化于处理输入信号中静态与运动物体的信息。V1区的若干性质都与卷积网络相对应。V1区与视网膜中的图像存在精确的位置对应关系,它具有二维结构来反映视网膜中的图像结构。例如,到达视网膜下半部的光仅影响相应的半块V1区。卷积网络通过将特征定义在二维图上来体现这种性质。V1包含许多简单细胞(simple cell),简单细胞的功能等价于对输入信号局部区域信息的线性映射。简单细胞这一功能与卷积核的线性映射特点相对应。V1还包含许多复杂细胞(complex cell),复杂细胞对简单细胞检测得到的特征进行响应,同时对特征位置的微小偏移具有不变性。复杂细胞的这一功能与池化操作的特点相对应。随着输入信号逐渐深入视觉皮层,一般认为上述的特征检测与池化机制被反复执行。在视觉皮层深处,我们可以找到一些响应特定概念的细胞,这些细胞对视觉输入的若干变换都具有不变性。这些细胞的响应与卷积网络的深层特征相对应。

本小节我们首先介绍卷积操作的细节和特点,然后介绍池化操作的具体细节和特点。最后介绍几种经典的深度卷积网络及其设计思想。

1.卷积运算

在数学上,给定离散函数I(n)和K(n),I(n)和K(n)的离散卷积(I∗K)(n)定义为

在实际应用中,通常需要在多个维度进行卷积操作。例如在图像处理中,二维图像I∈img与二维核img的二维离散卷积定义为

在具体应用中,许多深度学习开源框架使用互相关函数(cross-correlation function)实现卷积,其具体计算方法是

互相关函数的计算方法与卷积类似,但是不对核进行翻转。由于深度学习的学习算法根据核的位置学习参数,核翻转与否不会影响模型最终学到的参数。因此与深度学习开源框架一致,在本书中我们也称互相关函数为卷积。实际中二维图像经常由三维特征img表示(M、N为空间维度,C为特征维度),通常称特征维度为通道,每个通道对应的空间特征img称为特征图(feature map),与三维特征对应的核img也扩展到三维。三维特征I与三维核K的二维卷积的定义为

如果卷积操作只发生在图像内部(卷积核作用区域不超出图像边界),则每次卷积之后图像的尺寸都会变小。为了保持图像尺寸一致,通常对输入图像进行零填充(zero padding),填充的多少用填充量(padding)描述。例如在224×224的图像的四周进行padding为1的零填充,得到226×226的图像,再对这个图像使用3×3卷积核进行卷积,可以得到尺寸不变的224×224图像。

上述的卷积操作在图像内相互间隔距离为1的各个位置进行,实际中有时需要卷积操作在图像中相互间隔大于1的各个位置进行,这个间隔的长度通常称为步长(step)。步长为s时的二维卷积为

考虑填充padding和步长s后,对于尺寸为Hin的输入,尺寸为F的核,输出的尺寸Hout

其中,img为向下取整函数。

卷积层通常包含多个互相独立的卷积核,卷积核的数量Cout称为输出维度,或输出通道数。每个卷积核img与输入图像img的卷积结果为一个输出特征图Ic,Cout个特征度叠在一起构成卷积层的输出。相比传统的神经网络,卷积层的结构具有三个重要的特点:稀疏交互(sparse interactions)、参数共享和等变表示(equivariant representations)。稀疏交互是指输出单元j只与输入图像中局部区域的单元i有关。传统的神经网络使用全连接形式来建立输入图像与输出图像的连接关系,这意味着每一个输出单元与每一个输入单元都有关。因此稀疏连接可以极大地减少参数量和运行时间。参数共享是指在一个模型的多个函数中使用相同的参数。在传统的神经网络中,在计算某一层的输出图像时,权重矩阵的每一个元素只使用一次。而在卷积神经网络中,核的每一个元素都重复作用在输入图像的每一个位置上。参数共享使我们只需要学习一个在各个位置共享的卷积核参数集合,而不是对于每一个位置都分别学习一个单独的连接参数集合。等变表示是指当输入图像按一定的平移方式改变,卷积网络的输出图像也按相同的平移方式改变。这一性质使得卷积可以表示某些特征在输入图像中的空间位置。

2.池化操作

除了卷积层,卷积神经网络还常常使用非线性激活层和池化层。非线性激活层对图像的每一个单元进行非线性映射,提高模型容量。本部分我们主要介绍池化层,池化层使用池化函数对输入图像进行映射,池化函数将图像某一个位置的特征映射为该位置局部区域的总体统计特征。常见的池化方法有最大池化(max pooling)、平均池化(average pooling)、求和池化(sum pooling)等。三种池化方法的公式分别如下:

其中,H和W是池化核尺寸,s是池化步长。令Hl+1和Wl+1表示第l+1层特征图的尺寸,Dl+1表示特征图的数量,则0≤il+1<Hl+1,0≤jl+1<Wl+1,0≤d<Dl+1=Dl。最大池化将池化核覆盖范围内的输入最大池作为池化结果;平均池化将池化核覆盖范围内的输入平均值作为池化结果;求和池化将池化核覆盖范围内的输入之和作为池化结果。

无论使用哪种池化函数,当输入发生少量的平移时,池化操作能使输入的表示近似不变。该性质可以称为池化层的局部平移不变性。当我们关注某个特征是否出现,而不关心它的精确位置时,局部平移不变性可以发挥出很大的作用。例如,当判断一张图片是否包含人脸时,我们并不需要知道眼睛的精确位置,而是只需要知道眼睛的相对位置,即检测出一只眼睛在脸的左边,另一只眼睛在脸的右边就可以了。

在很多任务中,池化对于处理不同大小的输入具有重要作用。例如需要对不同大小的图像进行分类时,分类层的输入必须具有固定的维度,而这可以通过调整池化参数来实现,这样分类层总能接收到固定维度的统计特征。

3.AlexNet卷积神经网络

AlexNet[1]由Alex Krizhevsky等人在2012年的ImageNet挑战赛上提出。在网络结构上,相比于传统的前馈神经网络,AlextNet使用大量卷积层,拥有更少的连接和参数,更容易训练;使用线性整流单元作为激活函数来缓解梯度消失问题;使用重叠池化(步长小于池化核大小)来获得更精确的特征表示。在硬件上,AlexNet在GPU上实现卷积以加快模型的训练和测试。本部分我们首先详细介绍AlexNet的网络结构,然后介绍AlexNet的训练。

1)AlexNet的网络结构

AlexNet由5个卷积层、3个全连层、共8个可学习层组成,具体网络配置如图4.1所示。AlexNet的第一个卷积层使用96个大小为11×11×3的卷积核对224×224×3的输入图像以4为步长进行卷积操作。第二个卷积层使用256个大小为5×5×48的卷积核以1为步长进行卷积操作。第一个卷积层和第二个卷积层的输出结果分别依次经过线性整流层、局部响应归一化(local response normalization,LRN)层和步长为2、池化核尺寸为3×3的最大池化层。第三个卷积层使用384个大小为3×3×192的卷积核,第四个卷积层使用384个大小为3×3×192的卷积核,第五个卷积层使用256个大小为3×3×192的卷积核。第三个、第四个和第五个卷积层的步长均为1,输出结果均经过线性整流单元。第五个卷积层经过3×3的最大池化后的输出特征大小为13×13×128×2=21 632×2。第一个全连层将特征图平铺为一维特征,所以第一个全连层的输入为21 632×2=43 264,输出为4 096;第二个全连层的输入和输出均为4 096维;第三个全连层的输入为4 096维,输出为1 000维(根据物体类别数量而定)。第一个全连层和第二个全连层分别连接线性整流层,最后一个全连层后连接一个softmax层得到物体类别的概率分布。

图4.1 AlexNet网络配置

AlexNet的一个重要特点是使用线性整流单元作为激活函数。sigmoid函数和tanh函数都是饱和的非线性函数,它们在x远大于0和x远小于0时非常平缓,梯度接近0,因此sigmoid和tanh会使深层网络出现梯度消失问题。而线性整流单元(f(x)=max(0,x)),是非饱和的非线性函数,在x大于0的区域函数值趋于无穷大导数恒为1。在模型结构和超参数不变的情况下,ReLU比sigmoid和tanh更容易收敛。AlexNet还使用局部响应归一化来增加模型的泛化能力。

2)AlexNet的训练(www.daowen.com)

AlexNet主要使用图片数据增广和随机失活(dropout)层来对抗过拟合。AlexNet使用两种数据增广方法,第一种方法通过对图像进行平移和翻转获得更多训练图像,第二种方法通过改变训练图像的RGB通道的强度进行数据增广。随机失活层以失活概率p将每个神经元失活(将神经元的值设为0),在一个训练批次中停止其后向传播。随机失活可以降低同一层神经元代表的特征之间的关联,使模型学到更鲁棒的特征。AlexNet使用小批量梯度下降方法训练模型,batch设置为128。优化的动量(momentum)设置为0.9,权重衰减为0.000 5。学习率初始化为0.01,网络每层使用相同的学习率。每当网络在验证集的错误率不再降低,学习率衰减为当前的img,在网络训练终止前一共衰减3次。AlexNet每层的权重由均值为0、方差为0.01的高斯分布初始化。第二个、第四个、第五个卷积层和所有全连层的偏置初始化为1、区域层初始化为0,该初始化方法可以将ReLU层的大部分输入初始为正值,从而加快模型早期的训练。

AlexNet使用两个GPU进行训练和测试,模型参数和计算过程在两个GPU上的分布如图4.2所示。

图4.2 AlexNet结构图[1]

4.VGGNet卷积神经网络

VGGNet[2]由Karen Simonyan等人在2014年的ILSVRC(ImageNet大规模视觉识别挑战赛)中提出,是当年定位任务的冠军和分类跟踪任务的亚军。VGGNet证明了使用很小的3×3卷积核以及增加网络的深度就可以提升模型的性能。VGGNet对其他数据集有很好的泛化能力,是目前为使用最广泛的深度卷积网络之一。本部分我们首先介绍VGGNet的网络结构,然后介绍VGGNet的训练。

1)VGGNet的网络结构

VGGNet由5个卷积模块和1个全连模块组成。每个卷积模块具有不同数量卷积层,每个卷积模块之后都连接一个最大池化层,卷积层和池化层的具体数量和配置如图4.3所示。VGGNet的每个卷积层使用零填充,该填充使得卷积层的输出特征的空间尺寸维持不变。不同配置的VGGNet的全连模块均由3个全连层和1个softmax层组成,全连层的维度分别为4 096、4 096和1 000。VGGNet的每个可学习层之后都连接线性整流层。整体来说,VGGNet主要使用大小为3×3、步长为1的卷积核(能够获取上下左右方向信息的最小卷积核),在感受相同的同时,堆叠3×3卷积相比一个大卷积核有两个优势:第一,堆叠小卷积层引入了更多的非线性层,因此给模型增加了更多判别力。第二,堆叠小卷积层可以减少模型的参数,例如假设每个层的特征维度均为C,则堆叠3个3×3卷积层的参数量为3(32C2)=27C2,而一个7×7的卷积层的参数量为72C2=49C2

图4.3 VGGNet网络结构[2]

2)VGGNet的训练

VGGNet网络在训练时采用小批量梯度下降策略,batch设置为256。动量设置为0.9,权重衰减设置参数设置为5·10-4。学习率初始化为1·10-2,每当验证集的错误率不再降低,学习率衰减为当前的img,学习率一共衰减3次,模型共学习74期。VGGNet前两个全连层之后分别连接随机失活层,失活参数为0.5。

5.ResNet卷积神经网络

ResNet[3]由何凯明等人在2015年提出,是ILSCRV2015分类任务的冠军。ResNet使用了残差学习思想,即学习映射结果与输入的残差而不是直接学习整个映射。残差学习在不增加参数量的情况下解决了随着网络加深而加重的性能劣化问题。本部分我们首先介绍ResNet的网络结构,然后介绍ResNet的训练。

1)ResNet的网络结构

ResNet由应用了残差学习的构件块(building block)组合而成。构件块是若干层网络的堆叠,假设x为一个构件块的输入,H(x)为该构件块要拟合的映射,传统的方法直接学习映射H(x),而使用残差学习思想的构件块学习映射的残差F(x)=H(x)-x。图4.4为常见的构件块,其中构件块要学习的映射为

其中,x和y为构件块的输入和输出;函数F(x,{Wi})为要学习的残差映射。

图4.4 常见的构件块[3]

(a)二层网络构件块;(b)三层网络构件块

图4.4(a)和图4.4(b)的构件块表示的残差函数分别为

式中,σ表示线性整流单元。构件块通过快捷连接(shortcut connection)将构件块的输入和残差函数的输出相加来得到输出y,输出y通过ReLU得到构件块最终的输出σ(y)。当构件块的输入与输出具有相同的维度时,快捷连接直接使用恒等连接,当输出维度增加时,快捷连接可以使用零填充来补充增加的维度,也可以使用线性映射增加输入的维度。

ResNet的网络配置如图4.5所示。各个深度的ResNet具有相似的网络结构:ResNet第一层为卷积核大小为7×7、步长为2的卷积层。第一层卷积层后连接池化核大小为3×3、步长为2的池化层。在该池化层后,ResNet使用4个卷积模块,每个卷积模块由若干结构相同的构件块堆叠而成。不同配置的ResNet的不同卷积模块使用不同的构件块,构件块的具体细节如图4.5所示。每个卷积模块的第一个构件块的快捷连接需要使用零填充或者线性映射进行升维,其余构件块的快捷连接使用恒等连接。在第四个卷积模块后,ResNet使用池化核大小为7×7的平均池化,然后使用1 000维的softmax的层得到最终的分类结果。

2)ResNet的训练

ResNet训练时使用批大小为256的随机梯度下降法,权重衰减为1×10-4,动量为0.9。学习速度从0.1开始,当误差稳定时学习率除以10。模型训练共迭代6×104次。ResNet在每个卷积层之后,激活层之前使用批归一化,而没有使用任何随机失活层。ResNet使用Kaiming初始化方法初始化各层参数。

图4.5 ResNet的网络配置[3]

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈