首页 > 其他分享 >ResNet 残差神经网络

ResNet 残差神经网络

时间:2024-11-02 18:15:57浏览次数:6  
标签:卷积 梯度 56 残差 网络 ResNet 神经网络

文章目录

一、什么是ResNet?

  • ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。

  • ResNet 网络中的两个核心组成部分

    • 残差结构(Residual Structure)
    • Batch Normalization(批归一化)
  • 为什么要提出残差结构?

    • 在ResNet 网络没有提出来之前,所有的神经网络都是通过卷积层和池化层的叠加组成的。

    • 很多人认为卷积层和池化层的层数越多,模型的效果会越好

    • 在实际的试验中发现,随着卷积层和池化层的叠加,学习效果不会逐渐变好,反而出现2个问题:

      1.梯度消失和梯度爆炸
      梯度消失:若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0
      梯度爆炸:若每一层的误差梯度大于1,反向传播时,网络越深,梯度越来越大

      2.退化问题
      随着层数的增加,预测效果反而越来越差, 下面是何凯明他们论文中实验的可视化图,可以看出模型层数多的反而没有少的效果好在这里插入图片描述

  • 为了解决梯度消失或梯度爆炸问题,论文提出通过数据的预处理以及在网络中使用 BN(Batch Normalization)层来解决。

  • 为了解决深层网络中的退化问题,可以人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为 残差网络 (ResNets)

  • ResNet论文提出了 residual结构(残差结构)来减轻退化问题,下图是使用residual结构的卷积网络,可以看到随着网络的不断加深,效果并没有变差,而是变的更好了
    在这里插入图片描述

  • ResNet 网络有不同数量的网络层模型,下图为 ResNet18、ResNet34、ResNet50、ResNet101、ResNet152 网络的表格化结构图
    在这里插入图片描述

二、残差结构(Residual Structure)

  • 如下图所示,残差块包含两条路径,一条是主路径(通常包含多个卷积层),用于提取特征;另一条是恒等快捷连接,允许输入直接跳过主路径的某些层与输出相加

  • 所谓相加是特征矩阵相同位置上的数字进行相加

  • 两条路径的输出在特征维度上需要保持一致,以便进行相加操作。这通常通过调整卷积层的步长(stride)、使用1x1卷积核进行升维或降维等方式来实现。
    在这里插入图片描述

  • 以ResNet 18网络为例

    • 下面是 ResNet 18网络完整的图形化结构图
      在这里插入图片描述
  • 部分残差块如下:
    在这里插入图片描述

  • 非残差结构-第一层时(左边结构):

  • 经过卷操作得到输出为[56,56,64]:

    • 通过设置步长stride=1、3x3卷积和卷积核64,使得高宽与卷积核不变
    • 激活函数relu处理
    • 通过设置步长stride=1、3x3卷积和卷积核64,重复特征提取
  • 残差结构-第二层(右边结构):

  • 由上一层的输入为[56,56,64]——>输出为[28,28,128]:

    • 通过设置步长stride=2、3x3卷积和卷积核128,使得高宽从56缩减一半到28,卷积核从64个更改为128个
    • 激活函数relu处理
    • 通过设置步长stride=1、3x3卷积和卷积核128,重复特征提取
  • 快捷连接的输入为[56,56,64]——>[1x1x128]——>输出为[28,28,128]:

    • 通过设置步长stride=2、1x1卷积和卷积核更改,使得高宽从56缩减一半到28,卷积核从64个更改为128个。
    • 与经过卷积层处理后的输出值相加

三、Batch Normalization(BN----批归一化)

参考博客

  • 所谓Feature Map(特征图)是卷积核卷出来的,你用各种情况下的卷积核去乘以原图,会得到各种各样的feature map。

  • 在输入一张图片时往往会使用预处理来使得图片满足某一个分布规律,以加快特征提取。然后进行一次卷积得到一个feature map,而这个feature map就不一定还满足之前所要求的分布规律。

  • Batch Normalization是指批标准化处理,将一批数据的feature map满足均值为0,方差为1的分布规律。注意不是对某一张图片的feature map,而是一整批的feature map,因为BN需要计算整个batch的均值和方差。

  • 如下图
    在这里插入图片描述

  • 原理

    • 标准化处理:在训练过程中,对每个小批量数据进行标准化处理,即对每个特征维度进行归一化操作。这有助于缓解内部协变量偏移(Internal Covariate Shift)问题,即网络在训练过程中由于参数更新导致的数据分布变化问题
    • 可学习参数:为了恢复出原始网络所要学习的特征分布,BN引入了可学习的缩放因子(γ)和偏移因子(β),使得网络可以通过学习这些参数来调整标准化后的数据分布
    • 训练与测试在训练阶段,BN使用当前小批量数据的均值和方差进行标准化处理;在测试阶段,则使用训练过程中所有小批量数据的均值和方差的移动平均进行标准化处理。
  • 使用注意

    • (1)训练时要将traning参数设置为True进行统计,在验证时将trainning参数设置为False,对统计的值进行验证。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。

    • (2)batch_size (每次迭代中,模型同时处理多少个数据点)尽可能设置大点,设置小后表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差。

    • (3)建议将BN层放在卷积层(Conv)和激活层(例如Relu)之间

标签:卷积,梯度,56,残差,网络,ResNet,神经网络
From: https://blog.csdn.net/weixin_73504499/article/details/143454400

相关文章

  • 适用FPGA的小型神经网络:加速边缘智能的新篇章
    在人工智能(AI)技术日新月异的今天,神经网络作为其核心驱动力,正逐步渗透到各个行业与领域。然而,传统的神经网络模型往往受限于计算资源和功耗,难以在边缘设备上实现高效运行。现场可编程门阵列(FPGA)作为一种高性能、低功耗的硬件加速器,为小型神经网络的部署提供了理想的平台。本文将深......
  • 关于图神经网络框架Pytorch_geometric实战应用,并给出详细代码实现过程
    大家好,我是微学AI,今天给大家介绍一下关于图神经网络框架Pytorch_geometric实战应用,并给出详细代码实现过程,本文展示了如何利用该框架进行图神经网络的搭建与训练。文章涵盖了从数据预处理、模型构建、参数调优到模型评估等各个环节,旨在帮助读者深入理解并掌握Pytorch_geome......
  • 诺贝尔物理学奖的新篇章:机器学习与神经网络的光辉时刻
    文章目录前言一、从理论到实践:机器学习的物理基础二、跨学科融合:开启智能时代的新纪元三、技术创新:推动科学研究的革命四、社会影响:促进公平与可持续发展五、伦理与挑战:确保技术的健康发展六、未来展望:开启智能时代的无限可能结语前言在科学界的璀璨星河中,诺贝尔奖......
  • 深度学习——卷积神经网络
    一、卷积神经网络        卷积神经网络(ConvolutionalNeuralNetworks,简称CNN)是一种深度学习模型,它在图像和视频识别、分类和分割等任务中表现出色。CNN的设计灵感来源于生物的视觉皮层机制,特别是它如何响应图像边缘和纹理等局部特征。1.卷积神经网络的应用领域  ......
  • 为什么神经网络loss值很小但实际预测结果差很大
    当我们使用神经网络进行训练时,可能会遇到loss值很小但实际预测效果很差的情况。这可能是由:1.过拟合;2.不合适的数据分割;3.评估指标选择不当;4.模型结构或参数设置不当;5.数据问题导致的标签错误等原因造成的。1.过拟合过拟合是神经网络训练中常见的问题,意味着模型在训练数据上表......
  • 【深度学习】从公式推导来深入理解误差反向传播算法2:《深度学习入门基于Python的理论
    《深度学习入门基于Python的理论与实现》中实现了2层全连接神经网络的代码对MNIST数据集的28x28像素0-9手写数字灰度图像进行分类,本文将重点对代码中的two_layer_net类的gradient函数中的误差反向传播的代码进行公式推导验证。验证小批量数据的交叉熵损失函数对第2层权重......
  • Python基于TensorFlow实现卷积神经网络-双向长短时记忆循环神经网络加注意力机制回归
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后关注获取。1.项目背景随着大数据时代的到来,对复杂数据结构的理解和预测成为许多领域的重要课题。在这些领域中,无论是视频分析、语音识别还是自然语言处理,都面临着需......
  • Python深度学习进阶与前沿应用(注意力机制详解、生成式模型详解、自监督学习模型详解、
    近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。注意力机制、Transformer模型(BERT、GPT-1/2/3/3.5/4、DETR、ViT、SwinTransformer等)、生成式模型(变分自编码器VAE、生成式对抗网络GAN、扩散模型Di......
  • 《神经网络、机器学习和深度学习:开启智能时代的三把密钥》
    神经网络、机器学习和深度学习是人工智能领域中非常重要的概念,它们之间既有联系又有区别。神经网络原理神经元模型:神经网络的灵感来源于人类大脑的神经元结构。在人工神经网络中,每个神经元接收来自其他神经元或输入层的多个输入信号,并对这些输入进行加权求和。每个输入......
  • 让卷积神经网络来辨识马和人
    上一篇:《设计卷积神经网络CNN为什么不是编程?》序言:我们已经踏入了设计人工智能(AI)模型的大门,有一个重要概念请大家务必记住:人工智能模型=架构+特征。任何一个AI模型都是先设计出架构,再通过数据训练获得特征。整合了特征的架构才算是一个完整的人工智能模型,如果没有特征的支撑......