激活函数总结(二十四):激活函数补充
- 1 引言
- 2 激活函数
- 2.1 SquaredReLU激活函数
- 2.2 ModReLU激活函数
- 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
、GLU
、SwiGLU
、GTU
、Bilinear
、ReGLU
、GEGLU
、Softmin
、Softmax2d
、Logsoftmax
、Identity
、LogSigmoid
、Bent Identity
、Absolute
、Bipolar
、Bipolar Sigmoid
、Sinusoid
、Cosine
、Arcsinh
、Arccosh
、Arctanh
、LeCun Tanh
、TanhExp
、Gaussian
、GCU
、ASU
、SQU
、NCU
、DSU
、SSU
、SReLU
、BReLU
、PELU
、Phish
、RBF
、SQ-RBF
、ISRU
、ISRLU
、SQNL
、PLU
、APL
、Inverse Cubic
、Soft Exponential
、ParametricLinear
、Piecewise Linear Unit
、CLL
)。在这篇文章中,会接着上文提到的众多激活函数继续进行介绍,给大家带来更多不常见的激活函数的介绍。这里放一张激活函数的机理图:
2 激活函数
2.1 SquaredReLU激活函数
论文链接:So, David, Wojciech Mańke, Hanxiao Liu, Zihang Dai, Noam Shazeer, and Quoc V. Le. “Searching for Efficient Transformers for Language Modeling.” Advances in Neural Information Processing Systems 34 (2021): 6010-6022.
SquaredReLU(平方线性整流单元)激活函数是一种非线性
激活函数,是对传统 ReLU 激活函数的变体之一。它在输入为负值
时执行类似 ReLU 的截断
操作,并将正值部分取平方
。这种激活函数在一些深度学习模型中用于增加非线性性能
和防止梯度消失
问题。其数学表达式和数学图像分别如下所示:
f
(
x
)
=
{
x
2
,
if
x
≥
0
0
,
if
x
<
0
f(x)=\begin{cases} x^2, & \text{if } x \geq 0 \\ 0, & \text{if } x < 0 \\ \end{cases}
f(x)={x2,0,if x≥0if x<0
优点:
- 增加非线性性: 平方线性整流单元引入了
平方
操作,使得输出在正值区间具有更强
的非线性
性能,有助于模型学习更复杂
的特征。 - 避免梯度消失: 类似于 ReLU,平方线性整流单元在正值区间保持
梯度
不为零,从而有助于防止梯度消失
问题。 - 适用于稀疏输入: 平方线性整流单元对于输入中的
稀疏性较强
的情况可能表现得更好。
缺点:
- 不适用于负值: 与 ReLU 类似,平方线性整流单元在负值区间输出
恒定为零
,这可能导致信息丢失
。 - 可能出现梯度爆炸: 在正值区间,平方线性整流单元的梯度是 2x,在 x
较大
时,可能导致梯度爆炸
问题。 - 不适用于所有任务: 平方线性整流单元的设计主要针对
特定的问题
,可能在某些任务中表现不佳。
总体来说,平方线性整流单元是一种尝试增加非线性性能
和避免梯度消失
问题的激活函数。但是其存在的梯度爆炸导致当前很少使用。。。。
2.2 ModReLU激活函数
论文链接:Arjovsky, Martin, Amar Shah, and Yoshua Bengio. “Unitary evolution recurrent neural networks.” In International conference on machine learning, pp. 1120-1128. PMLR, 2016.
ModReLU(Modified Rectified Linear Unit)是一种激活函数,它是对传统的ReLU
(Rectified Linear Unit)的一种改进和扩展。ReLU是一种常用的激活函数,它在输入大于零时输出与输入相等,在输入小于等于零时输出为零。而ModReLU试图通过在输入小于某个阈值
时引入一个非线性斜率
来增加模型的表达能力
。其数学表达式和数学图像分别如下所示:
f
(
x
)
=
{
(
∣
x
∣
+
b
)
∗
x
∣
x
∣
,
if
∣
x
∣
+
b
≥
0
0
,
if
∣
x
∣
+
b
≤
0
f(x)=\begin{cases} (|x|+b)* \frac{x}{|x|}, & \text{if } |x|+b \geq 0 \\ 0, & \text{if } |x|+b \leq 0 \\ \end{cases}
f(x)={(∣x∣+b)∗∣x∣x,0,if ∣x∣+b≥0if ∣x∣+b≤0
优点:
- 非线性缩放: 在输入小于零时,激活函数通过乘以
x
∣
x
∣
\frac{x}{|x|}
∣x∣x 来引入
非线性
,这使得模型在输入小于零时仍然具有梯度
。这有助于解决传统ReLU在这种情况下可能出现的梯度消失
问题。 - 连续可微性: 这个激活函数在
大部分区域
都是连续可微
的,这对于基于梯度的优化算法(如反向传播)是有利的。 - 对抗异常值: 当输入的绝对值小于 b 时,输出为零。这种行为可以在一定程度上对抗异常值的影响,使模型对异常值更具有鲁棒性。
缺点:
- 额外的超参数: 这个激活函数引入了额外的
超参数
b,而且对于不同的任务和模型,可能需要仔细调整这个参数。这增加了调参的复杂性。 - 不同iable(不可导)点: 尽管在大部分区域内
可导
,但在 ∣x∣+b=0 的点上是不可导
的,这可能影响一些依赖于导数的优化算法或操作。 - 计算成本: 这个激活函数的计算
相对复杂
,包括绝对值
运算和分段
函数。这可能会增加模型的计算成本,尤其在批量处理
时。
总的来说,这个激活函数在一些方面对传统的ReLU进行了改进,但也带来了一些额外的复杂性和计算成本。当前较少使用。。。。
3. 总结
到此,使用 激活函数总结(二十四) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的激活函数
也可以在评论区提出,后续会对其进行添加!!!!
如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。