深圳Yolo 视觉
深圳
立即加入
词汇表

GELU(高斯误差线性单元)

Learn how the Gaussian Error Linear Unit (GELU) improves deep learning. Discover its role in Transformers, BERT, and LLMs to enhance neural network performance.

高斯误差线性单元(GELU)是一种精密的激活函数,在现代人工智能(AI)系统的性能中发挥着关键作用,尤其适用于基于Transformer 系统。与传统函数对神经元输入施加刚性确定性阈值不同,GELU借鉴高斯分布特性引入了概率维度。 通过根据输入数值大小进行加权而非简单门控,GELU提供了更平滑的非线性特性,有助于深度学习(DL)模型的优化。这一独特特性使神经网络能更有效地建模复杂数据模式,为大型基础模型的成功做出了重要贡献。

GELU 如何运作

在任何神经网络的核心,激活函数根据输入信号决定神经元是否"触发"。早期函数如整流线性单元(ReLU)如同开关运作:对负输入输出零值,对正输入则输出输入值本身。尽管高效,这种陡峭的截断特性可能阻碍训练动态。

GELU通过将输入值按高斯分布的累积分布函数进行缩放来改进这一特性。 直观而言,这意味着当输入值降低时,神经元失活的概率随之增加,但 这种变化是渐进而非突变的。这种曲率构成了平滑的非单调函数, 在所有点上均可微分。这种平滑性有助于优化 梯度的反向传播,从而缓解 诸如梯度消失问题等障碍, 这类问题可能导致深度网络训练停滞。

实际应用

GELU提供的更平滑优化环境使其成为机器学习(ML)领域部分最先进应用的默认选择。

与相关术语的比较

要理解GELU,通常需要将其与Ultralytics 中其他常见的激活函数区分开来。

  • GELU 与ReLU 对比:ReLU 在计算上更为简单,且能产生稀疏性(精确的零值),这可能带来效率优势。然而,其在零点处的"尖锐拐点"可能减缓收敛速度。GELU 提供平滑近似,在复杂任务中通常能获得更高精度,尽管计算成本略高。
  • GELU 与SiLU(Swish)对比: Sigmoid 线性单元(SiLU)在结构上与 GELU 极为相似,并具有相同的平滑、非单调特性。 尽管GELU在 自然语言处理(NLP)领域占据主导地位,但SiLU因其在边缘硬件上的高效性及 卓越的检测任务表现,常被用于高度优化的目标检测器(如 YOLO26)中。
  • GELU与泄漏ReLU泄漏ReLU通过为负输入赋予微小恒定线性斜率,试图解决标准ReLU的"神经元死亡"问题相比之下,GELU对负值呈现非线性响应,提供更复杂且自适应的反馈机制,这通常能提升深度网络中的表征学习效果。

实施实例

使用现代深度学习库(如PyTorch)实现GELU非常简单。 PyTorch。以下示例 演示了如何将该函数应用于输入数据tensor 。

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等优化激活函数)的模型训练,并能高效将模型部署至云端或边缘设备。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入