Loading [MathJax]/jax/input/TeX/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【深入探讨 ResNet:解决深度神经网络训练问题的革命性架构】

【深入探讨 ResNet:解决深度神经网络训练问题的革命性架构】

作者头像
机器学习司猫白
修改于 2025-02-20 09:03:23
修改于 2025-02-20 09:03:23
31700
代码可运行
举报
文章被收录于专栏:机器学习实战机器学习实战
运行总次数:0
代码可运行

深入探讨 ResNet:解决深度神经网络训练问题的革命性架构

随着深度学习的快速发展,卷积神经网络(CNN)已经成为图像识别、目标检测等计算机视觉任务的主力军。然而,随着网络层数的增加,训练深层网络变得愈加困难,主要问题是“梯度消失”和“梯度爆炸”问题。幸运的是,ResNet(Residual Networks)通过引入“残差学习”概念,成功地解决了这些问题,极大地推动了深度学习的发展。

本文将详细介绍ResNet的架构原理、优势,并通过一个小例子帮助大家更好地理解如何使用ResNet进行图像分类。

什么是ResNet?

ResNet(Residual Networks)是由微软研究院的何凯明等人于2015年提出的神经网络架构。在深度神经网络中,随着层数的增加,网络的表现反而开始退化,这种现象被称为“退化问题”。为了缓解这个问题,ResNet引入了“残差块”(Residual Block)的概念。通过在网络中加入跳跃连接(skip connections),ResNet使得信息可以绕过一些层,直接传递到更深层,从而避免了梯度消失和梯度爆炸的问题。

在传统的神经网络中,每一层的输出是当前输入的变换。而在ResNet中,跳跃连接使得每一层的输出是输入和变换的加和(即残差)。这使得训练深层网络变得更加容易,同时也提升了网络的表现。

ResNet的核心思想:残差学习

ResNet的核心思想是通过引入残差学习来解决深度神经网络的训练困难。在ResNet中,每个基本单元(即残差块)都由两部分组成:

  1. 标准卷积层:将输入进行特征提取。
  2. 跳跃连接:将输入直接加到输出上,这样即使某一层的学习变得困难,网络仍然能通过残差连接传递信息。

公式上,传统的网络输出为:

y=F(x,{Wi})

其中,(x)是输入,(F(x, {W_i}))是网络的变换,({W_i})是权重。ResNet的输出变为:

y=F(x,{Wi})+x

也就是说,ResNet通过将输入(x)直接加到变换(F(x, {W_i}))中,形成了一个残差。这使得网络能更容易地训练,并且在更深的层数上表现得更好。

ResNet架构

ResNet的架构通常由多个残差块(Residual Block)堆叠而成,每个残差块内部包括两个卷积层和一个跳跃连接。在ResNet中,最常用的网络有:

  • ResNet-18:18层的ResNet网络。
  • ResNet-34:34层的ResNet网络。
  • ResNet-50:50层的ResNet网络。
  • ResNet-101:101层的ResNet网络。
  • ResNet-152:152层的ResNet网络。

较深的网络如ResNet-50、ResNet-101和ResNet-152主要使用了“瓶颈结构”(Bottleneck Structure),它通过1x1卷积来减少计算量,同时保持模型的深度。

ResNet的优势

  1. 解决了退化问题:随着网络层数的增加,传统CNN容易出现退化问题,导致训练误差上升。ResNet通过引入跳跃连接和残差块有效解决了这一问题,使得网络能够训练得更深。
  2. 易于训练:ResNet的跳跃连接帮助梯度流动更为顺畅,减少了梯度消失和梯度爆炸的问题。因此,即使是非常深的网络也能通过梯度下降法顺利训练。
  3. 提高了性能:ResNet不仅在分类任务上表现出色,还在目标检测、语义分割等多种计算机视觉任务中取得了令人瞩目的成绩。

ResNet架构图

为了更好地理解ResNet的结构,以下是ResNet的残差块和整体架构图:

残差块(Residual Block)

组件

描述

残差块基本结构

由两个3x3卷积层、批归一化(Batch Normalization)和ReLU激活函数组成。

跳跃连接(Skip Connection)

输入直接跳跃到输出端,然后与卷积层的输出相加。这样可以避免梯度消失问题,并加速网络的训练过程。

残差学习

网络不直接学习输入到输出的映射,而是学习输入和输出之间的“残差”,即两者的差异。这样可以简化优化过程并提高训练效果。

解决梯度消失问题

通过跳跃连接,允许梯度在反向传播时流动更加顺畅,避免在深层网络中出现梯度消失现象。

扩展性

残差块的设计使得网络可以很容易扩展到更深的层次,而不会导致性能下降或训练困难。

每个残差块包括两个卷积层,以及一个直接连接输入和输出的跳跃连接。

ResNet-50架构图

层类型

输出大小

卷积/操作

特点

输入层

224x224x3

-

输入图像大小为224x224,3通道(RGB)。

卷积层1

112x112x64

7x7卷积,步幅为2

用于初步提取特征,步幅为2,降低图像大小。

最大池化层

56x56x64

3x3最大池化,步幅为2

降低空间维度,减少计算量。

残差块1(瓶颈)

56x56x256

1x1卷积, 3x3卷积, 1x1卷积

包含三个卷积层(1x1, 3x3, 1x1),采用瓶颈结构。

残差块2(瓶颈)

28x28x512

1x1卷积, 3x3卷积, 1x1卷积

结构与残差块1相同,但输出通道数更高。

残差块3(瓶颈)

14x14x1024

1x1卷积, 3x3卷积, 1x1卷积

输出通道数更高,增加模型的复杂度。

残差块4(瓶颈)

7x7x2048

1x1卷积, 3x3卷积, 1x1卷积

最后一个瓶颈残差块,输出通道数最大。

全局平均池化层

1x1x2048

全局平均池化

降维至1x1,减少模型参数。

全连接层

1x1x1000

1000维全连接层

输出1000类的分类结果(ImageNet)。

Softmax激活

1x1x1000

Softmax

用于多类别分类。

ResNet-50由多个残差块堆叠而成,形成深度为50的网络结构。

一个小例子:使用ResNet进行图像分类

为了展示ResNet在实际中的应用,下面是一个简单的例子,说明如何使用ResNet进行图像分类任务。

假设我们有一个包含猫和狗的图像数据集,我们希望使用ResNet-50来分类这些图像。

代码示例:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tensorflow as tf
from tensorflow.keras.applications import ResNet50
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras import layers, models

# 加载ResNet50预训练模型(包括ImageNet权重)
base_model = ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# 冻结ResNet50的卷积层
for layer in base_model.layers:
    layer.trainable = False

# 定义模型架构
model = models.Sequential([
    base_model,
    layers.GlobalAveragePooling2D(),
    layers.Dense(256, activation='relu'),
    layers.Dense(1, activation='sigmoid')  # 使用sigmoid激活函数进行二分类
])

# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 加载训练数据
train_datagen = ImageDataGenerator(rescale=1./255, horizontal_flip=True, rotation_range=40)
train_generator = train_datagen.flow_from_directory('path_to_train_data', target_size=(224, 224), batch_size=32, class_mode='binary')

# 训练模型
model.fit(train_generator, epochs=10, steps_per_epoch=100)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度学习经典网络解析:7.ResNet
  如果说你对深度学习略有了解,那你一定听过大名鼎鼎的ResNet,正所谓ResNet 一出,谁与争锋?现如今2022年,依旧作为各大CV任务的backbone,比如ResNet-50、ResNet-101等。ResNet是2015年的ImageNet大规模视觉识别竞赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)中获得了图像分类和物体识别的冠军,是中国人何恺明、张祥雨、任少卿、孙剑在微软亚洲研究院(AI黄埔军校)的研究成果。
AiCharm
2023/05/15
4.1K0
深度学习经典网络解析:7.ResNet
深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
一、CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二、LeNet-5网络 输入尺寸:32
10JQKA
2018/05/09
2.9K0
深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
【深度学习实验】卷积神经网络(七):实现深度残差神经网络ResNet
输入数据通过上述序列模块self.b1、self.b2、self.b3、self.b4、self.b5和self.head进行处理,最终输出分类结果。
Qomolangma
2024/07/30
4220
【深度学习实验】卷积神经网络(七):实现深度残差神经网络ResNet
​​​​【动手学深度学习】残差网络(ResNet)的研究详情
启动jupyter notebook,使用新增的pytorch环境新建ipynb文件,为了检查环境配置是否合理,输入import torch以及torch.cuda.is_available() ,若返回TRUE则说明研究环境配置正确,若返回False但可以正确导入torch则说明pytorch配置成功,但研究运行是在CPU进行的,结果如下:
SarPro
2024/06/14
2860
​​​​【动手学深度学习】残差网络(ResNet)的研究详情
明月深度学习实践004:ResNet网络结构学习
ResNet可谓大名鼎鼎了,一直遵循拿来主义,没有好好去学习它,当然,作为一个提出来快五年的网络结构,已经有太多人写过它了,不好下笔。
明月AI
2021/10/28
1.2K0
明月深度学习实践004:ResNet网络结构学习
深度学习和深度强化学习的特征提取网络
标题:Backbones-Review:Feature Extraction Networks for Deep Learning and Deep Reinforcement Learning Approaches
一点人工一点智能
2023/06/06
1.3K0
深度学习和深度强化学习的特征提取网络
深入探究深度卷积语义分割网络和 Deeplab_V3
深度卷积神经网络(DCNN)在各种计算机视觉应用中取得了显着的成功。当然,语义分割的任务也不例外。
AI研习社
2019/05/08
8040
深入探究深度卷积语义分割网络和 Deeplab_V3
基于卷积神经网络的图像分类
目前主要的网络先是AlexNet,然后到VGG,到GoogleNet再到ResNet,深度是逐渐加深的分别是8层、19层、GoogleNet V1是22层和ResNet第一篇文章是152层,其中VGG和ResNet结构简洁而且性能比较好,因此使用比较广泛。GoogleNet的性能最好,但是网络很复杂,思想是先分级再分支然后再各自做变换然后再合并,就是增加了网络的宽度,先分支各个网路做各自的卷积或池化,最终把结果串接起来形成更多的特征通道。残差网络主要是对通达上的操作,通道拆解。目前网络有三大维度,深度、宽度(GoogleNet主做的维度)、残差网络的升级版ResNeXt增加了维度基数,因此有三个参数来表征网络的复杂度,换句话说就是模型的表达力,网络越复杂模型表达力越强。
狼啸风云
2022/06/05
1.1K0
基于卷积神经网络的图像分类
【卷积神经网络结构专题】ResNet及其变体的结构梳理、有效性分析
【导读】2020年,在各大CV顶会上又出现了许多基于ResNet改进的工作,比如:Res2Net,ResNeSt,IResNet,SCNet等等。为了更好的了解ResNet整个体系脉络的发展,我们特此对ResNet系列重新梳理,并制作了一个ResNet专题,希望能帮助大家对ResNet体系有一个更深的理解。本篇文章我们将主要讲解ResNet、preResNet、ResNext以及它们的代码实现。
深度学习技术前沿公众号博主
2020/08/11
5.7K0
卷积神经网络学习路线(十)| 里程碑式创新的ResNet
开篇的这张图代表ILSVRC历年的Top-5错误率,我会按照以上经典网络出现的时间顺序对他们进行介绍,同时穿插一些其他的经典CNN网络。
BBuf
2020/02/12
1.1K0
卷积神经网络学习路线(十)| 里程碑式创新的ResNet
PyTorch实战:常用卷积神经网络搭建结构速览
PyTorch可以说是三大主流框架中最适合初学者学习的了,相较于其他主流框架,PyTorch的简单易用性使其成为初学者们的首选。这样我想要强调的一点是,框架可以类比为编程语言,仅为我们实现项目效果的工具,也就是我们造车使用的轮子,我们重点需要的是理解如何使用Torch去实现功能而不要过度在意轮子是要怎么做出来的,那样会牵扯我们太多学习时间。以后就出一系列专门细解深度学习框架的文章,但是那是较后期我们对深度学习的理论知识和实践操作都比较熟悉才好开始学习,现阶段我们最需要的是学会如何使用这些工具。
fanstuck
2024/12/29
2860
PyTorch实战:常用卷积神经网络搭建结构速览
经典神经网络 | ResNet 论文解析及代码实现
论文题目:Deep Residual Learning for Image Recognition
墨明棋妙27
2022/09/23
7300
基于PyTorch的卷积神经网络经典BackBone(骨干网络)复现
向AI转型的程序员都关注了这个号👇👇👇 机器学习AI算法工程   公众号:datayx 前言 卷积神经网络的发展,从上个世纪就已经开始了,让时间回到1998年, 在当时,Yann LeCun 教授提出了一种较为成熟的卷积神经网络架构LeNet-5,现在被誉为卷积神经网络的“HelloWorld”,但由于当时计算机算力的局限性以及支持向量机(核学习方法)的兴起,CNN方法并不是当时学术界认可的主流方法。时间推移到14年后,随着AlexNet以高出第二名约10%的accuracy rate成为了2012年Ima
机器学习AI算法工程
2022/05/10
1.4K0
基于PyTorch的卷积神经网络经典BackBone(骨干网络)复现
ResNet详解:网络结构解读与PyTorch实现教程
深度残差网络(Deep Residual Networks,简称ResNet)自从2015年首次提出以来,就在深度学习领域产生了深远影响。通过一种创新的“残差学习”机制,ResNet成功地训练了比以往模型更深的神经网络,从而显著提高了多个任务的性能。深度残差网络通过引入残差学习和特殊的网络结构,解决了传统深度神经网络中的梯度消失问题,并实现了高效、可扩展的深层模型。
TechLead
2023/10/21
5.9K0
ResNet详解:网络结构解读与PyTorch实现教程
【最强ResNet改进系列】IResNet:涨点不涨计算量,可训练网络超过3000层!
【导读】本篇文章是【最强ResNet改进系列】的第四篇文章,前面我们已经介绍了Res2Net和ResNeSt,具体见:【最强ResNet改进系列】Res2Net:一种新的多尺度网络结构,性能提升显著 和【CV中的注意力机制】史上最强"ResNet"变体--ResNeSt。本文我们将着重讲解IResNet,阿联酋起源人工智能研究院(IIAI)的研究人员,进一步深入研究了残差网络不能更深的原因,提出了改进版的残差网络(Improved Residual Networks for Image and Video Recognition),IResNet可训练网络超过3000层!相同深度但精度更高,与此同时,IResNet还能达到涨点不涨计算量的效果,在多个计算机视觉任务(图像分类,COCO目标检测,视频动作识别)中精度得到了显著提升。
深度学习技术前沿公众号博主
2020/09/01
5K0
深度学习第6天:ResNet深度残差网络
ResNet有许多模型:如ResNet34, ResNet50,不过这些基本上都是根据层数来命名的,ResNet网络模型一般是开始有一层卷积层来提取图像特征,再经过池化,然后进入残差块中(ResNet的主要结构),最后再经过池化层与全连接层被输出出来,下图是一个ResNet34的模型示意图
Nowl
2024/01/18
2780
深度学习第6天:ResNet深度残差网络
ResNet详细解读
这篇文章是Deep Residual Learning for Image Recognition 的翻译,精简部分内容的同时补充了相关的概念,如有错误,敬请指正。
全栈程序员站长
2022/09/01
2.1K0
ResNet详细解读
深度学习论文随记(四)ResNet 残差网络-2015年Deep Residual Learning for Image Recognition
本文介绍了深度学习网络中残差网络(ResNet)的基本原理、结构和特点。残差网络通过在输入和输出之间加入shortcut connection来解决深层网络训练中的梯度消失问题,从而可以将网络深度提高到152层。实验证明,深度残差网络在图像分类任务中表现优异,其本质优于之前的网络。
TeeyoHuang
2017/12/28
1.6K0
深度学习论文随记(四)ResNet 残差网络-2015年Deep Residual Learning for Image Recognition
基于python+ResNet50算法实现一个图像识别系统
在本文中将介绍使用Python语言,基于TensorFlow搭建ResNet50卷积神经网络对四种动物图像数据集进行训练,观察其模型训练效果。
子午Python
2023/07/18
1.5K0
ResNet与VGG网络
卷积神经网络(CNN)是深度学习中广泛应用于计算机视觉任务的核心模型。自从2012年AlexNet在ImageNet比赛中取得突破以来,CNN在图像分类、目标检测、语义分割等领域取得了显著的进展。随着网络深度的不断增加,新的架构如VGG和ResNet相继诞生,它们的设计思路和创新对计算机视觉任务的精度提升起到了关键作用。
LucianaiB
2025/02/10
1600
推荐阅读
相关推荐
深度学习经典网络解析:7.ResNet
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验