GELU (Gaussian Error Linear Unit)
探索高斯误差线性单元 (GELU) 激活函数。了解其平滑的概率非线性如何驱动 Transformer、BERT 和现代 AI。
高斯误差线性单元 (GELU) 是一种复杂的激活函数,在现代人工智能 (AI) 系统的性能中发挥着关键作用,特别是那些基于 Transformer 架构的系统。与对神经元输入应用刚性、确定性阈值的传统函数不同,GELU 引入了受高斯分布属性启发的概率特性。通过根据输入的大小而不是简单地对其进行门控来权衡输入,GELU 提供了更平滑的非线性,有助于优化深度学习 (DL) 模型。这一独特的特性使网络能够更有效地对复杂数据模式进行建模,从而对庞大基础模型的成功做出重大贡献。
GELU 的工作原理#
在任何神经网络的核心中,激活函数根据其输入信号决定神经元是否“激活”。诸如修正线性单元 (ReLU) 等较旧的函数就像一个开关,对任何负输入输出零,对正值输出输入本身。虽然效率很高,但这种急剧的截断可能会阻碍训练动态。
GELU 通过用高斯分布的累积分布函数缩放输入来改进这一点。直观地说,这意味着随着输入值的减小,神经元被丢弃的概率会增加,但这种增加是逐渐发生的,而不是突然的。这种曲率产生了一个平滑的、非单调的函数,它在所有点都是可微的。这种平滑性有利于梯度的更好反向传播,从而有助于缓解诸如梯度消失问题等可能会阻碍深度网络训练的问题。
实际应用#
GELU 提供的更平滑的优化环境使其成为机器学习 (ML) 中某些最先进应用的首选。
- **大型语言模型 (LLM):**随着 Google 研究人员引入 BERT (Bidirectional Encoder Representations from Transformers),GELU 开始崭露头角。它现在是GPT 系列和其他生成式文本模型中的标准组件。在文本摘要或情感分析等任务中,GELU 帮助模型捕捉语言表示中刚性激活可能会漏掉的微妙细微差别。
- **Vision Transformers (ViT):**在计算机视觉领域,将 Transformer 架构用于图像分类的模型严重依赖 GELU。通过将图像处理为补丁序列,这些模型使用 GELU 在整个深层中保持丰富的特征信息,从而在诸如 ImageNet 等基准测试中实现高准确率。
与相关术语的比较#
理解 GELU 通常需要将其与Ultralytics 术语表中找到的其他流行激活函数区分开来。
- **GELU 与 ReLU:**ReLU 在计算上更简单并产生稀疏性(确切的零),这可能很高效。然而,零处的“尖角”会减慢收敛速度。GELU 提供了平滑的近似值,通常在复杂任务中产生更高的准确率,尽管计算成本略高。
- **GELU 与 SiLU (Swish):**Sigmoid 线性单元 (SiLU) 在结构上与 GELU 非常相似,并且共享其平滑的、非单调的属性。虽然 GELU 在自然语言处理 (NLP) 中占主导地位,但 SiLU 由于其在边缘硬件上的效率以及在检测任务中的优异性能,经常在像 YOLO26 这样高度优化的目标检测器中受到青睐。
- **GELU 与 Leaky ReLU:**Leaky ReLU 试图通过允许对负输入具有小的、常数的线性斜率来解决标准 ReLU 的“神经元死亡”问题。相比之下,GELU 对于负值是非线性的,提供了一个更复杂且自适应的响应,这通常会带来非常深的网络中更好的表示学习。
实现示例#
使用像 PyTorch 这样的现代深度学习库实现 GELU 非常简单。以下示例演示了如何将该函数应用于输入数据张量。
import torch
import torch.nn as nn
# Initialize the GELU activation function
gelu_activation = nn.GELU()
# Create sample input data including negative and positive values
input_data = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
# Apply GELU to the inputs
output = gelu_activation(input_data)
# Print results to see the smoothing effect on negative values
print(f"Input: {input_data}")
print(f"Output: {output}")对于希望在自己的计算机视觉项目中利用这些高级激活函数的开发人员来说,Ultralytics 平台简化了整个工作流程。它提供了一个统一的界面来标注数据、使用诸如 YOLO26(利用了诸如 SiLU 等优化激活函数)之类的架构训练模型,并将它们高效地部署到云端或边缘设备。






