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

GELU(高斯误差线性单元)

探索高斯误差线性单元(GELU)激活函数。了解其平滑的概率非线性特性如何为Transformers、BERT及现代人工智能提供动力。

高斯误差线性单元(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 社区

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

立即加入