深度卷积神经网络基础理论

本文将介绍深度卷积神经网络中最常见的几种层(算子),分别包括全连接层、卷积层、BN层、池化层以及激活函数层,主要包括这些层在卷积网络中发挥的作用以及该算子的计算方式。

目录

1  全连接层

2  卷积层与BN层

3  池化层

4  激活函数层


1  全连接层

全连接层,顾名思义,即当前层的每一个神经元都与上一层的所有神经元连接,如图1.13中所示,即为多个全连接层构成的网络,此类由全连接层构成的网络一般称之为多层感知机(MLP, Multi-Layer Perceptron),关于MLP的研究与应用目前已较少。

由于该算子全连接的特性,导致全连接层的参数往往都较多,在早期的模型中仅全连接层权值参数就占据了整个模型参数较大的比重[5]。目前在大多深度卷积神经网络中已逐渐减少全连接层的使用,一般可利用1×1的卷积层或全局平均池化来替代全连接层。在分类网络中的最后两层可能出现全连接层,用来整合前面卷积层或池化层输出的具有类别区分性的局部信息,进而将模型学到的“分布式特征”映射到样本标记空间。全连接层的计算实际为矩阵运算的过程,如式2.1中所示。

          y= f(Wx+b)                           (2.1)

式2.1中W 为权值矩阵,x 为输入,b 则为偏置向量,f(x) 为激活函数,常见的有ReLU等。

2  卷积层与BN层

卷积层为卷积神经网络的核心模块,主要即完成对输入图片或特征图的卷积操作,用来提取输入图片中的特征或在输入特征图的基础上进一步提取更复杂的高级特征。例如,在输入为二维图像的情况下,其卷积操作的过程如图2.1中左图所示。

深度卷积神经网络基础理论_第1张图片

2.1  卷积运算示意图与卷积层、BN层连接关系示意图

在图2.1中,一个3×3的卷积核在左边5×5的二维图像上根据滑动步长依次滑动,并在每次滑动结束后与对应的像素进行内积,最终得到一个3×3的输出特征图,完成该二维卷积核的卷积操作。在这个3×3的二维卷积核中,所有的参数即为权值参数,其在训练过程中由反向传播算法更新得到。一般在卷积网络中,卷积核为一个四维向量,分别为N、C、H、W四个维度,其中N对应该层输出通道的数量,C对应输入通道的数量,H与W则分别为二维卷积核的高与宽。此外,需要注意到,目前卷积层已衍生出一些其他的卷积形式,例如上一章中提到的深度可分离卷积以及组卷积等。

BN层,即批归一化层(Batch Normalization),主要用来解决深度卷积网络难收敛的问题,其通常跟随在卷积层的后面,如图2.1中最右边所示,卷积层、BN层以及激活函数层构成的模块为当前卷积网络中应用最为广泛的模块。其计算公式如式2.2中所示。

式2.2中,x 为卷积层的输出,μBNσBN 则是根据当前这个批次输入计算得到的均值与标准差,ϵ 为一个极小值;γβ 为BN层的权值与偏置,将通过网络的训练得到。

3  池化层

池化层的引入最开始是为了仿照人类视觉系统中对输入特征的降维与抽象,目前最常见的池化层算子有最大池化或平均池化。池化层的应用,可作为一种降采样的操作来减小特征图尺寸,进而减少参数量与计算量;此外,池化层还能在一定程度上防止过拟合问题。如图2.2中即为最大池化与平均池化的示意图。

深度卷积神经网络基础理论_第2张图片

2.2  最大池化与平均池化操作示意图

如图2.2中所示,即为在窗口大小为2×2,滑动步长为2的情况下得到的右边两种池化操作的结果。 

4  激活函数层

激活函数层即由一个激活函数构成的层,其输入一般为前层中经过加权求和的输出。早期的神经网络中采用的多为线性激活函数,但这类网络存在的问题即无论网络由多少层构成,最终的输出都只是对输入的线性组合,无法得到非线性的拟合函数,也大幅限制了神经网络的判断能力。鉴于此,目前的卷积神经网络中激活函数层均由非线性函数构成,常见的激活函数包括Sigmoid函数、Tanh函数、ReLU函数以及Leaky ReLU函数等,各激活函数各有优劣,往往需要根据应用的任务或场景来选择。

例如,虽然Sigmoid函数在物理意义上最接近生物神经元,但存在梯度消失问题,同时其计算中涉及到指数运算,所以在需要硬件部署时往往不选择该函数作为激活函数。相较于Sigmoid函数,ReLU函数的计算则极为简单,只需要判断是否大于0即可,同时其收敛速度也远快于Sigmoid函数,但同样可能出现神经元死亡问题,即部分神经元永远不会被激活的问题。

你可能感兴趣的:(yolov5,yolox,cnn,深度学习,神经网络)