【DeepLearning】Deep Residual Learning for Image Recognition恺神大作学习

@[TOC] Deep Residual Learning for Image Recognition
论文
在这里插入图片描述

1. 文章主要想解决什么问题,用了什么方法

深度神经网络在训练过程中的3个关键问题:

  1. 梯度消失/爆炸问题:随着网络层数的增加,梯度在反向传播过程中可能会变得非常小(梯度消失)或者非常大(梯度爆炸),这会阻碍网络的收敛。

  2. 退化问题:随着网络深度的增加,网络的准确率在达到一定深度后不再提升,反而可能会下降。这种现象称为退化问题,它表明简单地增加网络层数并不能保证性能的提升。

  3. 优化困难:深层网络可能难以优化,尤其是在网络非常深的情况下。这可能导致训练过程缓慢或者无法找到最优解。

为了解决这些问题,文章提出了以下解决方案:

  • 残差学习:通过将网络层设计为学习输入的残差映射(即输出是输入加上网络层的输出),而不是直接学习映射本身,可以更容易地优化网络。

  • 快捷连接(Shortcut Connections):在网络中引入跳跃连接,这些连接允许输入直接传递到网络的后面部分,从而帮助网络学习残差映射。

  • 瓶颈架构(Bottleneck Architecture):为了提高网络的效率和减少计算复杂度,作者提出了一种瓶颈架构,它在每个残差块中使用1×1、3×3和1×1的卷积层,其中3×3的卷积层是瓶颈部分。

这些方法共同使得网络能够在更深的层次上有效地学习复杂的映射,同时保持较低的计算成本和内存需求。通过这些技术,作者成功地训练了超过1000层的网络,并在多个视觉识别任务上取得了显著的性能提升。

2. 如何解决1种提到的问题

基于残差学习、快捷连接(Shortcut Connections)和瓶颈架构(Bottleneck Architecture)的方法为啥能够有效解决上述问题,主要原理是什么讷

  1. 残差学习

    • 梯度消失/爆炸问题:通过学习残差映射,网络的每一层不再是独立地学习整个映射,而是学习输入到输出的残差部分。这意味着即使在深层网络中,梯度也更容易通过这些残差路径传播,因为它们通常比直接映射要小得多,从而减少了梯度消失或爆炸的风险。
    • 退化问题:残差学习使得网络能够学习到更复杂的功能,因为每一层都在尝试学习输入到输出的“差异”,而不是整个映射。这使得网络可以构建在更浅层网络的基础上,通过添加更多的层来学习更复杂的功能,而不会退化。
  2. 快捷连接
    啥叫快捷连接呢?
    在这里插入图片描述

    • 优化困难:快捷连接允许信息直接跳过某些层,这使得网络更容易学习到恒等映射(identity mapping),因为恒等映射是网络的默认状态。这种直接的路径为网络提供了一个稳定的参考点,有助于网络更快地收敛。
    • 梯度消失/爆炸问题:快捷连接为梯度提供了一个额外的路径,这个路径不受中间层的影响,因此可以更有效地传递梯度,减少梯度消失或爆炸的可能性。

正对这一点具体网络设计如下:
在这里插入图片描述

  1. 瓶颈架构
    • 优化困难:瓶颈架构通过在每个残差块中使用1×1的卷积层来减少输入和输出的维度,然后再通过3×3的卷积层进行特征学习。这种设计减少了每一层的参数数量,从而降低了模型的复杂度,使得网络更容易优化。
      具体表现形式如下
      在这里插入图片描述

    • 计算效率:瓶颈架构通过减少中间层的维度来降低计算成本,同时保持了网络的深度,这使得在有限的计算资源下可以训练更深的网络。

所以核心是这些方法通过提供更稳定的梯度流、简化网络结构、降低计算复杂度,以及允许网络更容易地学习到恒等映射,从而提高了深层网络的训练效率和性能。这些改进使得网络能够在更深的层次上有效地学习复杂的映射,同时保持较低的计算成本和内存需求。

在数学上,残差学习和快捷连接可以通过以下公式来描述:

  1. 残差学习
    假设我们有一个深层网络,其目标是学习一个映射函数 ( H ( x ) ) ( H(x) ) (H(x)),其中 ( x ) 是输入,( H(x) ) 是期望的输出。在残差学习中,我们不是直接学习 ( H(x) ),而是学习一个残差映射 ( F(x) ),即 ( H(x) - x )。然后,我们通过将 ( F(x) ) 加到输入 ( x ) 上来重新定义 ( H(x) ),即 ( H(x) = F(x) + x )。

    数学上,这可以表示为:
    [ y = F ( x , W i ) + x ] [ y = F(x, {W_i}) + x ] [y=F(x,Wi)+x]
    其中 ( y ) 是输出,( F(x, {W_i}) ) 是残差映射,( {W_i} ) 是网络中的权重。

  2. 快捷连接
    快捷连接通过在网络中添加直接连接(shortcut connections)来实现。这些连接允许网络中的信息直接从输入传递到输出,绕过中间的某些层。在残差网络中,快捷连接通常用于将输入 ( x ) 添加到残差块的输出上。

    数学上,快捷连接可以表示为:
    [ y = F(x, {W_i}) + x ]
    其中 ( y ) 是输出,( F(x, {W_i}) ) 是残差块的输出,( x ) 是输入。

  3. 瓶颈架构
    瓶颈架构通过在每个残差块中使用1×1的卷积层来减少输入和输出的维度,然后再通过3×3的卷积层进行特征学习。这种设计减少了每一层的参数数量,从而降低了模型的复杂度。

    数学上,瓶颈架构可以表示为:
    [ y = B N ( R e L U ( C o n v ( B N ( C o n v ( x , W 1 ) , W 2 ) ) ) ) ] [ y = {BN}({ReLU}({Conv}({BN}({Conv}(x, {W_1}), {W_2})))) ] [y=BN(ReLU(Conv(BN(Conv(x,W1),W2))))]
    其中 ( y ) 是输出,( \text{BN} ) 是批量归一化层,( \text{ReLU} ) 是修正线性单元激活函数, ( Conv ) ( \text{Conv} ) (Conv) 是卷积层,( {W_1} ) 和 ( {W_2} ) 是卷积层的权重。

这些数学表达式描述了残差网络的基本结构和操作,它们共同作用于提高网络的深度和性能,同时减少训练过程中的优化困难。

3. 为什么这样的设计可以解决1种提到的问题

这样的设计可以解决上述问题,主要是因为它们针对性地改善了深度学习网络在训练过程中遇到的挑战:

  1. 梯度消失/爆炸问题

    • 残差学习:通过学习残差映射 ( F(x) = H(x) - x ),网络的每一层都在尝试学习一个较小的残差,而不是整个映射 ( H(x) )。这意味着即使在深层网络中,梯度也更容易通过这些残差路径传播,因为残差通常比直接映射要小得多。这有助于缓解梯度消失问题,因为较小的梯度值更容易在反向传播中保持非零值。
    • 快捷连接:快捷连接为梯度提供了一个直接的路径,绕过了中间层。这使得梯度可以直接从输出传回输入,减少了中间层对梯度的影响,从而减少了梯度消失或爆炸的风险。
  2. 退化问题

    • 残差学习:残差学习允许网络在更深的层次上学习更复杂的功能,同时保持对浅层网络的依赖。这意味着网络可以通过添加更多的层来逐渐学习更复杂的特征,而不会因为层数的增加而导致性能下降。
    • 快捷连接:快捷连接确保了输入信息可以直接到达网络的深层,这有助于网络学习到更复杂的特征,同时保持了输入信息的完整性,从而避免了信息丢失导致的性能退化。
  3. 优化困难

    • 残差学习:残差学习使得网络更容易学习到恒等映射,因为网络的每一层都在尝试学习输入到输出的微小变化。这使得网络更容易找到一个良好的起点,从而加速了训练过程。
    • 快捷连接:快捷连接提供了一个稳定的参考点,使得网络更容易优化。由于信息可以直接从输入传递到输出,网络可以更容易地找到一个好的解决方案,而不是被卡在局部最优解。
    • 瓶颈架构:瓶颈架构通过减少中间层的维度来降低计算复杂度,这使得网络更容易训练。同时,1×1的卷积层可以看作是一种维度变换,它在不增加计算量的情况下,允许网络学习更复杂的特征映射。

总而言之 这些设计通过提供更稳定的梯度流、简化网络结构、降低计算复杂度,以及允许网络更容易地学习到恒等映射,从而提高了深层网络的训练效率和性能。这些改进使得网络能够在更深的层次上有效地学习复杂的映射,同时保持较低的计算成本和内存需求。

4. 经典网络对比

4.1 普通网络设计(参考VGG)
对于相同的尺寸的输出特征图谱,每层必须含有相同数量的过滤器。
如果特征图谱的尺寸减半,则过滤器的数量必须翻倍,以保持每层的时间复杂度。
卷积层(stride=2)进行下采样,网络末端以全局的均值池化层结束,1000的全连接层(Softmax激活)。共34层。
这样构建出的34层网络计算量远小于VGG-19
4.2 残差网络设计
基于普通网络,其中插入快捷连接(shortcut)来实现残差学习。快捷连接不引入额外的参数和复杂度。不仅在实践中很有吸引力,而且方便比较普通网络和残差网络,具有相同数量的参数、深度、宽度和计算成本。
详细见 【Pytorch】学习记录分享5——PyTorch卷积神经网络 中第2章节第4部分 4. 经典网络架构

5. 实验部分 当年刷爆各个数据库

基于ImageNet,图片被根据短边等比缩放,按照[256,480]区间的尺寸随机采样进行尺度增强。裁切224x224随机抽样的图像或其水平翻转,并将裁剪结果减去它的平均像素值,标准颜色的增强。批量正则化用在了每个卷积层和激活层之间,初始化权重为0。

使用SGD算法,mini-batch=256,
,(当到达迭代要求时把学习速率除以10),权重衰减,衰减率=0.0001,动量=0.9,无dropout。

1000个类的ImageNet 2012分类数据集。训练集:128万。测试集:50k。

一个字牛!
同时网络泛化能力也得到充分验证,凯神走向圣坛

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/580315.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hooked协议掀起WEB3新浪潮

随着区块链技术和加密货币的兴起,币圈已经成为全球范围内的一个热门领域。在这个充满机遇与挑战的行业中,Hook机制正逐渐成为一种重要的技术手段,为投资者、开发者以及相关机构提供了更多的选择和可能性。本文将详细介绍币圈中的Hook机制&…

腾讯云4核8G服务器三年优惠价格表

腾讯云轻量服务器4核8G12M有三年优惠价吗?有,但是不怎么优势,相对于云轻量2核2G4M带宽三年价格是540元、2核4G5M带宽3年优惠价756元,4核8G12M轻量应用服务器三年价格是5292元,怎么样?还想买吗?阿…

python3下载手机安卓版,python下载手机版最新

大家好,小编为大家解答python3下载手机安卓版的问题。很多人还不知道python下载手机版最新,现在让我们一起来看看吧! 1、先去python官网下载python3的源码包,网址:https://www.python.org/ 1)进去之后点击导航栏的Down…

ansible 备忘清单(一)

笔者: 把以前的手写笔记电子化吧,顺便当作复习。 基础命令 命令 参数 备注 ansible --version 查看版本号 ansible-doc --help 查看帮助信息 -l |--list 查看所有模块 -s 查看模块摘要 Ansible servers -I |-…

浅谈数据仓库运营

一、背景 企业每天都会产生大量的数据,随着时间增长,数据会呈现几何增长,尤其在系统基建基础好的公司。好的数据仓库需要提前规划和好的运营,才能支持企业的发展,为企业提供数据分析基础。 二、目标 提高数据仓库存储…

前端发展趋势:WebAssembly、PWA 和响应式设计

目录 前言 WebAssembly:超越JavaScript的性能 渐进式Web应用(PWA):离线可用和更好的用户体验 响应式设计:适应多种设备 总结 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊前端…

iOS - 钥匙串(keychain)中的证书没有右三角,无法导出p12文件

如下图,证书左侧没有小三角形,无法导出 .p12文件 我遇到的问题是,因为CSR文件有问题,只需要重新在钥匙串上重新导出一个CSR文件,然后再重新制作证书即可

web前端html笔记2

新增状态标签<meter><progress> <meter> 属性 值 描述 high 数值 规定高值 low 数值 规定低值 max 数值 规定最大值 min 数值 规定最小值 optimum 数值 规定最优值 value 数值 规定当前值 <body> <meter high"50" …

论文降重隐藏字符怎么识别 papergpt

大家好&#xff0c;今天来聊聊论文降重隐藏字符怎么识别&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff0c;可以借助此类工具&#xff1a; 论文降重隐藏字符的识别方法 一、引言 在论文降重过程中&#xff…

实战10 角色管理

目录 1、角色后端接口 2、角色列表查询 2.1 效果图 2.2页面原型代码 2.3 角色api代码 role.js 2.4 查询角色列表代码 4、 新增和编辑角色 5、删除角色 6、分配权限 6.1 分配权限思路 6.2 分配权限回显接口 6.3 分配权限回显前端实现 6.4分配权限后端接口 6.4.1 R…

重定向和转发的区别

重定向 1、定义 用户通过浏览器发送一个请求&#xff0c;Tomcat服务器接收这个请求&#xff0c;会给浏览器发送一个状态码302&#xff0c;并设置一个重定向的路径&#xff0c;浏览器如果接收到了这个302的状态码以后&#xff0c;就会去自动加载服务器设置的路径 一个页面跳转…

矢量(向量)数据库 Top 5

矢量数据库的前景&#xff08;图片来源&#xff09; 在人工智能领域&#xff0c;大量的数据需要有效的处理和处理。随着我们深入研究更高级的人工智能应用&#xff0c;如图像识别、语音搜索或推荐引擎&#xff0c;数据的性质变得更加复杂。这就是矢量数据库发挥作用的地方。与…

深入探索Spring Boot的核心功能:快速构建原生程序响应式处理数据(文末送书)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 写在前面参与规则 ✅参与方式&#xff1a;关注博主、点赞、收藏、评论&#xff0c;任意评论&#xff08;每人最多评论…

【MYSQL】MYSQL 的学习教程(八)之 12 种慢 SQL 查询原因

日常开发中&#xff0c;我们经常会遇到数据库慢查询。那么导致数据慢查询都有哪些常见的原因呢&#xff1f;今天就跟大家聊聊导致 MySQL 慢查询的 12 个常见原因&#xff0c;以及对应的解决方法&#xff1a; SQL 没加索引SQL 索引失效limit 深分页问题单表数据量太大join 或者…

【React】echarts-for-react 的使用

文章目录 echarts-for-react &#xff1a;一个简单的 Apache echarts 的 React 封装配置项手册&#xff1a;https://echarts.apache.org/zh/option.html#title 安装依赖 $ npm install --save echarts-for-react# echarts 是 echarts-for-react的对等依赖,您可以使用自己的版本…

手机无人直播:解放直播的新方式

现如今&#xff0c;随着科技的迅猛发展&#xff0c;手机已经成为我们生活中不可或缺的一部分。除了通讯、娱乐等功能外&#xff0c;手机还能够通过直播功能将我们的生活实时分享给他人。而针对传统的直播方式&#xff0c;使用手机进行无人直播成为了一种全新的选择。 手机无人…

springboot中使用阿里云oss

一、什么是OSS&#xff1f; 「OSS」的英文全称是Object Storage Service&#xff0c;翻译成中文就是「对象存储服务」&#xff0c;官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。 白话文解释就是将系统所要用的文件上传到云硬盘上&a…

2023年入职/转行网络安全,该如何规划?

前言 前段时间&#xff0c;知名机构麦可思研究院发布了 《2022年中国本科生就业报告》&#xff0c;其中详细列出近五年的本科绿牌专业&#xff0c;其中&#xff0c;信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景&#xff0c;想必无需我多言&#xff0c;作为…

网站服务器被入侵,如何排查,该如何预防入侵呢?

在我们日常使用服务器的过程中&#xff0c;当公司的网站服务器被黑客入侵时&#xff0c;导致整个网站以及业务系统瘫痪&#xff0c;将会给企业带来无法估量的损失。作为服务器的维护人员应当在第一时间做好安全响应&#xff0c;对入侵问题做到及时处理&#xff0c;以最快的时间…

Transfer Learning(迁移学习)

1. 什么是迁移学习 迁移学习(Transfer Learning)是一种机器学习方法&#xff0c;就是把为任务 A 开发的模型作为初始点&#xff0c;重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务&#xff0c;虽然大多数机器学习算法都…