我的编程空间,编程开发者的网络收藏夹
学习永远不晚

GELU激活函数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

GELU激活函数

GELU是一种常见的激活函数,全称为“Gaussian Error Linear Unit”, 作为2020年提出的优秀激活函数,越来越多的引起了人们的注意。

GELU (Gaussian Error Linear Units) 是一种基于高斯误差函数的激活函数,相较于 ReLU 等激活函数,GELU 更加平滑,有助于提高训练过程的收敛速度和性能。下面是 GELU 激活层的数学表达式:

GELU表达

GELU ⁡ ( x ) = x ∗ P ( X ⩽ x ) = x ∗ Φ ( x ) \operatorname{GELU}(x)=x * P(X \leqslant x)=x * \Phi(x) GELU(x)=xP(Xx)=xΦ(x)

其中 Φ ( x ) \Phi(x) Φ(x)表示正态分布的累积分布函数,即:

Φ ( x ) = 12 ⋅ (1+erf⁡ ( x 2 ) ) \Phi(x)=\frac{1}{2} \cdot\left(1+\operatorname{erf}\left(\frac{x}{\sqrt{2}}\right)\right) Φ(x)=21(1+erf(2 x))

e r f ( x ) erf(x) erf(x) 表示高斯误差函数。

该函数可进一步表示为
x ∗ P ( X ⩽ x ) = x ∫ − ∞ x e − ( X − μ ) 2 2 σ 2 2 π σ d X x * P(X \leqslant x)=x \int_{-\infty}^x \frac{e^{-\frac{(X-\mu)^2}{2 \sigma^2}}}{\sqrt{2 \pi} \sigma} d X xP(Xx)=xx2π σe2σ2(Xμ)2dX

其中 μ \mu μ σ \sigma σ分别代表正太分布的均值和标准差.由于上面这个函数是无法直接计算的,研究者在研究过程中发现 GELU 函数可以被近似地表示为 GELU ⁡ ( x ) = 0.5 x [1+tanh⁡ (2 π ( x + 0.047715 x 3 ) ) ] \operatorname{GELU}(x)=0.5 x\left[1+\tanh \left(\sqrt{\frac{2}{\pi}}\left(x+0.047715 x^3\right)\right)\right] GELU(x)=0.5x[1+tanh(π2 (x+0.047715x3))]或者 GELU ⁡ ( x ) = x ∗ σ ( 1.702 x ) \operatorname{GELU}(x)=x * \sigma(1.702 x) GELU(x)=xσ(1.702x)

上述表达式可以简单地通过 Python NumPy 库实现:

import numpy as npdef GELU(x):    return 0.5 * x * (1 + np.tanh(np.sqrt(2 / np.pi) * (x + 0.044715 * np.power(x, 3))))

其中 2 / π \sqrt{2 / \pi} 2/π 和 0.044715 是 GELU 函数的两个调整系数。

相较于 ReLU 函数,GELU 函数在负值区域又一个非零的梯度,从而避免了死亡神经元的问题。另外,GELU 在 0 附近比 ReLU 更加平滑,因此在训练过程中更容易收敛。值得注意的是,GELU 的计算比较复杂,因此需要消耗更多的计算资源。

GeLu和ReLu函数图像对比

在这里插入图片描述

在这里插入图片描述

各自的优势和缺点

相对于 Sigmoid 和 Tanh 激活函数,ReLU 和 GeLU 更为准确和高效,因为它们在神经网络中的梯度消失问题上表现更好。梯度消失通常发生在深层神经网络中,意味着梯度的值在反向传播过程中逐渐变小,导致网络梯度无法更新,从而影响网络的训练效果。而 ReLU 和 GeLU 几乎没有梯度消失的现象,可以更好地支持深层神经网络的训练和优化。

而 ReLU 和 GeLU 的区别在于形状和计算效率。ReLU 是一个非常简单的函数,仅仅是输入为负数时返回0,而输入为正数时返回自身,从而仅包含了一次分段线性变换。但是,ReLU 函数存在一个问题,就是在输入为负数时,输出恒为0,这个问题可能会导致神经元死亡,从而降低模型的表达能力。GeLU 函数则是一个连续的 S 形曲线,介于 Sigmoid 和 ReLU 之间,形状比 ReLU 更为平滑,可以在一定程度上缓解神经元死亡的问题。不过,由于 GeLU 函数中包含了指数运算等复杂计算,所以在实际应用中通常比 ReLU 慢。

总之,ReLU 和 GeLU 都是常用的激活函数,它们各有优缺点,并适用于不同类型的神经网络和机器学习问题。一般来说,ReLU 更适合使用在卷积神经网络(CNN)中,而 GeLU 更适用于全连接网络(FNN)。

来源地址:https://blog.csdn.net/qq_41296039/article/details/130148750

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

GELU激活函数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中常用的激活函数有哪些

本篇内容介绍了“Python中常用的激活函数有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、激活函数定义激活函数 (Activati
2023-07-06

Python实现绘制多种激活函数曲线详解

所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。这篇文章主要介绍了Python如何实现绘制多种激活函数曲线,希望对大家有所帮助
2023-05-16

详解Python中常用的激活函数(Sigmoid、Tanh、ReLU等)

激活函数(Activationfunctions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用,这篇文章主要介绍了Python中常用的激活函数(Sigmoid、Tanh、ReLU等),需要的朋友可以参考下
2023-05-15

Win10数字许可证激活和密钥激活相比有什么不同?

微软在Win10中引入了一项全新的激活方式,&lphpdquo;数字许可证激活”。这种方式和之前的密钥激活相比到底有什么不同之处呢?是更先进了,还是限制更多了?javascript我们就带你简单清晰地了解一下这种方式的特点。&l
2023-05-21

pytorch/transformers 最后一层不加激活函数的原因分析

这里给大家解释一下为什么bert模型最后都不加激活函数,是因为损失函数选择的原因,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
2023-01-07

oracle数据库触发器怎么激活

oracle 数据库触发器在 ddl(如 create、alter)或 dml(如 insert、update、delete)操作时激活:ddl 操作激活基础表上定义的触发器。dml 操作激活基础表上定义的触发器。Oracle 数据库触发器
oracle数据库触发器怎么激活
2024-04-08

navicat激活次数达到上限怎么办

激活次数达到上限时,解决方法有:1. 联系 navicat 支持团队重置次数;2. 购买额外激活次数;3. 安装无需激活的 navicat silent;4. 使用免激活的 navicat portable;5. 重新安装 navicat
navicat激活次数达到上限怎么办
2024-04-23

深度残差网络+自适应参数化ReLU激活函数(调参记录21)Cifar10~95.12%

本文在调参记录20的基础上,将残差模块的个数,从27个增加到60个,继续测试深度残差网络ResNet+自适应参数化ReLU激活函数在Cifar10数据集上的表现。自适应参数化ReLU函数被放在了残差模块的第二个卷积层之后,这与Squeeze
2023-06-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录