反函数的导数 arcsin arccos arctan求导


网络中的激活函数在网络中扮演着至关重要的角色,它决定了节点如何将输入转化为输出。特别是非线性激活函数,使得网络能够模拟复杂的非线。在大多数网络的训练过程中,采用梯度下降法等优化算法,因此激活函数需要是可微的(或至少是几乎可微的)。某些复杂的激活函数可能会导致梯度消失或的问题,因此网络通常使用一些特定的激活函数,如恒等函数、Sigmoid、ReLU及其变种等。

以下是26种常见激活函数的简要介绍,并附有其图像及一阶导数。图像右侧展示了与网络相关的一些属性。

1. Step函数

Step函数是一种极为理论化的激活函数,模拟了生物元的“开关”特性——要么完全激活,要么完全不激活。由于其导数在大部分区域为零(除了零点外没有定义),因此无法用于网络的训练,因为基于梯度的优化方法无法应用。

2. Identity函数

Identity函数即节点的输入直接作为输出,常用于潜在线性问题的处理,如线性回归。对于带有非线性的任务,单独使用该函数并不理想,但在回归任务的输出层中,它仍然非常有效。

3. ReLU(修正线性单元)

ReLU是网络中最为广泛使用的激活函数。它保留了Step函数的生物学启发,只有当输入大于零时才会激活元,且其导数在正区间非零,因此允许通过梯度下降法进行有效的优化。当输入为负值时,ReLU会导致元失效,成为“死元”,这可能会阻碍训练。

4. Sigmoid

Sigmoid函数的输出范围在0到1之间,广泛应用于逻辑回归中。它将概率引入网络,使得元的激活程度具有一定的概率意义。尽管如此,Sigmoid函数在深度学习中逐渐被Tanh替代,后者在一些分类任务中表现更为出色。

5. Tanh(双曲正切)

Tanh函数是Sigmoid的一个常见替代,它的输出范围在-1到1之间,且具有反对称的性质。Tanh的平滑曲线和对称中心使得它在梯度消失和学习缓慢的问题上有着更好的表现,成为深度学习中的标准激活函数之一。

6. Leaky ReLU

Leaky ReLU是ReLU的变种,它为负输入提供了一个小的负斜率,从而避免了死元的问题。虽然这种改进可以防止梯度为零,但其学习效率通常较低,尤其是在负输入的区域。

7. PReLU(参数化修正线性单元)

PReLU是Leaky ReLU的一种扩展,在这种函数中,负输入的斜率并非固定,而是通过训练数据来学习的。这样,模型能够更灵活地调整每个节点的激活方式,提升了模型的表现。

8. RReLU(随机带的修正线性单元)

RReLU是Leaky ReLU和PReLU的结,它为负输入提供一个随机的斜率,这一斜率在训练过程中每个节点的输入值上都是随机分配的。它可以避免死元问题,并且通过随机化的方式,提升了模型的多样性和学习能力。

9. ELU(指数线性单元)

ELU引入了一个负指数项,使得它在负输入时仍然能返回一个非零值,从而解决了ReLU的死元问题。尽管它的导数收敛较慢,但该函数能够有效提升模型的学习效率。

10. SELU(扩展指数线性单元)

SELU是ELU的一个改进版本,它是自归一化网络(SNN)的基础,保证了零均值和单位方差的输出。这一特性使得SELU在深度网络中,尤其是自归一化网络中,表现优异。

11. SReLU(S型整流线性单元)

SReLU是一个S型激活函数,由三段线性函数构成,训练过程中,模型会学习这三段函数的斜率和连接点。其结构灵活,能够提高网络的表现。

12. HardSigmoid

HardSigmoid是Sigmoid函数的一个近似版本。由于其使用分段线性函数,计算上比Sigmoid更为简便,速度更快。尽管如此,这种近似会带来一些学习效率的损失,特别是在函数导数为零的情况下。

13. HardTanh

HardTanh函数是Tanh函数的一个简化版本。它通过分段线性函数来模拟Tanh的形状,减少了计算的复杂度,从而提升了计算速度。与HardSigmoid类似,它也可能导致学习速率过慢的问题。

14. LeCun Tanh

LeCun Tanh是Tanh函数的一个扩展版本,旨在改善网络的学习效率。它的导数在x=1时达到最大,且具有较为理想的增益值,有助于提升网络的训练性能。

15. ArcTan

ArcTan函数类似于Tanh,但其输出变化较为平缓,学习效率较高。该函数的导数比Tanh收敛得更慢,因此能够提高学习效率,但其计算复杂度也相应增加。

16. Softsign

Softsign函数是Tanh的另一个替代选择,具有类似的反对称性质。由于其曲线较为平缓,学习过程中梯度变化较慢,能够帮助网络更高效地学习。但其导数计算相比Tanh更为复杂。

17. SoftPlus

SoftPlus是ReLU的一个改进版本,它的输出是平滑的,避免了ReLU可能出现的死元问题。尽管SoftPlus的导数是连续的且非零,但它的学习效率相较于ReLU较慢。

18. Signum

Signum函数是一种阶跃激活函数的扩展,其输出范围为[-1,1],是反对称的。虽然它的生物学动机不如Step函数明确,但它的对称性仍然使其成为一种有趣的激活选择。

19. BentIdentity

BentIdentity函数是一种折衷选择,介于Identity和ReLU之间。它能够引入非线,同时避免了ReLU中的死元问题。由于它的导数在任意一侧返回1,可能会面临梯度或消失的问题。

20. Symmetrical Sigmoid

Symmetrical Sigmoid是Tanh的一个变种,它将输入的值减半,形状更为平坦。与Tanh一样,它是反对称的,且具有零中心。这个特性使得它在某些任务中可能比Tanh更具优势。

21. LogLog

LogLog函数是一种以指数为底的复合函数,它能够快速饱和并且输出值范围在[0, 1]之间。这使得LogLog函数有可能替代经典的Sigmoid函数,尤其是在处理饱和性较强的任务时。

22. Gaussian

高斯函数在传统的径向基函数网络(RBFN)中非常常见,尽管它并未成为多层感知机的主流选择。它具有平滑的对称特性,但其一阶导数会迅速趋向零,可能导致梯度消失问题。

23. Absolute

绝对值函数直接返回输入的绝对值。由于它的导数在除零点外的所有点都有定义,且导数的值恒定为1,因此不存在梯度或消失的问题。

24. Sinusoid

Sinusoid函数引入了周期性特性,它的输出值在[-1,1]之间,且导数处处连续。作为一种奇函数,Sinusoid具有对称性,适用于一些需要周期性激活的任务。

25. Cos

Cos函数与Sinusoid相似,但它是偶函数,输出值也在[-1,1]之间,且导数连续。与Sinusoid不同,Cos函数并不以零点对称。

26. Sinc

Sinc函数在信号处理中具有重要地位,作为激活函数时,它的可微性和对称性优势明显。Sinc函数也容易导致梯度消失问题,这在深度网络中可能影响训练效率。