激活函数大汇总(二十四)(Absolute附代码和详细公式)
更多激活函数见激活函数大汇总列表
一、引言
欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里,激活函数扮演着不可或缺的角色,它们决定着神经元的输出,并且影响着网络的学习能力与表现力。鉴于激活函数的重要性和多样性,我们将通过几篇文章的形式,本篇详细介绍两种激活函数,旨在帮助读者深入了解各种激活函数的特点、应用场景及其对模型性能的影响。
在接下来的文章中,我们将逐一探讨各种激活函数,从经典到最新的研究成果。
限于笔者水平,对于本博客存在的纰漏和错误,欢迎大家留言指正,我将不断更新。(忙完了…)
二、Absolute
Absolute激活函数是一种简单直观的激活函数,它直接对输入取绝对值。这种激活函数虽然不常见于深度学习文献中的标准模型,但其特性和应用可以为某些特定场景下的模型设计提供灵感。
1. 数学定义
Absolute激活函数的数学表达式定义为:
Absolute
(
x
)
=
∣
x
∣
\operatorname{Absolute}(x)=|x|
Absolute(x)=∣x∣
其中,
x
x
x是输入值。
2. 函数特性
- 非负输出:Absolute激活函数的输出总是非负的,因为它是输入值的绝对值。
- 线性:尽管Absolute函数对负输入值进行了处理,但它可以视为两段线性函数。在正数部分,它表现为恒等变换;在负数部分,它通过取反实现线性变换。
- 不具有平移不变性:不同于ReLU和其变体,Absolute函数对正负输入的处理是对称的。
3. 导数
Absolute函数的导数(梯度)为:
d
d
x
Absolute
(
x
)
=
{
1
for
x
>
0
−
1
for
x
<
0
undefined
for
x
=
0
\frac{d}{d x} \operatorname{Absolute}(x)= \begin{cases}1 & \text { for } x>0 \\ -1 & \text { for } x<0 \\ \text { undefined } & \text { for } x=0\end{cases}
dxdAbsolute(x)=⎩
⎨
⎧1−1 undefined for x>0 for x<0 for x=0
在实际应用中,
x
=
0
x=0
x=0时的导数可以特别处理(例如,设置为0或通过其他方法定义),以适应具体的优化算法。
4. 使用场景与局限性
使用场景:
- 特征提取:在需要强调输入特征绝对量级而不关心符号(正负)的任务中,如某些类型的图像处理或信号处理。
- 稀疏性促进:虽然Absolute函数本身不直接导致输出稀疏,但它可以与其他机制结合使用,比如在损失函数中添加正则化项来促进特征的稀疏性。
局限性:
- 梯度消失/爆炸:由于Absolute函数在零点的导数不连续,这可能在训练过程中导致梯度的问题。
- 信息损失:对所有输入取绝对值可能会导致关于输入符号(即正负信息)的损失,这对于某些应用可能是不可接受的。
总体而言,Absolute激活函数提供了一种简单的方法来处理神经网络中的输入值,通过强调输入的绝对量级而不是其符号。然而,其特定的数学性质和潜在的局限性意味着它在深度学习应用中的适用性可能有限,需要根据具体的任务和数据特性仔细考虑。
5.代码实现
import numpy as np
def absolute_activation(x):
"""
实现Absolute激活函数。
参数:
x -- 输入的数值或NumPy数组。
返回:
Absolute激活后的输出。
"""
return np.abs(x)
# 示例输入
x = np.array([-3, -1, 0, 1, 3])
# 应用Absolute激活函数
output = absolute_activation(x)
print("Absolute Activation Output:", output)
解释
这段代码实现了Absolute激活函数,它简单地返回输入数组x
的绝对值。这种激活函数的特点是将所有输入的负值转换为其正值,而正值和零值保持不变。
-
函数定义:
absolute_activation
接受一个输入x
,可以是单个数值或一个NumPy数组。该函数对x
中的每个元素应用绝对值操作。 -
NumPy库的使用:通过调用
np.abs(x)
,利用NumPy库的绝对值函数来实现这一操作。NumPy库针对数组操作进行了优化,使得对于大型数组的处理非常高效。 -
示例输入和输出:示例输入
x = np.array([-3, -1, 0, 1, 3])
包含负数、零和正数。应用Absolute激活函数后,所有的负数被转换为正数,输出为[3 1 0 1 3]
。
三、参考文献
关于Absolute激活函数作为神经网络激活函数的专门文献可能相对较少(比较简单…)。以下类型的资源可以提供有关如何在深度学习模型中有效使用基本数学操作的背景信息和启发:
- https://neat-python.readthedocs.io/en/latest/activation.html