探索高斯误差线性单元(GELU)激活函数。了解其平滑的、概率性的非线性如何为Transformer、BERT和现代AI提供动力。
高斯误差线性单元(GELU)是一种复杂的 激活函数,在现代 人工智能(AI) 系统(尤其是基于 Transformer 架构的系统)的性能中发挥着关键作用。与对神经元输入应用严格、确定性阈值的传统函数不同,GELU引入了受 高斯分布 特性启发而产生的概率性。通过根据输入的大小而非简单地进行门控来加权输入,GELU提供了一种更平滑的非线性,有助于 深度学习(DL) 模型的优化。这一独特特性使网络能够更有效地建模复杂数据模式,为大型 基础模型 的成功做出了重大贡献。
在任何 神经网络 的核心,激活函数根据其输入信号决定神经元是否“激活”。像 整流线性单元 (ReLU) 这样的旧函数像开关一样运作,对任何负输入输出零,对正值输出输入本身。虽然效率高,但这种急剧的截止会阻碍训练动态。
GELU 通过高斯分布的累积分布函数对输入进行缩放,从而对此进行了改进。直观地说,这意味着随着输入值的减小,神经元失活的概率增加,但这一过程是逐渐发生的,而非突然中断。这种曲线创建了一个平滑、非单调的函数,并且在所有点上都可微分。这种平滑性有助于更好地 反向传播 梯度,从而有助于缓解 梯度消失问题 等可能阻碍深度网络训练的问题。
GELU提供的更平滑的优化前景使其成为机器学习 (ML)中一些最先进应用的默认选择。
理解GELU通常需要将其与Ultralytics词汇表中其他流行的激活函数区分开来。
使用 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 等优化激活函数)训练模型,并将其高效部署到云端或边缘设备。

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