深度学习的深度和宽度的理解[通俗易懂]

深度学习的深度和宽度的理解[通俗易懂]文章目录1.深度1.1为什么加深可以提升性能1.1.1更好拟合特征1.1.2网络更深,每一层要做的事情也更加简单1.2如何定量评估深度与模型性能1.2.1直接法1.2.2间接法1.3加深就一定更好吗?1.3.1加深带来的优化问题1.3.2网络加深带来的饱和2.宽度2.1为什么需要足够的宽度2.2网路到底需要多宽2.2.1网络宽度的下限在哪?2.2.2网络宽度对模型性能的影响2.2.3网络宽度和深度哪个更重要?2.3如何更加有效地利用宽度2.3.1提高每一层的通道的利用率

大家好,又见面了,我是你们的朋友全栈君。

1. 深度

1.1 为什么加深可以提升性能

Bengio和LeCun说过大多说函数如果用一个深层结构刚刚好解决问题,那么就不可能有一个更浅的同样紧凑的结构来解决。 要解决比较复杂的问题, 要么增加深度, 要么增加宽度, 而增加宽度的代价旺旺远高于深度。 一定深度是有必要的.

1.1.1 更好拟合特征

现在的深度学习网络结构基本模块是卷积,池化,激活,这是一个标准的非线性变换模块. 更深的模型, 意味着更好的非线性表达能力, 可以学习更加复杂的变化, 从而可以拟合更加复杂的输入。

1.1.2 网络更深, 每一层要做的事情也更加简单

神经网络的每一层都各司其职, 比如第一层学到了边缘, 第二层学到了简单的形状, 第三层开始学习到了目标的形状, 更深的网络层能学习到更复杂的表达. 如果只有一层, 那么学习到的复杂程度就很小了.

网络加深带来的两个主要的好处, 更强大的表达能力和逐层的特征学习。

1.2 如何定量评估深度与模型性能

理论上一个2层的网络可以拟合任何连续函数, 但是需要宽度很大, 不现实.

我们直到一个模型越深越好, 但是怎么用一个指标直接定量衡量模型的能力和深度之间的关系, 就有了直接和间接法两种方案。

  • 直接法是定义指标理论分析网络的能力;

  • 间接法是通过在任务中的一系列指标比如准确率等来进行比较。

1.2.1 直接法

一个更深的网络, 可以将输入空间分为更多的线性相应空间, 他的能力是浅层网络的指数级倍.

1.2.2 间接法

网络的加深可以提高模型性能, 对比准确度得出: 在一定范围内, 网络越深, 性能越好。

1.3 加深就一定更好吗?

主要从 性能提升和优化 两个方面看:

1.3.1 加深带来的优化问题

ResNet为什么这么成功, 就是因为它是的深层神经网络的训练成为可行.

深层网络带来的 梯度不稳定 , 网络退化的问题始终存在, 可以缓解, 无法消除. 这就是深度加深, 性能反而开始下降的原因.

1.3.2 网络加深带来的饱和

网络的深度不是越深越好。没有一直加深一直提升的情况, 需要实验定论.

2. 宽度

在一定程度上, 网络越深, 性能越好. 这一次我们来考虑另一个维度, 宽度, 即通道的数量.

2.1 为什么需要足够的宽度

深度在一定程度上能够表现出更好的性能, 而宽度则起到另一个作用。那就是让每一层学习到更加丰富的特征, 比如不同方向, 不同频率的纹理特征。 比如颜色的地区, 以及颜色变化的情况等。太窄的网络, 每一层能捕获的模式有限, 此时网络再深都不可能提取到足够的信息往下传递。

2.2 网路到底需要多宽

2.2.1 网络宽度的下限在哪?

考虑到效率, 不能一直增加宽度.因为带来的计算量是平方增长的。宽度不同于深度, 宽度减少后, 用于补偿模型性能的深度不是呈指数级增长, 而是多项式增长, 这似乎反映出宽度并没有深度那么重要。

2.2.2 网络宽度对模型性能的影响

网络的宽度自然不是越宽越好.

2.2.3 网络宽度和深度哪个更重要?

这个问题没有答案, 两者都重要. 因为我们需要细节也需要性能. 不过有些模型对深度更加敏感, 有些对宽度更加敏感。没有谁更重要, 但是建议有限调整网络的宽度。

2.3 如何更加有效地利用宽度

网络宽度非常关键:

  1. 宽度对计算的贡献非常大
  2. 宽度对性能的影响非常大

追求的是越窄性能越高越好, 没有那么好的事儿, 但是可以从这几个方向入手.

2.3.1 提高每一层的通道的利用率

宽度这么重要, 就要好好利用每一个通道, 也就是提高每一个通道的利用率.

2.3.2 用其他通道的信息来补偿

DenseNet网络就是将各层之间进行链接, 在小通道下, 实现高性能.

3. 总结

  • 深度学习的名字带着”深”, 可见深度对模型的重要性.
  • 深度学习成功在于深, 但是宽度也很重要, 甚至不亚于深度, 在计算量上的影响甚至比深度更加重要.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143681.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【原理分析】细说SpringBoot的自动装配原理「建议收藏」

    【原理分析】细说SpringBoot的自动装配原理「建议收藏」1.什么是SpringBoot?  对于spring框架,我们接触得比较多的应该是springmvc、和spring。而spring的核心在于IOC(控制反转对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系)和DI(依赖注入IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(DependencyInjection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了

    2022年8月21日
    5
  • 二叉树的先序,中序,后序遍历的序列_二叉树先序遍历和后序遍历正好相反

    二叉树的先序,中序,后序遍历的序列_二叉树先序遍历和后序遍历正好相反    二叉树的遍历主要有三种:(1)先(根)序遍历(根左右)(2)中(根)序遍历(左根右)(3)后(根)序遍历(左右根)举个例子:先(根)序遍历(根左右):ABDHEICFJKG中(根)序遍历(左根右):DHBEIAJFKCG后(根)序遍历(左右根):HDIEBJKFGCA    以后(根)序…

    2022年9月14日
    2
  • uniapp中touchstart、touchmove和touchend在H5中无法触发,可通过jQuery添相应事件代替

    uniapp中touchstart、touchmove和touchend在H5中无法触发,可通过jQuery添相应事件代替uniapp中touchstart、touchmove和touchend在H5中无法触发,可通过jQuery添相应事件代替

    2022年6月19日
    178
  • Effective C++ 条款24

    Effective C++ 条款24

    2022年1月19日
    66
  • ODS设计_ods dw

    ODS设计_ods dw1.数据调研2.确定数据范围需要把上端应用需求与ODS数据范围进行验证,以确保应用所需的数据都已经从业务系统中抽取出来,并且得到了很好的组织,以ER模型表示数据主题关系3.根据数据范围进行进一步的数据分析和主题定义把第一步生成的每个ER图中的实体进行分解,分解的结果仍以ER表示为佳4.定义主题元素定义主题、粒度、维、度量、存储期限a.定义维的概念特性:维…

    2022年9月26日
    2
  • linux必学的60个命令解释_linux常用命令及用法

    linux必学的60个命令解释_linux常用命令及用法Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。◆安装和登录命令:login、shutdown、hal

    2022年9月16日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号