论文地址:Deep Residual Learning for Image Recognition

引言

深度神经网络能够以多层端到端的方式整合low/middle/high level的feature和classifiers,并且特征的“level”会随着网络的深度而加深。

但是,网络真的是越深越好吗?

  • 随着网络的加深,首先会出现梯度消失/梯度爆炸(gradientgradientgradient vanishing/expoldingvanishing/expoldingvanishing/expolding),进而影响网络的收敛,这个问题可以通过normalization initialization和一些normalization layers处理
  • 但是,网络收敛之后,又会有网络退化问题:

什么是网络退化问题(degradation)

网络退化问题是指:在神经网络可以收敛的前提下,随着网络深度增加,网络的表现先是逐渐增加至饱和,然后迅速下降。

下图描述了使用不同深度的网络训练得到的训练集上的误差(training error)和测试集上的误差(test error)。

可以发现,深层的网络反而比浅层网络有着更高的training error。显然这并不是因为过拟合,过拟合的网络是更低的training error 但是更高的test error。

网络退化问题表明并不是所有的网络都容易去优化:试想一下如果存在某个 KKK 层的网络 fff 是当前最优的网络,那么可以构造一个更深的网络,其最后几层仅是该网络 fff 第 KKK 层输出的恒等映射(Identity(Identity(Identity Mapping)Mapping)Mapping),就可以取得与 fff 一致的结果;也许 KKK 还不是所谓“最佳层数”,那么更深的网络就可以取得更好的结果。总而言之,与浅层网络相比,更深的网络的表现不应该更差。因此,一个合理的猜测就是,对神经网络来说,恒等映射并不容易拟合

本篇文章提出 deepdeepdeep residualresidualresidual networknetworknetwork 来解决网络退化问题:

  • 假设原本期望网络学习的映射为 H(x)H(x)H(x),deepdeepdeep residualresidualresidual networknetworknetwork并不会让网络中的stacked nonlinear layers直接去学习 H(x)H(x)H(x),而是去学习另外一个映射 F(x):=H(x)−xF(x):=H(x)-xF(x):=H(x)−x,原本的映射转化为 H(x)=F(x)+xH(x)=F(x)+xH(x)=F(x)+x
  • 这样子构造网络的原因是我们假设学习 F(x)F(x)F(x) (residual mapping) 比学习原来的 H(x)H(x)H(x) (unreferenced mapping) 要更容易
  • 在极端的情况下,如果identity mapping是最优的话,把residual压缩为0,比让一些非线性层去学习一个恒等映射要容易许多

DeepDeepDeep residualresidualresidual networknetworknetwork的优点有:

  • 容易优化(对于深层的神经网络)
  • 增加网络能够显著提升模型表现

三、深度残差学习

3.1 残差学习

  • 假设 H(x)H(x)H(x) 为某些stacked layers需要去学习的潜在映射,xxx 为其中第一个非线性层的输入
  • 如果多个非线性层能够无限逼近任何复杂函数,那么我们也可以认为 F(x):=H(x)−xF(x):=H(x)-xF(x):=H(x)−x 能够被一些非线性层无限拟合
  • 原来的函数被转化为 H(x):=F(x)+xH(x):=F(x)+xH(x):=F(x)+x
  • 尽管两种形式的函数都能够被无限逼近,但是学习的难易程度是不同的

这样子构造是由网络退化的问题启发得到的:

  • 正如我们之前提到的,如果增加的nonlinear layers都是identity mappings,那么深层的神经网络的training error不会比浅层的网络高
  • 网络退化问题表明multiple nonlinear layers很难拟合恒等映射
  • 利用上述的 residual learning,很容易使得网络的权重趋近于0去拟合一个恒等映射

3.2 identity mapping by shortcuts

残差单元可以以跳层连接的形式实现(shortcuts),即将单元的输入直接与单元输出加在一起,然后再激活。因此残差网络可以轻松地用主流的自动微分深度学习框架实现,直接使用BP算法更新参数。

如果输入和输入维度一致:
z(l)=H(a(l−1))=F(a(l−1),{Wi})+a(l−1)z^{(l)}=H(a^{(l-1)})=F(a^{(l-1)},\{W_i\})+a^{(l-1)} z(l)=H(a(l−1))=F(a(l−1),{Wi​})+a(l−1)
其中 F(⋅)F(\cdot)F(⋅) 即为网络需要学习的函数。

如果输入和输出维度不一致:
z(l)=F(a(l−1),{Wi})+Wsa(l−1)z^{(l)}=F(a^{(l-1)},\{W_i\})+W_sa^{(l-1)} z(l)=F(a(l−1),{Wi​})+Ws​a(l−1)

四、分析

残差网络为什么有效?

残差连接使得信息前后向传播更加顺畅:

  • 在前向传播时,输入信号可以从任意低层直接传播到高层。由于包含了一个天然的恒等映射,一定程度上可以解决网络退化问题
  • 反向传播时,错误信号可以不经过任何中间权重矩阵变换直接传播到低层,一定程度上可以缓解梯度弥散问题(即便中间层矩阵权重很小,梯度也基本不会消失)

可以参考:残差网络解决了什么,为什么有效?

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

  1. 深度学习——残差神经网络ResNet在分别在Keras和tensorflow框架下的应用案例

    原文链接:https://blog.csdn.net/loveliuzz/article/details/79117397 一.残差神经网络--ResNet的综述 深度学习网络的深度对最后的分类和识别 ...

  2. 人工智能、机器学习、深度学习和神经网络的区别

    人工智能 背景:人工智能最初可以追溯至1956年,当时多名计算机科学家在达特茅斯会议上共同提出了人工智能的概念.在随后几十年中,人工智能一方面被认为是人类文明未来的发展方向,另一方面也被认为是难以企及 ...

  3. 深度学习与神经网络概述

    本文将简单介绍:人工智能(Artificial Intelligence).机器学习(Machine Learning).深度学习(Deep Learning),并介绍神经网络的发展,以及三个在线演示 ...

  4. 分布式深度学习:神经网络的分布式训练

    分布式深度学习:神经网络的分布式训练 2016-10-09 14:05:04     深度学习    神经网络   http://www.jiqizhixin.com/article/1611  0  ...

  5. 深度学习是什么?深度学习和神经网络的区别是什么

    1.深度学习中什么是人工神经网络? 人工神经网络(Artificial Neural Network,即ANN )是从信息处理角度对人脑神经元网络进行抽象,是20世纪80年代以来人工智能领域兴起的研究 ...

  6. 深度学习:神经网络中的激活函数

    http://blog.csdn.net/pipisorry/article/details/71157037 激活函数 神经网络神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数, ...

  7. 深度学习之 神经网络算法原理

    深度学习之 神经网络算法原理 什么是神经网络算法? 初中映射 神经网络 求映射? 求解参数 图解求参 参考文献 什么是神经网络算法? 初中映射 初中的时候 y = f(x) 老师进过 映射 . 通过 ...

  8. MLK | 一文理清深度学习循环神经网络

    MLK,即Machine Learning Knowledge,本专栏在于对机器学习的重点知识做一次梳理,便于日后温习,内容主要来自于<百面机器学习>一书,结合自己的经验与思考做的一些总结 ...

  9. 深度学习(1)基础1 -- 深度学习与神经网络基础

    目录 一.深度学习与神经网络 1.深度学习定义 2.神经网络 3.深度学习过程 4.深度学习功能 二.深度学习应用 三.分类数据集推荐 一.深度学习与神经网络 1.深度学习定义 深度学习(deep l ...

  10. 从神经元到神经网络、从神经网络到深度学习:神经网络、深度学习、神经元、神经元模型、感知机、感知机困境、深度网络

    从神经元到神经网络.从神经网络到深度学习:神经网络.深度学习.神经元.神经元模型.感知机.感知机困境.深度网络 目录 从神经元到神经网络.从神经网络到深度学习 神经网络:

最新文章

  1. 微信小程序获取多选框选中值和选中值对应的id
  2. android 自定义progressbar demo,Android 自定义进度条ColorfulProgressbar,原理简单、效果还行...
  3. @MapperScan扫描包的问题
  4. Scala 面向对象编程
  5. Java Swing Mysql学生信息管理系统
  6. 马云不要当首富;ofo 否认裁员;苹果剔除 iPhone Xs Max 组件 | 极客头条
  7. Git分布式版本控制
  8. python学习(四)----函数
  9. poj 3268 Silver Cow Party(最短路dijkstra)
  10. Windows 10 21H1开启关闭卓越模式
  11. Mac Ps cc2017 下载
  12. P3855 [TJOI2008]Binary Land
  13. 【系】微信小程序云开发实战坚果商城-开篇
  14. Oracle和SQL里面定义表别名
  15. python画太极图
  16. 开了留言,欢迎关注我的公众号【bigsai】唠唠嗑
  17. 虚拟现实在多领域的解决方案
  18. 常州大学新生赛 F-大佬的生日礼包
  19. 2020-2021阿里巴巴Java面试真题解析,面试真题解析
  20. 难怪职场不顺,原因出在性格方面

热门文章

  1. 报价又快又准,ERP系统助力元器件贸易企业快速开单
  2. textarea 只能上下拖动、左右拖动、不能拖动
  3. MySQL燕十八老师课程笔记:第十九课:事务
  4. 关于实现token无感刷新的解决方案
  5. 【全源码及文档】基于JSP和SQL Server实现的网上招标系统
  6. MacOS安装DSSP + SubprocessError:Library not loaded: @rpath/XXX.dylib错误
  7. Tensorflow+SSD+Yolo(目标检测)文章14:爬虫
  8. 【职业学习规划】Android架构师方向
  9. 2022年Java学习路线图,精心整理
  10. 刷新纪录,揭秘漫画脸背后的AI技术