更新于 2026年8月12日

激活函数#


术语解释#

激活函数(Activation Function) 是深度学习模型中至关重要的组成部分,主要用于对每一层网络输出的线性组合结果进行非线性变换。

在神经网络中,每一层的输出 $z = Wx + b$ 是输入的线性组合。激活函数 $g(\cdot)$ 作用于 $z$,得到该层的最终激活值 $a = g(z)$。 它充当了神经元是否被“激活”的阈值控制单元,模仿生物神经元在达到阈电位时引起离子流动并传递信号的过程。

换句话说,如果没有激活函数函数,那么一个网络无论有多少个线性层,本质上都只等价于一次线性变换。关于这部分内容的详细介绍,可以参见文章「3.1.6 从线性输入到非线性变换」


出现动机#

  • 打破线性限制:如果没有激活函数,多层神经网络在数学上等价于单层线性模型。因为线性的线性组合仍是线性,无法增加模型的复杂度。

  • 引入非线性表达能力:非线性变换使得模型能够拟合复杂的现实规律(如解决逻辑上的异或 XOR 问题)。

  • 深度特征提取:激活函数与多层结构的配合,使得网络能从原始输入中提取出日益抽象且高级的特征表示。


优点缺点#

常见激活函数的优缺点对比。

Sigmoid 函数#

公式:$g(x) = \frac{1}{1 + e^{-x}}$

Sigmoid函数图像
Sigmoid函数图像

优点:连续光滑且处处可导;能将输出映射到 $(0, 1)$ 区间,常用于二分类任务的概率表示。

缺点:梯度消失问题。当输入过大或过小时,函数进入饱和区,梯度趋近于 0,导致参数更新缓慢甚至停止。此外,包含求幂运算,计算开销较大。

Tanh 函数(双曲正切)#

公式:$g(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$。

Tanh函数图像
Tanh函数图像

优点:输出范围为 $(-1, 1)$,具有零中心化特性;相比 Sigmoid,其梯度范围 $(0, 1]$ 更大,训练速度更快。

缺点:在两端依然存在饱和区,容易引起梯度消失。

ReLU 函数(线性修正单元)#

公式:$g(x) = \max(0, x)$

ReLU函数图像
ReLU函数图像

优点:计算效率极高(仅需加法和比较);在 $x > 0$ 时梯度恒为 1,很大程度上缓解了梯度消失问题,显著加速网络收敛。

缺点:“死神经元”现象。在 $x < 0$ 时梯度始终为 0,可能导致部分神经元永远无法被激活更新。

LeakyReLU 函数#

公式:$g(x) = \max(0, x) + \gamma \min(0, x)$。

LeakeyReLU函数图像
LeakeyReLU函数图像

优点:通过在 $x < 0$ 区域保留一个微小的梯度 $\gamma$,解决了 ReLU 神经元“死亡”的问题。

Swish 函数#

公式:$f(x) = x \cdot \text{sigmoid}(\beta x)$。

Swish 和 ReLU 函数图像

优点:具备非单调性(在 $x < 0$ 时先降后升),性能通常略好于 ReLU;$\beta$ 可作为训练参数,让网络根据不同特征图自动调整梯度尺度。

缺点:计算比 ReLU 复杂,包含指数和乘法运算。

更多相关内容可参见「SwiGLU 激活函数原理与 PyTorch 实现:详解为何 LLaMA/DeepSeek 用它取代 ReLU」

SwiGLU(现代大模型标配)#

动机:专门为提升 Transformer 架构中前馈网络(FFN)的性能而构造。

优点:在 LLaMA、DeepSeek 等大模型中表现出极佳的效果,被认为比标准 ReLU 更能提升模型表达能力。

缺点:参数量增加。相比传统 FFN,SwiGLU 结构需要三个权重矩阵而非两个。其有效性在理论上难以解释,甚至被作者调侃为“神的恩赐”。

阅读 --

3.1 线性回归

在本节内容中,我们首先以房价预测为例引入了单变量线性回归以及如何转换模型的求解思路;然后通过梯形面积预测的实例引入了什么是多项式回归,并进一步引出了抽象特征提取的概念;

3.12 激活函数

在本节内容中,我们首先回顾了在深度学习中为什么我们需要进行非线性变换;然后介分别介绍了4种常见激活函数Sigmoid、Tanh、ReLU和LeakyReLU的原理和计算过程。最后详细介绍了各个激活函数的实现过程和使用示例。