线性模型的表达能力不够,无法解决非线性问题,激活函数的作用是加入非线性因素。

1.Sigmoid函数,函数表达式如下:

SiLU 激活函数代码 sigmoid激活函数作用_深度学习

SiLU 激活函数代码 sigmoid激活函数作用_神经网络_02


SiLU 激活函数代码 sigmoid激活函数作用_深度学习_03

优点:Sigmoid函数的输出范围是0到1,对每个神经元的输出进行了归一化;相比于sgn函数,其梯度平滑,没有跳跃的输出值;

缺点:但Sigmoid函数倾向于梯度消失;且函数输出不是以0为中心,会降低权重更新效率;指数运算较慢。

2.Tanh函数,函数表达式如下:

SiLU 激活函数代码 sigmoid激活函数作用_函数表达式_04

SiLU 激活函数代码 sigmoid激活函数作用_机器学习_05


SiLU 激活函数代码 sigmoid激活函数作用_深度学习_06

Tanh函数是由Sigmoid函数作线性变换得来,关系如下:
SiLU 激活函数代码 sigmoid激活函数作用_SiLU 激活函数代码_07
Tanh函数优缺点同Sigmoid相似,但其以0为中心,比Sigmoid函数略好。

3.ReLU函数,函数表达式如下:

SiLU 激活函数代码 sigmoid激活函数作用_深度学习_08

SiLU 激活函数代码 sigmoid激活函数作用_SiLU 激活函数代码_09


SiLU 激活函数代码 sigmoid激活函数作用_机器学习_10

优点:缓解了梯度消失问题;计算速度比Sigmoid快得多;

缺点:当输入为负时,ReLU梯度为0,会导致神经元“坏死”,永远不会被激活。

4.Leaky ReLU函数,函数表达式如下:

SiLU 激活函数代码 sigmoid激活函数作用_SiLU 激活函数代码_11

SiLU 激活函数代码 sigmoid激活函数作用_函数表达式_12

解决了ReLU函数会导致神经元“坏死”的问题。

5.PReLU函数,函数表达式如下:
SiLU 激活函数代码 sigmoid激活函数作用_SiLU 激活函数代码_11
PReLU同Leaky ReLU的区别是其参数α是一个可学习的参数。

6.ELU函数,函数表达式如下:

SiLU 激活函数代码 sigmoid激活函数作用_SiLU 激活函数代码_14

SiLU 激活函数代码 sigmoid激活函数作用_深度学习_15

没有Dead ReLU问题,使正常梯度更接近于单位自然梯度,但计算量更大。

ReLU的各种变体理论上都比ReLU要好,但在实践中没有充分证据可以证明这一点。

7.Softmax函数,函数表达式如下:
SiLU 激活函数代码 sigmoid激活函数作用_函数表达式_16
Softmax是用于多分类问题的激活函数。

8.Maxout函数:Maxout函数是一个可学习的激活函数,可以看做深度神经网络中加入一层激活函数层,假设w是二维的,则函数表达式如下:
SiLU 激活函数代码 sigmoid激活函数作用_深度学习_17

Maxout的拟合能力非常强,可以拟合任意的凸函数。

激活函数多种多样,按照自己的需要进行选择,目前深度学习中常用的就是ReLU函数。