文章目录

  • 1 残差网络ResNet
    • 1.1要解决的问题
    • 1.2 残差网络结构
    • 1.3 捷径连接
    • 1.4 总结

1 残差网络ResNet

1.1要解决的问题

  在传统CNN架构中,如果我们简单堆叠CNN的层数,深层CNN在训练集上面的表现反而要比浅层CNN在训练集上面的表现差的多。这明显是不合理的,因为浅层CNN很明显只是深层CNN的一个子集。
  那也就是说,深层网络并没有能够很好地学习到训练集,它甚至连过拟合都做不到。由于深层网络梯度消失的原因,导致无法对浅层的网络权重进行有效的调整。于是,ResNet做了这样的假设:在原先比较浅的网络上,训练得到较好的模型后,再在其后面添加恒等映射层,即让输入等于输出,这样就达到即增加深度,又不会增加误差的效果。

1.2 残差网络结构

  ResNet提出了残差学习的思想,通过直接将输入信息绕道传到输出,保护信息的完整性,整个网络只需要学习输入、输出差别的那一部分,简化学习目标和难度。残差网络结构如下图所示

  在原先的CNN架构中,神经网络输入x,输出F(x),要拟合H(x),训练目标是F(x)=H(x)。
  而在ResNet架构中,神经网络输入x,输出变为F(x)+x,要拟合的目标变为H(x)-x,训练目标是F(x)+x=H(x)-x。这里的H(x)-x就是所谓的残差
  而根据ResNet的假设,我们需要对浅层网络做恒等变化,所以我们要训练F(x)=x,但是在ResNet架构中,从学习恒等映射这一点出发,我们要拟合的目标变成了F(x)+x=x,相当于我们的目标变成了F(x)=0,这比原来的训练目标要简单的多,因为一般每层网络中的参数初始化偏向于0,这样在相比于更新该网络层的参数来学习h(x)=x,该冗余层学习F(x)=0的更新参数能够更快收敛。
  同时,这种残差结构有使得某一层的输出可以直接跨过几层,作为后面某一层的输入,最终神经网路可以达到几十层,上百层。

1.3 捷径连接

  由于ResNet实际上还是有卷积层,有卷积层就有通道的变化以及图像大小的变化。那么隐藏层的输入x经过捷径连接连接到深层隐藏层的输出F(x)后,如果F(x)和x的通道相同,则可直接相加,那么通道不同怎么处理呢?
  如果x的维度是3x3x64,F(x)的维度是3x3x128,那么计算方式就变为H(x)=F(x)+Wx,其中W是卷积操作,用于调整x的维度。但是这样的话,我们就又需要学习多一个参数W。

1.4 总结

  使用残差网络结构h(x)=F(x)+x代替原来的没有shortcut连接的h(x)=x,这样更新冗余层的参数时需要学习F(x)=0比学习h(x)=x要容易得多。并且shortcut连接的结构保证了反向传播更新参数时,很难有梯度为0的现象发生,不会导致梯度消失。因此ResNet使得我们可以学习很深的网络,对于高级抽象特征的提取和网络性能更好,也不同担心梯度消失的问题。

【深度学习】深度残差网络ResNet相关推荐

  1. 深度学习之残差网络原理深度刨析

    为什么要加深网络? 深度卷积网络自然的整合了低中高不同层次的特征,特征的层次可以靠加深网络的层次来丰富. 从而,在构建卷积网络时,网络的深度越高,可抽取的特征层次就越丰富. 所以一般我们会倾向于使用更 ...

  2. 深度学习之残差网络的原理

    目录 一. 什么是残差(residual) 二.残差网络的背景 三.残差块(residual block) 四.深度残差学习 五.DenseNet网络和Resnets网络对比 转载:https://b ...

  3. 深度学习《残差网络简单学习》

    一:残差网络 VGG网络将网络达到了19层的深度,GoogleNet的深度是22层,一般而言,深度越深,月面临如下问题: 1:计算量增大 2:过拟合 3:梯度消失和梯度爆炸 4:网络退化 第一个问题呢 ...

  4. 深度学习目标检测 RCNN F-RCNN SPP yolo-v1 v2 v3 残差网络ResNet MobileNet SqueezeNet ShuffleNet

    深度学习目标检测--结构变化顺序是RCNN->SPP->Fast RCNN->Faster RCNN->YOLO->SSD->YOLO2->Mask RCNN ...

  5. TF2.0深度学习实战(七):手撕深度残差网络ResNet

    写在前面:大家好!我是[AI 菌],一枚爱弹吉他的程序员.我热爱AI.热爱分享.热爱开源! 这博客是我对学习的一点总结与记录.如果您也对 深度学习.机器视觉.算法.Python.C++ 感兴趣,可以关 ...

  6. dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...

    opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...

  7. 深度残差网络RESNET

    一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别的效果有着很大的影响,所以正常想法就是能把网络设计的越深越好, 但是事实上却不是这样,常规的网络的堆叠(plain netw ...

  8. 何恺明编年史之深度残差网络ResNet

    文章目录 前言 一.提出ResNet原因 二.深度残差模块 1.数学理论基础 2.深度网络结构 三.Pytorch代码实现 四.总结 前言 图像分类是计算机视觉任务的基石,在目标监测.图像分割等任务中 ...

  9. 详解深度学习之经典网络架构(十):九大框架汇总

    目录 0.概览 1.个人心得 2.总结 本文是对本人前面讲的的一些经典框架的汇总. 纯手打,如果有不足之处,可以在评论区里留言. 0.概览 (1)详解深度学习之经典网络架构(一):LeNet (2)详 ...

最新文章

  1. 计算机视觉编程——图像搜索
  2. 转载 程序员上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛? (手机游戏)...
  3. 小白的算法初识课堂(part3)--递归
  4. 删除China Lucky系列病毒 后缀.evopro勒索病毒数据恢复方法,解密处理方式
  5. 其它 博客园 自己写的文章 标题含有小写字母 查看文章时 标题就变成大写的了...
  6. servlet3异步 例子_异步Servlet示例
  7. 详解中文维基百科数据处理流程及脚本代码
  8. 啦啦外卖小程序公众号定位中的问题解决方法
  9. Spring教程动画文字版2
  10. spring-boot java.lang.ClassNotFoundException: org.thymeleaf.spring5.ISpringTemplateEngine
  11. shell 脚本定时监控Linux内存清除缓存
  12. 重装系统ie无法解析服务器名称,教你解决ie浏览器打不开的方法
  13. 联想开机启动项按哪个_联想台式电脑设置第一启动的快捷键是什么
  14. 了解 Tornado 框架
  15. 刑侦 技侦 警种
  16. 多线程Retry: 解释
  17. php禁用gopher协议,SSRF攻击-运用gopher协议构造POST包--emmmm(http://10.112.68.215:10004/index.php?action=login)...
  18. (java)求最大公约数
  19. 最长回文子串(马拉车算法)
  20. ciscn_2019_c_1 1

热门文章

  1. JS合并两个数组的方法分享
  2. 尺度空间与图像金字塔(一)
  3. android 判断华为系统版本号,Android获取系统(ROM)类别及版本号
  4. Mycat常见问题与解决方案---宜将剩勇追穷寇,不可沽名学霸王
  5. 常见的神经网络详细公式求导总结!
  6. 七夕情人节送女朋友什么礼物最走心?好用的蓝牙耳机推荐
  7. Bubble Cup 14 - Finals Online Mirror (Unrated, ICPC Rules, Teams Preferred, Div. 2) J. Robot Factory
  8. python程序纠错_编程语言10个编程技巧5个纠错步骤
  9. (Java学习随堂笔记)包、包装类、装箱拆箱
  10. 微信小程序报错 {“errMsg“: “hideLoading:fail toast can‘t be found“}