深度学习笔记2-激活函数

深度学习笔记2-激活函数

目前激活函数有sigmoid、Tanh、ReLU、LeakyReLU、ELU。

  1. Sigmoid函数
    在这里插入图片描述
    Sigmoid函数表达式 f ( x ) = 1 1 + e − x f(x) = \frac{1}{{1 + {e^{ - x}}}} f(x)=1+ex1Sigmoid函数在远离坐标原点的时候,函数梯度非常小,在梯度反向传播时,会造成梯度消失(梯度弥散),无法更新参数,即无法学习。另外,Sigmoid函数的输出不是以零为中心的,这会导致后层的神经元的输入是非0均值的信号。那么对于后层的神经元,其局部梯度 w ′ = x × f ( x ) × ( 1 − f ( x ) ) w'=x \times f(x) \times (1-f(x)) w=x×f(x)×(1f(x))永远为正,假设更深层的神经元的梯度反向传递到这为 w ′ ′ w'' w。根据链式法则,此时后层神经元的全局梯度为 w ′ × w ′ ′ w'\times w'' w×w。当 w ′ ′ w'' w为正时,对于所有的连接权 w w w,其都往“负”方向修正(因为 w ′ × w ′ ′ w'\times w'' w×w为正,要往负梯度方向修正);而当 w ′ ′ w'' w为负时,对于所有的连接权 w w w,其都往“正”方向修正。所以,如果想让 w w w中的 w 1 w_1 w1往正方向修正的同时, w 2 w_2 w2往负方向修正是做不到的。对于 w = ( w 1 , w 2 , . . . , w n ) w=(w_1,w_2,...,w_n) w=(w1,w2,...,wn)会造成一种捆绑的效果,使得收敛很慢。如果是按batch来训练的话,不同的batch会得到不同的符号,能缓和一下这个问题。
    由于以上两个缺点,sigmoid函数已经很少用了。

  2. Tanh函数
    在这里插入图片描述
    Tanh函数的表达式
    tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh (x) = \frac{{{e^x} - {e^{ - x}}}}{{{e^x} + {e^{ - x}}}} tanh(x)=ex+exexexTanh函数能解决sigmoid函数输出不是零均值的问题,但和sigmoid函数一样,Tanh函数还是会存在很大的梯度弥散问题。

  3. ReLU函数
    在这里插入图片描述
    ReLU函数表达式为 f ( x ) = m a x ( 0 , x ) f(x)=max(0,x) f(x)=max(0,x)
    ReLU函数在输入为正的时候,不存在梯度弥散的问题,对梯度下降的收敛有巨大加速作用。同时由于它只是一个矩阵进行阈值计算,计算很简单。但它也有两个缺点,一个是当输入x小于零时,梯度为零,ReLU神经元完全不会被激活,导致相应参数永远不会被更新;另一个和sigmoid一样,输出不是零均值的。

  4. LeakyReLU函数
    为了解决ReLU函数在输入小于零神经元无法激活的问题,人们提出了LeakyReLU函数。
    在这里插入图片描述
    该函数在输入小于零时,给了一个小的梯度(斜率,比如0.01)。因此就算初始化到输入x小于零,也能够被优化。其表达式为 f ( x ) = m a x ( α x , x ) f(x)=max(\alpha x,x) f(x)=max(αx,x) α \alpha α为斜率。当把 α \alpha α作为参数训练时,激活函数就会变为PReLU。LeakyReLU以其优越的性能得到了广泛的使用。

  5. ELU函数
    ELU函数也是ReLU函数的一个变形,也是为了解决输入小于零神经元无法激活的问题。
    在这里插入图片描述
    与LeakyReLU不同的是,当 x &lt; 0 x&lt;0 x<0时, f ( x ) = α ( e x − 1 ) f(x)=\alpha (e^x-1) f(x)=α(ex1)

在tensorflow和pytorch中,都已经集成了这些激活函数,可以拿来直接用。详见:
http://www.tensorfly.cn/tfdoc/api_docs/python/nn.html#AUTOGENERATED-activation-functions
https://pytorch.org/docs/stable/nn.html#non-linear-activation-functions

参考:
深度学习使用到的激活函数种类和优缺点解释!
几种常用激活函数的简介

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值