sigmoid

f(z)=\frac1{1+e^{-z}}

其图像如下:

sigmoid

特点

  • 能够将输入的连续实值变换为0到1之间的输出

缺点

  • 在深度神经网络中梯度反向传播是容易造成梯度爆炸和梯度消失

sigmoid导数

f'(z) = \frac{e^{-z}}{(1+e^{-z})^2} = \frac1{1+e^{-z}} - \frac1{(1+e^{-z})^2}

其导数图像如下:

d_sigmoid.png

tanh

tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}}

其图像如下:

tanh.png

特点

解决了sigmoid函数不是zero-centered的问题, 但是梯度消失依旧存在

导数

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

导数图像

d_tanh.png

Relu

Relu(x)=max(0, x)

函数图像

relu.png

导数

Relu'(x) = \begin{cases} 0& x\leq 0\\ 1& x> 0 \end{cases}

d_relu.png

优点

  • 解决了梯度消失问题
  • 计算速度非常快
  • 收敛速度远快于sigmoid和tanh

缺点

  • 输出的不是zero-centered
  • 有些神经元可能永远不会被激活(Dead ReLU)
    • 不好的参数初始化
    • 学习率过高, 导致网络不幸进入这种情况

Leaky Relu(PRelu)

f(x) = max(\alpha x, x)

函数图像\alpha=0.1

prelu.png

导数

f'(x) = \begin{cases} \alpha& x\leq0\\ 1& x> 0 \end{cases}

图像

d_prelu.png

特点

  • 具有ReLU的所有优点
  • 不会有Dead ReLU问题

ELU

f(x)= \begin{cases} x& x>0\\ \alpha(e^x-1)& x\leq0 \end{cases}

函数图像\alpha=1

elu.png

导数

f'(x)= \begin{cases} 1&x>0\\ f(x)+\alpha = \alpha e^x& x\leq0 \end{cases}

图像\alpha=1

d_elu.png

特点

  • 类似于Leaky ReLU
  • 计算量稍大
  • 不会有Dead ReLU问题
  • 均值接近于0

SELU

selu(x) =\lambda \begin{cases} x& x>0\\ \alpha e^x-\alpha& x\leq0 \end{cases}\\ 其中\lambda=1.0507009873554804934193349852946\\ \alpha=1.6732632423543772848170429916717

函数图像

selu.png

导数

selu'(x)=\lambda \begin{cases} 1& x>0\\ \alpha e^x \end{cases}

图像:

d_selu.png

特点

  • 在ELU的基础上求解了最佳的\alpha , 并且扩大了\lambda倍,
  • SELU拥有ELU所有的优点
  • 不存在死区

SoftMax

f(x_i)=\frac{e^{x_i}}{\sum_{j=1}^ne^{x_j}}

简单地说, 就是当前元素的值就等与e的当前元素次方在所有元素的e的次方和的比例

导数

当交叉熵作为损失函数时, LOSS=-\sum_it_ilny_i, 其中, t_i表示真实值 \\当预测第i个时, 可以认为t_i=1, 那么LOSS=-\sum lny_i\\因为softmax的和为1, 那么\frac{e^{x^i}}{\sum_{j=1}^ne^{x_{j}}},对Loss求导后为-(1-\frac{\sum^n_{i\neq j}e^{x_i}}{\sum^n_je^{x_j}})=y_i-1

也就是说, 只要求出j_i, 那么减一就是梯度.

特点

  • Softmax会将整个超空间按照分类个数进行划分
  • Softmax会比其他的激活函数更适合多分类问题最后的激活