这三个概念代表了深度学习中激活函数及前馈网络(FFN)架构的演进,尤其是在 Transformer 和大语言模型(LLM)的发展历程中,它们逐步取代了传统的 ReLU。
我们按照它们的发展脉络来逐一拆解。
1. GELU (Gaussian Error Linear Unit)
在 BERT 和 GPT-2 时代,GELU 几乎成为了 Transformer 模型的标配。
核心思想:
传统的 ReLU 激活函数非常“一刀切”:大于 0 的直接放行,小于 0 的直接置为 0。GELU 的创新在于它结合了 ReLU、Dropout 和 Zoneout 的特性。它不是通过直接的阈值来截断,而是通过高斯分布的累积概率来对输入进行“软门控”(Soft Gating)。
数学公式:
$$\\text{GELU}(x) = x \\Phi(x)$$
其中 $\\Phi(x)$ 是标准正态分布的累积分布函数。因为这个函数计算起来比较复杂,实际应用中通常使用以下近似公式:
$$\\text{GELU}(x) \\approx 0.5x \\left(1 + \\tanh\\left(\\sqrt{\\frac{2}{\\pi}} (x + 0.044715 x^3)\\right)\\right)$$
为什么 GELU 更好?
-
非单调性与微小负值: 在 $x$ 略微小于 0 的区域,GELU 会给出一个微小的负值,而不是像 ReLU 那样直接变成 0。这保留了微弱的负向梯度,有效缓解了“神经元死亡”问题。
-
曲面平滑: 它的导数是连续平滑的,这使得模型在训练时的损失地形(Loss Landscape)更加平滑,有助于梯度下降算法找到更好的局部最优解。
2. Swish (及 SiLU)
Swish 是由 Google Brain 通过神经架构搜索(NAS)发现的一种激活函数,在 EfficientNet 等视觉模型中大放异彩。
数学公式:
$$\\text{Swish}(x) = x \\cdot \\sigma(\\beta x)$$
其中 $\\sigma$ 是 Sigmoid 函数,$\\beta$ 是一个可以固定(通常设为 1)或由模型学习的参数。当 $\\beta = 1$ 时,Swish 也被称为 SiLU (Sigmoid Linear Unit)。
Swish 的特点:
-
自门控(Self-Gating): Swish 将输入 $x$ 与其自身的 Sigmoid 函数值相乘。你可以理解为它在利用输入本身来决定“这个信号有多大比例应该被传递下去”。
-
形态类似 GELU,但计算更简洁: 它的函数图像与 GELU 非常相似(都有下界无上界、平滑、在负半轴非单调有一点“小肚子”)。但 Swish (SiLU) 在某些硬件上的计算效率比计算 tanh 的 GELU 更高。
3. SwiGLU (Swish-Gated Linear Unit)
SwiGLU 不仅是一个激活函数,更是一种网络层的结构设计。它是目前绝大多数顶尖开源大语言模型(如 LLaMA 1/2/3、PaLM、Qwen)中 FFN(前馈神经网络)层的核心标配。
前置概念:GLU(门控线性单元)
传统的 FFN 是这样工作的:把输入 $x$ 乘上一个权重矩阵,过一个激活函数,再乘一个权重矩阵。
而 GLU 的思想是:把输入 $x$ 分别乘上两个不同的权重矩阵,形成两条路径。一条路径过激活函数(作为“门阀”),然后去和另一条路径做逐元素相乘(Element-wise multiplication)。
SwiGLU 的公式:
将 GLU 中的激活函数替换为 Swish(通常是 $\\beta=1$ 的 SiLU),就得到了 SwiGLU:
$$\\text{SwiGLU}(x, W, V) = \\text{Swish}(xW) \\otimes (xV)$$
(注:这里省略了偏置项,$\\otimes$ 表示逐元素相乘,W 和 V 是两个不同的权重矩阵)
为什么 SwiGLU 能统治大模型?
-
极强的表达能力: SwiGLU 引入了额外的权重矩阵(原本的 FFN 是两个矩阵,SwiGLU 是三个),通过门控机制,模型能够更加精细地控制信息的流动与特征的交叉。
-
性能收益大于计算成本: 虽然多了一个矩阵乘法,但研究证明,在保持整体参数量严格对齐(通过缩小隐藏层维度)的前提下,基于 SwiGLU 的网络在困惑度(Perplexity)和收敛速度上显著优于传统的 ReLU 或 GELU FFN。
总结与对比
| 名称 | 性质 | 核心特点 | 典型代表模型 |
| GELU | 激活函数 | 基于正态分布概率门控,平滑非单调 | BERT, GPT-2, GPT-3, ViT |
| Swish (SiLU) | 激活函数 | 自门控,形态似GELU,计算更简洁 | EfficientNet, YOLOv5 |
| SwiGLU | FFN 架构 | 门控线性单元 + Swish,表达能力极强 | LLaMA系列, PaLM, Qwen |




