1 Sigmoid

缺点:​

  • 输入较大或较小时候梯度接近于0,容易导致梯度消失​

  • 函数输出不是以 0 为中心的,梯度可能就会向特定方向移动,从而降低权重更新的效率​

  • Sigmoid 函数执行指数运算,计算机运行得较慢,比较消耗计算资源

    f(x) = \frac{1}{1 + e^{-x}}
    f'(x) = f(x)f(1-x)

image-dnaw.png

2 Tanh

优点:

  • tanh是“零为中心”的。因此在实际应用中,tanh会比sigmoid更好一些​

缺点:

  • 仍然存在梯度饱和的问题​
  • 依然进行的是指数运算
    f(x) = \frac{e^x + e^{-x}}{e^x - e^{-x}}

image-uuak.png

3 ReLU

优点:​

  • ReLU解决了梯度消失的问题,当输入值为正时,神经元不会饱和​
  • 由于ReLU线性、非饱和的性质,在SGD中能够快速收敛​
  • 计算复杂度低,不需要进行指数运算​

缺点:​

  • 与Sigmoid一样,其输出不是以0为中心的​
  • Dead ReLU 问题。当输入为负时,梯度为0。这个神经元及之后的神经元梯度永远为0,不再对任何数据有所响应,导致相应参数永远不会被更新
f(x) = \max(0, x)

image-fmra.png

4 Leaky ReLU

优点:​

  • 解决了ReLU输入值为负时神经元出现的死亡的问题​
  • Leaky ReLU线性、非饱和的性质,在SGD中能够快速收敛​
  • 计算复杂度低,不需要进行指数运算​

缺点:​

  • 函数中的α,需要通过先验知识人工赋值(一般设为0.01)​
  • 有些近似线性,导致在复杂分类中效果不好
f(x) = \max(\alpha x, x)

image-uqiz.png

5 ELU

优点:​

  • ELU试图将激活函数的输出均值接近于零,使正常梯度更接近于单位自然梯度,从而加快学习速度​
  • ELU 在较小的输入下会饱和至负值,从而减少前向传播的变异和信息​

缺点:​

  • 计算的时需要计算指数,计算效率低
f(\alpha, x) = \begin{cases} \alpha(e^x - 1), & \text{for } x \leq 0 \\ x, & \text{for } x > 0 \end{cases}

image-cttq.png

6 Swish

优点:
Swish激活函数无界性有助于防止慢速训练期间,梯度逐渐接近 0 并导致饱和;同时,有界性也是有优势的,因为有界激活函数可以具有很强的正则化(防止过拟合, 进而增强泛化能力),并且较大的负输入问题也能解决。Swish激活函数在x=0附近更为平滑,而非单调的特性增强了输入数据和要学习的权重的表达能力

f(x) = x \times \sigma(x), \quad \text{where} \quad \sigma(x) = \frac{1}{1 + e^{-x}}

image-ufpz.png

7 Softmax

Softmax函数常在神经网络输出层充当激活函数,将输出层的值通过激活函数映射到0-1区间,将神经元输出构造成概率分布,用于多分类问题中,Softmax激活函数映射值越大,则真实类别可能性越大

f(x) = \frac{\sum_{i=1}^{N} e^{x_i}}{e^x}

image-qjjr.png