一、引入:梯度更新规则

目前优化神经网络的方法都是基于反向传播的思想,即根据损失函数计算的误差通过梯度反向传播的方式,更新优化深度网络的权值。这样做是有一定原因的,首先,深层网络由许多非线性层堆叠而来,每一层非线性层都可以视为是一个非线性函数 f(x),因此整个深度网络可以视为是一个复合的非线性多元函数:

我们最终的目的是希望这个多元函数可以很好的完成输入到输出之间的映射。


二、梯度消失、爆炸的原因

下图以三个隐层的单神经元网络为例:

假设每一层网络激活后的输出为

,其中 i 为第 i 层,x 代表第 i 层的输入,也就是第 i−1 层的输出,f 是激活函数,那么,可得出
,暂时忽略常数 b,简记为
。BP算法基于梯度下降策略如下:

由上图可知,上式主要由两部分构成:多个激活函数偏导数的连乘,和多个权重参数的连乘。如果激活函数求导后与权重相乘的积大于1,那么随着层数增多,求出的梯度更新信息将以指数形式增加,即发生梯度爆炸;如果此部分小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生梯度消失

【注意】具体激活函数的导数情况可自行验证,比如sigmoid,tanh,Relu,leaky-Relu等。


三、解决方法

在讨论解决方法之前,我们探讨一下其解决思想,其实就是抑制上述式子连乘后结果远远大于1或小于1,主要取决于激活函数偏导数和权值大小

3.1 预训练加微调

此方法来自Hinton在2006年发表的一篇论文,其基本思想是每次训练一层隐节点,训练时将上一层隐节点的输出作为输入,而本层隐节点的输出作为下一层隐节点的输入,此过程就是逐层“预训练”(pre-training),得到暂时的最优权重值;在预训练完成后,再利用BP算法对整个网络进行训练,对整个网络进行“微调”(fine-tunning)。此思想相当于是先寻找局部最优,然后整合起来寻找全局最优,此方法有一定的好处,但是目前应用不是很多。

3.2 梯度剪切、正则

梯度剪切主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,更新梯度时,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内,防止梯度爆炸。另一种解决梯度爆炸的手段是权重正则化(weithts regularization),常见的是

正则,和
正则。

3.3 合理的激活函数+权值初始化

Relu激活函数:思想是,如果激活函数的导数为1,那么就消除了激活函数偏导数的影响,只需考虑权值即可。

3.4 Batch Normalization

Batch norm已被广泛应用到各大网络中,具有加速网络收敛速度,提升训练稳定性的效果,Batchnorm本质上是解决反向传播过程中的梯度问题,它是将输出信号 x 规范化,以保证网络的稳定性。

As the data flows through a deep network, the weights and parameters adjust those values, sometimes making the data too big or too small again - a problem the authors refer to as "internal covariate shift". By normalizing the data in each mini-batch, this problem is largely avoided.”Internal Covariate Shift:此术语是google小组在论文 Batch Normalization 中提出来的,其主要描述的是:训练深度网络的时候经常发生训练困难的问题,如上图所示,每一次参数迭代更新后,上一层网络的输出数据经过这一层网络计算后,数据的分布会发生变化,为下一层网络的学习带来困难,此现象称之为Internal Covariate Shift。

为了解决这个问题,Batch Norm就派上用场了,它应用于每层激活函数之前,就是做均值和方差归一化,对于每一批次数据并且还做放大缩小,平移,为了梯度下降的收敛速度更快,相当于把数据都拉到中间的位置了,有这个就不需要Dropout,Relu等等。BN使得每层输出信号满足均值为0,方差为1的分布,而最后的“scale and shift”操作则是为了让因训练所需而“刻意”加入的BN能够有可能还原最初的输入,从而保证整个网络的稳定性。简而言之,BN包括两点:归一化+缩放平移,具体伪代码如下:

为了说明BN如何防止梯度消失,梯度爆炸,进而加快训练速度,举例如下:

1、带有BN的前向传播过程如下所示(其中

为列向量,
):

2、则其反向传播有:

3、相应的,连续多层的梯度反向传播过程为:

可以看出,与不使用BN相比,每层的反向传播过程的,增加了一个基于标准差的矩阵

对权重
进行缩放,这样的缩放能够产生什么效果?如果权重
较小,那必然
较小,从而使得其标准差
较小,相对的
较大,所以
相对于原本的
就放大了,避免了梯度的衰减;同样的,如果权重
较大,可以很容易得到
相对于原本的
缩小了,避免了梯度的膨胀。于是,加入了BN的反向传播过程中,就不易出现梯度消失或梯度爆炸,梯度将始终保持在一个合理的范围内。而这样带来的好处就是,基于梯度的训练过程可以更加有效的进行,即加快收敛速度,减轻梯度消失或爆炸导致的无法训练的问题。

最后直观感受一下有无BN的训练过程:

3.5 残差网络结构

3.5.1 残差块

残差网络是由一系列残差块组成的。一个残差块可以用表示为:

残差块分成两部分:直接映射部分和残差部分。

是直接映射,即下图左边灰色部分;
是残差部分,一般由两个或者三个卷积操作构成,即下图右侧包含卷积的部分。
残差块
  • Weight:在卷积网络中指卷积操作,
  • addition:单位加操作

3.5.2 残差网络的背后原理

残差块一个更通用的表示方式是

是直接映射,
是激活函数,一般使用ReLU。我们首先给出两个假设:
  • 假设1:

    是直接映射;
  • 假设2:
    是直接映射。

这时候残差块表示为:

对于一个更深的层

,其与
层的关系可以表示为

【ResNet 解决问题1:网络随着深度的增加,而出现的“degradation problem”】

随着网络层数的增加,网络发生了退化(degradation)的现象:随着网络层数的增多,训练集loss逐渐下降,然后趋于饱和,当再增加网络深度,训练集loss反而会增大。注意这并不是过拟合,因为在过拟合中训练loss是一直减小的。

公式(5)反应了残差网络的两个属性:

  • 层 = 任意一个比它浅的
    层 + 他们之间的残差部分之和;
  • 保证
    层不少于浅层
    层的特征信息:在前向传输的过程中,随着层数的加深,Feature Map包含的图像信息会逐层减少,而ResNet直接映射的加入,保证了
    层网络信息一定不少于
    层的图像信息。

【ResNet 解决问题2:梯度消失的问题】

根据BP中使用的导数的链式法则,损失函数

关于
的梯度可以表示为

公式(7)反映了残差网络的两个属性:

  • 训练过程中,

    不可能一直为
    ,故解决了梯度消失的问题。
  • 表示
    层的梯度可以直接传递到任何一个比它浅的
    层,不经过中间层的权重矩阵。

通过分析残差网络的正向和反向两个过程,我们发现,当残差块满足上面两个假设时,信息可以非常畅通的在高层和低层之间相互传导。


【参考】

[1]

如何解决梯度消失和梯度爆炸?_黄飞的博客专栏-CSDN博客_梯度消失​blog.csdn.net

[2]

详解机器学习中的梯度消失、爆炸原因及其解决方法_Double_V的博客-CSDN博客_梯度爆炸的解决方法​blog.csdn.net

[3]

基础 | batchnorm原理及代码详解​blog.csdn.net

[4]

深度学习中 Batch Normalization为什么效果好?​www.zhihu.com

[5]

深入浅出--搞懂卷积神经网络的过拟合、梯度弥散、batchsize的影响的问题(二)_深度学习思考者-CSDN博客_卷积网络batchsize​blog.csdn.net

[6]

https://www.quora.com/Why-does-batch-normalization-help​www.quora.com

[7]

基础 | batchnorm原理及代码详解​blog.csdn.net

[8]

小小将:你必须要知道CNN模型:ResNet​zhuanlan.zhihu.com

[9]

大师兄:详解残差网络​zhuanlan.zhihu.com

[10]

https://openaccess.thecvf.com/content_cvpr_2016/papers/He_Deep_Residual_Learning_CVPR_2016_paper.pdf​openaccess.thecvf.com

梯度消失和梯度爆炸_梯度消失、爆炸的原因及解决办法相关推荐

  1. 苹果6系统怎么更新不了_苹果App Store登录不了怎么办_登录不了App Store的解决办法?...

    苹果App Store登录不了怎么办_登录不了App Store的解决办法? 1.注销Apple ID 设置-iTunes Store和App Store-点击"Apple ID" ...

  2. 乐视账号服务器关闭,乐视手机恢复出厂设置之后服务异常怎么办_无法登录乐视帐号解决办法_智能家...

    近期由于乐视账号服务器调整,出现了乐视手机重置后登录不了乐视账号,乐视手机恢复出厂设置之后服务异常是什么原因?小明同学为大家带来了无法登录乐视帐号解决办法... 乐视手机无法登录乐视帐号解决办法 乐视 ...

  3. 梯度消失和梯度爆炸_梯度消失梯度爆炸-Gradient Clip

    梯度爆炸与梯度消失 实际现象: 当我们使用sigmoid function作为激活函数时,随着神经网络的隐藏层数增加,训练误差反而增大,造成了深度网络的不稳定. 梯度弥散: 靠近输出层的hidden ...

  4. 梯度消失和梯度爆炸_梯度消失和梯度爆炸详解

    在中文搜索引擎搜索梯度爆炸或者梯度消失,出现的往往是一篇文章复制黏贴多次,而且这篇文章讲的并不清晰,比方说下面这种在文章中出现的图一,反正我是根本看不懂这张图描述的实什么,因此那篇被复制黏贴无数次的文 ...

  5. 梯度下降算法的正确步骤_梯度下降算法

    梯度下降算法的正确步骤 Title: What is the Gradient Descent Algorithm and its working. 标题:什么是梯度下降算法及其工作原理. Gradi ...

  6. mc启动器没有找到java运行_我的世界无法启动游戏解决办法

    1 确认你的电脑是否安装了JAVA程序,如果没有就去装一个.本站下载的我的世界程序中都会集成JAVA程序,直接在根目录下找到安装即可(找到文件夹下一个茶杯图标的就是). 2 如果即使安装了JAVA仍然 ...

  7. 叮咚音响登录显示未连接服务器,音响唤醒及蓝牙连接 - 叮咚智能音箱联网教程_叮咚智能音箱联不上网解决办法...

    2.音箱的误唤醒 若长时间不使用音箱,建议轻按音箱顶部的Zzz休眠键,让音箱进入休眠状态. 3.无法识别 1)用户语速过快,唤醒词"叮咚叮咚"和需要搜索的内容几乎连在一次说的,导致 ...

  8. 计算机黑屏的原因及解决办法,导致电脑黑屏的两个常见的原因分析与解决办法_电脑故障...

    导致电脑黑屏的两个常见的原因分析与解决办法_电脑故障 2017年04月21日 阅读 192 电脑黑屏故障的原因有很多种,有时很简单的一个差失就会导致,找到原因后才恍然大悟.下面就是一个电脑黑屏的案例分 ...

  9. yunyang tensorfow-yolo3 训练时权重文件消失的原因和解决办法(max_to_keep)

    在使用yunyang tensorfow-yolo3 训练数据集时,发现权重文件最多只能保存十个,训练到后面时,发现先前生成的权重文件都没有了... 后来查阅tf.train.Saver()类时,发现 ...

最新文章

  1. android.content.res.Resources$NotFoundException: String resource ID #0x1
  2. Oracle Block浅析2:ITL(Interested Transaction List)
  3. Ubuntu添加硬盘实验
  4. 重磅图书——PHP MySQL开发新圣经
  5. Web Office 常见问题解决方法
  6. FPGA之道(14)IP核介绍
  7. 机器学习算法 --- Decision Trees Algorithms
  8. matlab和python哪个运行快_MATLAB比Python更快吗?
  9. 软件工程的瀑布, 大泥球, 教堂,集市,和银弹
  10. JVM性能调优(转)
  11. leetcode 781. 森林中的兔子(hashmap)
  12. 简约的PHP留言板开源版网站源码
  13. 017 在SecureCRT中安装rz小工具
  14. 使用python在ArcGIS中合并多个图层中的数据
  15. GitHub 一周热点速览:手撕 LeetCode 一日 Star 破两千
  16. 【牛客网SQL篇】SQL必知必会
  17. 【WebGIS bug】WARNING: Too many active WebGL contexts. Oldest context will be lost.
  18. 超市仓库商品库存管理系统
  19. 记一次网站迁移的过程
  20. python正确的赋值语句是_python中赋值的方法

热门文章

  1. 光伏频率电压解列装置
  2. .Net(C#)后台发送Http Get和Http Post请求的几种方法总结(可参考下)
  3. 【lizhi125】站长工具包,站长必备工具,SEO查询工具,统计工具
  4. CAD3:显示相关工具选项板组
  5. 工具 | 分享一个截长图工具
  6. 解决同一个局域网两个DHCP冲突问题--涉及到局域网IP扫描,主机操作系统扫描,mac地址查询
  7. ubuntu 提示 Could not get lock /var/lib/dpkg/lock-frontend
  8. Functional Programming for the Rest of Us 函数式编程另类指南
  9. 定点数和浮点数的表示
  10. Photoshop怎样精确校正严重偏色照片