GELU激活函数

news2024/11/25 2:29:27

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 ) = 1 2 ⋅ ( 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 np

def 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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java版工程项目管理系统-功能清单 图文解析

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…

MySQL事务的四大特性及事务的隔离级别

什么是事务?Transaction 常言道:能不麻烦就不麻烦,能简单化就简单化。但是为什么需要事务呢? 事务:用来保证一个业务的完整性,最大的优势就是回滚,并撤销正在进行的所有未提交的修改&#xff1…

linux运行串口相关的java.jar报错:java.lang.UnsatisfiedLinkError

目录 linux运行串口相关的java.jar报错如下: java.lang.UnsatisfiedLinkError是Java中的一个错误类型,通常发生在调用本地(native)方法或使用JNI(Java Native Interface)时。 在Java中,本地方…

微分中值定理—柯西中值定理

微分中值定理—柯西中值定理前面我们已经学习了罗尔中值定理,和拉格朗日中值定理,它们的相同点是,研究的曲线都能用函数来表示。那假如曲线不能被函数表示呢,用柯西中值定理。 1 定义 柯西中值定理是拉格朗日中值定理的推广。如果&#xff0c…

助力企业节能降耗:综合能效管理之场景控制

企业综合能效管理系统是为企业提供能耗管理、电能质量和用能安全监测的整套解决方案,系统可采集多种类型能源(电、水、天然气、工业气体、冷热量等)数据,并对能源消耗进行分析,包括分类分项能耗、区域能耗、部门能耗数…

海思编码:1、mpp系统详谈以及VI、VPSS、VENC之间的关系

在HiMPP手册中都会有这么一张图 1、VI部分 视频输入设备 视频输入设备支持标准 BT.656、标准 BT.1120、自定义时序等若干种时序输入,负责对时序进行解析。 视频物理通道 视频物理通道负责将输入设备解析后得到的视频数据输出到 DDR。在真正将数据输出到 DDR 之前…

FTP-----局域网内部远程桌面

此文包含详细的图文教程。有疑问评论区留言。博主第一时间解决。 目录 一、被远程桌面的电脑 1.开启远程权限 2.添加账户,有本地账户跳过这步 3.帐号隶属于 远程桌面 4.帐号隶属于 本地用户组 二、本地电脑连接远程桌面 前提条件: 1.两台电脑在…

接口自动化【二】(图形验证码处理)

文章目录 前言一、图形验证码图片获取(需要实际截图做对比补充)二、调第三方接口获取验证码三、后端登录接口(举例)总结前言 讲解了图片验证的处理;在接口测试中遇见的一些问题;多部分编码的注意点 一、图形验证码图片获取(需要实…

【4.13(补)】二叉搜索树的遍历、插入、删除

文章目录二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点二叉搜索树的最近公共祖先 235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode) 因为二叉搜索树是有序的,第一次找到p和q中间的值,就是最近的公共祖先…

【FPGA-DSP】第六期:Black Box调用流程

目录 1. 实际操作流程 1.1 Verilog 代码编写 1.2 system generator操作 1.2.1 Black box模块 1.2.2 Simulink 搭建 2. Simulink模型优化 System Generator是一个Xilinx公司的工具,用于设计数字信号处理系统。Black Box是System Generator中的一个block&#…

【数值模型系列】CAMx编译运行中的几个小问题

最近在CAMx的编译运行工作中,遇到了几个小问题,在此记录一下。 问题1:CAMx2IOAPI编译报错 报错如下: CAMx2IOAPI依赖于IOAPI和NetCDF库,在Makefile文件中加以配置即可,但出现此错的原因其实是默认的Makef…

【大数据之Hadoop】十四、MapReduce之Combiner合并

Combiner是Mapper和Reducer之间的组件,其组件的父类是Reducer。 Combiner和Reducer的区别: Combiner是运行在每一个MapTask所在的节点,即对每一个MapTask的输出进行局部汇总,减少网络传输量。 Reducer则是接收全局是Mapper的输出…

涨点神器:Yolov5/Yolov7引入CVPR2023 InternImage:注入新机制,扩展DCNv3,助力涨点,COCO新纪录65.4mAP!

1.InternImage介绍 论文:https://arxiv.org/abs/2211.05778 代码:GitHub - OpenGVLab/InternImage: [CVPR 2023 Highlight] InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions 理论部分参考知乎:CVPR2023 Highlight | 书生模型霸…

GPT-4要革程序员的命?智能开发的理想与现实 | 爱分析调研

“生成式人工智能(AIGC)将在三年内终结编程。” ——Matt Welsh,前哈佛大学计算机科学教授、Google 工程主管 GPT-4 也许还不完美,但智能开发时代真的来了 美国时间3月14日,OpenAI 正式发布 GPT-4,在 Chat…

【Navidrome 开源音乐服务器】手把手教你打造属于自己的音乐播放器随时随地想听就听

目录 1. 前言 2. Navidrome网站搭建 2.1 Navidrome下载和安装 2.1.1 安装并添加ffmpeg 2.1.2下载并配置Navidrome 2.1.3 添加Navidrome到系统服务 2.2. Navidrome网页测试 3. 本地网页发布 3.1 cpolar的安装和注册 3.2 Cpolar云端设置 3.3 Cpolar本地设置 4. 公网访…

电商数仓—前言

项目流程图 1.数据仓库的概念 数据 业务数据 存储在mysql 处理事务过程中产生的数据例如:登录、下单、支付用户行为数据 日志文件(以文件形式) 用户与客户端产品交互过程中产生的数据通过埋点实现:代码埋点(前端/后…

Unity集成GPT

GPT想必是最近互联网最火的话题了,作为一个Unity开发者,今天来介绍一下如何在Unity中使用GPT。 一、API 密钥 使用GPT的API首先要获得密钥,如下进入OpenAI官网(https://platform.openai.com/account/api-keys)–>选择自己的账号–>查…

Docker-Compose企业生产环境实战

1. Docker-Compose企业生产环境实战 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用。Compose 定位是“defining and running complex applications with Docker”,前身是 Fig&#…

手把手教你如何管理进程和计划任务管理

目录一、查看和控制进程1.1查看进程1.1.1 ps 命令— 查看静态的进程统计信息1.1.2ps -elf 命令— 查看静态的进程统计信息1.1.3grep过滤查询1.1.4top命令—动态查看进程信息1.1.5pgrep命令— 根据特定条件查询进程PID信息1.1.6pstree命令—查看进程树1.2控制进程1.2.1手动启动1…

单片机--第六章中断系统--例6-3学习

单片机--第六章中断系统--例6-3学习 同6-2图,要求:使用定时器T0中断实现流水灯操作,流水频率为每0.5s更替一次(假设单片机外接11.0592MHZ的晶振)。 这个代码实现的是流水灯的效果,即将多个 LED 灯依次点亮并…