常用激活函数简介

激活函数

API

  1. torch activation functions api torch.nn
  2. keras activation functions api tf.keras.activations
  3. tensorflow activation functions api tf.nn
  4. wiki activation functions

性质

激活函数应该具备如下性质:

  1. 非线性:保证多层网络不退化成单层线性网络。
  2. 可微性:保证梯度或SubGradient的可计算性。
  3. 单调性:(非强制)保证单层网络是凸函数, mish例外。

S Model

Sigmoid

函数:
σ ( x ) = 1 1 + e − x \sigma \left( x\right) =\dfrac {1} {1+e^{-x}} σ(x)=1+ex1
导数:
σ ′ ( x ) = σ ( x ) ⋅ ( 1 − σ ( x ) ) \sigma'(x) = \sigma(x) \cdot (1 - \sigma(x)) σ(x)=σ(x)(1σ(x))
图像:

Sigmodi
def Sigmoid(x):
	return 1. / (1 + np.exp(-x))
  1. 优点
    1. 梯度平滑,求导容易。
    2. 输出映射在(0, 1)之间,单调连续,优化稳定。
  2. 缺点
    1. 计算量大:包含指数运算。
    2. 梯度消失:输入值较大或较小时,Sigmoid导数则接近于零,在反向传播时,参数更新较慢。
    3. Sigmoid 的输出不是0中心(Zero-Centered)。
  3. 参考
    1. sigmoid wiki

Tanh

等价于Sigmoid的平移与缩放,函数:
t a n h ( x ) = e x − e − x e x + e − x tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} tanh(x)=ex+exexex

导数:
t a n h ′ ( x ) = 1 − t a n h ( x ) 2 tanh'(x) = 1 - tanh(x)^{2} tanh(x)=1tanh(x)2
图像:

Tanh
def tanh(x):
	return np.sinh(x)/np.cosh(x)

  1. 优点
    1. 比Sigmoid函数收敛速度更快。
    2. tanh(x) 的梯度消失问题比 sigmoid 要轻。
    3. 相比Sigmoid函数,输出是以 0 为中心 Zero-Centered.
  2. 缺点
    1. 计算量大。
    2. 梯度消失。

Linear Unit

ReLU

整流线性单元,Rectified Linear Unit.

E L U ( x ) = { x , i f x > 0 0 i f x ≤ 0 ELU(x)=\begin{cases} x, & if & x>0 \\ 0 & if & x \leq 0 \end{cases} ELU(x)={x,0ififx>0x0
图像

ReLU
```python def ReLU(x): return x * (x > 0) ``` 1. 优点 1. 计算与收敛速度非常快,不涉及指数等运算。 2. 一定程度缓解梯度消失问题,因为导数为 1,不会像 sigmoid 那样由于导数较小,而导致连乘得到的梯度逐渐消失。 2. 缺点 1. 某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。 ### ELU

指数线性单元,Exponential Linear Unit.

E L U ( x ) = { x , i f x > 0 α ( e x − 1 ) i f x ≤ 0 ELU(x)=\begin{cases} x, & if & x>0 \\ \alpha (e^x-1) & if & x \leq 0 \end{cases} ELU(x)={x,α(ex1)ififx>0x0
图像:

ELU
def ELU(x, alpha):
    return x if x > 0 else alpha * (exp(x) - 1)
  1. 优点
    1. 能避免死亡 ReLU 问题:x 小于 0 时函数值不再是 0,因此可以避免 dying relu 问题。
    2. 能得到负值输出,这能帮助网络向正确的方向推动权重和偏置变化。
  2. 缺点
    1. 计算耗时:包含指数运算。
    2. α 值是超参数,需要人工设定。

SELU

尺度指数线性单元,Scale Exponential Linear Unit. 参见论文 Self-Normalizing Neural Networks.

S E L U ( x ) = λ { x , i f x > 0 α ( e x − 1 ) i f x ≤ 0 SELU(x)=\lambda \begin{cases} x, & if & x>0 \\ \alpha (e^x-1) & if & x \leq 0 \end{cases} SELU(x)=λ{x,α(ex1)ififx>0x0
图像:

SELU
def SELU(x, alpha, scale):
    return scale * x if x > 0 else scale * alpha * (exp(x) - 1)
  1. 优点
    1. SELU 激活能够对神经网络进行自归一化(self-normalizing)。
    2. 不可能出现梯度消失或爆炸问题,论文附录的定理 2 和 3 提供了证明。
  2. 缺点
    1. 应用较少,需要更多验证。

Soft Model

Softmax

Softmax 用于多分类工程,将多个输入映射到(0-1] 区间内,可以看成概率,从而进行多分类。

假设数组 X X X, x i x_i xi 表示 X X X中的第 i i i个元素,那么,该元素的Softmax值为:

S o f t m a x ( x i ​ ) = ​ e x i ​ ∑ j ​ e x j ​ ​ Softmax(x_i​)=\frac {​e^{x_i​}} {\sum_j ​e^{x_j​}}​ Softmax(xi)=jexjexi

Softmin

S o f t m i n ( x i ​ ) = ​ e − x i ​ ∑ j ​ e − x j ​ ​ Softmin(x_i​)=\frac {​e^{-x_i​}} {\sum_j ​e^{-x_j​}}​ Softmin(xi)=jexjexi

LogSoftmax

L o g S o f t m i n ( x i ​ ) = L o g ( ​ e x i ​ ∑ j ​ e x j ​ ) ​ LogSoftmin(x_i​)=Log\left(\frac {​e^{x_i​}} {\sum_j ​e^{x_j​}}\right)​ LogSoftmin(xi)=Log(jexjexi)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值