借鉴:常见激活函数合集
激活函数是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。
1. Sigmoid函数
1.1 公式:
1.2 图像:
1.3 优点与不足
优点:
- 其值域为【0,1】,适合作为模型的输出函数用于一个(0,1)范围内的概率值,可用于将预测概率作为输出的模型,比如用于表示二分类的类别或者用于表示置信度。
- 由于输出在0-1,因此它对每个神经元的输出进行归一化
不足:
- 输出不是以0为中心而是都大于0的(会降低权重更新的效率),这样下一层的神经元会得到上一层输出的全正信号作为输入,Sigmoid激活函数不适合反正该神经网络的前面层而是一般放在最后的输出层使用。
- 指数运算,计算量大而且计算复杂度高
2. Tanh函数
2.1 公式
2.2 图像
2.3 优点和不足
优点:
- 在分类任务中,双曲正切函数(Tanh)逐渐取代Sigmoid函数作为标准的激活函数,反对称,对称中心在原点。
- 可以把网络输出非线性的映射到(-1,1)区间里,负输入将被映射为负,而零输入被映射为接近零。输出间隔为1且值域是以0为中心的【-1,1】(可以解决Sigmoid输出不以0为中心的问题)
- 一般二分类问题中,tanh函数用于隐藏层,而sigmoid函数用于输出层
不足:
- 输入较大或较小时,输出几乎是平滑的并且梯度较小,不利于权重更新
- 要进行指数运算,复杂度高计算量大
- 梯度消失
3. ReLU函数
3.1 公式
3.2 图像
3.3 优点和不足
优点:
- Relu在正输入时是线性的,收敛速度快,计算速度快。当输入为正时,由于导数是1,能够完整传递梯度,不存在梯度消失的问题。
- 计算速度快,只存在线性关系,无论函数还是其导数都不包含复杂的数学运算。
- 当输入大于0时,梯度为1,避免梯度消失
- 当输入为负值的时候,Relu的学习速度可能会变得很慢,甚至使神经元直接无效。
不足:
- 输入为负时,输出始终为0,其一阶导数也始终为0,会导致神经元不能更新参数。
4. Leaky ReLU函数
4.1 公式
4.2 图像
4.3 优点和不足
优点:
- 把x的非常小的线性分量给予负输入(0.01x)来调整负值的零梯度问题。
- 添加一个小的正斜率(使得负轴的信息不会全部丢失),可以保证模型训练过程中神经元的权重在小于0的情况下依然会得到更新。
- 不会出现Dead Relu问题
不足:
- 并未证明Leaky Relu总是比Relu更好
5. GELU函数
5.1 公式
5.2 图像
5.3 优点和不足
优点:
- 当方差无穷大,均值为0的时候,GELU就等价于RELU了,可以作为RELU的一种平滑策略。GELU是非线性输出,具有一定的连续性。有一个概率解释,因为它是一个随机正则化器的期望