激活函数总结(七):激活函数补充
- 1 引言
- 2 激活函数
- 2.1 Softsign激活函数
- 2.2 Threshold (Unit step activation function) 激活函数
- 2.3 Sinc激活函数
- 3. 总结
1 引言
在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid
、Tanh
、ReLU
、Leaky ReLU
、PReLU
、Swish
、ELU
、SELU
、GELU
、Softmax
、Softplus
、Mish
、Maxout
、HardSigmoid
、HardTanh
、Hardswish
、HardShrink
、SoftShrink
、TanhShrink
、RReLU
、CELU
、ReLU6
)。在这篇文章中,会接着上文提到的众多激活函数继续进行介绍,给大家带来更多不常见的激活函数的介绍。这里放一张激活函数的机理图:
最后,对于文章中没有提及到的激活函数,大家可以通过评论指出,作者会在后续的文章中进行添加补充。
2 激活函数
2.1 Softsign激活函数
Softsign 激活函数是一种Tanh 、Sigmoid 激活函数的替代,它通过应用阈值
来重新缩放 -1 和 1 之间的值。其数学表达式和数学图像分别如下所示:
S
o
f
t
s
i
g
n
(
x
)
=
x
/
(
1
+
∣
x
∣
)
Softsign(x) = x / (1 + |x|)
Softsign(x)=x/(1+∣x∣)
特点:
- 收敛性:Softsign 以
多项式
而不是指数方式
收敛于其渐近线。
Softsign 与 ReLU 激活函数效果相比,仍存在一定的差异。现在仍处于几乎没有人使用的情况。。。
2.2 Threshold (Unit step activation function) 激活函数
Threshold (阈值激活函数) 是一种最简单
的非线性
激活函数,它在神经网络中用于引入非线性性质。这种激活函数在输入大于某个阈值
时输出1,否则输出0。简单来说,它模拟了一个开关
的行为,输入超过阈值时激活(输出1),否则不激活(输出0)。其数学表达式和数学图像分别如下所示:
T
h
r
e
s
h
o
l
d
(
x
)
=
{
1
i
f
x
>
=
t
h
r
e
s
h
o
l
d
0
i
f
x
<
t
h
r
e
s
h
o
l
d
Threshold(x)=\left\{ \begin{matrix} \quad \quad \quad 1 \quad \quad \quad if \quad x >= threshold \\ \quad \quad \quad 0 \quad \quad \quad if \quad x < threshold \quad \end{matrix} \right.
Threshold(x)={1ifx>=threshold0ifx<threshold
其中,Threshold activation function
又名 Unit step activation function
。
优点:
- 简单性: 阈值激活函数非常简单,仅基于阈值对输入进行二进制判定,因此
计算效率高
。 - 稳定性: 在一些特定的应用中,阈值激活函数可能会表现出稳定性,不易受到
梯度爆炸
等问题的影响。
缺点:
- 缺乏表达能力:阈值激活函数非常
限制
了神经网络的表达能力
,它只能输出两种值(0和1),无法适应更复杂
的数据模式。这使得神经网络很难从数据中学习到更高层次的特征表示
。 - 梯度消失:阈值激活函数在大部分输入范围内的
导数
都为0,这导致在反向传播时,梯度会很快消失
,使得网络很难学习。这个问题也在Sigmoid激活函数中存在,因此它们通常不作为主要的激活函数选择。 - 不可导性:阈值激活函数在阈值处是
不可导
的,这使得它无法直接应用于使用梯度下降等基于梯度的优化算法进行训练。这会导致训练过程不稳定
,并可能需要使用一些近似的方法来处理。
阈值激活函数在现代深度学习中不太常用,因为它的非线性表达能力相对有限,且在梯度计算时存在问题,容易导致梯度消失
的情况。
2.3 Sinc激活函数
Sinc激活函数是一种基于Sinc函数
的激活函数,它在一定程度上引入了周期性的非线性性质
。Sinc函数是一个在信号处理和数学领域中常见的函数,表示正弦函数的振幅归一化
后的形式。其数学表达式和数学图像分别如下所示:
S
i
n
c
(
x
)
=
{
sin
(
x
)
/
x
i
f
x
≠
0
1
i
f
x
=
0
Sinc(x)=\left\{ \begin{matrix} \quad \quad \quad \sin(x)/x \quad \quad \quad if \quad x \not= 0\\ \quad \quad \quad \quad 1 \quad \quad \quad \quad \quad if \quad x=0 \end{matrix} \right.
Sinc(x)={sin(x)/xifx=01ifx=0
根据Sinc激活函数的定义可知:当 x 等于零时,Sinc将未定义
。这就是为什么函数定义有一个例外点,其中 x 等于零
。sinc(0) 定义为值 1 作为特异点
。
优点:
- 适用于周期性模式:Sinc激活函数的基础是Sinc函数,它具有
周期性
的性质。因此,在涉及到周期性模式的问题中,Sinc激活函数可能更适用,可以捕捉数据中的周期性特征
。 - 保留了周期性信息:Sinc激活函数不像一些常见的激活函数(如ReLU)那样直接将一部分
输入归零
,因此它可以在一定程度上
保留输入的周期性信息
。
缺点:
- 复杂的计算:Sinc函数的计算
较为复杂
,涉及到除法和三角函数的计算。这可能会导致在神经网络的前向传播过程中增加计算负担
,从而影响模型的训练速度和性能。 - 梯度消失: 类似于其他非线性激活函数,Sinc激活函数也可能面临
梯度消失
的问题。在某些区域,它的导数可能非常小
,导致训练过程变得困难。 - 训练不稳定: Sinc激活函数可能导致训练过程
不稳定
,特别是在深层神经网络中。梯度的不稳定性
和消失
问题可能会影响模型的收敛速度和性能。
在周期性数据中可能
(还未证实)会存在一定的优势,但是不推荐使用。
3. 总结
到此,使用 激活函数总结(七) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的激活函数
也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。