19/08/06 神经网络的梯度消失和梯度爆炸

1.引言

梯度消失和梯度爆炸是如何产生的

大家都应该都听过BP算法,对的,它就是深度神经网络的老祖宗。

深度神经网络的深度可以理解成网络层数,可以把神经网络理解成一个黑盒子,当一个输入经过一个黑盒子(network)就得到了一个输出,也可以把这个黑盒子理解成一个很复杂的函数(function)。
那我们从简单的BP算法开始分析,从而理解梯度消失和梯度爆炸的产生。

BP算法的基础其实就是导数的链式法则,就是有很多乘数因子会连接在一起。
上图的四个因子可以理解成四层网络
上图的四个乘积(偏导)因子可以理解成四层网络,当乘积因子(网络层)个数太多时
1)当乘积因子<1的相乘,梯度后向传播到输入层时,就所剩无几,就会出现梯度消失。
2)当乘积因子>1的相乘,梯度后向传播到输入层时,则会出现梯度爆炸。

2 主流解决方式

1)预训练模型加微调
2)权重剪切+正则

  • 梯度:设梯度阈值
  • 正则:L1/L2

3)relu、leakrelu、srelu等激活函数

  • leakrelu解决了0区间带来的影响,而且包含了relu的所有优点

4)BN/GN
5) 高速网络的思想(门)

  • cnn:ResNet DesseNet Inception
  • rnn: lstm

简单罗列了五条,其实在实际生产中,要想用好这几条可并非易事

1.2.1 预训练模型

预训练模型在CNN深层网络训练成为越来越成为不可或缺的部分

预训练模型本质是继续训练,为什么这么说,拿resnet50来说。如果你自己搭建了一个resnet50这么深的网络,就笔者经验而言,你指望前面四点防止梯度消失和梯度爆炸基本是不可能,只有在准备好预训练模型之后才去做上述的处理。

预训练模型做了什么呢?

提供可训练的合理的W B值
既然是继续训练,当然还有加速收敛

1.2.2 高速网络

深度学习模型发展方向大致为两个,要么网络变深,要么网络变宽。

但是网络变深并非易事,在resnet问世之前,随着网络加深,却获得了比较浅的网络更高的错误率,
resnet(残差网络)的思想使得这种模型退化的问题得到有效解决。

Resnet

resnet是何老师的作品,网络结构如下:
在这里插入图片描述

模型增加一个identity mapping(恒等映射),将原始所需要学的函数F(x)转换成F(x)+x,作者认为这两种表达的效果相同,但是优化的难度后者更低.

DenseNet

DenseNet其实是resnet的变种,我也不明白这种改进就能拿2017的best paper,让我不禁感概神经网络进化真是缓慢,还有创新的方向并非易事,什么时候能出一个CNN ,RNN,GAN这种级别的网络,甚至更牛逼的。

DenseBlock

DenseBlock块其实是resnet块的更复杂形式,resnet最多只有两个输入,而DenseBlock可最多连i-1个输入

DenseNet实际上是多个DenseBlock连接而成,单个Denseblock中,假设每一个非线性变换H的输出为K个feature map, 那么第i层网络的输入便为K0+(i-1)×K, 这里我们可以看到DenseNet和现有网络的一个主要的不同点:DenseNet可以接受较少的特征图数量作为网络层的输出,如下图所示
在这里插入图片描述

Inception

那么解决深度学习 参数过多、和梯度消失问题,方法当然就是增加网络深度和宽度的同时减少参数,Inception就是在这样的情况下应运而生。

在这里插入图片描述

lstm

lstm本质是三个门:输入,输出,遗忘门。结构此处不作阐述,可以去网上找找这种结构学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值