梯度消失和梯度爆炸_超基础系列-梯度怎么消失了,怎么爆炸了,怎么解

#梯度怎么消失(爆炸)了,什么是梯度(爆炸)消失

首先,要回答这个问题,我们先要了解什么是反向传播

https://www.atatech.org/articles/157795

从上文可以看出,传统的反向传播优化参数时,在我们考虑一个参数对误差的贡献时,我们通过一个链式求导对其得出了解,那么这么一串链式求导,在越来越深的网络结构里就产生了一个问题,离输入口最近的参数往往有着非常长的链式求导,然鹅,很多时候并不是越长,越深就越好,由于每一层求导都极有可能是小于零的数,那么很容易的,离输入口最近的参数所得出的纠正数往往就是及其的小,那么我们每一轮迭代都是基于反向传播的结果的,这样基本上就等于在反向传播的时候,比较靠前的参数就得不到修正,那么我们不禁会担心深层的网络里前面多层的参数都不到个卵,那迭代那么多次还有什么球用。

这就是梯度消失,简单来说,网络深了,传统反向传播导致离输入层近的参数在迭代的时候学不到东西,既然学不到东西,搞那么深的网络就没有什么用,但是网络已经搞深了,大家都很尴尬。

反过来看,如果每一层都是>1的数,那么链式乘积就会很大,搞的一点点小问题就要对参数进行很大的调整,然鹅越调越不熟练,一样很尴尬,这是梯度爆炸的问题

#梯度消失(爆炸)怎么解

##调整激活函数

如上文所说,反向传播时导数小于1是导致梯度消失的非常重要的一个因素,所以我们第一个要考虑的问题就是,导数小于1是如何产生的

一个比较大的原因是神经网络的激活函数,常见的sigmod和tahn函数,偏导的范围在1/4-0 以及 1-0之间,所以层数高了,自然容易尴尬。通用的解法是使用relu函数,leakrelu函数等函数,以relu函数为例,其正数的偏导恒等为1,很好的解决了这个问题。当然,单调relu也会导致部分神经元在迭代过程中不可修复的失活。

##Batchnorm

我们再来仔细回顾一下在对目标变量求导过程中的一个细节

3f2c6de54c476311cba416e626752b87.png

,在求偏导过程中,w越大,就越容易爆炸,越小,就越容易消失。而导致w偏于特别大和特别小的一个原因是各个输入的绝对量级差的很大,所以通过对输入进行强制的归一化,通过把输入值强行拉入一个正太分布的区间,我们可以制约w的分布,减少梯度消失活爆炸的可能

##Attention机制,LSTM和RES结构

这个我们会专门列一栏详细介绍,在这里我们不做赘述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值