【NLP 38、激活函数 ④ GELU激活函数】

news2025/2/25 19:55:02

别盲目,别着急,慢慢走,没事的

                                                —— 25.2.24

一、定义与数学表达式

GELU(Gaussian Error Linear Unit,高斯误差线性单元)是一种结合概率分布的非线性激活函数,其核心思想是通过输入值服从标准正态分布的概率来决定激活程度。数学表达式为:
GELU(x)=x⋅Φ(x)
其中,Φ(x) 是标准正态分布的累积分布函数(CDF):

实际应用中,常使用近似公式简化计算:

该近似公式在保持性能的同时显著降低计算复杂度


二、核心特点

非线性建模能力:通过高斯分布概率引入非线性,增强模型对复杂数据的拟合能力。

连续可导性:在整个定义域内可微,避免梯度消失问题,适合反向传播优化。

自门控特性:输入值越大,激活概率越高,类似“软开关”机制。

输出范围:(−∞,+∞),适用于需要线性输出的场景


三、优势对比

特性GELUReLUSigmoid/Tanh
梯度消失问题有效缓解部分区域梯度为0易出现梯度消失
输出范围全实数域[0,+∞)(0,1)或(−1,1)
计算复杂度较高(近似公式可优化)较高(涉及指数运算)
应用场景Transformer、NLP、CV计算机视觉、简单任务二分类输出层

四、实际应用 

Transformer架构:BERT、GPT-2/3等模型均采用GELU作为隐藏层激活函数,显著提升语言建模性能。

计算机视觉:在图像分类、目标检测任务中,GELU的非线性特性优于ReLU。

推荐系统:处理用户行为序列数据时,GELU的随机正则化特性增强模型泛化能力。


五、代码实现

1.torch.nn.GELU()

torch.nn.GELU(): PyTorch 中实现高斯误差线性单元(GELU)激活函数的类。其核心功能是通过高斯分布的累积分布函数(CDF)对输入张量进行非线性变换

数学表达式为:GELU(x)=x⋅Φ(x)

参数名称类型是否必填说明
approximatestr近似算法选择,可选值为 'none'(精确计算)或 'tanh'(近似计算,默认为 'none')。
import torch
import torch.nn as nn

# 定义GELU层(默认使用精确计算)
gelu_layer = nn.GELU()

# 输入张量
x = torch.randn(32, 128)

# 前向传播
output = gelu_layer(x)
print(output.shape)  # 输出形状与输入一致

2.torch.nn.functional.gelu()

torch.nn.functional.gelu(): PyTorch 中实现高斯误差线性单元(GELU)激活函数的函数。其核心功能是通过高斯分布的累积分布函数(CDF)对输入张量进行非线性变换,

数学表达式为:GELU(x)=x⋅Φ(x)

参数名称类型是否必填说明
approximatestr近似算法选择,可选值为 'none'(精确计算)或 'tanh'(近似计算,默认为 'none')。
import torch
import torch.nn.functional as F

# 输入张量
x = torch.randn(32, 128)

# 应用GELU激活函数
output = F.gelu(x)
print(output.shape)  # 输出形状与输入一致

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

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

相关文章

QT:paintEvent、QPainter、QPaintDevice

paintEvent 介绍 在 Qt 编程中,paintEvent 是 QWidget 类中的一个非常重要的虚函数,用于处理绘图事件。当一个 QWidget 或其派生类的实例需要进行重绘操作时,Qt 会自动调用该控件的 paintEvent 函数。 触发时机 窗口首次显示:当…

OpenHarmony-4.基于dayu800 GPIO 实践(2)

基于dayu800 GPIO 进行开发 1.DAYU800开发板硬件接口 LicheePi 4A 板载 2x10pin 插针,其中有 16 个原生 IO,包括 6 个普通 IO,3 对串口,一个 SPI。TH1520 SOC 具有4个GPIO bank,每个bank最大有32个IO:  …

HTML项目一键打包工具:HTML2EXE 最新版

HTML2EXE 工具可以一键打包生成EXE可执行文件。可以打包任意HTML项目或者是一个网址为单个EXE文件,直接打开即可运行。支持KRPano全景VR项目、WebGL游戏项目、视频播放、,课件打包、网址打包等。 下载地址: 最新版HTML2EXE首次发布下载地址 一、功能特点…

BGP配置华为——路径优选验证

实验拓扑 实验要求 实现通过修改AS-Path属性来影响路径选择实现通过修改Local_Preference属性来影响路径选择实现通过修改MED属性来影响路径选择实现通过修改preferred-value属性来影响路径选择 实验配置与效果 1.改名与IP配置 2.as300配置OSPF R3已经学到R2和R4的路由 3.…

深度学习基础--ResNet网络的讲解,ResNet50的复现(pytorch)以及用复现的ResNet50做鸟类图像分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 如果说最经典的神经网络,ResNet肯定是一个,这篇文章是本人学习ResNet的学习笔记,并且用pytorch复现了ResNet50&…

TMDS视频编解码算法

因为使用的是DDR进行传输,即双倍频率采样,故时钟只用是并行数据数据的5倍,而不是10倍。 TMDS算法流程: 视频编码TMDS算法流程实现: timescale 1 ps / 1ps //DVI编码通常用于视频传输,将并行数据转换为适合…

深度解析SmartGBD助力Android音视频数据接入GB28181平台

在当今数字化时代,视频监控与音视频通信技术在各行各业的应用愈发广泛。GB28181协议作为中国国家标准,为视频监控设备的互联互通提供了规范,但在实际应用中,许多Android终端设备并不具备国标音视频能力,这限制了其在相…

前端兼容处理接口返回的文件流或json数据

参考文档:JavaScript | MDN 参考链接:Blob格式转json格式,拿到后端返回的json数据_blob转json-CSDN博客 参考链接:https://juejin.cn/post/7117939029567340557 场景:导入上传文件,导入成功,…

Java基础常见的面试题(易错!!)

面试题一:为什么 Java 不支持多继承 Java 不支持多继承主要是为避免 “菱形继承问题”(又称 “钻石问题”),即一个子类从多个父类继承到同名方法或属性时,编译器无法确定该调用哪个父类的成员。同时,多继承…

DPVS-2:单臂负载均衡测试

上一篇编译安装了DPVS,这一篇开启DPVS的负载均衡测试 : 单臂 FULL NAT模式 拓扑-单臂 单臂模式 DPVS 单独物理机 CLINET,和两个RS都是另一个物理机的虚拟机,它们网卡都绑定在一个桥上br0 , 二层互通。 启动DPVS …

Classic Control Theory | 12 Real Poles or Zeros (第12课笔记-中文版)

笔记链接:https://m.tb.cn/h.Tt876SW?tkQaITejKxnFLhttps://m.tb.cn/h.Tt876SW?tkQaITejKxnFL

Kubernetes开发环境minikube | 开发部署MySQL单节点应用

minikube是一个主要用于开发与测试Kubernetes应用的运行环境 本文主要描述在minikube运行环境中部署MySQL单节点应用 minikube start --force kubectl get nodes 如上所示,启动minikube单节点运行环境 minikube ssh docker pull 如上所示,从MySQL官…

安装可视化jar包部署平台JarManage

一、下载 下载地址:JarManage 发行版 - Gitee.com 🚒 下载 最新发行版 下载zip的里面linux和windows版本都有 二、运行 上传到服务器,解压进入目录 🚚 执行java -jar jarmanage-depoly.jar 命令运行 java -jar jarmanage-dep…

基于数据可视化+SpringBoot+安卓端的数字化OA公司管理平台设计和实现

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路

详细前端代码写于上一篇:输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE项目-全局模糊检索 【效果图】:分组展示选项 >【去界面操作体…

性能巅峰对决:Rust vs C++ —— 速度、安全与权衡的艺术

??关注,带你探索Java的奥秘!?? ??超萌技术攻略,轻松晋级编程高手!?? ??技术宝库已备好,就等你来挖掘!?? ??订阅,智趣学习不孤单!?? ??即刻启航,编…

unity学习53:UI的子容器:面板panel

目录 1 UI的最底层容器:canvas 1.1 UI的最底层容器:canvas 1.2 UI的合理结构 2 UI的子容器:面板panel 2.1 创建panel 2.2 面板的本质: image ,就是一个透明的图片,1个空容器 3 面板的属性 4 面板的…

4-知识图谱的抽取与构建-4_2实体识别与分类

🌟 知识图谱的实体识别与分类🔥 🔍 什么是实体识别与分类? 实体识别(Entity Recognition)是从文本中提取出具体的事物,如人名、地名、组织名等。分类(Entity Classification&#x…

elasticsearch在windows上的配置

写在最前面: 上资源 第一步 解压: 第二步 配置两个环境变量 第三步 如果是其他资源需要将标蓝的文件中的内容加一句 xpack.security.enabled: false 不同版本的yaml文件可能配置不同,末尾加这个 xpack.security.enabled: true打开bin目…

详解分布式ID实践

引言 分布式ID,所谓的分布式ID,就是针对整个系统而言,任何时刻获取一个ID,无论系统处于何种情况,该值不会与之前产生的值重复,之后获取分布式ID时,也不会再获取到与其相同的值,它是…