非线性激活层:RELU还是LRELU?

2023-10-19 10:41:49 浏览数 (1)

最近在使用自编码器复原图像,在选择RELU还是LRELU上有一点小区别。

RELU(rectified linear unit)是线性整流单元,与Sigmoid类似但是比Sigmoid好用很多(减缓梯度消失现象)。因为其在输入为负值时强制转化为0,因此属于非线性的激活函数,在神经网络中是最常见的激活函数。

ReLU(x)=max(0,x)

(RELU) RELU的优点即计算特别简单,高度非线性,但是RELU的缺点也很明显:

  • 因为其将所有的输入负数变为0,在训练中可能很脆弱,很容易导致神经元失活,使其不会在任何数据点上再次激活。简单地说,ReLu可能导致神经元死亡。
  • 对于ReLu中(x<0)的激活,此时梯度为0,因此在下降过程中权重不会被调整。这意味着进入这种状态的神经元将停止对错误/输入的变化做出反应(仅仅因为梯度为0,没有任何变化)。这就是所谓的dying ReLu problem.

平时使用的时候RELU的缺点并不是特别明显,只有在学习率设置不恰当(较大)的时候,会加快神经网络中神经元的“死亡”。

而LeakyRelu是RELU的变体,对输入小于0部分的反应有所变化,减轻了RELU的稀疏性,因为我们可以设置negative_slop这个系数保证在输入小于0的时候有微弱的输出。

[LeakyReLU]

LeakyReLU的优点是什么,就是缓解一些RELU导致神经元死亡的问题,但是缺点也很明显,因为有了负数的输出,导致其非线性程度没有RELU强大,在一些分类任务中效果还没有Sigmoid好,更不要提RELU。

结论

自己在尝试生成类的时候,使用自编码器生成图像,上述这两个激活函数的时候并没有发现明显的差别。可能LRELU稍好一些,总结一下就是RELU适合分类,LRELU适合生成类的任务。

参考:

https://www.quora.com/What-are-the-advantages-of-using-Leaky-Rectified-Linear-Units-Leaky-ReLU-over-normal-ReLU-in-deep-learning

0 人点赞