深度学习:激活函数Activation Function

0.前言

常见的激活函数

  • Sigmoid(S形函数)
  • Tanh(双曲正切,双S形函数)
  • ReLU
  • Leaky ReLU
  • ELU
  • Maxout

为什么时候激活函数

参考: 一文详解激活函数
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

1.Sigmoid(Logistic函数)

它可以将一个实数映射到(0,1)的范围内,可以用来做二分类。

计算公式
在这里插入图片描述

图像
在这里插入图片描述

优点:

缺点

  • 梯度消失:两端梯度约等于0,容易饱和和终止梯度传递(“死神经元”)
  • 没有0中心化:一般来说分支在(-1,1)会好一点
  • 计算成本高昂:exp() 函数与其他非线性激活函数相比,计算成本高昂

2.Tanh激活函数

解决了sigmoid没有0中心化的问题。

计算公式:
在这里插入图片描述
图像:
在这里插入图片描述

优点

  • 0中心化:取值范围(-1~1)

缺点

  • 没有解决梯度消失的问题

3.ReLU

对于输入的x以0为分界线,左侧的均为0,右侧的为y=x这条直线,是一个分段函数。比较常用ReLu,以及ReLu的变体。

计算公式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

函数图像:

在这里插入图片描述

优点:

  • 相比于Sigmoid和Tanh,提升收敛速度;大于0这一部分,导函数一直等于1
  • 梯度求解公式简单,大于0这一部分不会产生梯度消失和梯度爆炸

缺点:

  • 没有边界,不会对大于0的输入进行缩放
  • 比较脆弱,比较容易陷入出现”死神经元”的情况。小于0这一部分梯度等于0.

4.Leaky ReLU

在ReLU函数的基础上,对x≤0的部分进行修正;目的是为了解决ReLU激活函数中容易存在的”死神经元”情况的;不过实际场景中:效果不是太好。α是超参数。当α在反向传播时可以更新的时候,Leaky ReLU就成可P-ReLu

计算公式:
在这里插入图片描述
对小于这一部分做了极大的抑制。
在这里插入图片描述
图像:
在这里插入图片描述

优点:

  • ReLu的改进,理论上能稍微一直成为‘死神经元’的可能。

5.ELU激活函数

指数线性激活函数,同样属于对ReLU激活函数的x≤0部分的转换进行指数修正,而不是和Leaky ReLU中的线性修正。

计算公式:

在这里插入图片描述
在这里插入图片描述

图像:
在这里插入图片描述
小于0这一部分的对比图
leaky_relu的negative_slope=0.01
在这里插入图片描述
参考: Mish激活函数

Mish = x*tanh(ln(1+e^x))

在这里插入图片描述
在这里插入图片描述

思想和其他ReLU的变种都差不多,我在小于0的这一部分不做直接的截断,而是大幅度的压缩。以此来避免梯度消失的问题。

7.Maxout激活函数(自己的理解,可能不准确)

可以看作是在深度学习网络中加入一层激活函数层,包含一个参数k,拟合能力特别强。特殊在于:增加了k个神经元进行激活,然后输出激活值最大的值。

计算公式:
在这里插入图片描述
注意这里的x仍然是一个标量,权重和偏执是在反向传播过程中更新的。

优点:

  • 不容易出现死神经元的情况

缺点:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值