深度学习进阶课程16---用ReL解决Vanishing Gradient问题

上篇文章发现一个新的问题,越往外越接近输出层,学习效率比较高
在这里插入图片描述
这篇文章来讨论一下如何解决这个问题

Exploding gradient problem:
修正以上问题:
(1)初始化比较大的权重:比如w1=w2=w3=w4=100
(2)初始化b,使 σ ′ ( z j ) \sigma'(z_j) σ(zj)不要太小
比如为了让 σ ′ \sigma' σ最大(也就是=1/4),我们可以通过调节b,让z=0:
b1=-100a0
z1=100
a0±100a0=0
这种情况下:
w j σ ′ ( z j ) w_j\sigma'(z_j) wjσ(zj)=100
1/4=25
每层是前一层的25倍,又出现了exploding的问题

从根本上来讲,不是vanishing或者exploding的问题,而是后面层的梯度是前面层的累积的乘积,所以神经网络非常不稳定,唯一可能的情况是以上的连续乘积刚好平衡大约等于1,但是这种几率非常小

所以,这是一个不稳定的梯度问题,通常有多层,每层网络都以非常不同的速率学习
总体来说,vanishing problem具有普遍性:
如果想要克服vanishing problem,需要 w j σ ′ ( z j ) w_j\sigma'(z_j) wjσ(zj)的绝对值大于1,我们可以尝试赋值w很大,但是问题是 σ ′ ( z ) \sigma'(z) σ(z)也取决于w: σ ′ ( z ) = σ ′ ( w a + b ) \sigma'(z)=\sigma'(wa+b) σ(z)=σ(wa+b)
所以我们要让w大的时候,还得注意不能让 σ ′ ( w a + b ) \sigma'(wa+b) σ(wa+b)变小,这种情况非常少见,除非输入值在一个非常小的区间内

刚才的例子只是每层一个神经元的情况:
在这里插入图片描述
在每层多个神经元的情况下:
在这里插入图片描述
在l层的gradient(L层神经网络):
在这里插入图片描述
矩阵和向量的表示,与之前类似
所以只要是Sigmoid函数的神经网络都会造成gradient更新的时候极其不稳定,造成vanishing 或者 exploding的问题

综上所述,训练深度神经网络中有很多难点:
这篇文章:(1)神经网络的不稳定性
(2)activation方程的选择
(3)初始化权重和偏向的方法
(4)具体更新过程
(5)hyper-parameter的选择

这些目前都是当前学术界研究的课堂,已经取得一些有效的解决方法。

解决vanishing gradient方法:

Sigmoid unit:
在这里插入图片描述
Tanh unit:
在这里插入图片描述

Rectified linear unit(ReLU):
在这里插入图片描述

我们把
在这里插入图片描述叫做 stepped sigmoid
把:
在这里插入图片描述 叫做 softplus function
softplus 函数可以被 max 函数模拟:max(0,x+N(0,1))
max函数叫做 Rectified Linear Function (ReL)

在这里插入图片描述
Sigmoid和ReL方程主要区别:
Sigmoid函数值在[0,1]之间,ReL函数值在[0,∞],所以sigmoid函数适合来描述概率,而ReL函数适合用来描述实数
Sigmoid函数的gradient会随着x增大或减小和消失,但是ReL函数不会:
gradient=0 (if x<0),gradient=1 (if x>0)
Rectified Linear Unit在神经网络中的优势:
不会产生vanishing gradient问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值