ReLU激活函数的缺点

Posted time-lcj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ReLU激活函数的缺点相关的知识,希望对你有一定的参考价值。

训练的时候很”脆弱”,很容易就”die”了,训练过程该函数不适应较大梯度输入,因为在参数更新以后,ReLU的神经元不会再有激活的功能,导致梯度永远都是零。
例如,一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是 0.
如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都”dead”了。
 
原因:

假设有一个神经网络的输入W遵循某种分布,对于一组固定的参数(样本),w的分布也就是ReLU的输入的分布。假设ReLU输入是一个低方差中心在+0.1的高斯分布。

在这个场景下:

  • 大多数ReLU的输入是正数,因此
  • 大多数输入经过ReLU函数能得到一个正值(ReLU is open),因此
  • 大多数输入能够反向传播通过ReLU得到一个梯度,因此
  • ReLU的输入(w)一般都能得到更新通过随机反向传播(SGD)

现在,假设在随机反向传播的过程中,有一个巨大的梯度经过ReLU,由于ReLU是打开的,将会有一个巨大的梯度传给输入(w)。这会引起输入w巨大的变化,也就是说输入w的分布会发生变化,假设输入w的分布现在变成了一个低方差的,中心在-0.1高斯分布。

在这个场景下:

  • 大多数ReLU的输入是负数,因此
  • 大多数输入经过ReLU函数能得到一个0(ReLU is close),因此
  • 大多数输入不能反向传播通过ReLU得到一个梯度,因此
  • ReLU的输入w一般都得不到更新通过随机反向传播(SGD)

发生了什么?只是ReLU函数的输入的分布函数发生了很小的改变(-0.2的改变),导致了ReLU函数行为质的改变。我们越过了0这个边界,ReLU函数几乎永久的关闭了。更重要的是ReLU函数一旦关闭,参数w就得不到更新,这就是所谓的‘dying ReLU’。

(译者:下面有一段关于神经元死亡后能够复活的讨论,未翻译)

从数学上说,这是因为ReLU的数学公式导致的

r(x)=max(x,0)r(x)=max(x,0)

导数如下

Δxr(x)=1(x>0)Δxr(x)=1(x>0)

所以可以看出,如果在前向传播的过程中ReLU is close,那么反向传播时,ReLU也是close的。

 
参考:
https://www.zhihu.com/question/59031444
https://www.jianshu.com/p/22d9720dbf1a
https://blog.csdn.net/disiwei1012/article/details/79204243









以上是关于ReLU激活函数的缺点的主要内容,如果未能解决你的问题,请参考以下文章

深度学习核心技术精讲100篇(六十五)-万字长文从ReLU到GELU通讲神经网络激活函数

深度学习核心技术精讲100篇(六十五)-万字长文从ReLU到GELU通讲神经网络激活函数

[激活函数]啥是 ReLU

激活函数——Relu,Swish

自适应参数化ReLU激活函数:注意力机制+ReLU激活函数

注意力机制+ReLU激活函数:自适应参数化ReLU激活函数