数学原理解释resnet缓解梯度弥散问题

  • 前言
    • 产生梯度弥散的原因
    • 残差结构
    • 激活函数缓解梯度弥散
    • 总结

前言

本文是一位职场小白在百度实习面试被虐,发现基本的大公司都会问到网络的数学原理解释,之后学习很多的博客。对残差网络的一些深入理解,开始写人生的第一篇博客,如有差错,还请各位大佬多多指正,多多交流

产生梯度弥散的原因

深度学习的本质是找到一个复杂的函数来拟合输入数据和输出数据之前的转换关系。简单的说:y = f(x),这里的x和y可能是向量,也可能是矩阵。复杂的网络就是函数f。

在深度学习中常见预处理:去均值,归一化。这样做的原因是能够使输入的数据之间方差更小,通俗的将就是每一次输入的数据都比较一致,模型就能够更快的收敛。也就是更快的学习到x——》y之间的转换关系f。达到类似效果的有初始化(xavier,何凯明),batch_normalization。

讲了以上怎么多关键引出的就是神经网络中流动的数据大多是均值为0,方差为1的数据分布。而神经网路的学习过程就是进行链式求导,这个不熟悉的话,想必大家都知道高中学习的符合函数求导吧 。原理是一样的,这样多个0-1之间的数字相乘就会越乘越小,导致梯度->0

残差结构

在上面的段落我们讲过,梯度弥散本质的原因是多个0-1之间小数相乘的结果。很简单的思维就是我们其中的一些数字变大,从0.1增大到0.9,类似于这种的操作。不就可以缓解了吗?

是的,残差网络就是怎么简单的原因,下面通过一个例子来更清晰的了解:


此时我们对权重w2进行求导梯度值为 y1+x,相比不加残差结构在梯度值上多加了一个x,达到了0.1到0.9的变化,因此在一定程度上缓解了梯度弥散的问题

至于为什么不直接从0.1增大到9,个人觉得是数据的分布更离散,模型学习的会更困难, 收敛速度更慢。

激活函数缓解梯度弥散

在神经网络初期的时候使用的激活函数都是sigmoid激活,而sigmoid的梯度值在[4,+∞],[-∞,-4这两个区间趋近与0。所以后期有更换relu激活函数来缓解这个问题,我觉得目前用这个来回答不是很合理,上文也提起过,后来提出的BN,xavier初始化等方法都会将输出的数据分布调整为正太分布,而sigmoid 在0之间的梯度值接近线性函数的梯度值

总结

所以综上所述,对于梯度弥散的问题,残差结构是最直接的解决办法,而激活函数要针对于具体的数据分布

数学原理解释resnet缓解梯度弥散问题相关推荐

  1. 彻底看懂RNN,LSTM,GRU,用数学原理解释梯度消失或者梯度爆炸

    Recurrent Neutral Network 章节 RNN概述 LSTM GRU 梯度困区 Seq2Seq模型 何去何从 模型之外 RNN概述 为什么它叫做递归神经网络呢?与其他网络有何不同?接 ...

  2. 费舍尔方法(Fisher‘s method)的数学原理解释

    在<集体智慧编程>(Programming Collective Intelligence)一书的第六章,讲述了基于概率统计的文档分类器实现方法.全章的前半部分对朴素贝叶斯分类器从原理到实 ...

  3. 残差神经网络为什么可以缓解梯度消失?

    0 背景 随着网络层数的加深,目标函数越来越容易陷入局部最优解,同时,随着层数增加,梯度消失问题更加严重,特别是激活函数为sigmoid/softmax/tanh等,使得原理输出层的网络参数得不到有效 ...

  4. 解决梯度消失和梯度弥散的方法

    第一个问题:模型过拟合 1.1 什么是过拟合 所谓过拟合(Overfit),是这样一种现象:一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集 上却不能很好的拟合数据.此时我们 ...

  5. 炼丹手册——梯度弥散和爆炸

    这两天造的轮子每次训练上来几个epoch就爆,试过lr降到1e-5:将所有分母/log都加了极小值:加了梯度裁剪,改了损失函数,lr衰减改成指数形式,加载预训练权重,修改权重初始化方式等等全失败,一度 ...

  6. 梯度下降背后的数学原理几何?

    来自 | 深度学习这件小事   编辑 | Datawhale 对于诸位"机器学习儿"而言,梯度下降这个概念一定不陌生,然而从直观上来看,梯度下降的复杂性无疑也会让人"敬而 ...

  7. t-sne原理解释_T-SNE解释-数学与直觉

    t-sne原理解释 The method of t-distributed Stochastic Neighbor Embedding (t-SNE) is a method for dimensio ...

  8. 一文读懂梯度下降背后的数学原理几何

    (给视学算法加星标,修炼编程内功) 来源:AI科技评论 对于诸位"MLer"而言,梯度下降这个概念一定不陌生,然而从直观上来看,梯度下降的复杂性无疑也会让人"敬而远之&q ...

  9. 梯度下降(Gradient Descent)数学原理分析与实例

    梯度下降(Gradient Descent)数学原理分析与实例 本文循序渐进描述梯度下降算法,从导数的几何意义开始聊起,如果熟悉微积分可以跳过,主要内容如下: 一. 导数的几何意义 二. 偏导数 三. ...

  10. 十进制转二进制 / 八进制 / 十六进制的手算方法,及其数学原理的通俗解释

    前言:接触计算机的同学学习基础课程时,不免会碰到十进制转二进制 / 八进制 / 十六进制这种问题.常见的方法有"除以2/8/16看余数".本文在介绍方法的前提上,对其数学原理进行了 ...

最新文章

  1. Java程序员,上班那点事儿--程序员也是一般人
  2. OpenCv霍夫变换与RANSAC检测圆形
  3. 使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度
  4. 1539. 第 k 个缺失的正整数
  5. 微课|中学生可以这样学Python(5.6.2节):生成器推导式
  6. 前端 相机 自定义取景框_索尼ZV-1数码相机:专业而易用,Vlog和网络主播的进阶良机...
  7. Android 内部存储安装apk文件实现
  8. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_2_方法引用_通过对象名引用成员方法...
  9. 社交柔道术 - 《影响力》读书笔记(一)
  10. 中国iOS和Android设备激活量将超美国
  11. 0603封装 1%贴片电阻代码表示的阻值
  12. Java实战之管家婆记账系统(19)——报告界面及功能实现
  13. 《动态壁纸 : 手机壁纸大全》EULA条款协议
  14. 企业如何推动流程管理
  15. 个人最喜欢的几款火狐扩展
  16. 两码一号(九):业务监控
  17. 大数据技能大赛题目(高职组,模块C和D)
  18. duilib制作窗体动画效果
  19. KubeSphere安装redis集群,全程超带劲
  20. 贝叶斯算法c语言,01 贝叶斯算法 - 朴素贝叶斯

热门文章

  1. 《亿级用户下的新浪微博平台架构》阅读笔记
  2. JavaScript基本属性方法参考
  3. CentOS7 linux kill 命令
  4. 学习笔记[1][驾驶]
  5. 0.3、sql 获取表中每一个分组中的第一条数据
  6. 51单片机段选和位选c语言,数码管程序中的段选位选定义程序是什么意思?
  7. 记录SpringBoot单元测试时报错nested exception is org.apache.ibatis.exceptions.PersistenceException:
  8. 苹果手机显示index.html,一次解决ios中z-index属性失效问题的经历
  9. 自己鼓捣一个Promise
  10. linux libssl.so.10,libssl.so.10缺失库文件的解决办法