导读:激活函数是神经网络的"灵魂开关"——它决定了信号能否通过、梯度能否流动、网络能否学习。从 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 个隐藏层。这个时代的主角是 SigmoidTanh,它们都是 S 形曲线,将无界输入"挤压"到有界区间。

在这里插入图片描述

上图:实线为函数值 f(x),虚线为导数 f’(x)。可以清楚看到,两个函数的导数在 |x| > 3 后急剧衰减到接近 0——这就是梯度消失的根源。

Sigmoid(1958)

公式σ(x)=11+e−x\sigma(x) = \dfrac{1}{1 + e^{-x}}σ(x)=1+ex1

它做了什么:把任意实数"压"到 (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.2550.001——底层的权重几乎不更新。如果输入 |x|>5,导数更是趋近 0,梯度直接"死掉"。
  • 非零中心的具体危害:Sigmoid 输出恒为正(均值约 0.5)。这意味着下一层的输入永远是正的,导致权重更新方向呈"Z 字形"震荡——收敛速度比零中心激活函数慢约 2-3 倍(Tanh 的最大导数是 1.0,是 Sigmoid 的 4 倍)。
  • 指数运算的开销:每次前向传播需计算 e−xe^{-x}ex,在 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+exexex

它改进了什么:输出区间变为 (-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=ftct1+ittanh() 中,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.251001060——完全消失。这就是 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>0x0α\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α(ex1)x>0x0α\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.999951+e100.99995,导数 ≈e−10≈0.00005\approx e^{-10} \approx 0.00005e100.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+exx

核心创新非单调性。注意看上图——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)=xtanh(softplus(x))=xtanh(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×4d2.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)xx2(当 x 较大时),确实无上限。但实际训练中有六道防线层层兜底:
    1. RMSNorm 前置归一化:进入 SwiGLU 前输入的 RMS 被强制拉到 ~1 量级,WgxW_g xWgx 不会无限大
    2. Sigmoid 门控 ∈ [0,1]:负值→0,正值≤输入
    3. W_down 降维投影:高维→低维,幅度压缩
    4. 残差连接:梯度直通(+1),不消失
    5. Swish 梯度处处非零:无死神经元
    6. 参数初始化 + Warmup:初始前向传播幅度小,渐进收敛
  • 参数量对比:标准 GELU-FFN 有 2 个权重矩阵(d→4d→dd \to 4d \to dd4dd),SwiGLU 有 3 个(d→2.67d×2→dd \to 2.67d \times 2 \to dd2.67d×2d)。为保持总参数量相当,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)=z3z3+,令 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β(线性区,行为≈SwiGLUxβ(饱和区,软截断到 ±β

β 同时充当"线性区宽度"和"饱和上限"。

具体效果举例

  • 有界性的量化:当 β1=4,β2=25\beta_1=4, \beta_2=25β1=4,β2=25 时,SwiGLU 在 x=10 时输出约 ≈100\approx 100100(无界),SiTU-GLU 输出 ≈4×25=100\approx 4 \times 25 = 1004×25=100 但此后不再增长——总界 ∣f∣≤β1β2=100|f| \leq \beta_1 \beta_2 = 100fβ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.984x。这意味着在小输入区域,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 要解决的核心风险。


属性对比表

函数年份值域平滑零中心有界梯度消失计算量代表模型
Sigmoid1958(0, 1)(max 导数 0.25)早期感知机
Tanh1990(-1, 1)(max 导数 1.0)LSTM/GRU
ReLU2010[0, +∞)仅负区间极低ResNet/CNN
Leaky ReLU2013(-∞, +∞)极低GPT-2
PReLU2015(-∞, +∞)PReLU-ResNet
ELU2015(-α, +∞)GAN 判别器
GELU2016(-0.17, +∞)BERT/GPT/LLaMA
Swish2017(-0.28, +∞)中高EfficientNet
Mish2019(-0.31, +∞)极高YOLOv5-8
GLU2017(-∞, +∞)中高LSTM 门控
SwiGLU2020(-∞, +∞)LLaMA/Qwen
SiTU-GLU2025[-β₁β₂, +β₁β₂]极高实验性

选型建议

五条核心法则

  1. 不要在隐藏层用 Sigmoid/Tanh——最大导数分别仅 0.25 和 1.0,深层网络必死
  2. CNN 隐藏层首选 ReLU(简单高效)或 GELU(平滑略优)
  3. Transformer FFN首选 GELU(经典)或 SwiGLU(现代大模型标配)
  4. 输出层按任务选:二分类→Sigmoid,多分类→Softmax,回归→Identity
  5. 新激活函数的提升通常 <1%——架构设计、数据质量和初始化策略远比激活函数选择更重要

按场景速查

场景推荐理由
二分类输出层Sigmoid天然概率输出 (0,1)
CNN 隐藏层ReLU / GELU计算快,梯度好
Transformer FFNGELU / SwiGLU平滑+门控,现代标准
LSTM 门控Sigmoid + Tanh传统组合,至今有效
目标检测MishYOLOv5+ 验证有效
超大模型 FFNSwiGLU / SiTU-GLU表达力强 / 有界安全

演进规律

Sigmoid → ReLU:解决梯度消失(max 导数从 0.25 提升到 1.0)
ReLU → GELU/Swish:解决死神经元 + 引入平滑性(负区间梯度从 0 变为非零)
GELU → SwiGLU:引入门控机制增强表达力(单路→双路)
SwiGLU → SiTU-GLU:预防超大模型激活值爆炸(无界→有界)

每次演进解决前代遗留问题,但也带来新的复杂度。没有"完美"的激活函数——只有在特定场景下"最合适"的选择。

更多推荐