【机器学习】常见的激活函数

什么是激活函数?

  激活函数(Activation Function)是一种添加到人工神经网络中的函数,可以帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容
  在人工神经网络中,激活函数扮演了非常重要的角色,主要作用是对所有的隐藏层和输出层添加一个非线性的操作。使得神经网络的输出更为复杂,表达能力更强。
  在神经网络中,激活函数决定来自给定输入集的结点的输出,其中非线性激活函数允许网络复制复杂的非线性行为,正如绝大多数神经网络借助某种形式的梯度下降进行优化。注意激活函数必须是可导的(只要是几乎处处可到就行) 这是因为人工神经网络的误差反向传播算法需要对损失函数求导数。
  此外,复杂的激活函数也许会产生一些梯度消失或爆炸的问题,因此神经网络倾向于部署若干个特定的激活函数。

激活函数的分类

  激活函数可以分为两类。

  1. 饱和激活函数:sigmoid、tanh等
  2. 非饱和激活函数:relu、elu、leaky relu、prelu、rrelu等

什么是饱和

  • 右饱和:当x趋向于正无穷时,函数的导数趋近于0,此时称为右饱和。
  • 左饱和:当x趋向于负无穷时,函数的导数趋近于0,此时称为左饱和。
      当一个函数即满足右饱和又满足左饱和时,称其为饱和函数,否则称之为非饱和函数。

常见的激活函数

Sigmoid函数

公式:

在这里插入图片描述

对应的图像:

在这里插入图片描述

优点与不足

  • 优点
  1. Sigmoid其值域为[0,1],非常适合作为模型的输出函数用于输出一个(0,1) 范围内的概率值,可用于将预测概率作为输出的模型,比如用于表示而分类的类别或者用于表示置信度。
  2. 由于Sigmoid函数的输出范围为0~1,所以它实现了对每个神经元的归一化 (归一化就是把所有数据都转化成[0,1]或者[-1,1]之间的数,其目的是为了取消各维数据之间的数量级差别,避免因为输入输出数据数量级差别大而造成网络预测误差过大。
  3. 该函数是连续可导的(即可微:图像光滑),可以提供非常平滑的梯度值,防止模型训练过程中出现的突变的梯度(及避免跳跃的输出值)

- 缺点

  1. 从其倒数的函数图像上可以看到,其导数的最大值只有0.25,而且在当x在[-5,5]的范围外时其导数值就已经几乎接近于0。,这种情况会导致训练过程中神经元处于一种饱和状态,反向传播时其权重几乎得不到更新,从而使得模型变得难以训练,这种现象被称为梯度消失问题

  BP(Back-propagation,反向传播)算法基于梯度下降策略,以目标的负梯度方向对参数进行调整。
  计算梯度包含了对激活函数进行求导,如果此部分大于1,那么层数增多的时候,最终的求出的梯度更新将以指数形式增加,即发生梯度爆炸,如果此部分小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生了梯度消失。
  都表现为当前面隐藏层的学习速率低于后面隐藏层的学习速率,即随着隐藏层数目的增加,分类准确率反而下降了。

  • 其输出不是以0为中心的而是全部>0,(这会降低权重更新的效率),这样下一层的神经元会得到本一层输出的全正信号作为输入,所以Sigmoid激活函数不适合放在神经网络的前面层,而是一般放在最后的输出层中使用(卷积神经网络:卷积层,池化层,激活层、全连接层)
  • 需要进行指数运算(计算机运行的较慢),所以导致计算量大及计算复杂度高,训练耗时。同时指数越大其倒数就越小,容易产生梯度消失(此处不明白)

Tanh函数

公式

在这里插入图片描述

对应的图像

在这里插入图片描述

优点与不足之处

  • 优点
  1. 在分类任务中,双曲正切函数(Tanh)逐渐取代Sigmoid函数作为标准的激活函数,原因是其具有很多神经网络所钟爱的特征。它是完全可微分的,而且他的图象是反对称的,对称中心则是原点
  2. 输出的图像是S型曲线,具备打破网络层与网络层之间的线性关系,可以把网络层输出非线性的映射到(-1,1)区间里。负输入将被强映射为负,而零输入会被映射为零;tanh的输出间隔为1且值域是以0为中心的[-1,1](可以解决Sigmoid激活函数输出不以0为中心的问题)
  3. 在一般的二元分类问题中,tanh函数用于隐藏层,而sigmoid函数用于输出层,但这暴怒是固定的,需要根据特定问题进行调整。
  • 缺点
  1. 输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重的计算。
  2. Tanh函数也需要进行指数运算,所以其也会存在计算复杂度高且运算量大的问题。
  3. 当神经网络的层数增多时,由于在进行反向传播时,链式求导、多项相乘函数进入饱和区(导数接近于0的地方)就会逐层传递,这种现象被称为梯度消失。(此问题与Sigmoid函数在-5~5区间内存在的问题相同。

Relu函数

公式

请添加图片描述

对应的图像

请添加图片描述

优点与不足之处

  • 优点
  1. ReLU 函数在正输入时是线性的,收敛速度快,计算速度快,同时符合恒等性的特点。当输入为正时,由于导数是1,能够完整传递梯度,不存在梯度消失的问题(梯度饱和问题)
  2. 计算速度快。ReLU 函数中只存在线性关系且无论是函数还是其导数都不包含复杂的数学运算,因此它的计算速度比 sigmoid 和 tanh 更快。
  3. 当输入大于0时,梯度为1,能够有效避免链式求导法则梯度相乘引起的梯度消失和梯度爆炸这就是为什么大部分神经网络都采用relu函数作为激活函数 计算成本低。
  4. 它保留了 step 函数的生物学启发(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为零,从而允许基于梯度的学习(尽管在 x=0 的时候,导数是未定义的)。**当输入为负值的时候,ReLU 的学习速度可能会变得很慢,甚至使神经元直接无效,因为此时输入小于零而梯度为零,**从而其权重无法得到更新,在剩下的训练过程中会一直保持静默。
  • 缺点
  1. ReLU的输入值为负的时候,输出始终为0,其一阶导数也始终为0,这样会导致神经元不能更新参数,也就是神经元不学习了,这种现象叫做“Dead Neuron”。为了解决ReLU函数这个缺点,在ReLU函数的负半区间引入一个泄露(Leaky)值,所以称为Leaky ReLU函数。
  2. 与Sigmoid一样,其输出不是以0为中心的(ReLU的输出为0或正数)。
  3. ReLU在小于0的时候梯度为零,导致了某些神经元永远被抑制,最终造成特征的学习不充分;这是典型的 Dead ReLU 问题,所以需要改进随机初始化,避免将过多的负数特征送入ReLU。

函数

公式

对应的图像

优点与不足之处

  • 优点
  • 缺点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值