基于Pytorch的神经网络之激活函数

目录

1.引言

2.激活函数类

2.1 Sigmoid

2.1.1 表达式与图像

2.1.2 优缺点

2.2 Tanh

2.2.1 表达式与图像

2.2.2 优缺点

2.3 Relu

2.3.1 表达式与图像

2.3.2 优缺点

2.4 Elu

2.4.1 表达式与图像

2.4.2 优缺点

3. 激活函数的选取 


1.引言

上一篇文章我们提到了神经网络中前向传播中数据经过线性变换后会传入一个激活函数(activation function),以满足我们解决非线性问题的需求。

2.激活函数类

常见的激活函数有以下四种。

2.1 Sigmoid

2.1.1 表达式与图像

表达式:f(x)=\frac{1}{1+e^{-x}}

图像:

2.1.2 优缺点

优点:

  1. 将整个实轴映射到 [0,1] 区间内,输出值适合充当下一层的输入值。

缺点:

  1. 由于该函数的导数最大值只有0.25,经过一层梯度值变为原来的四分之一,经过多层后梯度值会变得越来越接近0,在反向传播时容易出现梯度消失。
  2. 该函数图像不关于原点中心对称,称为不是0-均值的(zero-centered),会导致经过一层后梯度值同正或者同负,会使收敛缓慢。
  3. 该函数表达式中含有指幂,计算速度相对较慢,训练时间长。

2.2 Tanh

2.2.1 表达式与图像

表达式:f(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}

图像:

2.2.2 优缺点

优点:

  1. 修正了Sigmoid函数非0-均值的问题。

缺点:

  1. 梯度爆炸和梯度消失的线性仍然存在。
  2. 运输缓慢

2.3 Relu

2.3.1 表达式与图像

表达式:f(x)=max(x,0)

图像:

2.3.2 优缺点

优点:

  1. 不存在梯度消失的现象
  2. 表达式简单,计算迅速

缺点:

  1. 非0-均值的
  2.  x=0 为不可导点,但是可以采用次梯度(sub-gradient)解决
  3. 由于该函数负半轴恒为0,参数设置不当可能会导致部分神经元的值始终不发生改变,该现象称为神经元死亡(Dead ReLU Problem)

2.4 Elu

2.4.1 表达式与图像

表达式:f(x)=\left\{\begin{matrix} x&\quad &x>0 \\ \alpha(e^x-1)& &x\leq 0 \end{matrix}\right.

图像:

2.4.2 优缺点

优点:

  1. 近似0-均值的
  2. 避免了神经元死亡现象

缺点:

  1. 含有指幂,计算速度略慢

3. 激活函数的选取 

那么我们该如何选取激活函数呢

首先,深度学习中我们一般不选取Sigmoid函数,Tanh函数倒是可以一试,通常使用Relu函数或者Elu函数,因为它们收敛速度较快。

其次,要注意的是,如果选取Relu函数一定要选择合适的学习率(learning rate)

总的来说,我们要根据数据特点尽量选择收敛速度快的,0-均值的激活函数。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值