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

GELU(高斯误差线性单元)

探索高斯误差线性单元(GELU)激活函数。了解其平滑的、概率性的非线性如何为Transformer、BERT和现代AI提供动力。

高斯误差线性单元(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 与 Leaky ReLULeaky ReLU试图通过为负输入提供一个小的、恒定的线性斜率来解决标准ReLU的“神经元死亡”问题。相比之下,GELU对负值是非线性的,提供了更复杂和自适应的响应,这通常在非常深的网络中带来更好的表示学习。

实施实例

使用 PyTorch 等现代深度学习库实施 GELU 非常简单。以下示例演示了如何将该函数应用于输入数据的 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 等优化激活函数)训练模型,并将其高效部署到云端或边缘设备。

让我们一起共建AI的未来!

开启您的机器学习未来之旅