? ? ? ? SELU (Scaled Exponential Linear Unit) SELU是对ELU激活函数的改进,通过引入自动标准化机制,使得神经网络的隐藏层在训练过程中可以自动地保持输出的均值和方差接近于1。
# 定义 SELU 激活函数
def selu(x, alpha=1.67326, lambda_=1.0507):
return lambda_ * torch.where(x > 0, x, alpha * (torch.exp(x) - 1))
其中, 和 ?是两个常数,通常设置为:
?= 1.0507 和??= 1.67326
自归一化:SELU激活函数引入了自标准化机制,使得神经网络的输出在训练过程中保持均值和方差接近于1。这有助于解决神经网络中的梯度爆炸和梯度消失问题,从而使得深层网络更容易训练。
适用范围: SELU对于输入的取值范围有一定的要求,通常在应用SELU时需要对输入进行归一化。? ? ? ?
激活范围:SELU激活函数在输入为负数时具有指数增长,而在输入为正数时近似于线性。这种非线性特性使得SELU在某些情况下比ReLU等激活函数表现更好。
需要注意的是,SELU 激活函数在某些情况下可能并不适用于所有任务和网络结构。在使用 SELU时,还需要注意初始化参数的设置,因为它对于网络的输出分布有严格的要求。如果不合适地使用SELU,可能会导致网络输出的均值和方差不稳定,从而影响模型的性能。
论文链接:
[1706.02515] Self-Normalizing Neural Networks (arxiv.org)
更多深度学习内容请翻阅本人主页,下列是快速链接:
【激活函数】深度学习中你必须了解的几种激活函数 Sigmoid、Tanh、ReLU、LeakyReLU 和 ELU 激活函数(2024最新整理)-CSDN博客