卷积神经网络基础 - SUSTC-XLAB/crops GitHub Wiki
卷积神经网络最早是用来处理图像信息,而最早是受生物学上感受野的机制而提出的。感受野(receptive field)主要是指听觉、视觉等神经系统中一些神经元的特性,即神经元只接受其所支配的刺激区域内的信号。在视觉神经系统中,视觉皮层中的神经细胞的输出依赖于视网膜上的光感受器。视网膜上的光感受器受刺激兴奋时,将神经冲动信号传到视觉皮层,但不是所有视觉皮层中的神经元都会接受这些信号。一个神经元的感受野是指视网膜上的特定区域,只有这个区域内的刺激才能够激活该神经元。 如果用全连接前馈网络来处理图像时,会存在以下问题:
(1)参数太多: 如果输入图像大小为100×100×3(即图像高度为100,宽 度为100,3个颜色通道:RGB)。在全连接前馈网络中,第一个隐藏层的每个神 经元到输入层都有100×100×3=30,000个相互独立的连接,每个连接都对应 一个权重参数。随着隐藏层神经元数量的增多,参数的规模也会急剧增加。这 会导致整个神经网络的训练效率会非常低,也很容易出现过拟合。
(2)局部不变性特征: 自然图像中的物体都具有局部不变性特征,比如在 尺度缩放、平移、旋转等操作不影响其语义信息。而全连接前馈网络很难提取 这些局部不变特征,一般需要进行数据增强来提高性能。
目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络,使用反向传播算法进行训练。卷积神经网络有三个结构上的特性:局部连接,权重共享以及子采样。这些特性使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性。和前馈神经网络相比,卷积神经网络的参数更少。
卷积层:
卷积层的作用是提取一个局部区域的特征,不同的卷积相当于不同的特征提取器。由于卷积网络主要应用在图像处理上,而图像为两维结构,因此为了更充分地 利用图像的局部信息,通常将神经元组织为三维结构的神经层,其大小为高度 M×宽度N×深度D,有D个M ×N 大小的特征映射构成。 特征映射(feature map)为一幅图像(或其它特征映射)在经过卷积提取 到的特征,每个特征映射可以作为一类抽取的图像特征。为了卷积网络的表示 能力,可以在每一层使用多个不同的特征映射,以更好地表示图像的特征。在输入层,特征映射就是图像本身。如果是灰度图像,就是有一个特征映 射,深度D =1;如果是彩色图像,分别有RGB三个颜色通道的特征映射,输 入层深度D =3。
池化层:
池化层(pooling layer)也叫子采样层(subsampling layer),其作用是进行特征选择,降低特征数量,并从而减少参数数量。卷积层虽然可以显著减少网络中连接的数量,但特征映射组中的神经元个数并没有显著减少。如果后面接一个分类器,分类器的输入维数依然很高,很容易出现过拟合。为了解决这个问题,可以在卷积层之后加上一个汇聚层,从而降低特征维数,避免过拟合。池化(pooling)是指对每个区域进行下采样(downsampling)得 到一个值,作为这个区域的概括。常用的汇聚函数有两种: 最大汇聚(maximum pooling)平均汇聚(mean pooling),前者一般是取一个区域内所有神经元的最大值,而后者:一般是取区域内所有神经元的平均值。
典型的汇聚层是将每个特征映射划分为2×2大小的不重叠区域,然后使用 最大汇聚的方式进行下采样。汇聚层也可以看做是一个特殊的卷积层,卷积核 大小为m×m,步长为s×s,卷积核为max函数或mean函数。过大的采样区 域会急剧减少神经元的数量,会造成过多的信息损失。
典型的卷积网络结构:
一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。目前常 用的卷积网络结构图所示。一个卷积块为连续M 个卷积层和b个汇聚层(M 通常设置为2 ∼ 5,b为0或1)。一个卷积网络中可以堆叠N 个连续的卷积块, 然后在接着K 个全连接层(N 的取值区间比较大,比如1 ∼ 100或者更大;K 一般为0∼2)。 目前,整个网络结构趋向于使用更小的卷积核(比如1×1和3×3)以及 更深的结构(比如层数大于50)。此外,由于卷积的操作性越来越灵活(比如不 同的步长),汇聚层的作用变得也越来越小,因此目前比较流行的卷积网络中, 汇聚层的比例也逐渐降低,趋向于全卷积网络。