[深度学习]什么叫激活函数

 

目录

1.激活函数的定义

2.激活函数在神经网络的位置

3.常用的激活函数

3.1 Sigmoid函数

3.2 tanh函数

3.3 relu函数

3.4 prelu函数

3.5 softmax函数

4.如何选择合适的激活函数



1.激活函数的定义

我们看百度百科对激活函数的定义:

激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。

可以看出,激活函数主要的两个特性:

  1. 在人工神经网络上运行的函数,既然是一个函数,就能够普通的函数一样使用。
  2. 把非线性特性引入网络中,简单说就是激活函数有“掰弯”的能力。能够增强我们关注的特征,减弱不关注的特征。

比如线性函数:f(x)=x+1

 

 

添加一个绝对值的激活函数:|fx|=|x+1|

 

如果把x表示特征,y=x+1表示神经网络的一个处理层,y越大表示特征越明显;

显然,添加绝对值激活函数后,x越小和越大的特征,越被强化。

2.激活函数在神经网络的位置

我们看下激活函数在神经网络中的位置:

激活函数在上一层隐藏层的输出和下一层隐藏层输入之前。经过激活函数之后,上一层隐藏层的输出就被“掰弯”了。

3.常用的激活函数

3.1 Sigmoid函数

Sigmoid 是常用的非线性的激活函数,它的数学形式如下:

图像如下:

 

特点:
它能够把输入的连续实值变换为0和1之间的输出。如果是非常大的负数,那么出就是0;如果是非常大的正数,输出就是1。可以用来做二分类
缺点:

  1. 在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。具体表现为:如果我们初始化神经网络的权值为 [0,1]之间的随机值,由反向传播算法的数学推导可知,梯度从后向前传播时,每传递一层梯度值都会减小为原来的0.25倍,如果神经网络隐层特别多,那么梯度在穿过多层后将变得非常小接近于0,即出现梯度消失现象;当网络权值初始化为 (1,+∞)区间内的值,则会出现梯度爆炸情况。
  2. 计算中含有幂运算,求解时比较耗时。对于规模比较大的深度网络,会增加训练时间。
  3. Sigmoid 的 output 不是0均值(即zero-centered)。会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入。产生的一个结果就是:如x>0,  f=wTx+b>0, 那么对w求局部梯度则都为正,这样在反向传播的过程中w要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。

3.2 tanh函数

tanh的数学形式如下:

图像如下:

特点:

  1. 解决了在正区间梯度消失的问题
  2. 计算速度非常快,只需要判断输入是否大于0
  3. 收敛速度远快于sigmoid和tanh

缺点:

  1. 输出不是非0均值(zero-centered)
  2. 某些神经元(如小于0的特征)可能永远不会被激活,导致相应的参数永远不能被更新。

3.3 relu函数

relu函数是一个取最大值函数,是目前最常用的激活函数,数学形式:

图像如下:

 

特点:

  1. 解决了在正区间梯度消失的问题
  2. 计算速度非常快,只需要判断输入是否大于0
  3. 收敛速度远快于sigmoid和tanh

缺点:

  1. 输出不是非0均值(zero-centered)
  2. 某些神经元(如小于0的特征)可能永远不会被激活,导致相应的参数永远不能被更新。

3.4 prelu函数

prelu函数是一个缓解relu神经元消亡问题的函数,数学形式:

α表示超参数,一般是取0~1之间的数,这个参数可以通过反向传播学习得到

图像如下:

 

特点:

 当x>=0是,y=x;当x<0时,y=αx;因此能缓解relu函数神经元死亡的问题,其他特性和relu一样。

3.5 softmax函数

softmax用于多分类神经网络输出,数学形式如下:

即某个分类的概率0<f(x)<1;所有分类的概率之和为1。

4.如何选择合适的激活函数

激活函数的选择要在了解每个激活函数的基础上,结合实际场景和经验得到,但整体会遵循以下原则:

  1. 深度学习往往需要大量时间来处理大量数据,模型的收敛速度是非常重要的。所以,总体上,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。
  2. 如果使用 relu,要小心设置学习比率,而且不要让网络出现很多未被激活的神经元,如果这个问题不好解决,那么可以试试 prelu。
  3. 最好不要用 sigmoid,你可以试试 tanh,不过可以预期它的效果会比不上relu。
  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值