GELU

GELU

Transformer 常用激活函数

亦作、亦称:Gaussian Error Linear Unit

GELU(Gaussian Error Linear Unit,高斯误差线性单元)是一种平滑非线性激活函数,以高斯累积分布概率对输入做软门控,而非像 ReLU 那样硬性截断负值。它是 BERT、GPT 等主流 Transformer 前馈子层的默认激活函数,对模型训练稳定性与表达能力有实质影响。

概述

GELU 由 Dan Hendrycks 和 Kevin Gimpel 于 2016 年提出,核心思路是用概率门控替代硬性截断。

  • 核心公式:GELU(x) = x · Φ(x),其中 Φ 是标准正态分布的累积分布函数(CDF)。
  • 直觉:输入越大,「通过概率」越接近 1;输入越负,越接近静默,过渡平滑而非阶跃。
  • 地位:BERT(2018)和 GPT-2(2019)将其确立为 Transformer FFN 的主流激活函数,后续大量模型沿用。
  • 理论出发点:可被解读为对 Dropout + ReLU 随机组合取期望后的确定性近似。

工作原理

精确计算需调用误差函数(erf),实践中通常使用 tanh 近似以提升效率。

  • 精确版:GELU(x) = x · ½ · [1 + erf(x / √2)],计算代价较高。
  • tanh 近似版:GELU(x) ≈ 0.5x · [1 + tanh(√(2/π) · (x + 0.044715x³))],绝大多数训练场景下与精确版误差可忽略。
  • 平滑导数:整个实数域上导数连续存在,不像 ReLU 在零点不可微,梯度流更稳定。
  • 轻微非单调:在 x ≈ −0.17 附近导数出现小幅负值区域,被认为是其表达能力优于 ReLU 的来源之一。

类型与变体

GELU 催生了一系列门控变体,部分在大型模型中已取代原始形式。

  • GeGLU:GELU 与门控线性单元(GLU)的结合,出自 Noam Shazeer 2020 年论文《GLU Variants Improve Transformers》,在部分基准上超过原始 GELU。
  • SwiGLU:将 Swish 与 GLU 结合,同出自该论文,被 LLaMAPaLM 等模型采用,是目前最流行的 GELU 替代。
  • Swish / SiLU:x · sigmoid(βx),当 β ≈ 1.702 时行为与 GELU 极为接近,同属「自门控」激活函数家族。
  • 快速近似:部分推理框架使用分段线性近似进一步降低计算开销,精度损失极小。

应用场景

GELU 在 Transformer 架构的前馈子层(FFN)中使用最为广泛。

  • 大型语言模型BERT(Google,2018)和 GPT-2/GPT-3(OpenAI)明确将 GELU 列为 FFN 激活函数。
  • 视觉 TransformerViT(Vision Transformer,Google,2020)及多模态模型(CLIP 等)同样采用 GELU。
  • 非 Transformer 场景:可用于卷积网络或全连接网络,但相对于 ReLU 的增益因任务和网络规模而异,并不总是显著。
  • 推理框架:HuggingFace Transformers、PyTorch、JAX 等均内置精确版与近似版 GELU,开箱即用。

与相邻概念的区别

GELU 常与 ReLU、Sigmoid、Swish 放在一起比较,理解差异有助于选型。

  • GELU vs ReLU:ReLU 在 x < 0 时输出恒为 0(硬截断),容易产生「dying ReLU」;GELU 负区输出趋近零但平滑过渡,梯度不会完全消失。
  • GELU vs Sigmoid:Sigmoid 输出压缩至 (0,1),深层网络易饱和;GELU 输出量级与输入相近,不存在饱和梯度问题。
  • GELU vs Swish(SiLU):两者形态极为相似,现代模型中几乎可互换,性能差异通常在噪声范围内;GELU 基于高斯 CDF 理论推导,Swish 更偏经验设计。
  • GELU vs SwiGLU:SwiGLU 是门控版本,FFN 参数量在参数守恒下略有调整,在当前超大规模模型中表现更优,已逐渐成为新标准。

局限与误区

GELU 并非万能,存在几个常被忽视的局限。

  • 计算开销:精确版需调用 erf,近似版需 tanh,均比 ReLU 的简单 max(0,x) 代价高,在端侧推理或对延迟极敏感场景中需评估取舍。
  • 非小网络万能药:在浅层 CNN、小数据集任务上,切换到 GELU 不一定有收益,盲目替换反而可能因超参数未重调而导致性能下降。
  • 常见误区:将 GELU 视为「Transformer 成功的关键」——事实上注意力机制、残差连接、LayerNorm 和数据规模的贡献更为根本,GELU 只是配合这些组件的合理选择之一。
  • 版本混淆:代码库中 gelugelu_new(tanh 近似版)行为有细微差别,复现论文结果时需确认使用的是哪个版本。

发展脉络

从 ReLU 到 GELU 再到 SwiGLU,激活函数的演进与 Transformer 规模扩展紧密相连。

  • 2012ReLU 在 AlexNet 中大规模验证,成为深度学习激活函数主流。
  • 2016:Hendrycks & Gimpel 提出 GELU,从随机正则化视角重新定义激活函数设计。
  • 2018BERT 采用 GELU,使其随 Transformer 预训练范式一同普及。
  • 2019GPT-2 沿用 GELU,进一步巩固其在自回归语言模型中的地位。
  • 2020:Shazeer 提出 SwiGLU / GeGLU 等门控变体,指出门控机制可进一步提升 FFN 表达力。
  • 2023 至今LLaMAMistral 等开源大模型广泛采用 SwiGLU,GELU 的「门控进化版」成为新一代标准。

常见误解

日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。

  • 「Transformer 常用激活函数」
  • 「比 ReLU 更平滑」
  • 「BERT/GPT 里常见」

相关术语

和本术语关联紧密的其他词条,便于串联理解。

🎯 考点练习

含该术语的高频面试题,含标准答案与追问。

延伸阅读

从知识库精选 3 篇文章,帮助深入理解该术语。

  1. 1

    注意力机制与 Transformer 架构

    详解 Self-Attention、Multi-Head Attention 和 Transformer 的编码器-解码器结构

  2. 2

    神经网络基础:从感知机到多层网络

    理解神经元、激活函数、反向传播和梯度消失问题

  3. 3

    大语言模型训练全流程

    从数据采集到预训练、指令微调到人类反馈强化学习的完整管线