卷积神经网络是一种层次模型,其输入是原始数据,如 RGB图像、原始音频数据等。卷积神经网络通过卷积操作、汇合(pooling)操作和非线性**函数映射等一系列操作的层层堆叠,将高层语义信息逐层由原始数据输入层中抽取出来,逐层抽象,这一过程便是“前馈运算”。其中,不同类型操作在卷积神经网络中一般称作“层”:卷积操作对应“卷积层”,汇合操作对应“汇合层”等等。最终,卷积神经网络的最后一层将其目标任务(分类、回归等)形式化为目标函数 。通过计算预测值与真实值之间的误差或损失,凭借反向传播算法将误差或损失由最后一层逐层向前反馈,更新每层参数,并再次前馈,如此反复,直至网络收敛。

1.卷积层:

        卷积层是卷积神经网络中的基础操作,假设输入图像(输入数据)为 5×5 矩阵,其对应的卷积核(亦称卷积参数)为一个 3 × 3 的矩阵。同时,假定卷积操作时每做一次卷积,卷积核移动一个像素位置,即卷积步长(stride)为 1。第一次卷积操作从图像 (0,0) 像素开始,由卷积核中参数与对应位置图像像素逐位相乘后累加作为一次卷积操作结果。类似地,卷积核按照步长大小在输入图像上从左至右自上而下依次将卷积操作进行下去,最终输出 3 × 3 大小的卷积特征,同时该结果将作为下一层操作的输入。

       需指出的是,学习到的卷积参数对不同位置的所有输入都是相同的,这便是卷积层“权值共享”特性。除此之外,通常还会度卷积结果加入偏置项。在误差反向传播时可针对该层权重和偏置项分别设置随机梯度下降的学习率。当然根据实际问题需要,也可以将某层偏置项设置为全0,或将学习率设置为0,以起到固定该层偏置或权重的作用。

       卷积是一种局部操作,通过一定大小的卷积核作用于局部图像区域获得图像的局部信息,卷积操作中有两个重要的超参数卷积核大小(filter size)和卷积步长(stride)。

2.汇聚层:

       汇合操作为平均值汇合(average-pooling)和最大值汇合(max-pooling),需要指出的是,同卷积层操作不同,汇合层不包含需要学习的参数。使用时仅需指定汇合类型、汇合操作的核大小和汇合操作的步长等超参数即可。

       汇合操作后的结果相比其输入降小了,其实汇合操作实际上就是一种“降采样”操作。另一方面,汇合也看成是一个用 p范数作为非线性映射的“卷积”操作,特别的,当 p 趋近正无穷时就是最常见的最大值汇合。汇合层的引入是仿照人的视觉系统对视觉输入对象进行降维(降采样)和抽象。在卷积神经网络过去的工作中,研究者普遍认为汇合层有如下三种功效:特征不变性;特征降维;在一定程度防止过拟合,更方便优化。

3.**函数(非线性映射层):

         **函数的引入为的是增加整个网络的表达能力(即非线性)。

        (1) Sigmoid型函数

                                                   CNN基础

                                        CNN基础

       值域被压缩到 [0,1] 之间,而0对应了生物神经元的“抑制状态”,1则恰好对应了“兴奋状态”。但对于函数两端带来梯度的“饱和效应”会导致在误差反向传播过程中导数处于该区域的误差很难甚至无法传递至前层,进而导致整个网络无法正常训练。

        (2) tanh型函数

                                                     tanh(x) = 2S(2x) - 1

                                     CNN基础

       tanh(x) 型函数又称作双曲正切函数,其函数范围是 (−1,+1),输出响应的均值为 0。但由于函数仍基于Sigmoid型函数,依然会发生“梯度饱和”现象。

        (3) 修正线性单元(ReLU)

                                             CNN基础

                                           CNN基础

       对 x ≥ 0 部分完全消除了梯度饱和效应。计算复杂度上,也相对前两者的指数函数计算更为简单。同时,实验中还发有助于随机梯度下降方法收敛,收敛速度约快 6倍左右 。不过,RELU 函数也有自身缺陷,即在 x < 0 时,梯度便为 0。换句话说,一旦变为负值将再无法影响网络训练——这种现象被称作“死区”。

       (4) Leky ReLU: 为了缓解“死区”现象, x < 0 的部分调整为 f(x) = α·x,α 为0.01 或 0.001数量级的较小正数。  不过由于 α 为超参数,合适的值较难设定且较为敏感,因此 在实际使用中的性能并不十分稳定。

       (5) 参数化ReLU: 解决了 超参数 α 不易设定的问题:直接将 α 也作为一个网络中可学习的变量融入模型的整体训练过程。参数化 ReLU在带来更大自由度的同时,也增加了网络模型过拟合的风险,在实际使用中需格外注意.

       (6) 随机化ReLU: 另一种解决 α 超参设定的方式是将其随机化.

       (7) 指数化线性单元(ELU)

                          CNN基础

                                            CNN基础

         ELU具备 ReLU函数的优点,同时也解决了“死区”问题。不过,函数中的指数操作稍稍增大了计算量。实际使用中,
超参数 一般设置为1。

4.全连接层:

         全连接层在整个卷积神经网络中起到“分类器”的作用,起到将学到的特征表示映射到样本的标记空间的作用。

5.目标函数:

          目标函数的作用则用来衡量该预测值与真实样本标记之间的误差,并以此反向传播指导网络参数学习与表示
学习。

       (1) 交叉熵损失函数: 又称 Softmax损失函数,是目前卷积神经网络中最常用的分类目标函数。其形式为:

                             CNN基础

即通过指数化变换使网络输出 h 转换为概率形式。

       (2) 合页损失函数(hinge):

                                             CNN基础

需指出的是,一般情况的分类任务中交叉熵损失函数的分类效果略优于合页损失函数的分类效果。

       (3) ℓ 1 损失函数

       (4) ℓ 2 损失函数

6.网络正则化:

       正则化是机器学习中通过显式的控制模型复杂度来避免模型过拟合、确保泛化能力的一种有效方式。    

       (1) ℓ 1 正则化,同时可得稀疏解

       (2) ℓ 2 正则化,一般而言优于ℓ 1 正则化

       (3) Elastic正则化(二者结合)

       (4) 最大范数约束,优势为即使学习率设置过大也不至于梯度爆炸

       (5) 随机失活:对于某层的每个神经元,在训练阶段均以概率 p 随机将该神经元权重置 0,测试阶段所有神经元均呈**态,但其权重需乘 (1−p) 以保证训练和测试阶段各自权重拥有相同的期望。由于失活的神经元无法参与到网络训练,因此每次训练(前向操作和反向操作)时相当于面对一个全新网络。子网络的网络集成,对于提升网络泛化性效果显著。

       (6) 使用验证集,绘制学习曲线

       (7) 及时早停

       (8) 扩充数据集或加随机噪声

7.超参数的设定:

       (1) 输入数据像素大小

       使用卷积神经网络处理图像问题时,对不同输入图像为得到同规格输出,同时便于GPU 设备并行,会统一将图像压缩到 2^n 大小,若不考虑硬件设备限制,更高分辨率图像作为输入数据一般均有助于网络性能的提升,特别是对基于注意力模型的深度网络提升更为显著。不过,高分辨率图像会增加模型计算消耗而导致网络整体训练时间延长。

       (2) 卷积层参数设定

        小卷积核可以正常网络容量和模型复杂度,减少卷积参数个数。因此推荐为3X3或者5X5,卷积步长为1.

       此外卷积还可搭配填充(padding)操作,可充分利用输入图像的边缘信息,搭配合适的卷积层参数可保持输出与输入同等大小,避免随着网络深度增加,输入图像急剧减小。

        最后,为了硬件字节级存储管理的方便,卷积核个数通常设置为2 的次幂。这样的设定有利于硬件计算过程中划分数据矩
阵和参数矩阵,尤其在利用显卡计算时更为明显。

       (3) 汇合层参数设定

        同卷积核大小类似,汇合层的核大小一般也设为较小的值,如 2 × 2,3 × 3 等。常用的参数设定为 2 × 2、汇合步长为 2。  

8.训练技巧:   

       (1) 训练数据随机打乱

        在训练卷积神经网络时,尽管训练数据固定,但由于采用了随机批处理的训练机制,因此我们可在模型每轮训练进行前将训练数据集随机打乱,确保模型不同轮数相同批次“看到”的数据是不同的。这样的处理不仅会提高模型收敛速率,同时,相对固定次序训练的模型,此操作会略微提升模型在测试集上的预测结果。

       (2) 学习率的设定

学习率设定时可遵循下列两项原则: 模型训练开始时的初始学习率不宜过大,以0.01和 0.001为宜;如发现刚开始训练没几个批次模型目标函数损失值就急剧上升,这便说明模型训练的学习率过大,此时应减小学习率从头训练; 模型训练过程中,学习率应随轮数增加而减缓。减缓机制可有不同,一般为如下三种方式:轮数减缓,如五轮训练后学习率减半,下一个五轮后再次减半;指数减缓,即学习率按训练轮数增长指数插值递减等; 分数减缓。若原始学习率为l0 ,学习率按照下式递减——lt = l0 /(1 + kt)。

       (3) 批规范化操作(batch normalization,BN)

       不仅加快了模型收敛速度,而且更重要的是在一定程度缓解了深层网络的一个难题“梯度弥散”,从而使得训练深层网络模型更加容易和稳定。顾名思义,“批规范化”,即在模型每次随机梯度下降训练时,通过 BN来对相应的网络响应做规范化操作,使得结果(输出信号各个维度)的均值为 0,方差为 1。

                                        CNN基础

        关于BN 的使用位置,在卷积神经网络中 ,一般应作用在非线性映射函数前。另外,若神经网络训练时遇到收敛速度较慢,或“梯度爆炸”等无法训练的状况发生时也可以尝试用 BN 来解决。同时,常规使用情况下同样可加入BN来加快模型的训练速度,甚至提高模型精度。

相关文章:

  • 2022-01-02
  • 2021-07-26
  • 2021-06-28
  • 2021-12-09
  • 2021-06-18
  • 2022-01-26
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-24
  • 2022-01-16
  • 2022-01-06
  • 2021-05-29
  • 2021-06-28
  • 2021-06-08
相关资源
相似解决方案