术语表

GELU(高斯误差线性单位)

了解 GELU 激活函数如何增强 GPT-4 等变压器模型,提高梯度流、稳定性和效率。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

GELU(高斯误差线性单元)是现代神经网络,尤其是变压器架构中常用的一种激活函数。由丹-亨德里克斯Dan Hendrycks和凯文-金佩尔(Kevin Gimpel)在论文《高斯误差线性单元(GELUs)》中提出,其目的是结合 dropout、zoneout 和ReLU(整流线性单元)的特性来提高模型性能。ReLU 会急剧截断负值,而 GELU 则不同,它根据输入值的大小而非符号加权,从而提供更平滑的曲线。

GELU 如何工作

GELU 函数根据输入值对输入进行调节,从而有效决定是否 "激活 "神经元。它将输入乘以应用于该输入的标准高斯累积分布函数(CDF)的值。直观地说,这意味着离零较远的输入(包括正输入和负输入)更有可能被保留,而离零较近的输入被清零的几率更高。这种概率方法引入了一种随机正则化形式,类似于剔除,但由输入值本身决定,从而产生了一种非线性函数,可以捕捉数据中更复杂的模式。

GELU 与其他激活功能的比较

与更简单的激活函数相比,GELU 具有更多优势,因此被最先进的模型所采用:

  • ReLU ReLU计算简单,但可能存在 "垂死 ReLU "问题,即神经元对负值输入不活跃,从而可能阻碍学习。GELU 的平滑曲线使梯度更容易流动,尤其是负值,从而有可能缓解这一问题。
  • Leaky ReLU: Leaky ReLU允许负输入有一个小的、非零的梯度,从而解决了垂死 ReLU 问题,但它在负域中保持了简单的线性关系。GELU 提供了一种更复杂的非线性转换。
  • SiLU(Swish): SiLU(西格玛线性单元)是另一种平滑激活函数,其性能通常与 GELU 相似。在 GELU 和 SiLU 之间做出选择取决于具体的架构和数据集,通常通过经验测试或超参数调整来确定。

应用和意义

由于其强大的经验性能,GELU 已成为许多高级深度学习模型的热门选择:

  1. 自然语言处理 (NLP):它被广泛应用于基于变换器的模型,如BERTGPT 模型,为它们在文本生成自然语言理解等任务中取得成功做出了贡献。
  2. 计算机视觉:视觉转换器(ViT)和后续视觉模型中也能找到 GELU。例如,Ultralytics YOLOv9中使用的通用高效层聚合网络(GELAN)等组件就采用了 GELU,以增强特征提取并提高物体检测任务的准确性,详见YOLOv9 论文

该函数能够提供平滑的非线性,并将输入大小纳入激活决策,因此在训练深度网络时非常有效。虽然它的计算量比 ReLU 稍大,但它的性能优势往往能证明在大规模模型中使用它是正确的。 PyTorchTensorFlow.

阅读全部