写在前面的话
本文为我在学习卷积神经网络的时候,对各类激活函数的一些认识。
欢迎扫码关注我的公众号,与我一同学习进步!主要致力于学习
- 使用深度学习解决计算机视觉相关问题
- Python为主的互联网应用服务
- 基于MIPS指令集的CPU微体系结构设计
各类激活函数的介绍
Sigmoid函数
函数表达式
它的函数模型如下图所示
函数图像
它的函数图像如下图所示
适合使用该函数的场景
- 将输出值限制到了0到1之间,对输出进行了归一化处理
- 用于预测概率作为输出的模型
- 梯度平滑,避免了跳跃的输出
- 函数是可微的
函数的缺点
- 倾向于梯度消失
- 函数使用指数运算,计算效率较低
- 整个函数不是以0为中心的
tanh(双曲正切函数)
函数表达式
它的函数模型如下图所示
函数图像
它的函数图像如下图所示
与Sigmoid激活函数的对比
二者对比的示意图如下图所示,相较于Sigmoid函数,tanh函数更有优势一些,这主要体现在以下几点
- 当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于神经网络的参数更新,这一点二者是相同的。
- tanh的输出间隔为1,并且整个函数是以0为中心的。
- 在tanh函数中,负输入被映射为负值,且0输入被映射为0
- 对于二者,在一般的二分类问题中,tanh函数通常被应用在隐含层,而Sigmoid函数通常被应用在输出层。但这并不是固定的,需要根据实际情况进行调整。
Relu
函数表达式
它的函数模型如下图所示
函数图像
它的函数图像如下图所示
函数的优点
- 当输入为正时,不存在梯度饱和的问题
- 计算速度快得多,它是一个线性关系。相较于Sigmoid和tanh函数,它的计算速度更快
函数的缺点
- Dead Relu问题。即当输入的值为负时,Relu函数完全失效。在正向传播的过程中,出现该问题的可能性很低,但是反向传播时,该问题较容易出现。
- 函数不是以0为中心的
Leaky Relu
函数表达式
它的函数模型如下图所示
函数图像
它的函数图像如下图所示,左图为Relu函数的图像,右图为Leaky Relu函数的图像。
函数的作用
- 解决了Relu函数中Dead Relu的问题,调整了负值的零梯度问题
- leak有助于扩大Relu函数的范围,通常,a的取值为0.01作用
- Leaky Relu函数的范围是负无穷到正无穷之间
需要注意的是,在实际的操作过程中,并未证明Leaky Relu函数要好于Relu函数。
ELU
函数表达式
它的函数模型如下图所示
函数图像
它的函数图像如下图所示
函数的优点
- 具有Relu的所有优点
- 没有Dead Relu的问题,输出的平均值接近0,以0为中心,使梯度更接近于自然梯度
- 在较小的输入下饱和至负值,从而减少前向传播的变异和信息
与Leaky Relu类似的是,在实践中也没有充分的证据证明,Elu总是比Relu好。
softmax
softmax函数是用于多分类问题的激活函数,它可以将多分类问题中的输出转换为概率输出,它的函数表示形式如下图所示
函数图像
它的函数图像如下图所示
函数的缺点
- 在零点不可微
- 负输入的梯度为0,这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元
总结
以上六种激活函数就是神经网络中经常用到的激活函数。根据“没有免费的午餐”定理,需要根据问题的实际情况进行合适的选择,以期望在神经网络学习的过程中可以获得不错的效果。