【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,一经查实,立即删除!

相关文章

Linux磁盘清理(/dev/vda1 100%)已解决

背景:linux上传资源的时候,size总是为0,或者有时候多文件上传,总是传到一半就失败了 原因:磁盘空间不够 查看磁盘空间命令 df -h结果发现 /dev/vda1 20G 19G 0 100% /none 4.0K 0 4.0K…

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 |-…

Linux、Windows命令行查看服务、进程是否存在、存活

Linux 服务 查看服务状态 systemctl is-active <serviceName>示例 [rootcurry platform]# systemctl is-active mysqld active [rootcurry platform]# systemctl is-active mysqld1 unknown返回状态 active failed unknown 不存在此服务 进程 查看所有进程名称 …

浅谈数据仓库运营

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

2024 Android保活总结

本文介绍的方案都是无需用户主动开启权限的。如果需要用户主动开启权限或者加白名单之类的话保活的意义就不大了&#xff0c;毕竟用户不大可能主动原因让app一直在后台运行 常规的方案 OnePixelActivity 1&#xff0c;监听SCREEN_OFF启动一个像素的Activity&#xff0c;灭屏…

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

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

软件测试面试题——如果保证测试用例覆盖率

如何提高测试用例覆盖率&#xff1f; 在项目的初期&#xff0c;我们参与到需求评审中 1. 覆盖显性需求 需求文档或原型图上已经标注清楚的功能一定要全部覆盖&#xff0c;通过思维导图工具进行梳理一般都能保证。 2. 获取隐含需求 隐含需求的获取是一大难点&#xff0c;但需求就…

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

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

SQL使用从入门到优化:目录

一、基础篇 SQL基础&#xff1a;SQL 介绍和数据库基础 SQL基础&#xff1a;操作环境搭建 SQL基础&#xff1a;表的增删改 SQL基础&#xff1a;记录的增删改查 SQL基础&#xff1a;查询的基本使用 SQL基础&#xff1a;范围查询 SQL基础&#xff1a;章节小结 二、进阶篇 …

力扣69. x 的平方根

二分查找 思路&#xff1a; 设置 left 指针为 0&#xff0c;right 指针为 x&#xff1b;如果 mid (right - left) / 2 left 的平方小于或等于 x&#xff0c;此时移动 left mid 1&#xff0c;并缓存当前 mid 值&#xff0c;可能这个 mid 就是结果&#xff0c;或者 x 的平方…

web前端html笔记2

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

Mongodb中一个有趣的数值查询案例

Mongodb集合中并没有强制所有文档具有统一的结构和字段类型。这样宽松的文档结构管理方法&#xff0c;给新数据的插入和以有数据的修改带来了极大的便利。但数据类型的频繁修改&#xff0c;可能参数查询和处理上的问题。 数值类型的变化&#xff0c; 是mongodb面临的一个问题之…

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

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

创建ROS的软件包服务器

创建ROS的软件包服务器 前提 1台有公网ip的服务器, 最好有域名 服务器配置 连接到服务器 ssh root域名或ip创建要存放包的路径 mkdir -p /var/ros/ubuntu安装必要的软件 sudo apt update sudo apt install nginx dpkg-dev gnupg在自己的主机编译好ros包, 具体可以看使用自定…

实战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;数据的性质变得更加复杂。这就是矢量数据库发挥作用的地方。与…