激活函数总结(六):ReLU系列激活函数补充
- 1 引言
- 2 激活函数
- 2.1 RReLU激活函数
- 2.2 CELU激活函数
- 2.3 ReLU6 激活函数
- 3. 总结
1 引言
在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid
、Tanh
、ReLU
、Leaky ReLU
、PReLU
、Swish
、ELU
、SELU
、GELU
、Softmax
、Softplus
、Mish
、Maxout
、HardSigmoid
、HardTanh
、Hardswish
、HardShrink
、SoftShrink
、TanhShrink
)。在这篇文章中,会接着上文提到的众多激活函数继续进行介绍,给大家带来更多不常见的激活函数的介绍。这里放一张激活函数的机理图:
最后,对于文章中没有提及到的激活函数,大家可以通过评论指出,作者会在后续的文章中进行添加补充。
2 激活函数
2.1 RReLU激活函数
论文链接:Empirical Evaluation of Rectified Activations in Convolutional Network
RReLU激活函数是基于Leaky ReLU
的一种扩展形式。与传统的Leaky ReLU不同,RReLU引入了随机性
,允许在训练过程中随机设置泄漏的斜率
。其数学表达式和数学图像分别如下所示:
R
R
e
L
U
(
x
)
=
{
x
i
f
x
>
=
0
a
x
o
t
h
e
r
w
i
s
e
RReLU(x)=\left\{ \begin{matrix} \quad \quad \quad x \quad \quad \quad if \quad x >= 0 \\ \quad \quad \quad ax \quad \quad \quad otherwise \quad \end{matrix} \right.
RReLU(x)={xifx>=0axotherwise
a是一个随机数,服从均匀分布U(lower,upper)
。在pytorch中,nn.RReLU默认参数是(lower=1/8, upper=1/3
)。参数a在训练时随机
,测试时固定
为 (lower + upper) / 2
。
优点:
- 减少过拟合:对于RReLU而言,参数a是随机选择的,这样可以
减少过拟合
带来的风险
缺点:
- 效果不好:相对ReLU而言,RReLU
往往
效果不是很好 - 运算速度慢:RReLU增加了
计算的参数量
,因此运算速度较慢
RReLU虽然在训练时效果表现很差,但是在测试时表现很好。但是,现在仍处于几乎没有人使用的情况。。。
2.2 CELU激活函数
论文链接:https://arxiv.org/abs/1704.07483
CELU 激活函数是 ELU激活函数的变体,与 ELU 不同,CELU 是一个连续可导
的激活函数,旨在在保持ELU的非线性特性的同时
消除其在某些点上不可导
的问题。其数学表达式和数学图像分别如下所示:
C
E
L
U
(
x
)
=
m
a
x
(
0
,
x
)
+
m
i
n
(
0
,
α
∗
(
e
x
p
x
/
α
−
1
)
)
CELU(x)=max(0,x)+min(0,α∗(exp^{x/α}−1))
CELU(x)=max(0,x)+min(0,α∗(expx/α−1))
优点:
- 连续可分:对于ELU激活函数而言,
α
\alpha
α 不等于1时,其相对于其输入
不是连续可微
的;而CELU
对于所有 α \alpha α都是
连续可微的,使整流器更容易推理
,并使 α \alpha α更容易调整
。
缺点:
- 计算复杂度高:负数部分引入了指数函数的计算,增加了
计算的复杂性
。 - 增加了超参数:增加了超参数,用于
调整激活函数在负值区域的斜率
。选择合适的 α \alpha α 值仍然是一个挑战,不同的数据集和任务可能需要不同的参数设置。
实验发现 CELU 具有不错的效果,在许多网络中都有应用。可以作为一种常用激活函数!!!
2.3 ReLU6 激活函数
论文链接:cs.utoronto.ca/~kriz/conv-cifar10-aug2010.pdf
ReLU6 激活函数是 ReLU 激活函数的变种之一。ReLU6 激活函数在负值区域与普通的ReLU相同,而在正值区域
则进行了剪裁
,将正值限制在一个较小的范围内
,通常是[0, 6]
。(这里设置为6,是因为在论文中经过实验,设置为6取得的效果最好)其数学表达式和数学图像分别如下所示:
R
e
L
U
6
(
x
)
=
m
i
n
(
m
a
x
(
x
,
0
)
,
6
)
ReLU6(x) = min(max(x, 0), 6)
ReLU6(x)=min(max(x,0),6)
优点:
- 稀疏性:由于ReLU6的
截断属性
,使得激活函数存在一定的稀疏性
。可以降低模型的计算复杂度
。 - 低精度分辨率:对于一些
低精度的数据
,具有很好的分辨率。例如 float16 无法准确描述出较大数据,因此会导致一定的精度损失
,而使用ReLU6激活函数不会存在这样的问题。
缺点:
- 信息丢失:截断属性可能带来一定的
信息丢失
。 - 超参数选择:对于ReLU6而言,其截断范围也是可以被
选择
的,可以通过对该超参数进行选择来调节效果。
ReLU6激活函数具有一定的效果,在当前诸多领域都有应用,是一个比较常用
的激活函数!!!!
3. 总结
到此,使用 激活函数总结(六) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的激活函数
也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。