激活函数总结(三):激活函数补充
- 1 引言
- 2 激活函数
- 2.1 Softmax激活函数
- 2.2 Softplus激活函数
- 2.3 Mish激活函数
- 2.4 Maxout激活函数
- 3. 总结
1 引言
在前面的文章中已经介绍了过去大家较为常见的激活函数 (Sigmoid
、Tanh
、ReLU
、Leaky ReLU
、PReLU
、Swish
、ELU
、SELU
、GELU
)。在这篇文章中,会接着上文提到的众多激活函数继续进行介绍,给大家带来更多不常见的激活函数的介绍。这里放一张激活函数的机理图:
最后,对于文章中没有提及到的激活函数,大家可以通过评论指出,作者会在后续的文章中进行添加补充。
2 激活函数
2.1 Softmax激活函数
Softmax函数通常用于多分类问题的输出层。它将每个神经元的原始输出转换为概率分布,确保所有输出的和为1
。这使得Softmax函数在进行多分类任务
时非常有效。
S
o
f
t
m
a
x
(
z
i
)
=
e
x
p
(
z
i
)
/
Σ
j
e
x
p
(
z
j
)
Softmax(z_i) = exp{(z_i)}/ Σ_jexp({z_j})
Softmax(zi)=exp(zi)/Σjexp(zj)
其中,
z
i
z_i
zi 表示向量
z
z
z 中的第
i
i
i 个元素,
e
x
p
exp
exp 表示自然对数的底数,
Σ
Σ
Σ表示求和符号,
j
j
j 遍历1到N,即对所有N个元素进行求和。
当前对于各种多分类任务
都是选用的Softmax激活函数。
2.2 Softplus激活函数
Softplus激活函数
是一种常用的平滑激活函数,它被广泛用于深度神经网络中。它是ReLU激活函数的一种平滑版本
,解决了ReLU的梯度截断问题。Softplus函数将其输入值映射到一个非负的、平滑
的输出范围。Softplus函数的定义和数学图像分别如下所示:
f
(
x
)
=
l
n
(
1
+
e
x
)
f(x) = ln(1 + e^x)
f(x)=ln(1+ex)
Softplus函数的特点
是:
- 平滑性:与ReLU不同,Softplus在
所有点上都是可导的
,没有梯度截断问题。这使得在使用基于梯度的优化算法时更加稳定
。 - 输出范围:Softplus的输出范围是
(0, +∞)
,它总是返回一个非负的值。 - 近似线性:对于较大的输入值,
Softplus函数的输出值近似于输入值
。这使得它在某些情况下可以起到线性激活函数的作用。
与ReLU相比,Softplus函数在输出值上更平滑,避免了ReLU的神经元死亡问题。然而,由于它的输出范围包含0,因此在一些情况下,Softplus可能并不适合作为隐藏层的激活函数,因为它可能导致神经元输出接近于0,从而影响梯度的传播。
当前没有得到普遍使用,Mish激活函数是其升级版本!!!
2.3 Mish激活函数
对激活函数的研究一直没有停止过,ReLU还是统治着深度学习的激活函数
,不过,这种情况有可能会被Mish
改变。Mish是另一个与ReLU和Swish非常相似的激活函数。正如论文所宣称的那样,Mish可以在不同数据集的许多深度网络中胜过它们。公式如下:
y
=
x
∗
t
a
n
h
(
l
n
(
1
+
e
x
)
)
y=x \ * tanh(ln(1+e^x))
y=x ∗tanh(ln(1+ex))
Mish激活函数是一个平滑的曲线,平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化
;在负值的时候并不是完全截断,允许比较小的负梯度流入。实验中,随着层深的增加,ReLU激活函数精度迅速下降,而Mish激活函数在训练稳定性、平均准确率(1%-2.8%)、峰值准确率(1.2% - 3.6%)等方面都有全面的提高
。如下图:
Mish论文: https://arxiv.org/pdf/1908.08681.pdf
当前更多的是用于YOLO目标检测
中。
2.4 Maxout激活函数
Maxout是一种非常灵活的激活函数,由Ian J. Goodfellow等人在2013年的论文《Maxout Networks》中提出。Maxout激活函数在某些情况下可以作为其他激活函数的替代品,并且在一些网络架构中表现出色
。Maxout激活函数的定义和数学图像分别如下所示:
M
a
x
o
u
t
(
x
)
=
m
a
x
(
w
1
∗
x
+
b
1
,
w
2
∗
x
+
b
2
,
.
.
.
,
w
n
∗
x
+
b
n
)
Maxout(x) = max(w1 * x + b1, w2 * x + b2, ... , wn * x + bn)
Maxout(x)=max(w1∗x+b1,w2∗x+b2,...,wn∗x+bn)
其中,
w
1
、
w
2
、
b
1
、
b
2
、
w
n
、
b
n
w1、w2、b1、b2、wn、bn
w1、w2、b1、b2、wn、bn是可学习的参数。根据不同的方式,Maxout可以拟合任意的的凸函数。作者从数学的角度上也证明了这个结论,即只需2个 maxout 节点就可以拟合任意的凸函数了(相减),前提是”隐隐含层”节点的个数可以任意多。
优点:
- 非线性:Maxout引入了非线性的特性,使得神经网络能够学习更复杂的特征和模式。
- 灵活性:Maxout激活函数是一种非常灵活的激活函数,因为它可以适应不同的数据分布和任务,通过学习最优的参数来适配不同的情况。
- 增加网络的表达能力:Maxout允许神经网络在每个神经元处学习多个线性函数,从而增加了网络的表达能力,有助于提高模型的性能。
缺点:
- 参数较多:增加了网络的计算和内存开销。
在处理图像和语音等数据时有所使用,但是使用频率不高!
3. 总结
到此,使用 激活函数总结(三) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的激活函数
也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。