当前位置: 首页 > article >正文

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

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

                                                —— 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.kler.cn/a/560186.html

相关文章:

  • Deepseek引爆AI热潮 防静电地板如何守护数据中心安全
  • 卸载Mysql重装(升级版本)
  • UE5网络通信架构解析
  • ubuntu+aarch64+dbeaver安装【亲测,避坑】
  • 基于 Python 的项目管理系统开发
  • db.session.delete是什么意思
  • 【R包】tidyplots----取代ggplot2的科研绘图利器
  • pytest-html
  • TMDS视频编解码算法
  • git 命令 设置别名
  • 《操作系统 - 清华大学》 8 -8:进程管理:为什么使用线程
  • 【Python爬虫(63)】从0到1:打造图片与视频爬虫攻略
  • 【java】implements
  • 原子操作、写回策略、缓存一致性问题、内存序详解
  • Vue面试2
  • 三、《重学设计模式》-单例模式
  • Python - 代码片段分享 - Excel 数据实时写入方法
  • uniapp打包生产证书上架IOS全流程
  • 【PDF预览】使用iframe实现pdf文件预览,加盖章
  • Redis7——基础篇(七)