超越ReLU却鲜为人知,3年后被挖掘:BERT、GPT-2等都在用的激活函数

SwiGLU激活函数 SwiGLU激活函数已经成为LLM的标配了。 阅读详情

机器之心报道

机器之心编辑部

至少在NLP领域里,GELU已经成为了众多业内最佳模型的选择。

作为决定神经网络是否传递信息的「开关」,激活函数对于神经网络而言至关重要。不过今天被人们普遍采用的 ReLU 真的是最高效的方法吗?最近在社交网络上,人们找到了一个看来更强大的激活函数:GELU,这种方法早在 2016 年即被人提出,然而其论文迄今为止在 Google Scholar 上的被引用次数却只有 34 次。

其实,GELU 已经被很多目前最为领先的模型所采用。据不完全统计,BERT、RoBERTa、ALBERT 等目前业内顶尖的 NLP 模型都使用了这种激活函数。另外,在 OpenAI 声名远播的无监督预训练模型 GPT-2 中,研究人员在所有编码器模块中都使用了 GELU 激活函数。

GELU 论文的作者来自 UC Berkeley 和丰田工业大学芝加哥分校:

论文链接:https://arxiv.org/pdf/1606.08415.pdf

「现任」最流行的激活函数 ReLU

在讲述 GELU 之前,让我们先回顾一下目前最为流行的线性整流函数(Rectified Linear Unit, ReLU),它又称修正线性单元。RELU 是多伦多大学 Vinod Nair 与图灵奖获得者 Geoffrey Hinton 等人的研究,其研究被 ICML 2010 大会接收。

RELU 是人工神经网络中最常用的激活函数(activation function),通常指代以「斜坡」函数及其变种为代表的非线性函数族。这个函数族比较常见的有 ReLU 以及 Leaky ReLU。

通常意义下,线性整流函数指代数学中的斜坡函数,即:

函数图像如下:

而在神经网络中,线性整流作为神经元的激活函数,定义了该神经元在线性变换之后的非线性输出结果。ReLU 可以对抗梯度爆炸/消失问题,相对而言计算效率也很高。因为在 2012 年被著名的计算机视觉模型 AlexNet 应用,ReLU 变得流行开来,目前它被普遍认为是效果最好的激活函数。

激活函数发展史

早期人工神经元使用二元阈值单元(Hopfield, 1982; McCulloch & Pitts, 1943)。这些困难的二元决策通过 Sigmoid 激活函数进行平滑化,从而具有非常快的解码速度,并可以利用反向传播进行训练。但是,随着网络深度的不断增加,利用 Sigmoid 激活函数来训练被证实不如非平滑、低概率性的 ReLU 有效(Nair & Hinton, 2010),因为 ReLU 基于输入信号做出门控决策。

尽管 ReLU 缺少统计学意义上的支持,但依然是一种非常有竞争力的工程解决方案,其收敛速度和效果好于 Sigmoid 激活函数。得益于 ReLU 的成功,近来有一个它的改进版——ELU 函数。这种函数可以让类似 ReLU 的非线性函数能够输出负值并提升训练速度。总之,对于激活函数的选择也是神经网络架构设计中重要的一部分。

深度非线性分类器可以和数据拟合地很好,使得设计者需要面对随机正则化(如在隐层中加入噪声)或者采用 dropout 机制。这两个选择依然是和激活函数割裂的。一些随机正则化可以让网络表现得像是很多个网络的组合,并可以提升精确度。

因此,非线性和 dropout 共同决定了神经元的输出,但这两种创新依然存在区别。此外,非线性和 dropout 彼此也不将对方包含在内,因为流行的随机正则化在执行时与输入无关,并且非线性也获得此类正则化的辅助。

在本文中,研究者提出了一种新的非线性激活函数,名为高斯误差线性单元(Gaussian Error Linear Unit,GELU)。GELU 与随机正则化有关,因为它是自适应 Dropout 的修正预期(Ba & Frey, 2013)。这表明神经元输出的概率性更高。研究者发现,在计算机视觉、自然语言处理和自动语音识别等任务上,使用 GELU 激活函数的模型性能与使用 ReLU 或 ELU 的模型相当或超越了它们。

GELU 激活函数,来点数学

研究者表明,受到 Dropout、ReLU 等机制的影响,它们都希望将「不重要」的激活信息规整为零。我们可以理解为,对于输入的值,我们根据它的情况乘上 1 或 0。更「数学」一点的描述是,对于每一个输入 x,其服从于标准正态分布 N(0, 1),它会乘上一个伯努利分布 Bernoulli(Φ(x)),其中Φ(x) = P(X ≤ x)。

随着 x 的降低,它被归零的概率会升高。对于 ReLU 来说,这个界限就是 0,输入少于零就会被归零。这一类激活函数,不仅保留了概率性,同时也保留了对输入的依赖性。

好了,现在我们可以看看 GELU 到底长什么样子了。我们经常希望神经网络具有确定性决策,这种想法催生了 GELU 激活函数的诞生。这种函数的非线性希望对输入 x 上的随机正则化项做一个转换,听着比较费劲,具体来说可以表示为:Φ(x) × Ix + (1 − Φ(x)) × 0x = xΦ(x)。

我们可以理解为,对于一部分Φ(x),它直接乘以输入 x,而对于另一部分 (1 − Φ(x)),它们需要归零。不太严格地说,上面这个表达式可以按当前输入 x 比其它输入大多少来缩放 x。

因为高斯概率分布函数通常根据损失函数计算,因此研究者定义高斯误差线性单元(GELU)为:


上面这个函数是无法直接计算的,因此可以通过另外的方法来逼近这样的激活函数,研究者得出来的表达式为:

虽然研究者表示高斯概率分布函数的均值与方差都可以设置为可训练,但他们简单地采用均值为 0 方差为 1。看到这样的表达式,让人想到了谷歌 2017 年提出来的 Swish 激活函数,它的表达式可以简单写为:f(x) = x · sigmoid(x)。

 GELU 激活函数的图像。

在 Quoc V. Le 等人研究的成果中,他们将 Swish 激活函数定义为 x · σ(βx),其中 σ() 是标准的 sigmoid 函数,β可以是常数,也可以是可训练的参数。这样的激活函数是「被搜索」出来的,研究者在一系列函数族中做自动搜索,并表示 Swish 激活函数的效果最好。

通过搜索查找到的激活函数,它们效果都还不错,选自 arXiv: 1710.05941。

不服跑分:GELU vs ReLU

研究者对 GELU 和 ReLU、ELU 三个激活函数进行了性能上的比较。他们选择了以下任务:

  • MNIST 图片分类(10 类,6 万张训练图片和 1 万张测试图片);

  • TIMIT 语音识别(3696 个训练样本、1152 个验证样本和 192 个测试样本);

  • CIFAR-10/100 分类(10/100 个类,5 万的训练样本和 1 万的测试样本)。

MNIST 图片分类任务

研究者在一个全连接网络中测试了 MNIST 分类任务,其中 GELU 的参数是μ = 0、σ = 1。ELU 则是α = 1。每个网络都有 8 个层、128 个神经元。

图 2 左:无 dropout 模型,图右:模型设置 dropout 为 0.5。

图 3:MNIST 鲁棒性结果。

TIMIT 语音识别任务

研究者需要解决的另一项挑战是利用 TIMIT 数据集进行音素识别(phone recognition),该数据集包含 680 名说话者在无声环境中的录音。该系统是一个包含 2048 个神经元的 5 层宽分类器(Mohamed et al., 2012),包含 39 个输出语音标签。

图 5:TIMIT 语音识别变化曲线图。

CIFAR-10/100 分类任务

研究者利用 5000 个验证样本来对初始学习率 {10^−3,10^−4,10^−5} 进行微调,然后基于交叉验证的学习率再次在整个训练集上进行训练。他们通过 Adam 对 200 个 epoch 优化,并在第 100 个 epoch 上学习率衰减为零。如下图 6 所示,每条曲线是三次运行结果取中间值得出的。

图 6:CIFAR-10 数据集上的结果。

不服跑分:GELU vs Swish

因为表达式差不多,一个是固定系数 1.702,另一个是可变系数 β,Swish 和 GELU 的性质与效果非常类似。在 Swish 论文(SEARCHING FOR ACTIVATION FUNCTIONS)中,研究者对比了不同激活函数的效果,我们可以看到在视觉或语言任务中,Swish 效果要更好一些。

例如在 ImageNet 中训练 Inception-ResNet-v2,Swish 还是要稍微超过 GELU,其中每一个评估值都记录了三次运行的结果。

在机器翻译任务上,研究者在 WMT 2014 English→German 数据集上测试了 12 层 Transformer 的效果。在不同的测试集上,似乎 Swish 激活函数都是最好的,当然 GELU 的效果也不差,它们相差并不大。

最后,我们在 GELU 的引用文献中发现了大量序列建模都采用它作为激活函数,不论是语言建模还是声学建模。也许之前序列建模常采用 tanh() 而不是 ReLU() 作为激活函数,在发现有更好的选择后,更多的研究者尝试接受这种非线性单元。

如前文所述,GELU 的近似实现方式有两种,借助 tanh() 和借助σ()。我们在 GPT-2 的官方代码中也发现,更多研究者采用了 tanh() 的实现方式尽管它看起来要比 xσ(1.702x) 复杂很多。

# GPT-2 的 GELU 实现
def gelu(x):
 return 0.5*x*(1+tf.tanh(np.sqrt(2/np.pi)*(x+0.044715*tf.pow(x, 3))))

不管怎么样,作为神经网络最基础的模块,我们总希望在 ReLU 之上,在 GELU 和 Swish 之上能有更多的创新与观点。

文本处理Bert面试内容整理-BERT的变种有哪些? XLNet结合了BERT的双向上下文建模和自回归模型的优势。:T5采用了类似BERT的Transformer架构,但不同的是,它的输出不是一个标签或类别,而是生成一段文本。:XLNet是一个结合了BERT和自回归语言模型的模型,旨在弥补BERT的不足,特别是在处理序列生成任务时。:RoBERTa是BERT的一个优化版本,提出了对BERT训练过程中参数的优化,旨在提高BERT的性能。:ELECTRA在相同的计算资源下,比BERT表现出更好的效果,特别是在处理任务时的训练效率更高。 阅读详情

相关推荐

Unified Access Control:从NAS到RRC的5G接入控制全流程解析

本文深入解析了5G统一接入控制(Unified Access Control)的全流程,从NAS到RRC的协同工作机制。通过身份核验、业务分类和动态决策三个核心步骤,UAC实现了智能调度和弹性决策,确保海量设备接入时的网络稳定性。文章详细介绍了USIM卡的身份凭证体系、NAS层的业务分类引擎以及RRC层的动态决策机制,并提供了实战案例和常见问题排查方法。

weixin_30855099的博客 591

BERT的变种

bert以及bert各种变种概述

jzwei023的博客 1078

手把手教你理解MIS结构C-V特性曲线:从理论到测试实操

本文深入解析了金属-绝缘体-半导体(MIS)结构的电容-电压(C-V)特性曲线,从积累、耗尽到反型等物理状态出发,详细阐述了其测试原理与实操要点。文章重点介绍了如何通过C-V曲线提取氧化层厚度、掺杂浓度、界面态密度等关键参数,并探讨了偏压-温度(B-T)应力实验在揪出可动离子电荷等可靠性问题中的应用,为半导体器件物理研究与工艺评估提供了实用指南。

weixin_29304021的博客 444

【GPT对话】神经网络中为什么要使用非线性激活函数

省流总结:深度学习的多层结构(比如卷积),会将输入映射到多维的空间,而这多维空间中的结果需要经过激活函数,再到输出层(常见的如全连接层-回归,softmax-二分类),如果激活函数是线性的,可以理解为整个网络就是一个巨大的线性模型,ax+by+c + a’x+b’y+c +…, 那么多层和单层起到的效果差别不大,而如果是一个非线性激活,比如exp(x),在一层一层的非线性变换之后,是否可以理解为类似于对一个复杂函数的傅里叶变换?通过非线性来拟合真实空间中的分类场景,无限逼近一些复杂的形状?

qq_39995170的博客 1192

保姆级教程:用Fiddler+夜神模拟器搞定抖音App抓包(附SSL Pinning绕过实战)

本文提供了一套完整的移动端抓包解决方案,详细介绍了如何使用Fiddler和夜神模拟器进行抖音App抓包,并重点讲解了SSL Pinning绕过技术。通过Xposed框架和JustTrustMe模块的组合,实现高效抓包,适用于产品分析、竞品研究和安全测试等场景。

weixin_30855099的博客 423

别再手搓SVG了!用Vue3+SVG.js快速搭建电力系统拓扑图(附完整代码)

本文介绍了如何利用Vue3和SVG.js实现电力系统拓扑图的低代码开发,通过组件化和响应式数据绑定,大幅提升开发效率。文章详细解析了SVG.js的核心功能,包括图形创建链式API、动态属性绑定和高级图形操作,并提供了断路器组件的完整实现代码。此外,还分享了性能优化策略和调试技巧,帮助开发者应对大规模拓扑图的挑战。

weixin_27717759的博客 354

BERT全网最强最完全最深度解析-大厂面试必备

BERT详解 面试深度级别

Xu_Wave 4643

零基础实战:YOLO检测头自定义替换全攻略

本文为零基础用户提供了YOLO检测头自定义替换的完整实战指南。通过将检测头比作汽车的“方向盘”,文章详细阐述了为何需要替换、如何寻找和集成新检测头模块、修改配置文件以及最终训练验证的全过程,旨在帮助用户针对特定任务(如小目标检测)提升模型性能。

perl8的博客 255

大模型常用激活函数

在深度学习相关的算法当中如果没有激活函数,就算模型结构再复杂都无法对非线性的数据进行相应的处理。而激活函数的加入则可以非常有效的解决这个问题。如今随着大模型时代的到来,不同的模型当中也采用了不同的激活函数,本文将对常见开源大模型中经常使用的激活函数进行简单的总结。

GuiBin1的博客 3573

eMMC FFU固件更新实战:从协议解析到设备修复

本文详细解析eMMC FFU固件更新技术,从协议原理到实战操作,涵盖EXT_CSD寄存器操作、命令流状态机解析及专业工具使用指南。通过真实维修案例,展示如何利用FFU机制修复设备故障,并提供高级优化技巧与安全注意事项,是硬件工程师和维修技术人员的实用参考。

weixin_29191761的博客 383

手把手教你学Simulink--复杂环境适应的四足机器人领域仿真建模实例:构建一个基于Simulink的四足机器人动态平衡保持仿真模型

通过上述步骤,你可以构建一个基本的基于Simulink的四足机器人动态平衡保持仿真模型。此模型不仅有助于理解四足机器人在复杂环境中的动态平衡控制原理,也为进一步优化提供了基础。随着技术的发展,还可以探索更多高级功能,如自适应步态调整、强化学习等,以提高机器人的智能性和适应性。

MHD0815的博客 239

为什么GELU比ReLU更适合深度学习?从神经元死亡问题看激活函数选择

本文深入探讨了GELU激活函数相比ReLU在深度学习中的优势,特别是解决神经元死亡问题的能力。通过对比分析两者的数学特性和梯度行为,结合MNIST和CIFAR-10的实验数据,证明GELU能显著降低神经元死亡比例并提升模型泛化性能,尤其适合深层Transformer架构和稀疏数据建模场景。

docker7nomad的博客 541

详解vit_base_patch16_224

ViT-Base模型的核心思想是将输入图像划分为多个小块(patches),并使用Transformer架构来处理这些小块。具体来说,ViT-Base使用16x16像素的patch大小,输入图像的尺寸为224x224像素,这意味着每张图像将被划分为49个patch(22416×22416=14×14=19616224​×16224​=14×14=196个patch)。ViT-Base(ViT-B/16)通过将图像处理任务转化为序列处理任务。

具身机器人和通用AI 3233

GELU(高斯误差线性单元)激活函数全面解析

GELU的数学定义融合了神经网络激活与随机正则化的思想。其核心公式是将输入xxx与标准正态分布的累积分布函数Φx\Phi(x)ΦxGELUxxΦxx⋅121erfx2GELUxxΦxx⋅21​1erf2​x​其中,erf\text{erf}erf是误差函数erfx2π∫0xe−t2dterfxπ​2​∫0x​e−t2dt从概率视角来看,GELU可以解释为:对输入xxx。

拒绝AI玄学,只聊真技术▲ 1679

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【愚公系列】《移动端AI应用开发》001-大模型基本原理(机器学习与深度学习基础)

本文介绍了大模型理论基础中的机器学习与深度学习核心内容,重点聚焦神经网络架构、自监督学习和优化算法三大模块。在神经网络部分,详细解析了层级结构、激活函数(如ReLU/Sigmoid)及训练机制(反向传播),并指出深度神经网络的挑战与解决方案。自监督学习章节阐述了其通过伪标签任务利用无标注数据实现特征学习的原理,以BERT/GPT为例说明其在预训练模型中的关键作用。优化算法部分系统对比了SGD、动量法、AdaGrad、RMSProp和Adam等方法的原理与适用场景,强调Adam算法因其自适应特性成为当前主流选

愚公智库 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据分析与挖掘工程师学习规划

一、数学与统计学基础

peiye500238的博客 1225

lstm论文_超越反向传播,LSTM登顶20世纪AI论文高引No.1,光今年就近7千次

点击上方“磐创AI”,选择“置顶公众号”精品文章,第一时间送达作者:郭一璞、十三、发自、凹非寺转载自:量子位,未经允许不得二次转载经典也会被经典超越。20世纪深度学习研究中,引用最多的论文不再是反向传播。新的宠儿,是1997年Hochreiter和Schmidhuber发表的Long short-term memory。大名鼎鼎的LSTM。超越反向传播LSTM的引用量,目前已经超过了26...

weixin_39759890的博客 243

大模型相关基础知识

本文系统介绍了大模型的基础知识、关键技术及应用场景。主要内容包括:1)NLP基础任务与方法,如词性标注、命名实体识别等;2)大模型核心机理,包括预训练语言模型、神经网络原理及Transformer架构;3)高效训练与压缩技术,如Prompt Tuning、Delta Tuning等参数优化方法;4)跨领域应用,涵盖生物医学、法律智能等学科。文章详细阐述了词表示、语言模型构建、注意力机制等核心技术,并分析了RNN、CNN等神经网络结构的优缺点。同时介绍了分布式训练、模型压缩等优化方法,以及文本生成、机器问答等

weixin_46033845的博客 805

别再只盯着Attention了!聊聊Transformer中FeedForward层的那些‘隐藏’作用与调参经验

本文深入探讨了Transformer架构中FeedForward层的关键作用与调参技巧。作为占据模型60%-70%参数量的核心组件,FeedForward层在非线性表达、模型容量调节和正则化方面具有不可替代的价值。文章通过BERT、GPT-3等实例分析,提供了针对不同任务(如文本分类、机器翻译)的维度选择策略、激活函数对比及残差连接优化方案,并分享了稀疏化、混合专家系统等前沿实践,帮助开发者充分挖掘FeedForward层的潜力。

weixin_30367169的博客 131

GPT、Llama、Qwen三大模型架构演进与训练流程深度解析

Transformer架构奠定了现代大语言模型的技术基石,其核心的自注意力机制通过并行计算有效捕捉长距离依赖关系。基于此,模型通过海量无标签文本的自回归预训练,学习通用语言表示,形成了强大的基座能力。这一技术路径的价值在于,它使得单一模型能够通过微调或提示工程,灵活适应多种下游任务,极大地推动了人工智能的通用化发展。在实际应用中,从智能对话、代码生成到内容创作,大模型已成为驱动产业创新的核心引擎。本文聚焦于GPT、Llama、Qwen三大主流系列,深入剖析其架构演进,例如从GPT-1确立的预训练微调范式,到

weixin_34396902的博客 479

人工智能:AI大模型必备知识汇编

AI大模型是跨学科的复杂系统,需融合理论知识与工程实践。掌握上述基础后,可进一步探索多模态模型、强化学习与大模型结合等前沿方向。持续参与开源项目(如微调LLaMA)、复现论文实验,是深化理解的有效途径。强化学习(Reinforcement Learning,RL)是机器学习的三大范式之一,与监督学习、无监督学习并列。它最大的特点,是通过与环境互动,在不断试错中“学习”如何做出最优决策。强化学习是一种模拟人类决策行为的学习机制,它不依赖明确的标签数据,而是通过试错和反馈机制让智能体不断改进自身策略。

m0_59485658的博客 776

收藏必备!AI大模型入门到精通:基础知识全解析

文章系统介绍了AI大模型所需的跨学科知识体系,包括数学基础、计算机科学、机器学习、深度学习、自然语言处理等核心领域,详细阐述了Transformer架构、预训练与微调、分布式训练等关键技术,并探讨了伦理安全问题。同时提供了实践工具和学习路径,帮助读者从零开始构建大模型知识框架,为深入学习和实践打下坚实基础。

2401_85375186的博客 1128

Transformer算法解析:从自注意力到多领域应用

自注意力机制是Transformer架构的核心创新,通过查询-键-值(QKV)变换实现动态特征聚焦,解决了传统RNN的长距离依赖问题。这种并行化计算结构大幅提升了模型在NLP、CV等领域的表现,如机器翻译质量提升23%、训练速度提高5倍。典型实现包含多头注意力层、前馈网络和位置编码,支持编码器-解码器灵活变体。当前研究聚焦线性注意力、混合专家系统等优化方向,在保持BERT、GPT等模型性能的同时降低计算复杂度。工程实践中,结合稀疏注意力、梯度裁剪等技术可有效部署于文本分类、目标检测等实际场景。

weixin_30791095的博客 416
上一篇: 傅立叶变换、拉普拉斯变换、Z 变换的联系是什么?为什么要进行这些变换?
下一篇: 确实会玩!教你用Python玩转数据
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值