深度学习:ResNet残差神经网络
目录
一、什么是ResNet残差神经网络
二、残差结构
三、18层残差网络
1.最初残差网络变体
2.图片示例
3.表格示例
四、批次归一化(Batch Normalization)
1.工作过程
2.主要作用
五、ResNet残差神经网络解决了传统神经网络什么问题
1.梯度消失和梯度爆炸
梯度消失:
梯度爆炸:
2.退化问题
一、什么是ResNet残差神经网络
- ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。
- ResNet网络与传统的神经网络的区别在于其独特的残差结构和批次归一化处理,而这也是其最大的两个特点
二、残差结构
- 残差结构(Residual Block)是ResNet(残差网络)的核心组成部分,旨在解决深层神经网络训练中的退化问题。
- 其主要特点是通过引入跳跃连接(Skip Connection)来实现残差学习,允许网络学习输入和输出之间的残差(即差异),而不是直接学习从输入到输出的映射。
- 让特征矩阵隔层相加,注意F(X)和X形状要相同,
- F(X)是经过两次卷积层得到的结果,X是原始特征矩阵
- 所谓相加是特征矩阵相同位置上的数字进行相加。
- 相加之后的矩阵作为输入,可以有效解决深层网络退化问题,提高网络的深度
三、18层残差网络
1.最初残差网络变体
- ResNet-18:包含18层。
- ResNet-34:包含34层。
- ResNet-50:包含50层。
- ResNet-101:包含101层。
- ResNet-152:包含152层。
- 这里的层数是指卷积层加全连接层的数量
2.图片示例
- 这里拿18层的残差网络进行举例,图片是网络的构造
- 从上往下第一个红框里就是一个残差结构即残差块
- 该结构将输入矩阵加上经过两层卷积层之后的特征图(因为该卷积层使用卷积核宽度为3,步长为1,填充为1,所以特征图与输入矩阵大小一致)的结果作为下一个残差块的输入
- 第二个红框是两组残差块(每两个残差块为一组)之间要对特征图进行降维操作
- ·每组的第一个残差块使用步长为2的卷积层对输入特征图进行降维,之后再正常卷积得到特征图;
- 同时跳跃连接的部分也对输入特征图进行降维,最后将两个特征图相加之后作为下一组残差块的输入
- 后面的残差块内部以及残差块组之间的的操作与上述一致
- 最后进行全局平均池化,得到最终特征图,该模型输出分类是1000,我们自己调用时通常要修改该参数
3.表格示例
- 18层,34层,50层,101层,152层,及其结构
- FLOPs行是每个网络的计算性能和模型复杂度
四、批次归一化(Batch Normalization)
- 批次归一化(Batch Normalization,简称 BN)是一种用于加速深度神经网络训练的方法。它通过标准化每个批次的输入,使模型在训练过程中更加稳定,减少了梯度消失和过拟合的风险
1.工作过程
- 对输入图像进行预处理
- 对每一个特征图进行归一化处理之后再输入下一个卷积层
2.主要作用
- 减轻内部协变量偏移:通过标准化每一层的输入,使得其均值接近0,方差接近1,从而减少了层间输入的变化,帮助模型更快地收敛。
- 提高训练速度:批次归一化能够使得更大的学习率得以使用,从而加速训练。
- 缓解梯度消失:通过规范化输入,有助于保持激活值的稳定性,从而在一定程度上减轻了梯度消失现象。
- 具有正则化效果:批次归一化可以在某种程度上减少对其他正则化技术(如Dropout)的依赖,因为它引入了一定的噪声。
- 提高模型泛化能力:通过使训练过程更加稳定,批次归一化有助于提高模型在未见数据上的表现。
五、ResNet残差神经网络解决了传统神经网络什么问题
1.梯度消失和梯度爆炸
梯度消失:
- 梯度消失是指在反向传播过程中,梯度逐渐减小,导致更新权重时几乎没有变化。
- 使得模型在训练初期或某些层的训练变得非常缓慢,甚至停滞不前。
梯度爆炸:
- 梯度爆炸是指在反向传播过程中,梯度逐渐增大,导致权重更新过大,进而使模型无法收敛,甚至出现数值溢出。
- 导致模型的损失函数发散,使得训练过程不稳定。
ResNet残差神经网络使用批次归一化解决了该问题
2.退化问题
- 该图是两种层次的神经网络在训练集和测试集上多次迭代的错误率曲线
- 可以看出来多层神经网络的错误率反而要高于少层
- 说明深层神经网络出现了退化问题,模型可能出现复杂性增加或过拟合问题
ResNet残差神经网络使用残差结构解决了该问题