深度学习中的gelu激活函数详解

深度学习中的gelu激活函数详解论文 gaussianerro 一 什么是 gelus 激活函数 gelus gaussianerro 就是我们常说的高斯误差线性单元 它是一种高性能的神经网络激活函数 公式如下 1 xP X x x x xP X lex x Phi x tag 1 xP X x x x 1 计算结果大约为 2 0 5x 1

论文:gaussian error linear units
(一)、什么是激活函数?
激活函数的本质就是给网络模型增加非线性,也就是在 w T x + b w^Tx+b wTx+b等线性变换后面加一个非线性变换,这个非线性变换就称为激活函数。

(二)、什么是gelu激活函数?
gelu(gaussian error linear units)就是我们常说的高斯误差线性单元,它是一种高性能的神经网络激活函数,因为gelu的非线性变化是一种符合预期的随机正则变换方式,公式如下: x P ( X ≤ x ) = x Φ ( x ) (2.1) {xP(X \le x)=x\Phi(x)}\tag{2.1} xP(Xx)=xΦ(x)(2.1)其中 Φ ( x ) \Phi(x) Φ(x)指的是 x x x的高斯正态分布的累积分布,完整形式如下: x P ( X ≤ x ) = x ∫ − ∞ x e − ( X − μ ) 2 2 σ 2 2 π σ   d X (2.2) {xP(X \le x)=x\int_{-\infty}^{x}\frac{e^{-\frac{(X-\mu)^2}{2\sigma^2}}}{\sqrt{2\pi}\sigma} \, \mathrm{d}X}\tag{2.2} xP(Xx)=xx2π
σ
e2σ2(Xμ)2
dX
(2.2)
计算结果约为: 0.5 x ( 1 + t a n h [ 2 π ( x + 0.044715 x 3 ) ] ) (2.3) {0.5x(1+tanh[\sqrt{\frac{2}{\pi}}(x+0.044715x^3)])}\tag{2.3} 0.5x(1+tanh[π2
(x+0.044715x3)])
(2.3)
或者可以表示为: x σ ( 1.702 x ) (2.4) {x\sigma(1.702x)}\tag{2.4} xσ(1.702x)(2.4)由此可知,概率 P ( X ≤ x ) P(X\leq x) P(Xx) x x x可看成当前神经元的激活值输入),即 X X X的高斯正态分布 ϕ ( X ) \phi(X) ϕ(X)的累积分布 Φ ( x ) \Phi(x) Φ(x)是随着 x x x的变化而变化的,当 x x x增大, Φ ( x ) \Phi(x) Φ(x)增大,当x减小, Φ ( x ) \Phi(x) Φ(x)减小,即当 x x x越小,在当前激活函数激活的情况下,越有可能激活结果为0,即此时神经元被dropout,而当 x x x越大越有可能被保留。

(三)、gelu的使用技巧(practices tips)
1.当在训练过程中使用gelus作为激活函数进行训练时,建议使用一个带有动量(momentum)的优化器,并将其作为深度学习网络的一种规范。
2.在使用gelus的过程中,公式(3)的 σ \sigma σ函数的选择是非常关键的,一般需要使用与正态分布的累积分布近似的函数,一般可以选择与正态分布的累积分布较为近似的函数 s i g m o i d ( x ) = 1 / ( 1 + e ( − x ) ) sigmoid(x)=1/(1+e^{(-x)}) sigmoid(x)=1/(1+e(x))作为 σ \sigma σ函数。

(四)、gelu激活函数的公式说明
1.在确定gelus激活函数公式之前,作者说,他发现SLU(Sigmoid Linear Units),即 x σ ( x ) x\sigma(x) xσ(x)函数效果比ELU(Exponential Linear Units)和RELU(Rectified Linear Units)效果好,但是比 x s i g m o i d ( 1.702 x ) xsigmoid(1.702x) xsigmoid(1.702x)公式效果要差,所以最终使用了 s i g m o i d ( 1.702 x ) sigmoid(1.702x) sigmoid(1.702x)而不是 s i g m o i d ( x ) sigmoid(x) sigmoid(x)去替代高斯分布的累计分布 Φ ( x ) \Phi(x) Φ(x)
2.之所以选择类高斯分布累积分布的函数去构建gelus激活函数公式,一是因为依据中心极限定理,大量独立随机变量的总体是服从近似正态分布的,因此,现实中有很多复杂情况可以被建模成近似正态分布,使用类正态分布函数作为激活函数就更加合理,二是在具有相同方差的所有可能的分布中,正态分布具有最大不确定性,即熵最大。

(五)、Gelu( u ( 均 值 ) = 0 , σ ( 方 差 ) = 1 u(均值)=0,σ(方差) =1 u()=0,σ()=1),Elu( α = 1 \alpha=1 α=1),Relu激活函数对比图
activation figures
(六)、Gelu( u ( 均 值 ) = 0 , σ ( 方 差 ) = 1 u(均值)=0,σ(方差) =1 u()=0,σ()=1),Elu( α = 1 \alpha=1 α=1),Relu在Cifar-10数据集上的Classification Error(%)对比图
在这里插入图片描述
(七)、Gelu( u ( 均 值 ) = 0 , σ ( 方 差 ) = 1 u(均值)=0,σ(方差) =1 u()=0,σ()=1),Elu( α = 1 \alpha=1 α=1),Relu在Cifar-100 Wide Residual Network 上Log Loss的对比图
Cifar-100 Loss
(八)、补充:ELu(Exponential Linear Units)公式
{ x i f   x > 0 α ( e x p ( x ) − 1 ) i f   x ≤ 0 (7.1) \begin{cases} x\quad \quad if \ x>0\\ {\alpha(exp(x)-1)\quad if \ x \leq 0}\tag{7.1} \end{cases} {
xif x>0α(exp(x)1)if x0
(7.1)







版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217119.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午10:18
下一篇 2026年3月18日 上午10:18


相关推荐

  • yum安装及配置

    yum安装及配置yum 是用来管理 rpm 的 就跟 maven 管理 jar 包相似 yum 源 库 分为本地库 网络库 首先要配置 yum 源 可支持多个源 先查看一下挂载情况 df h 这里我们要更换光盘 并挂载 mount dev cdrom mnt 如果不能成功挂载 点击一下连接即可 之后再次使用 df h 命令 就能查看到光盘的内容 下面我们 cd 到 mnt 下查看一下 首先关注一下 Pa

    2026年3月18日
    2
  • java全套视频教程资料

    java全套视频教程资料学完以上内容以后,你应该对Java有一个基本的了解了,你可以用Java语言写出一些简单的程序,并且你用的是简单的编辑器,比如记事本。这个时候,不要急于进入下一部分,留下几天好好写一些程序,尽可能熟悉这

    2022年8月6日
    12
  • pycharm配置tensorflow环境_python3.6对应的tensorflow版本

    pycharm配置tensorflow环境_python3.6对应的tensorflow版本Round1:打开PyCharm,点击File->Settings,点击弹出界面的“+”号,在搜索框中键入关键字“tensorflow”,从列表中选中“tensorflow”,点击下方的“InstallPackage”,等待一段时间,华丽丽的安装失败了-_-Round2:在Pycharm的terminal中运行pipinstalltensorflow,在等了半小时后,倒计时还有3个多小时,我弃疗了!安装失败!Round3:以上用的都是官方的源,现在考虑换成国

    2022年8月26日
    8
  • 微信Agent加速落地:腾讯推AI小程序成长计划,生态大战一触即发

    微信Agent加速落地:腾讯推AI小程序成长计划,生态大战一触即发

    2026年3月16日
    2
  • hi3516a与hi3516e_led player6.0怎么使用

    hi3516a与hi3516e_led player6.0怎么使用背景公司新做了一块3516Dv300的开发板,其中有MIPITx接口,刚好公司库房还有好几百块的LCD屏,LCD屏是800×480的,还是原装屏,不用掉怪可惜的了,所以就让硬件的同事化了个转接板,使用的芯片是ICN6211,这货最大分辨率可以支持到1920×1200,感兴趣的小伙伴自己下个手册看看。调试过程MIPI屏一般都有一组寄存器需要初始化,这个可以根据使用的芯片资料来初始化,大部分厂家会提供初始化寄存器,使用的MIPICommandMode,至于怎么使用,大家自己去Google。我们

    2025年11月21日
    7
  • Android中英文切换

    Android中英文切换前言在 Android 开发中 针对不同的客户群体 可能需要使用多国语言来对项目进行支持 那么 对于 Androidstudi 如何实现这个功能呢 比如我们要实现 Android 程序中英文切换 该怎么做呢 下面 我将详细记录 Android 如何使用这一功能 这也是我在做项目中所涉及到的 2 首先 我们在 Androidstudi 上新建一个程序 并在 res 文件下新建一个支持英文的 xml 文件 具体步奏如

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号