神经网络梯度消失、梯度爆炸

形成原因,以 BP 为例说明

  • 训练后期,最后一层网络越接近sigmoid两端,此时梯度很小,反向传播导致浅层网络的梯度更小,难以更新权重
  • 很深的网络哦容易出现这个问题,梯度计算的结果显示,低层网络的梯度是高层网络梯度结果(部分)的叠乘和它自己的部分的乘积。

解决方案

Batch Normalization

  • 解决问题:Internal Convoriance shift - 由于参数变化,神经网络中间层的数据分布与输入不同,随着网络加深,差异也变大。但是label不变(源空间和目标空间的分布不一致)
  • 解决方案:对每一层的输入做批量归一化,是数据分布为N(0,1),【注意:均值方差一致不代表数据分布一致】。y也通过下列形式 y=λx̂ +β y = λ ∗ x ^ + β 做变换。
    - 一方面使得数据有恢复输入的数据分布的可能性,保留了网络的capacity。保证模型的表达能力不因为规范化而下降
    - 另一方面BN还解决了梯度弥散的问题。归一化得到的权重伸缩不变性(把w增大n倍,不影响归一化的结果)。但是在反向传播过程中,尺度较大的权重会得到更小的梯度,在同等学习速率下获得的更新更少,使得整体的w更加稳健?
    • 使用BN需要注意的问题:
  • BN 比较适用的场景是:每个 mini-batch 比较大,数据分布比较接近。在进行训练之前,要做好充分的 shuffle. 否则效果会差很多。
    • 与Dropout的冲突
  • BN和海森矩阵

ReLU

- RELU没有sigmoid的饱和问题。但是RELU对大的梯度不鲁棒,有可能导致神经元不再激活,值为0,梯度也为0。解决办法LeakyRELU         
- 实际情况是,我们还是首选RELU,通过设置小学习率防止神经元dead

ResNet,

        - 解决梯度消失(不过有效路径比较短)

        - 残差学习,让学习变得更加容易,差分放大器(使网络对微小的变化更加敏感,权重更新更快)
        - 集成学习
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值