激活函数relu、leaky-relu、elu、selu、serlu比较

什么是激活函数

简单来说我们知道神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数。
如果不用激活函数(其实相当于激活函数是f(x) = x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。因此引入非线性函数作为激活函数,这样深层神经网络表达能力就更加强大。

1.ReLU(Rectified Linear Unit)

函数形式:
R e L U ( x ) = { x x  ≥  0 0 otherwise ReLU(x)=\left\{ \begin{array}{ll} x & \textrm{x $\ge$ 0}\\ 0 & \textrm{otherwise}\\ \end{array} \right. ReLU(x)={x0 0otherwise
感觉是最常用的激活函数,形式简单,高度非线性。
优点:高度非线性。加快收敛速度,缓解梯度消失、爆炸问题,简化计算。
缺点:因为其将所有的输入负数变为0,在训练中可能很脆弱,很容易导致神经元失活,使其不会在任何数据点上再次激活。对于ReLu中(x<0)的激活,此时梯度为0,因此在下降过程中权重不会被调整。

2.Leaky-ReLU

函数形式:
L R e L U ( x ) = { x x  ≥  0 a x otherwise LReLU(x)=\left\{ \begin{array}{ll} x & \textrm{x $\ge$ 0}\\ ax & \textrm{otherwise}\\ \end{array} \right. LReLU(x)={xax 0otherwise
其中a为固定参数,通常取0.01。
Leaky-Relu是ReLU的变体,对输入小于0部分的反应有所变化,减轻了ReLU的稀疏性,因为我们可以设置系数a保证在输入小于0的时候有微弱的输出。
优点:缓解ReLU导致神经元死亡的问题。
缺点:有了负数的输出,导致其非线性程度没有ReLU强大,在一些分类任务中效果还没有Sigmoid好,更不要提ReLU。

3.ELU(Exponential Linear Unit)

函数形式:
E L U ( x , α ) = { x x  ≥  0 α ( exp ⁡ ( x ) − 1 ) otherwise ELU(x,\alpha)=\left\{ \begin{array}{ll} x & \textrm{x $\ge$ 0}\\ \alpha (\exp(x)-1) & \textrm{otherwise}\\ \end{array} \right. ELU(x,α)={xα(exp(x)1) 0otherwise
像批量正则化一样可以使数据均值更接近0,计算的复杂度比批量正则化低。与relu相比它具有负值部分, 与lrelu和prelu相比它对噪声鲁棒。
线性部分使得ELU能够缓解梯度消失,而负值部分能够让ELU对输入变化或噪声更鲁棒。由于具有负值,ELU的输出均值接近于零,所以收敛速度更快。

4.SeLU(Scaled Exponential Linear Unit)

函数形式:
S e L U ( x ) = λ s e l u { x x  ≥  0 α s e l u ( exp ⁡ ( x ) − 1 ) otherwise SeLU(x)=\lambda_{selu}\left\{ \begin{array}{ll} x & \textrm{x $\ge$ 0}\\ \alpha_{selu} (\exp(x)-1) & \textrm{otherwise}\\ \end{array} \right. SeLU(x)=λselu{xαselu(exp(x)1) 0otherwise
w h e r e   α s e l u ≈ 1.6733 , λ s e l u ≈ 1.0507 where \: \alpha_{selu} \approx 1.6733,\lambda_{selu} \approx 1.0507 whereαselu1.6733λselu1.0507

深度学习在卷积神经网络和循环神经网络取得很大突破,但标准前馈网络的成功消息却很少。因此引入自归一化的神经网络,来尝试进行高级抽象表示。
这种自归一化的神经网络的激活函数就是selu,它也是一种基于激活函数的正则化方案。它具有自归一化特点,即使加入噪声也能收敛到均值为0、方差为1或方差具有上下界。
优点:在全连接层效果好,可以避免梯度消失和爆炸。
缺点:在卷积网络效果尚未证明。可能引起过拟合。

5.SerLU(Scaled Exponentially-Regularized Linear Unit)

函数形式:
S e L U ( x ) = λ s e r l u { x x  ≥  0 α s e r l u x e x otherwise SeLU(x)=\lambda_{serlu}\left\{ \begin{array}{ll} x & \textrm{x $\ge$ 0}\\ \alpha_{serlu} xe^{x} & \textrm{otherwise}\\ \end{array} \right. SeLU(x)=λserlu{xαserluxex 0otherwise
w h e r e   α s e r l u > 0 , λ s e r l u > 0 where \: \alpha_{serlu} >0,\lambda_{serlu} >0 whereαserlu>0λserlu>0
两个参数待确定。该函数在selu的基础上保留了其归一化性质,但打破了其单调性,是在负值部分具有一个尖峰,但对于较大的负值输入,输出的值接近于0,因此均值与selu一样也趋于零。同时为了防止过拟合,设计出了适合serlu的dropout方案:shift-dropout。

参考文献:
1.Effectiveness of Scaled Exponentially-Regularized Linear Units (SERLUs)
2.Self-Normalizing Neural Network
3.FAST AND ACCURATE DEEP NETWORK LEARNING BY EXPONENTIAL LINEAR UNITS (ELUS)
4.维基百科(Rectifier (neural networks))

你可能感兴趣的:(学习笔记,机器学习,深度学习,激活函数,人工智能)