最近在使用自编码器复原图像,在选择RELU还是LRELU上有一点小区别。
RELU(rectified linear unit)是线性整流单元,与Sigmoid类似但是比Sigmoid好用很多(减缓梯度消失现象)。因为其在输入为负值时强制转化为0,因此属于非线性的激活函数,在神经网络中是最常见的激活函数。
(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适合生成类的任务。