- Sigmoid: 函数形式为 \sigma(x) = \frac{1}{1 + e^{-x}}σ(x)=1+e−x1,输出值在0到1之间,常用于二分类问题。
- Tanh (双曲正切): 函数形式为 \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}tanh(x)=ex+e−xex−e−x,输出值在-1到1之间,相比Sigmoid,它在零点附近更陡峭。
- ReLU (Rectified Linear Unit): 函数形式为 \text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x),当输入大于0时输出输入值,否则输出0。它在训练深度神经网络时非常流行,因为它可以缓解梯度消失问题。
- Leaky ReLU: 它是ReLU的变种,当输入小于0时,它不会输出0,而是允许一个小的梯度。函数形式为 \text{LeakyReLU}(x) = \max(0.01x, x)LeakyReLU(x)=max(0.01x,x)。
- Parametric ReLU (PReLU): 它是Leaky ReLU的扩展,其中负斜率是可学习的参数。
- Exponential Linear Unit (ELU): 函数形式为 \text{ELU}(x) = \begin{cases} x & \text{if } x > 0 \\ \alpha(e^x - 1) & \text{if } x \leq 0 \end{cases}ELU(x)={xα(ex−1)if x>0if x≤0,它在负值域内有一个非零的最小值,有助于缓解神经元死亡问题。
- Scaled Exponential Linear Unit (SELU): 它结合了ELU和参数缩放,使得网络在没有显式正则化的情况下也能自我归一化。
- Softmax: 通常用于多分类问题的输出层,将输出转换为概率分布。函数形式为 \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}}Softmax(xi)=∑jexjexi。
- Swish: 由谷歌提出,函数形式为 \text{Swish}(x) = x \cdot \sigma(\beta x)Swish(x)=x⋅σ(βx),其中 \betaβ 通常设置为1。
- Mish: 被认为是Swish的改进版,函数形式为 \text{Mish}(x) = x \cdot \tanh(\ln(1 + e^x))Mish(x)=x⋅tanh(ln(1+ex))。
这些激活函数各有优缺点,选择哪种激活函数通常取决于具体的应用场景和网络结构。