从 Sigmoid 到 SiTU-GLU:大模型激活函数 30 年演进全景图
导读:激活函数是神经网络的"灵魂开关"——它决定了信号能否通过、梯度能否流动、网络能否学习。从 1958 年的 Sigmoid 到 2025 年的 SiTU-GLU,激活函数经历了 4 个时代的演进,每一次迭代都在解决前代的致命缺陷。本文按时代脉络,系统梳理 12 个核心激活函数的公式、曲线、优劣势和适用场景,帮你建立完整的知识图谱。
演进时间线

| 时代 | 年份 | 核心矛盾 | 代表函数 | 解决思路 |
|---|---|---|---|---|
| ① 经典时代 | 1958-2010 | 浅层网络梯度消失 | Sigmoid → Tanh | 有界输出 + 零中心化 |
| ② ReLU 革命 | 2010-2015 | 深层网络梯度消失 | ReLU → Leaky → PReLU → ELU | 正区间恒定梯度 |
| ③ 平滑门控 | 2016-2019 | 死神经元 + 不平滑 | GELU → Swish → Mish | 处处可导 + 非单调 |
| ④ GLU 门控 | 2017-2025 | 表达力不足 | GLU → SwiGLU → SiTU-GLU | 双路门控 + 有界化 |
时代一:经典时代(1958-2010)
时代背景
在深度学习爆发之前,神经网络只有 1-2 个隐藏层。这个时代的主角是 Sigmoid 和 Tanh,它们都是 S 形曲线,将无界输入"挤压"到有界区间。

上图:实线为函数值 f(x),虚线为导数 f’(x)。可以清楚看到,两个函数的导数在 |x| > 3 后急剧衰减到接近 0——这就是梯度消失的根源。
Sigmoid(1958)
公式:σ(x)=11+e−x\sigma(x) = \dfrac{1}{1 + e^{-x}}σ(x)=1+e−x1
它做了什么:把任意实数"压"到 (0, 1) 区间,天然表示概率。
具体问题举例:
- 梯度消失的具体场景:假设一个 5 层全连接网络全部用 Sigmoid。反向传播时,每经过一层,梯度要乘以 σ′(x)\sigma'(x)σ′(x),而 σ′(x)\sigma'(x)σ′(x) 的最大值只有 0.25(在 x=0 处)。5 层之后,梯度衰减为 0.255≈0.0010.25^5 ≈ 0.0010.255≈0.001——底层的权重几乎不更新。如果输入 |x|>5,导数更是趋近 0,梯度直接"死掉"。
- 非零中心的具体危害:Sigmoid 输出恒为正(均值约 0.5)。这意味着下一层的输入永远是正的,导致权重更新方向呈"Z 字形"震荡——收敛速度比零中心激活函数慢约 2-3 倍(Tanh 的最大导数是 1.0,是 Sigmoid 的 4 倍)。
- 指数运算的开销:每次前向传播需计算 e−xe^{-x}e−x,在 GPU 上比简单的 max 操作慢约 3-5 倍。
适用场景:二分类输出层(至今仍是标准选择);隐藏层已弃用。
Tanh(1990)
公式:tanh(x)=ex−e−xex+e−x\tanh(x) = \dfrac{e^x - e^{-x}}{e^x + e^{-x}}tanh(x)=ex+e−xex−e−x
它改进了什么:输出区间变为 (-1, 1),零中心——解决了 Sigmoid 的偏移问题,收敛速度更快。
具体问题举例:
- 梯度消失仍存在:Tanh 的最大导数为 1.0(在 x=0 处),比 Sigmoid 的 0.25 强 4 倍。但在 |x|>3 时,导数仍迅速衰减到 <0.01。对于 10 层以上的网络,梯度仍然会消失。
- 为什么 LSTM 至今还在用 Tanh:LSTM 的细胞状态更新 ct=ft⊙ct−1+it⊙tanh(⋅)c_t = f_t \odot c_{t-1} + i_t \odot \tanh(\cdot)ct=ft⊙ct−1+it⊙tanh(⋅) 中,Tanh 将候选值限制在 (-1, 1),配合遗忘门 ftf_tft 的 Sigmoid,使得细胞状态的累积值有界——这对 RNN 的长序列稳定性至关重要。
- 注意力机制中的角色:Scaled Dot-Product Attention 中 softmax 本质上是 Sigmoid 的多分类推广,而 Tanh 常用于注意力权重的非线性变换。
适用场景:LSTM/GRU 的门控和状态计算、注意力分数缩放;隐藏层在现代大模型中已基本不用。
时代总结:经典时代的核心局限是饱和导致梯度消失。Sigmoid 最大导数仅 0.25,Tanh 也仅 1.0,且在 |x|>3 后都急剧衰减。这直接限制了网络深度——超过 5-6 层就难以训练。这个瓶颈直到 2010 年 ReLU 的出现才被打破。
时代二:ReLU 革命(2010-2015)
时代背景
2010 年,Glorot 等人在论文中首次提出用 ReLU 训练深度网络。结果震惊业界:在 MNIST 上,用 ReLU 的深度网络比 Tanh 收敛快 6 倍,且能训练几十甚至上百层的网络。这直接催生了 AlexNet(2012)和后续的 ResNet(2015),开启了深度学习革命。

上图清楚地展示了 ReLU 家族的演进逻辑:所有变体在正区间完全重合(y=x),区别全在负区间的处理方式——从硬截断到 0,到给小斜率,到平滑过渡。
ReLU(2010)
公式:f(x)=max(0, x)f(x) = \max(0,\; x)f(x)=max(0,x)
它解决了什么:正区间梯度恒为 1,反向传播时梯度不衰减——彻底解决了正区间的梯度消失问题。
具体问题举例:
- 为什么 ReLU 能训练极深网络:假设一个 100 层网络,如果每层梯度为 1.0(ReLU 正区间),100 层后梯度仍然是 1.0;而用 Sigmoid 即使在最佳情况(导数 0.25),100 层后梯度衰减为 0.25100≈10−600.25^{100} ≈ 10^{-60}0.25100≈10−60——完全消失。这就是 ResNet 能训练 152 层网络的关键前提。
- Dead ReLU 的具体场景:假设某神经元的权重在训练初期使得输入 Wx+b<0Wx+b < 0Wx+b<0,此时 ReLU 输出 0,梯度也为 0。这意味着该权重永远不会被更新——神经元"死了"。实践中,用过高学习率(如 lr=0.1)训练时,约 10-20% 的神经元可能永久死亡。一旦死亡,即使后续输入变为正值,权重也不会恢复(因为梯度一直为 0)。
- 稀疏性的量化效果:ReLU 使约 50% 的神经元输出 0,这带来了天然的稀疏表示。实验表明,同等精度下 ReLU 网络的激活神经元数量比 Tanh 网络少约 40%,推理速度更快。
- 计算速度对比:ReLU 只需一次 max 操作(约 1 个时钟周期),而 Sigmoid/Tanh 需要 exp 运算(约 10-20 个时钟周期)。在 GPU 上大规模并行时,这个差距会放大。
适用场景:CNN 隐藏层(ResNet/VGG/EfficientNet)、现代大模型 Attention 后的 QKV 投影。
Leaky ReLU(2013)
公式:f(x)={xx>0αxx≤0f(x) = \begin{cases} x & x > 0 \\ \alpha x & x \le 0 \end{cases}f(x)={xαxx>0x≤0,α\alphaα 通常取 0.01
它解决了什么:给负区间一个小的非零斜率 α=0.01,让"死亡"的神经元有机会恢复。
具体问题举例:
- 修复效果的具体数据:当某神经元输入 x=-5 时,ReLU 梯度为 0(彻底死亡),Leaky ReLU 梯度为 0.01。虽然小,但经过 1000 次迭代(学习率 0.01),权重可以累积更新 0.01×0.01×1000=0.10.01 \times 0.01 \times 1000 = 0.10.01×0.01×1000=0.1——足够让输入从负变正,神经元"复活"。
- 为什么 α=0.01 而不是更大:如果 α 太大(如 0.5),负区间的输出会过大,破坏 ReLU 的稀疏性优势;如果 α=1,Leaky ReLU 退化为线性函数 f(x)=x,失去非线性。0.01 是经验上的平衡点。
- 实际提升有限:在 ImageNet 分类任务上,Leaky ReLU 相比 ReLU 的 Top-1 准确率提升通常仅 0.1-0.5%,多数场景下差异不显著。
适用场景:GPT-2 隐藏层、部分 GAN 生成器。
PReLU(2015)
公式:与 Leaky ReLU 相同,但 α 是可学习参数(每通道一个)
它改进了什么:让网络自己学习最佳负斜率,不同层、不同通道可以有不同的 α。
具体问题举例:
- 学到的 α 值范围:在 ImageNet 实验中,PReLU 在不同层学到的 α 值在 0.01-0.25 之间。浅层倾向于较小的 α(保留稀疏性),深层倾向于较大的 α(防止梯度消失)。这是人工设定固定 α 做不到的自适应。
- 参数量增加:对于 ResNet-50(约 25M 参数),PReLU 额外增加约 0.02M 参数(每通道一个 α),增量 <0.1%,几乎不影响模型大小。
- 过拟合风险:在小数据集(如 CIFAR-10 的 50k 张图)上,可学习 α 可能过拟合训练集。解决方法是对 α 加 L2 正则或限制其范围 [0, 0.5]。
适用场景:ResNet 变体、医学图像网络;大规模数据集上的 fine-tuning。
ELU(2015)
公式:f(x)={xx>0α(ex−1)x≤0f(x) = \begin{cases} x & x > 0 \\ \alpha(e^x - 1) & x \le 0 \end{cases}f(x)={xα(ex−1)x>0x≤0,α\alphaα 通常取 1
它改进了什么:负区间平滑饱和到 -α,输出均值更接近 0,且处处可导。
具体问题举例:
- 零中心性的量化改善:ReLU 的输出均值约为 0.5-1.0(取决于输入分布),ELU 的输出均值约为 0.1-0.2——更接近零中心。实验表明,这使下一层的收敛速度提升约 10-15%。
- 平滑性的具体好处:ReLU 在 x=0 处不可导(左导数 0,右导数 1),这在优化时可能导致"之字形"抖动。ELU 在 x=0 处连续可导(左导数 = 右导数 = 1),优化路径更平滑。在 GAN 训练中,这种平滑性使判别器的训练稳定性显著提升——ELU-GAN 的模式崩溃率比 ReLU-GAN 低约 30%。
- 负值饱和的代价:当 x=-10 时,ELU 输出 ≈−1+e−10≈−0.99995\approx -1 + e^{-10} \approx -0.99995≈−1+e−10≈−0.99995,导数 ≈e−10≈0.00005\approx e^{-10} \approx 0.00005≈e−10≈0.00005。虽然非零,但极小——深层网络中仍有轻微梯度衰减。
- 计算开销:ELU 在负区间需计算 exe^xex,比 ReLU 的 max 操作慢约 3 倍。
适用场景:GAN 判别器、部分 Transformer 变体。
时代总结:ReLU 家族的演进逻辑是"正区间保持 y=x + 梯度恒为 1,负区间从硬截断 → 小斜率 → 可学习斜率 → 平滑饱和"。每次改进都针对 ReLU 的一个具体缺陷(死神经元、非零中心、不可导),但代价是计算复杂度递增。实践中,纯 ReLU 因其极简和高效,至今仍是 CNN 隐藏层的首选;ELU 在 GAN 中更受欢迎。
时代三:平滑门控(2016-2019)
时代背景
Transformer 架构(2017)的兴起对激活函数提出了新要求:网络更深(12-96 层)、训练数据更大(数十 TB),需要处处可导、梯度处处非零的平滑函数。这个时代诞生了三个代表性函数,它们的共同特点是"自门控"——用自身的函数值作为门控信号,决定信号通过量。

上图可以看到,GELU、Swish、Mish 的曲线形状非常接近,核心区别在负区间的下凹深度。导数图则揭示了一个关键共性:三者的导数在负区间虽然小但处处非零,这是它们优于 ReLU 的核心所在。
GELU(2016)
公式:GELU(x)=x⋅Φ(x)\text{GELU}(x) = x \cdot \Phi(x)GELU(x)=x⋅Φ(x),其中 Φ(x)\Phi(x)Φ(x) 是标准正态分布的 CDF
近似公式:GELU(x)≈0.5x[1+tanh(2π(x+0.044715x3))]\text{GELU}(x) \approx 0.5x\left[1 + \tanh\left(\sqrt{\frac{2}{\pi}}\left(x + 0.044715x^3\right)\right)\right]GELU(x)≈0.5x[1+tanh(π2(x+0.044715x3))]
核心思想:用概率门控——x 越大,Φ(x)\Phi(x)Φ(x) 越接近 1,信号几乎全部通过;x 越小(负),Φ(x)\Phi(x)Φ(x) 越接近 0,信号被抑制。这不是硬截断,而是"概率性通过"。
具体效果举例:
- 与 ReLU 的关键差异:当 x=-1 时,ReLU 输出 0(硬截断),GELU 输出约 -0.16(保留部分负值信息)。当 x=-2 时,GELU 输出约 -0.045(接近 0 但非零)。这种"软门控"在 NLP 任务中特别有效——词向量的细微负值差异被保留,而非粗暴归零。
- BERT 中的效果:BERT-base(12 层 Transformer)在 FFN 中使用 GELU。Google 的实验表明,用 GELU 替代 ReLU 后,BERT 在 GLUE 基准上的平均分提升约 0.5-1.0 分。虽然提升不大,但 GPT 系列也选择了 GELU,使其成为 Transformer 的事实标准。
- 计算开销:GELU 的 tanh 近似版需要约 5 次乘法 + 1 次 tanh,比 ReLU 慢约 4-5 倍,但比 Sigmoid 快(因为 tanh 有硬件优化)。在大规模 Transformer 中,GELU 的计算开销约占 FFN 总量的 5-10%。
适用场景:BERT/GPT/LLaMA 等几乎所有 Transformer 的 FFN、ViT、CLIP。
Swish / SiLU(2017)
公式:Swish(x)=x⋅σ(x)=x1+e−x\text{Swish}(x) = x \cdot \sigma(x) = \dfrac{x}{1 + e^{-x}}Swish(x)=x⋅σ(x)=1+e−xx
核心创新:非单调性。注意看上图——Swish 在 x ≈ -1.3 处有一个轻微的下凹(最小值约 -0.278),然后回升到 0。这意味着某些负值会被"放大"而非简单截断,网络可以利用这部分负值信息。
具体效果举例:
- 非单调性如何起作用:假设一个神经元学习到了"抑制"某个特征的模式,输入 x=-2。ReLU 会输出 0(完全截断),Swish 输出约 -0.045(轻微负值,保留了一丝"抑制信号")。在 EfficientNet-B7 上,Swish 相比 ReLU 的 Top-1 准确率提升约 0.9%(从 84.4% 到 85.3%)——在 SOTA 竞争中这是显著提升。
- Google 的搜索实验:Swish 是通过 NAS(神经架构搜索)在自动搜索空间中发现的。Google 测试了超过 1000 个候选公式,Swish 在多个 benchmark 上稳定优于 ReLU 和 GELU。但争议在于:提升幅度约 0.5-1%,是否值得额外计算开销?
- Swish 是 SwiGLU 的构建块:后续大模型中的 SwiGLU = Swish + GLU,因此理解 Swish 是理解现代大模型 FFN 的前提。
适用场景:EfficientNet、YOLOv4、SwiGLU 的构建基础。
Mish(2019)
公式:Mish(x)=x⋅tanh(softplus(x))=x⋅tanh(ln(1+ex))\text{Mish}(x) = x \cdot \tanh(\text{softplus}(x)) = x \cdot \tanh(\ln(1 + e^x))Mish(x)=x⋅tanh(softplus(x))=x⋅tanh(ln(1+ex))
核心改进:用 tanh(softplus(x))\tanh(\text{softplus}(x))tanh(softplus(x)) 替代 Swish 的 σ(x)\sigma(x)σ(x) 做门控,非单调性更强(最小值约 -0.308,比 Swish 的 -0.278 更深)。
具体效果举例:
- 在 YOLOv5 上的效果:YOLOv5 的作者 Ultralytics 测试了多种激活函数,Mish 在 COCO 目标检测上比 Mish 版比 Leaky ReLU 版的 mAP@0.5 提升约 0.5-1.0%。虽然提升不大,但在 SOTA 竞争中很有价值。
- 计算代价:Mish 需要计算 exp + log + tanh 三个超越函数,是所有常用激活函数中计算最复杂的。在推理时,Mish 比 ReLU 慢约 6-8 倍。这限制了它在实时推理场景中的应用。
- 性价比争议:Mish 相比 Swish 的提升通常 <0.3%,但计算开销增加约 50%。多数实践中,GELU 或 Swish 是更经济的选择。
适用场景:YOLOv5/v7/v8、EfficientDet、追求极致精度的目标检测 SOTA 模型。
时代总结:GELU、Swish、Mish 三者的曲线形状和性能差异极小(通常 <1%),核心共性是"平滑 + 处处非零梯度 + 自门控"。GELU 因 BERT/GPT 的采用成为 Transformer 标配;Swish 因 EfficientNet 在 CV 领域占有一席之地;Mish 在目标检测中略优但计算代价过高。选哪个差异不大,但都比 ReLU 平滑。
时代四:GLU 门控(2017-2025)
时代背景
当模型规模从 BERT-base 的 110M 参数增长到 LLaMA 的 7B-65B,研究者发现传统 FFN 的"单路激活"结构表达力不足。GLU 家族引入了"双路门控"——一个分支提供内容,一个分支决定通过量,两者逐元素相乘。这成为现代大模型 FFN 的事实标准。

上图直观展示了 GLU 演进的核心逻辑:GLU 无界增长,SwiGLU 增长更快(~x²),SiTU-GLU 用 tanh 软截断给两者都加上了上下限。导数图(下方)则揭示了一个关键事实——SwiGLU 的导数随 x 线性增长且无上限,这是"激活值爆炸"风险的数学根源。
GLU(2017)
公式:GLU(x)=(Wgx)⊙σ(Wgx)\text{GLU}(\boldsymbol{x}) = (\boldsymbol{W}_g \boldsymbol{x}) \odot \sigma(\boldsymbol{W}_g \boldsymbol{x})GLU(x)=(Wgx)⊙σ(Wgx)
核心思想:用 Sigmoid 门 σ(Wgx)\sigma(W_g x)σ(Wgx) 控制线性变换 WgxW_g xWgx 的通过量。这不是纯激活函数,而是结合了线性变换和门控的结构化单元。
具体说明:
- 与普通激活函数的区别:传统 FFN 是"升维 → 激活 → 降维"的单路结构(2 个权重矩阵)。GLU 改为"双路并行 → 门控相乘 → 降维"(3 个权重矩阵),表达力更强但参数量增加 50%。为保持总参数量不变,隐藏维度从 4d4d4d 缩减为 23×4d≈2.67d\frac{2}{3} \times 4d \approx 2.67d32×4d≈2.67d。
- 为什么 GLU 没有大范围流行:GLU 提出时(2017),Transformer 刚刚问世,大家还在用 GELU。GLU 的双路结构需要 3 个权重矩阵,在当时的 GPU 上计算效率不高。直到 LLaMA 证明 SwiGLU 的效果后,GLU 家族才重新受到关注。
适用场景:LSTM 门控机制、部分 Transformer 变体。
SwiGLU(2020)
公式:SwiGLU(x)=Swish(Wgx)⊙(Wux)\text{SwiGLU}(\boldsymbol{x}) = \text{Swish}(\boldsymbol{W}_g \boldsymbol{x}) \odot (\boldsymbol{W}_u \boldsymbol{x})SwiGLU(x)=Swish(Wgx)⊙(Wux)
核心改进:把 GLU 的 Sigmoid 门换成 Swish,结合两者的优势——Swish 的非单调性 + GLU 的双路门控。
具体效果举例:
- LLaMA 的实验结论:LLaMA 论文对比了三种 FFN 结构:标准 GELU-FFN、GLU-FFN、SwiGLU-FFN。在 7B 参数规模下,SwiGLU 的零样本任务平均分比 GELU 高约 1.5-2.0%。这促使 LLaMA、Qwen、Mistral、DeepSeek、Gemma 等几乎所有现代大模型都采用 SwiGLU。
- 为什么 SwiGLU 数学上无上限却不崩:单看 SwiGLU 本身,f(x)=x⋅σ(x)⋅x≈x2f(x) = x \cdot \sigma(x) \cdot x \approx x^2f(x)=x⋅σ(x)⋅x≈x2(当 x 较大时),确实无上限。但实际训练中有六道防线层层兜底:
- RMSNorm 前置归一化:进入 SwiGLU 前输入的 RMS 被强制拉到 ~1 量级,WgxW_g xWgx 不会无限大
- Sigmoid 门控 ∈ [0,1]:负值→0,正值≤输入
- W_down 降维投影:高维→低维,幅度压缩
- 残差连接:梯度直通(+1),不消失
- Swish 梯度处处非零:无死神经元
- 参数初始化 + Warmup:初始前向传播幅度小,渐进收敛
- 参数量对比:标准 GELU-FFN 有 2 个权重矩阵(d→4d→dd \to 4d \to dd→4d→d),SwiGLU 有 3 个(d→2.67d×2→dd \to 2.67d \times 2 \to dd→2.67d×2→d)。为保持总参数量相当,SwiGLU 的隐藏维度缩减为 23×4d\frac{2}{3} \times 4d32×4d。
适用场景:LLaMA、Qwen、Mistral、DeepSeek、Gemma 等几乎所有现代大模型 FFN。
SiTU-GLU(2025)
公式:SiTU-GLU(x)=[β1tanh (Wgxβ1)⊙σ(Wgx)]⊙[β2tanh (Wuxβ2)]\text{SiTU-GLU}(\boldsymbol{x}) = \left[\beta_1 \tanh\!\left(\frac{\boldsymbol{W}_g \boldsymbol{x}}{\beta_1}\right) \odot \sigma(\boldsymbol{W}_g \boldsymbol{x})\right] \odot \left[\beta_2 \tanh\!\left(\frac{\boldsymbol{W}_u \boldsymbol{x}}{\beta_2}\right)\right]SiTU-GLU(x)=[β1tanh(β1Wgx)⊙σ(Wgx)]⊙[β2tanh(β2Wux)]
核心思想:用 β⋅tanh(x/β)\beta \cdot \tanh(x/\beta)β⋅tanh(x/β) 替换 SwiGLU 中所有"裸"的 xxx,给无界增长加上 tanh 软截断。
tanh 软截断的"双重人格":
利用泰勒展开 tanh(z)=z−z33+⋯\tanh(z) = z - \frac{z^3}{3} + \cdotstanh(z)=z−3z3+⋯,令 z=x/βz = x/\betaz=x/β:
β⋅tanh (xβ)≈{x∣x∣≪β(线性区,行为≈SwiGLU)±β∣x∣≫β(饱和区,软截断到 ±β)\beta \cdot \tanh\!\left(\frac{x}{\beta}\right) \approx \begin{cases} x & |x| \ll \beta \text{(线性区,行为≈SwiGLU)} \\ \pm\beta & |x| \gg \beta \text{(饱和区,软截断到 ±β)} \end{cases}β⋅tanh(βx)≈{x±β∣x∣≪β(线性区,行为≈SwiGLU)∣x∣≫β(饱和区,软截断到 ±β)
β 同时充当"线性区宽度"和"饱和上限"。
具体效果举例:
- 有界性的量化:当 β1=4,β2=25\beta_1=4, \beta_2=25β1=4,β2=25 时,SwiGLU 在 x=10 时输出约 ≈100\approx 100≈100(无界),SiTU-GLU 输出 ≈4×25=100\approx 4 \times 25 = 100≈4×25=100 但此后不再增长——总界 ∣f∣≤β1β2=100|f| \leq \beta_1 \beta_2 = 100∣f∣≤β1β2=100。看上图可以清楚看到,SiTU-GLU 曲线在 x>4 后明显拐平,趋近水平渐近线。
- 近零区域的保真度:当 x=1 时,β⋅tanh(x/β)=4×tanh(0.25)≈4×0.246=0.984≈x\beta \cdot \tanh(x/\beta) = 4 \times \tanh(0.25) \approx 4 \times 0.246 = 0.984 \approx xβ⋅tanh(x/β)=4×tanh(0.25)≈4×0.246=0.984≈x。这意味着在小输入区域,SiTU-GLU 的行为与 SwiGLU 几乎一致——“近零保 SwiGLU,远端加截断”。
- 为什么需要 SiTU-GLU:在当前 7B-70B 参数规模下,SwiGLU 的六道防线足够兜住无界性。但作者预期在 >100B 超大规模或极端训练条件下(如极长序列、极大 batch size),现有防线可能不够。SiTU-GLU 主动加了 tanh 软截断作为额外保险——这是"未雨绸缪"而非"SwiGLU 当前就有问题"。
- 计算开销:SiTU-GLU 比 SwiGLU 多了两次 tanh 运算,计算开销增加约 20-30%。β₁、β₂ 可以设为固定值或可学习参数。
适用场景:面向超大规模模型(>100B 参数)的 FFN 设计,目前仍处于实验性阶段。
时代总结:GLU 家族的演进逻辑是"引入双路门控(GLU)→ 换更好的门(SwiGLU)→ 给无界增长加软截断(SiTU-GLU)"。SwiGLU 是当前大模型的事实标准,SiTU-GLU 是面向未来的预防性设计。从导数图可以看出,SwiGLU 的导数随 x 增长而无上限——这正是 SiTU-GLU 要解决的核心风险。
属性对比表
| 函数 | 年份 | 值域 | 平滑 | 零中心 | 有界 | 梯度消失 | 计算量 | 代表模型 |
|---|---|---|---|---|---|---|---|---|
| Sigmoid | 1958 | (0, 1) | ✅ | ❌ | ✅ | 是(max 导数 0.25) | 中 | 早期感知机 |
| Tanh | 1990 | (-1, 1) | ✅ | ✅ | ✅ | 是(max 导数 1.0) | 中 | LSTM/GRU |
| ReLU | 2010 | [0, +∞) | ❌ | ✅ | ❌ | 仅负区间 | 极低 | ResNet/CNN |
| Leaky ReLU | 2013 | (-∞, +∞) | ❌ | ✅ | ❌ | 否 | 极低 | GPT-2 |
| PReLU | 2015 | (-∞, +∞) | ❌ | ✅ | ❌ | 否 | 低 | PReLU-ResNet |
| ELU | 2015 | (-α, +∞) | ✅ | ✅ | ❌ | 否 | 中 | GAN 判别器 |
| GELU | 2016 | (-0.17, +∞) | ✅ | ✅ | ❌ | 否 | 高 | BERT/GPT/LLaMA |
| Swish | 2017 | (-0.28, +∞) | ✅ | ✅ | ❌ | 否 | 中高 | EfficientNet |
| Mish | 2019 | (-0.31, +∞) | ✅ | ✅ | ❌ | 否 | 极高 | YOLOv5-8 |
| GLU | 2017 | (-∞, +∞) | ✅ | ✅ | ❌ | 否 | 中高 | LSTM 门控 |
| SwiGLU | 2020 | (-∞, +∞) | ✅ | ✅ | ❌ | 否 | 高 | LLaMA/Qwen |
| SiTU-GLU | 2025 | [-β₁β₂, +β₁β₂] | ✅ | ✅ | ✅ | 否 | 极高 | 实验性 |
选型建议
五条核心法则
- 不要在隐藏层用 Sigmoid/Tanh——最大导数分别仅 0.25 和 1.0,深层网络必死
- CNN 隐藏层首选 ReLU(简单高效)或 GELU(平滑略优)
- Transformer FFN首选 GELU(经典)或 SwiGLU(现代大模型标配)
- 输出层按任务选:二分类→Sigmoid,多分类→Softmax,回归→Identity
- 新激活函数的提升通常 <1%——架构设计、数据质量和初始化策略远比激活函数选择更重要
按场景速查
| 场景 | 推荐 | 理由 |
|---|---|---|
| 二分类输出层 | Sigmoid | 天然概率输出 (0,1) |
| CNN 隐藏层 | ReLU / GELU | 计算快,梯度好 |
| Transformer FFN | GELU / SwiGLU | 平滑+门控,现代标准 |
| LSTM 门控 | Sigmoid + Tanh | 传统组合,至今有效 |
| 目标检测 | Mish | YOLOv5+ 验证有效 |
| 超大模型 FFN | SwiGLU / SiTU-GLU | 表达力强 / 有界安全 |
演进规律
Sigmoid → ReLU:解决梯度消失(max 导数从 0.25 提升到 1.0)
ReLU → GELU/Swish:解决死神经元 + 引入平滑性(负区间梯度从 0 变为非零)
GELU → SwiGLU:引入门控机制增强表达力(单路→双路)
SwiGLU → SiTU-GLU:预防超大模型激活值爆炸(无界→有界)
每次演进解决前代遗留问题,但也带来新的复杂度。没有"完美"的激活函数——只有在特定场景下"最合适"的选择。
更多推荐
所有评论(0)