# 激活函数


本文介绍 ROM Builder 工具箱中支持的各种激活函数及其数学表达式和特性。

# 1. Sigmoid

Sigmoid 激活函数可以将输入映射到 0 到 1 之间的值,具有平滑的 S 形曲线。它在神经网络中广泛使用,常用于二分类问题和回归问题中。

# 2. Relu

ReLU(Rectified Linear Unit)激活函数,它将负数值映射为零,保留正数值不变。它简单高效,常用于深度神经网络中,可以避免梯度消失问题,并且加速模型收敛。

# 3. Tanh

Tanh 激活函数,它将输入值映射到 -1 到 1 之间的连续区间。Tanh 函数具有 S 形曲线,类似于 Sigmoid 函数,但其输出范围是在 -1 到 1 之间。

# 4. Leaky Relu

Leaky ReLU(Leaky Rectified Linear Unit)激活函数是 ReLU 函数的一种变体。与 ReLU 函数只保留正数值不同,Leaky ReLU 函数在负值区域引入了一个小的斜率,以防止神经元输出为零的问题。

# 5. Selu

跟 ELU 函数相比,SELU 函数是在 ELU 形式基础上额外引入缩放系数的激活函数。其中,λ 和 α 是两个常用参数,通常取 λ ≈ 1.0507、α ≈ 1.6733,用于帮助保持输出的均值和方差稳定。SELU 激活函数在正值区域保持线性增长,在负值区域采用指数形式,并通过将平均输出保持接近 0 和单位方差的方式实现自归一化效果。这使得 SELU 函数能够在深度神经网络中更好地缓解梯度消失和梯度爆炸问题,并有助于提高模型的收敛性和泛化能力。

# 6. Softplus

Softplus 激活函数是一种平滑版的 ReLU 函数,它将输入值 x 作为自然指数函数的参数,通过求解指数函数的对数来实现非线性映射。Softplus 函数的输出值始终大于零,并且具有可导性质,相对于 ReLU 函数可以更加平滑地处理负数区域的梯度。

# 7. Relu6

ReLU6(Rectified Linear Unit 6)激活函数,它是 ReLU 函数的扩展版本。ReLU6 函数在输入值小于 0 时输出 0,在输入值大于 6 时输出 6,而在输入值在 0 到 6 之间时,输出值等于输入值。

# 8. Elu

ELU(Exponential Linear Unit)激活函数,与传统的 ReLU 函数相比,ELU 函数的性能更加稳定,可以提高模型的泛化能力。 ELU 函数在输入值小于 0 时输出指数形式的负值,而在输入值大于等于 0 时保持线性增长。与 ReLU 函数不同的是,ELU 函数的输出值可以为负数,从而更好地处理神经元输出的负值问题。其中,α 是一个可调节的超参数,通常设置为 1。当 α = 1 时,ELU 函数仅在正半轴上的表达与 ReLU 函数相同,负半轴仍保持指数形式。

# 9. Celu

CELU(Continuously Differentiable Exponential Linear Unit)激活函数是 ELU 函数的一个变种。与 ELU 函数相比,CELU 函数在处理负值时具有更好的平滑性和连续可微性。CELU 函数在输入值小于 0 时输出指数形式的负值,并使用一个可调节的超参数 α 来控制曲线形状;当输入值大于等于 0 时,CELU 函数保持线性增长。当 α = 1 时,CELU 函数在正半轴上的表达与 ReLU 函数相同,但负半轴仍不同于 ReLU。

# 10. RRelu

ReLU 函数有很多变种,RReLU 是 Random ReLU 的意思,在 RReLU 函数中,负值的斜率在训练中是随机的,在之后的测试中就变成了固定的了。RReLU 函数的亮点在于,在训练环节中,α 是从一个均匀的分布 U(I, u) 中随机抽取的数值。

# 11. Gelu

高斯误差线性单元,它是一种高性能的神经网络激活函数,因为 GeLU 函数的非线性变化是一种符合预期的随机正则变换方式。GELU 函数通过将输入值映射到一个非线性的范围内来引入非线性变换。

# 12. Hardshrink

Hardshrink 函数是一种简单的激活函数,它通过对输入值进行硬阈值操作来实现非线性变换。它可以将小于指定阈值的值设为 0,保留大于等于阈值的值。

# 13. Softsign

同 Sigmoid 函数有点类似,但是它比 Sigmoid 函数达到渐进线的速度更慢,有效的缓解了梯度消失的问题。

# 14. Softmin

Softmin 激活函数被用于多类别分类问题,通常作为神经网络的输出层的激活函数。与 Softmax 函数不同,Softmin 函数将原始分数转化为一个概率分布,但它的逻辑是选择具有最小值的类别获得较高的概率。

# 15. Softmax

Softmax 激活函数,它可以将一个数值向量归一化为一个概率分布向量,且各个概率之和为 1。Softmax 函数可以用来作为神经网络的最后一层,用于多分类问题的输出。Softmax 层常常和交叉熵损失函数一起结合使用。

# 16. Log Softmax

Log Softmax 激活函数是 Softmax 函数的一种变体,它在进行指数变换和归一化之后再取对数。Log Softmax 函数可以用于多分类问题中的输出层,将神经网络的输出转化为各个类别的对数概率分布。

# 17. Hard Sigmoid

用分段函数近似 Sigmoid 函数,优点是计算速度快。其中,α 是斜率参数,β 是偏移参数。通常情况下,α 取值为 1/6,β 取值为 1/3。

# 18. SiLU

SiLU 激活函数,也被称为 Sigmoid-Weighted Linear Unit(SiLU)或者 Swish 激活函数,是一种通用的非线性激活函数。它结合了 Sigmoid 函数的非线性特性和线性函数的稳定性,具有比其他激活函数更好的性能和优异的效果。

# 19. Mish

Mish 激活函数是 Sigmoid-Weighted Linear Unit(SiLU)和双曲正切函数(Tanh)的综合体,具有平滑、非线性和收敛于线性函数的特点。

# 20. Hard Swish

Hard Swish 激活函数是对 Swish 激活函数的改进,通过引入硬阈值函数来简化计算,并降低模型的计算复杂度。