首页 > 其他分享 >残差神经网络:原理与实践

残差神经网络:原理与实践

时间:2023-09-01 22:22:15浏览次数:41  
标签:实践 卷积 梯度 ResNet 残差 学习 神经网络 网络

VGGNet和GoogLeNet等网络都表明有足够的深度是模型表现良好的前提,但是在网络深度增加到一定程度时,更深的网络意味着更高的训练误差。误差升高的原因是网络越深,梯度弥散[还有梯度爆炸的可能性]的现象就越明显,所以在后向传播的时候,无法有效的把梯度更新到前面的网络层,靠前的网络层参数无法更新,导致训练和测试效果变差。所以ResNet面临的问题是怎样在增加网络深度的情况下有可以有效解决梯度消失的问题。ResNet中解决深层网络梯度消失的问题的核心结构是残差网络。

1.ResNet残差学习单元
在这里插入图片描述 ResNet提出了2种mapping:一种是identity mapping[恒等映射],指的是图中的曲线,把当前输出直接传输给下一层网络,相当于走了一个捷径,跳过了本层运算,另一种是residual mapping[残差映射],指的是除了曲线的部分,最终的输出是。identity mapping指的是方程中的,而residual mapping指的是。其中,identity mapping就是shortcut connection。

2.两种ResNet残差学习单元设计
在这里插入图片描述 2种结构分别针对ResNet34[左图]和ResNet50/101/152[右图],通常称整个结构为一个building block,右图又称bottleneck design。bottleneck design主要是为了降低参数数目,第一个的卷积把256维channel降到64维,然后在最后通过卷积恢复,总共用的参数数目为,而不使用bottleneck时就是两个的卷积,总共参数数目为,相差16.94倍。左图ResNet模块设计通常用于34层或者更少层数的网络中,右图ResNet模块设计通常用于更深的网络中,比如101层,目的是减少计算和参数量。

3.ResNet不同结构
在这里插入图片描述 上表列出了5种深度的ResNet,分别是18、34、50、101和152。所有的网络都分为5部分,分别是conv1、conv2_x、conv3_x、conv4_x、conv5_x。以ResNet101为例,首先有个输入的卷积,然后经过个building block,每个block为3层,所以有层,最后有个fc层用于分类,所以层。可见ResNet101中的101中的是网络的层数,需要说明的是101层网络仅仅指卷积或者全连接层,而激活层或者pooling层并没有计算在内。

4.两种Shortcut Connection方式
在这里插入图片描述 是按照channel维度相加的,实线部分的Shortcut Connection两者的channel维度是相同的,执行的都是卷积操作,计算方程为。虚线部分的Shortcut Connection两者的channel维度是不同的,执行的分别是卷积操作,计算方程为,其中是卷积操作,用来调整的channel维度。

5.残差学习
残差学习解决了深度神经网络退化的问题,但为什么残差学习比原始特征直接学习更容易呢?假设对于一个堆积层结构当输入为时,其学习到的特征记为,现在希望其可以学习到残差,这样其原始的学习特征为。当残差为0时,此时堆积层仅仅做了恒等映射,至少网络性能不会下降,实际上残差不会为0,这也会使得堆积层在输入特征基础上学习到新的特征。
接下来从数学的角度来分析这个问题,残差单元可以表示为:

其中,分别表示第个残差单元的输入和输出,表示学习到的残差,而表示恒等映射,是ReLU激活函数。
基于上述方程,当都是恒等映射时[即],可以求得从浅层到深层的学习特征:

利用链式规则,可以求得反向过程的梯度:

其中,第一个因子表示损失函数到达的梯度,小括号中的1表示Shortcut Connection可以无损的传播梯度,而另一项残差梯度则需要经过带有权重的层,梯度不是直接传递过来的。残差梯度不会那么巧全为-1,而且就算其比较小,有1的存在也不会导致梯度消失。所以残差学习比原始特征直接学习会更容易。

6.ResNet的TensorFlow和Keras实现
(1)TensorFlow实现:https://download.csdn.net/download/shengshengwang/10933002
(2)Keras实现:https://download.csdn.net/download/shengshengwang/10933009

参考文献:
[1]ResNet网络结构:https://blog.csdn.net/dcrmg/article/details/79263415
[2]论文笔记Deep Residual Learning:https://www.cnblogs.com/jermmyhsu/p/8228007.html
[3]解析卷积神经网络:深度学习实践手册
[4]你必须要知道CNN模型ResNet:https://zhuanlan.zhihu.com/p/31852747
[5]resnet-in-tensorflow:https://github.com/wenxinxu/resnet-in-tensorflow

标签:实践,卷积,梯度,ResNet,残差,学习,神经网络,网络
From: https://www.cnblogs.com/shengshengwang/p/17672971.html

相关文章

  • 2023 腾讯全球数字生态大会,腾讯云研发效能创新与实践专场来啦!
    点击链接了解详情......
  • 林乐博士在CCF中国区块链技术大会发表特邀主旨演讲:产业区块链的探索与实践
    8月14日,第六届CCF中国区块链技术大会暨区块链专业委员会成立五周年庆典在南京隆重开幕。此次大会由中国计算机学会(CCF)主办。大会汇聚了国内外区块链领域的顶尖学者、专家,地方政府及产业精英,共同探讨区块链技术的最新进展、创新应用以及未来发展方向。零数科技创始人兼CEO林乐博士受......
  • 【转】对神经网络与图像识别的好奇
    虽然我是个学Java的,但是今天看到人工智能的图像识别系统,不得不让我感到震惊与好奇,我学编程有两大爱好,一就是搞出个自己的大的系统,二就是研究AI,但是两者不能并肩,不然学的东西太多了。但是作为了解我推荐下下面的关于图像分析类的论文阅读:[论文阅读]WhenDoesLabelSmoothingHelp?......
  • Unity Android Studio 混合开发实践(Unity工程导入Android项目进行开发)
    前言最近接到一个任务是将一个unity开发的游戏接入到现有的Android项目里,然后在现有的App实现点击一个按钮打开游戏,并且在游戏内提供一个可以退出到App的按钮。整体需求是很明确的,难点主要有两个:我们公司是做应用开发的,没有任何游戏开发的技能储备。在游戏中需要和Native进行......
  • 前馈神经网络解密:深入理解人工智能的基石
    本文深入探讨了前馈神经网络(FNN)的核心原理、结构、训练方法和先进变体。通过Python和PyTorch的实战演示,揭示了FNN的多样化应用。作者TechLead,拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业......
  • 生成式 AI 在泛娱乐行业的应用场景实践 – 助力风格化视频内容创作
    感谢大家阅读《生成式AI行业解决方案指南》系列博客,全系列分为4篇,将为大家系统地介绍生成式AI解决方案指南及其在电商、游戏、泛娱乐行业中的典型场景及应用实践。目录如下:《生成式AI行业解决方案指南与部署指南》《生成式AI在电商行业的应用场景实践–赋能营销物......
  • uniapp 项目实践总结(二)从零开始搭建一个项目
    导语:本篇文章主要是项目方面的技术开发总结,新建一个项目可以选择使用可视化界面,也可以使用命令行搭建。目录可视化界面命令行搭建安卓开发环境苹果开发环境可视化界面安装软件使用官方推荐的HbuilderX软件,开发方式比较简单,内置相关环境以及终端,无需配置node。下......
  • Tensorflow的简单神经网络
     #导入库importtensorflowastfimportnumpyasnpfromtensorflowimportkeras#定义和编译一个神经网络model=tf.keras.Sequential([keras.layers.Dense(units=1,input_shape=[1])])#编译并指定lossoptimizermodel.compile(optimizer='sgd',loss='mean_sq......
  • 撮合前端平台在低代码平台的落地实践
    在京东技术的发展当下,不同的业务线,不同的区域,甚至于很多触达消费者的端,正在被中台架构能力所支撑。大家都很清楚,中台建设能够带来技术的规模化效应,具有提高业务协同、加速创新和交付速度、提高系统稳定性和可靠性、降低成本和支持业务快速发展等优势。中台架构往往和领域产品有密......
  • 为什么 Higress 是 Knative 入口网关的最佳实践?
    作者:赵伟基(兆维)在传统的应用开发中,通常需要管理底层的基础设施、服务器与网络配置等方面的工作。然而在云原生Serverless化的浪潮下,这些基础设施的细节被抽象和自动化,开发者无需关注服务器等配置、扩展、监控和维护等工作,可以更专注于应用程序的业务逻辑和功能开发。Serverless......