1. 什么是激活函数 activation function
激活函数 是一种添加到ANN中的函数,它决定了最终要发射给下一个神经元的内容。
在人工神经网络中,一个节点的激活函数 定义了该节点在 给定的输入或输入的集合下的 输出。
因此,激活函数是确定神经网络输出的数学方程式。
2. artificial neuron的工作原理
上述过程的数学可视化如下图:
可以看到,每个输入x都有相对应的权值w,相乘后求和,然后加上偏置bias。最后根据激活函数,来决定输出。
; 3. 10种激活函数
1. Sigmoid激活函数
sigmoid的函数图像看起来像s型的曲线,sigmoid的意思 也有s型的。
函数图像:
函数表达式:
适合使用sigmoid激活函数的情况:
- 由于sigmoid函数的输出范围是0-1,所以它对每个神经元的输出都进行了归一化。
- 用于将预测概率作为输出的模型。因为概率的值就是0-1,所以非常合适。
- sigmoid函数梯度平滑,避免跳跃的输出值。
- 函数是可微的。
- 明确的预测,即非常接近1或0。
sigmoid函数的 缺点:
- 倾向于梯度消失
补充:梯度不稳定 概念:在深度神经网络中的梯度是不稳定的,在靠近输入层的隐藏层中或消失或爆炸。这种不稳定性,才是深度神经网络中基于梯度学习的根本问题。 产生的根本原因:神经网络模型的层数过多,以及连乘效应。 具体内容见https://zhuanlan.zhihu.com/p/25631496
- 当x取值为负时,函数值趋近于0。换言之,函数输出不是以0为中心的,这会 降低权重更新的效率。
- sigmoid函数执行的是指数运算,计算机运行的速度比较慢。
; 2. Tanh/双曲正切激活函数
函数图像:
函数表达式:
tanh是一个双曲正切函数,它的曲线和sigmoid的曲线相类似,但是相对于sigmoid函数有一些优势。下面是两个函数的图像对比图:
tanh的优势:
- 首先,当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。二者的区别在于输出间隔,tanh的输出间隔是1,并且整个函数的输出以0为中心,比sigmoid函数要好。
- 在tanh中,负输入将被强映射为负,而零输入被映射为接近0。
注意,在一般的二元分类问题(在机器学习中,被认为是监督式学习)中,tanh函数用于隐藏层,而sigmoid函数用于输出层。但这个也不是固定的,具体情况具体对待。
3. ReLU激活函数
全称是Rectified Linear Unit,中文名字:修正线性单元。
函数图像:
函数表达式:
ReLU函数是深度学习中比较流行的一个激活函数,相较于sigmoid和tanh,有以下优点:
- 当输入为正的时候, 不存在梯度饱和问题。 刚才的sigmoid函数和tanh函数就会出现梯度饱和问题,当输入x逐渐变大的时候,输出趋近于同一值,变化很小,造成模型训练缓慢。
- 计算速度快。ReLU函数是线性关系,sigmoid和tanh是非线性,因此计算速度快得多。
也有缺点:
- Dead ReLU问题。 当输入为负的时候,relu全为0,直接失效。当然在正向传播中,这不是问题,但是在反向传播过程中,如果输入为负,则梯度将完全为0。sigmoid和tanh也有相同的问题。
- ReLU函数不是以0为中心的函数。
; 4. Leaky ReLU激活函数
该激活函数是专门设计用来解决Dead ReLU问题的激活函数。
下面是两者的对比图:
函数表达式:
为什么leaky relu比relu更好呢?
- Leaky ReLU 通过把 x 的非常小的线性分量给予负输入(0.01x)来调整负值的零梯度(zero gradients)问题
- leak可以扩大relu的范围,通常a的值为0.01左右
- leaky relu函数的范围是负无穷 – 正无穷
5. ELU激活函数
ELU的英文全称是”Exponential Linear Units”,中文全称是”指数线性单元”。
看一下ELU、Leaky ReLU、ReLU三者的函数图像:
ELU的出现也解决了ReLU的问题。
与ReLU相比,ELU有负值,这会使激活的平均值接近0。均值接近0可以使学习更快,因为它们使梯度更接近自然梯度。
函数表达式:
显然,ELU具有ReLU的所有优点,并且:
- 没有Dead ReLU问题,输出的平均值接近0,以0为中心。
- ELU通过减少偏置偏移的影响,使正常梯度更接近于单位自然梯度,从而使均值向0加速学习。
- ELU当x较小时,会饱和值一个负值,从而减少前向传播的变异和信息。
注意,有一个小问题是,ELU的计算量更大。 与Leaky ReLU相似,尽管理论上比ReLU更好,但是目前的实践并没有充分的证据表示确实比ReLU好。
; 6. PReLU激活函数
全称:parametric ReLU
主要特点就是这里的参数a是可变的,通常为0-1之间的数字,并且通常相对较小。
- 如果参数a = 0,则就是ReLU。
- 如果参数a > 0,则就是Leaky ReLU。
- 如果参数a是可学习的参数,则就是PReLU.
优点:
- 在负值域,PReLU的斜率较小,可以避免Dead ReLU问题。
- 与ELU相比,PReLU在负值域是线性运算。
7. Softmax激活函数
函数图像:
Softmax是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。
对于长度为k的任意实向量,Softmax可以将其压缩为长度为k,值在(0,1)范围内,并且向量元素的总和为1的实向量。
Softmax 与正常的 max 函数不同:max 函数仅输出最大值,但 Softmax 确保较小的值具有较小的概率,并且不会直接丢弃。我们可以认为它是 argmax 函数的概率版本或「soft」版本。
Softmax 函数的分母结合了原始输出值的所有因子,这意味着 Softmax 函数获得的各种概率彼此相关。
Softmax函数的缺点:
- 在零点不可微。
- 负输入的梯度为0,这说明:对于该区域的激活,权重不会在反向传播期间更新,因此会产生 永不激活的死亡神经元!
; 8. Swish激活函数
函数图像:
函数表达式:y = x * sigmoid (x)
Swish 激活函数的主要优点如下:
- 「无界性」有助于防止慢速训练期间,梯度逐渐接近 0 并导致饱和;(同时,有界性也是有优势的,因为有界激活函数可以具有很强的正则化,并且较大的负输入问题也能解决);
- 导数恒 > 0;
- 平滑度在优化和泛化中起了重要作用。
9. Maxout激活函数
10. Softplus激活函数
Original: https://blog.csdn.net/Laok0413/article/details/125928768
Author: 安和橋北
Title: 激活函数和最常用的10个激活函数
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/717599/
转载文章受原作者版权保护。转载请注明原作者出处!