Ch06 神经网络基础

GELU (Gaussian Error Linear Unit)

概述

GELU(Gaussian Error Linear Unit)是一种平滑的激活函数,由 Dan Hendrycks 和 Kevin Gimpel 于 2016 年提出。GELU 是 ReLU 的平滑近似版本,结合了 ReLU 的线性特性和 Dropout 的正则化思想,通过输入值本身的概率来对输入进行门控,即:输出 = 输入 x 输入值落入标准正态分布的概率。GELU 已成为 Transformer 架构(BERT、GPT 系列)的默认激活函数。

数学定义

GELU 的数学表达式为:

其中 是标准正态分布的累积分布函数(CDF), 是高斯误差函数。

实践中常用的近似公式(tanh 近似):

PyTorch 中还有更快的近似(sigmoid 近似):

核心思想

GELU 的核心思想来自随机正则化视角。传统的 ReLU 以确定性方式对输入进行门控(x > 0 则通过,否则为 0)。GELU 则引入随机性:输入 x 被保留的概率等于 ,即 x 在标准正态分布下被采样的概率。这种设计使得:

  1. 平滑性:GELU 处处可导,避免了 ReLU 在 x=0 处不可导的问题
  2. 非单调性:在负数区域有轻微的非零输出,有助于保持梯度流动
  3. 概率解释:给予每个神经元一个”被激活”的概率,类似 Dropout 的正则化效果

与其他激活函数的对比

特性GELUReLUSwish / SiLULeaky ReLUELU
公式 if else
平滑性处处平滑x=0 处不可导处处平滑x=0 处不可导处处平滑
负数输出有(小负值)无有(小负值)有(线性负值)有(指数衰减)
非单调性是否是否否
计算开销中等低中等低中等
主要应用Transformer/BERT/GPTCNN/ResNetEfficientNetGAN一般网络
提出年份20162010201720152015

为什么 Transformer 选择 GELU

  1. 平滑性带来更好的优化:Transformer 的深层架构对梯度稳定性要求高,GELU 的平滑性有助于稳定训练
  2. 与 LayerNorm 配合良好:GELU 的非线性与 LayerNorm 的归一化形成互补
  3. 经验表现最优:在 NLP 任务中,GELU 相比 ReLU 通常能带来 1-2% 的性能提升
  4. BERT 的示范效应:BERT 使用 GELU 取得巨大成功后,后续模型(GPT-2/3、RoBERTa、T5)纷纷效仿

导数与梯度特性

GELU 的导数表达式为:

其中 是标准正态分布的概率密度函数。导数在 x=0 处约为 0.5,这意味着即使是负输入也能获得一定的梯度,有助于缓解”死亡神经元”问题。

实际使用建议

  • NLP 模型:优先使用 GELU,几乎所有 Transformer 模型都以此为标准
  • CV 模型:GELU 也可用,但 ReLU/Swish 在该领域更常见
  • 推理优化:如部署环境对计算量敏感,可使用 tanh 近似或 sigmoid 近似版本
  • PyTorch 中:nn.GELU() 默认使用精确模式,nn.GELU(approximate='tanh') 使用近似模式

2026 年现状

GELU 仍是 Transformer 架构(包括 LLM)中最主流的激活函数。虽然 SwiGLU 等变体在部分模型中取代了 GELU(如 LLaMA 使用 SwiGLU),但 GELU 在 BERT 系模型和许多视觉 Transformer 中仍广泛使用。

相关笔记

来源

关联11

知识图谱

局部图谱 · 点节点跳转