当前位置:   article > 正文

深度学习常用激活函数总结_分类的激活函数

分类的激活函数

1 为什么需要激活函数

首先数据的分布绝大多数是非线性的,而一般神经网络的计算是线性的,引入激活函数,是在神经网络中引入非线性,强化网络的学习能力。所以激活函数的最大特点就是非线性。

不同的激活函数,根据其特点,应用也不同。

Sigmoid和tanh的特点是将输出限制在(0,1)和(-1,1)之间,说明Sigmoid和tanh适合做概率值的处理,例如LSTM中的各种门;

而ReLU就不行,因为ReLU无最大值限制,可能会出现很大值。同样,根据ReLU的特征,Relu适合用于深层网络的训练,而Sigmoid和tanh则不行,因为它们会出现梯度消失。

2 常见的激活函数

1 Sigmoid

sigmoid函数也称为Logistic函数,因为Sigmoid函数可以从Logistic回归(LR)中推理得到,也是LR模型指定的激活函数。

sigmod函数的取值范围在(0, 1)之间,可以将网络的输出映射在这一范围,方便分析。

激活函数表达式导形式取值范围图像适用
Sigmoid f = 1 1 + e x f = \frac{1}{1+e^x} f=1+ex1 f ′ = f ( 1 − f ) f'=f(1-f) f=f(1f)(0,1)在这里插入图片描述计算概率值

优缺点分析:

  1. 优点:
    易于求导,数据符合泊松分布
  2. 缺点:
    • 激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);
    • 反向传播求误差梯度时,求导涉及除法;
    • Sigmoid导数取值范围是[0, 0.25],由于神经网络反向传播时的“链式反应”,很容易就会出现梯度消失的情况。
    • Sigmoid的输出不是0均值(即zero-centered);这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入,随着网络的加深,会改变数据的原始分布。|

2 Tanh

tanh为双曲正切函数,其英文读作Hyperbolic Tangent。tanh和 sigmoid 相似,都属于饱和激活函数,区别在于输出值范围由 (0,1) 变为了 (-1,1),可以把 tanh 函数看做是 sigmoid 向下平移和拉伸后的结果。

激活函数表达式导形式取值范围图像适用
tanh f = e x − e − x e x + e − x f = \frac{e^x-e^{-x}}{e^x+e^{-x}} f=ex+exexex f ′ = 2 1 + e − 2 x − 1 f'=\frac{2}{1+e^{-2x}}-1 f=1+e2x21(-1,1)在这里插入图片描述

Tanh的特点

  1. 优点
    • tanh的输出范围时(-1, 1),解决了Sigmoid函数的不是zero-centered输出问题;
  2. 缺点
    • 幂运算的问题仍然存在;
    • tanh导数范围在(0, 1)之间,相比sigmoid的(0, 0.25),梯度消失得到缓解,但仍然存在。

3 Relu及其变体(2012 AlexNet)

由于以上激活函数存在的梯度消失问题,所以2012年提出了整流线性单元(Relu)。

激活函数表达式导形式取值范围图像适用
Relu f = m a x ( 0 , x ) f =max(0,x) f=max(0,x) f ′ = 1 , 0 f'=1, 0 f=1,0[0,1)在这里插入图片描述避免了梯度消失,适用于深度网络
P R e l u ( a i 变量 ) / / L e a k y R e l u ( a i = 0.01 ) PRelu(a_i变量)//LeakyRelu(a_i=0.01) PRelu(ai变量)//LeakyRelu(ai=0.01) f ( x ) = { a i x , x < 0 x , x > = 0 f(x)=\left\{
aix,x<0x,x>=0
\right.
f(x)={aix,x<0x,x>=0
f ′ ( x ) = { a i , x < 0 1 , x > = 0 f'(x)=\left\{
ai,x<01,x>=0
\right.
f(x)={ai,x<01,x>=0
(-1,1)在这里插入图片描述改善Relu的0梯度,为一个很小的负值,防止神经元死亡
RRelu y = { x , x ≥ 0 a ( e x − 1 ) , x < 0 y=\left\{
x,x0a(ex1),x<0
\right.
y={x,a(ex1),x0x<0
(-1,1)在这里插入图片描述在负数部分的ai是从一个均匀的分布U(I,u)中随机抽取的数值

总结:

  1. Leaky ReLU中的为常数,一般设置 0.01。这个函数通常比 Relu 激活函数效果要好,但是效果不是很稳定,所以在实际中 Leaky ReLu 使用的并不多。

  2. PRelu(参数化修正线性单元) 中作为一个可学习的参数,会在训练的过程中进行更新。

  3. RReLU(随机纠正线性单元)也是Leaky ReLU的一个变体。在RReLU中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中,aji是从一个均匀的分布U(I,u)中随机抽取的数值。

4 Softmax

Softmax函数是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为K的任意实向量,Softmax函数可以将其压缩为长度为K,值在[ 0 , 1 ] 范围内,并且向量中元素的总和为1的实向量。

Softmax函数的分母结合了原始输出值的所有因子,这意味着Softmax函数获得的各种概率彼此相关。

为何叫做softmax,适合max函数比较得到的,max只会返回一个最大值,而忽略了其余值,softmax的方式就略显soft,按照归一化的方式保留每一个较小的值。

s o f t m a x ( x ) = e x p ( x i ) ∑ i e x p ( x i ) softmax(x) = \frac{exp(x_i)}{\sum_{i}exp(x_i)} softmax(x)=iexp(xi)exp(xi)

Softmax激活函数的特点:

  • 在零点不可微。
  • 负输入的梯度为零,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元,梯度消失。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/333752
推荐阅读
相关标签
  

闽ICP备14008679号