首页/新闻资讯/正文详情

12_激活函数 [pytorch框架与神经网络基础]

发布时间:2026/9/24 14:22:31 来源:云帆数科 栏目:资讯中心
12_激活函数 [pytorch框架与神经网络基础]
激活函数激活函数用于对每层的输出数据进行变换, 进而为整个网络注入了非线性因素。此时, 神经网络就可以拟合各种曲线。常用的激活函数1. sigmoid常用于解决二分类问题,其函数及导函数表达式如下f ( x ) 1 1 e − x f ′ ( x ) f ( x ) ( 1 − f ( x ) ) \begin{align} f(x) \frac{1} {1 e^{-x}} \\ f(x) f(x)(1 - f(x)) \end{align}​f(x)1e−x1​f′(x)f(x)(1−f(x))​​图像f(x): 定义域: (-∞,∞) 值域:(0,1) 有效区间:[-6,6] f(x): 值域: (0,0.25] 不足:计算量大一般来说 sigmoid 网络在5 层之内就会产生梯度消失现象。而且该激活函数并不是以 0 为中心的所以在实践中这种激活函数使用的很少2. tanh类似于sigmoid,可以把输入映射到(-1,1)区间。其函数及导函数表达式如下f ( x ) e x − e − x e x e − x 1 − e − 2 x 1 e − 2 x f ′ ( x ) 1 − f 2 ( x ) \begin{align} f(x) \frac{e^x - e^{-x}}{e^x e^{-x}}\frac{1 - e^{-2x}}{1 e^{-2x}} \\ f(x) 1 - f^2(x) \end{align}​f(x)exe−xex−e−x​1e−2x1−e−2x​f′(x)1−f2(x)​​图像f(x): 值域:(-1,1) 有效区间:[-3,3] 特点: - 收敛速度比sigmoid快 - 存在梯度消失问题3. Dynamic Tanh基于层归一化思想对tanh的改进,在其中引入了可学习的参数(γ , α , β \gamma,\alpha,\betaγ,α,β),其表达式如下D y T ( x ) γ ⋅ t a n h ( α ∗ x ) β D y T ′ ( x ) γ ⋅ α ⋅ ( 1 − y t a n h 2 ) \begin{align} DyT(x) \gamma \cdot tanh(α * x) β \\ DyT(x) \gamma \cdot \alpha \cdot (1 - y^2_{tanh}) \end{align}​DyT(x)γ⋅tanh(α∗x)βDyT′(x)γ⋅α⋅(1−ytanh2​)​​f(x): 值域:(-γ,γ) 有效区间:[-3/α,3/α] 特点: - 对有效区间进行动态拉伸,α越大有效区间越窄 - 收敛速度由α决定,一般来说 α * γ 1时,梯度更大,其收敛速度越快。常把α初始化为0.5,但在LLM中,为了训练稳定性,α一般设置为较小值 - 相对延缓了梯度消失的问题4. softmaxsoftmax常用于多分类过程中它是二分类函数sigmoid在多分类上的推广目的是将多分类的结果以概率的形式展现出来。计算方法如下所示对给定向量z ( z 1 , z 2 , ⋯ , z n ) z (z_1,z_2,\cdots, z_n)z(z1​,z2​,⋯,zn​)s o f t m a x ( z i ) e z i ∑ j 1 n e z j softmax(z_i) \frac{e ^ {z_i}}{\sum_{j 1}^{n} e^{z_j}}softmax(zi​)∑j1n​ezj​ezi​​f(x): 值域:(0,1) 特点: - softmax函数把n维向量转换为n个可能结果的概率分布。例如在softmax回归中,其概率建模为 P(y j|X x) softmax(w^T x) - 对 softmax的结果求期望值,即可得到Softargmax函数。表示为 Softargmax(z) Σ z_i * softmax(z_i),其期望值是argmax的平滑近似。5.ReLu整流线性单位函数Rectified Linear Unit, ReLU,又称修正线性单元。旨在通过数学函数形式模拟生物神经单元,其函数形式如下:f ( x ) m a x ( 0 , x ) f ′ ( x ) { 0 , x 0 1 , x ≥ 0 \begin{align} f(x) max(0,x) \\ f(x) \begin{cases}0 {,x 0}\\1 ,x \geq 0 \end{cases} \end{align}​f(x)max(0,x)f′(x){01​,x0,x≥0​​​优点: - 计算量小,是最常用的一种激活函数 - Relu会使一部分神经元的输出为0这样就造成了网络的稀疏性并且减少了参数的相互依存关系缓解了过拟合问题的发生。 缺点: - 存在 神经元死亡 问题随着训练的推进部分输入会落入小于0区域导致对应权重无法更新。这种现象被称为 神经元死亡。图像6. Leaky ReLuReLU函数的变种,旨在解决神经元死亡问题。其表达式如下f ( x ) m a x ( λ x , x ) , λ 1 f ′ ( x ) { λ , x 0 1 , x ≥ 0 \begin{align} f(x) max(\lambda x,x) \quad , \lambda \lt 1 \\ f(x) \begin{cases}\lambda {,x 0}\\1 ,x \geq 0 \end{cases} \end{align}​f(x)max(λx,x),λ1f′(x){λ1​,x0,x≥0​​​优点: - 可以解决神经元死亡的问题,“即使输入参数为负数,也可以进行缓慢的更新” - 计算相对高效,并且可以保证一定的网络稀疏性 缺点: - 存在负偏移问题。比如对[-2,2]的均匀分布的输入在经过多层Leaky ReLu之后负数会被压缩到近似于0的极小值中,而正输入保持不变,严重破坏了原始数据分布规律。而传统ReLu则具备天然的正则化作用 - 由于其左右导数差异较大,Leaky ReLu在深层网络中容易产生锯齿震荡难以收敛的问题。 应用: - 一般会配合BatchNorm解决负偏移问题 - 如果把λ作为可学习的参数,在数据量较大时,效果会更好。参考PReLU - Leaky ReLu常被应用于GANs网络和目标检测中7. ELUELU(Exponential Linear Unit)是对ReLu的改进,是对 ReLuRectified Linear Unit的一种改进旨在克服 ReLU 神经元死亡的问题.具体而言是通过定义了一个指数负区间来代替0值.f ( x ) { x , x 0 α ( e x − 1 ) , x ≤ 0 f(x) \begin{cases} x {,x0} \\ α(e^x−1) {,x≤0} \end{cases}f(x){xα(ex−1)​,x0,x≤0​图像优点: - 可以解决神经元死亡的问题,“即使输入参数为负数,也可以进行缓慢的更新” - 对极端负噪声具备抑制能力 - 导数更平滑,可以一定程度解决Leaky ReLu中存在的震荡问题 缺点: - 指数运算导致其计算成本高8. CeluCELUContinuously Differentiable Exponential Linear Unit是 ELUExponential Linear Unit的一个扩展它通过对负值区域引入一个平滑的连续函数进一步改善了神经元死亡问题并增强了激活函数的灵活性。CELU 激活函数的设计目的是避免 ReLu 的死区问题同时具备与 ELU 类似的平滑行为但是具有一个可调的平滑程度。f ( x ) { x , if x 0 α ( e x α − 1 ) , if x ≤ 0 f(x) \begin{cases} x, \text{if } x 0 \\ \alpha (e^{\frac{x}{\alpha}} - 1), \text{if } x \leq 0 \end{cases}f(x){x,α(eαx​−1),​ifx0ifx≤0​图像优点: - 可以解决神经元死亡的问题,“即使输入参数为负数,也可以进行缓慢的更新” - 对极端负噪声具备抑制能力 - 0点处导数连续,且其导函数是(0,1)区间的有界函数 缺点: - 指数运算导致其计算成本高9. GELUGelu(Gaussian Error Linear Units)同样是对ELU的一种改进方案,是当前最主流的激活函数之一,被Transformer系模型广泛应用。Gelu借助Dropout的按概率激活的思想对Relu激活进行了改进: 其核心思想是利用标准正态分布对原始输入进行不同程度的放缩,其表达式如下G E L U ( x ) x ⋅ Φ ( x ) ≈ 0.5 x ⋅ [ 1 t a n h ( 2 π ( x 0.044715 ⋅ x 3 ) ) ] G E L U ′ ( x ) Φ ( x ) x ⋅ ϕ ( x ) \begin{align} GELU(x) x \cdot \Phi(x) ≈ 0.5x\cdot[1 tanh(\sqrt{\frac{2}{\pi}(x 0.044715 \cdot x^3) })] \\ GELU(x) \Phi(x) x \cdot \phi(x) \end{align}​GELU(x)x⋅Φ(x)≈0.5x⋅[1tanh(π2​(x0.044715⋅x3)​)]GELU′(x)Φ(x)x⋅ϕ(x)​​图像表达式后面是如今pytorch对GELU的计算近似 优点: - 具备ELU的所有优点,并且其各阶导数连续。 - 通过近似函数使得GELU的计算效率远高于ELU 缺点: - 显存占用高 - 函数在负数区域非单调,会为损失函数引入额外的局部极小值 - 对权重初始化敏感10. Swish / SiLUSwish(Searching for Activation Functions)使用sigmoid映射代替GELU的高斯映射,进一步提升了计算效率。并且其梯度数值更稳定,不会出现数值溢出的情况。图像原文链接11. SwiGLU通过门控逻辑单元对SiLU的一种改进方案,核心思想是把输入分别传递到门控旁路中并与其真值逐元素累乘,其表达式如下S w i G L U ( x ) x ⊗ S w i s h ( x ) , ⊗ 表示hadamard积 S w i s h ( x ) x ⋅ s i g m o i d ( β x ) , β 1 时Swish(x) SiLU(x) \begin{align} SwiGLU(x) x \otimes Swish(x) \quad , \otimes \text{表示hadamard积} \\ Swish(x) x \cdot sigmoid(\beta x) \quad , \beta 1 \text{时Swish(x) SiLU(x)} \end{align}​SwiGLU(x)x⊗Swish(x),⊗表示hadamard积Swish(x)x⋅sigmoid(βx),β1时Swish(x) SiLU(x)​​实现importtorchimporttorch.nn.functionalasFimporttorch.nnasnnclassSwiGLU(nn.Module):r $$ \text{SwiGLU}(x) W_{out} \cdot \left( \text{Swish}(W_g x) \odot W_v x \right) $$ def__init__(self,dim,hidden_dim):super().__init__()# 将 gate 和 value 的权重拼成一个大的线性层# 输出维度是 2 * hidden_dimself.gate_value_projnn.Linear(dim,2*hidden_dim,biasFalse)self.out_projnn.Linear(hidden_dim,dim,biasFalse)## 参数初始化nn.init.constant_(self.gate_value_proj.weight,0.1)nn.init.constant_(self.out_proj.weight,1)defforward(self,x):# 一次矩阵乘法得到 gate 和 value 的拼接gate_valueself.gate_value_proj(x)# 在最后一个维度上拆分成两半gate,valuegate_value.chunk(2,dim-1)# 应用门控returnself.out_proj(F.silu(gate)*value)图像(初始化参数为[0.1,1])原文链接

相关推荐

告别手动更新!Jackett智能调度系统让种子索引器永远保持最新
告别手动更新!Jackett智能调度系统让种子索引器永远保持最新

告别手动更新!Jackett智能调度系统让种子索引器永远保持最新 你是否还在为种子索引器(Indexer)失效而烦恼?频繁手动更新软件版本、修复配置错误、同步Tracker列表——这些重复操作不仅浪费时间,还会导致下载中断。本文… · 2026/9/24 14:22:31

企业智能体迈向生产级:跳出Agent工具思维,构建可规模化落地的AI平台底座
企业智能体迈向生产级:跳出Agent工具思维,构建可规模化落地的AI平台底座

随着 AI 智能体技术快速普及,不少企业已经完成 Demo 概念验证,开始尝试将智能体投入真实生产业务。IDC 在《新型企业级 AI 平台正在兴起》报告中提出重要判断:新型企业级 AI 平台并不是大模型与智能体工具的简单叠加。想要让智能体从演示玩具… · 2026/9/24 14:22:31

告别资源混乱:Jackett索引器优先级设置完全指南
告别资源混乱:Jackett索引器优先级设置完全指南

告别资源混乱:Jackett索引器优先级设置完全指南 你是否曾经历过这样的困扰:在使用Jackett搜索资源时,大量重复或低质量的结果淹没了真正需要的内容?多个索引器同时返回结果,却无法按照你的偏好排序?本文将… · 2026/9/24 14:22:24

在 Vue 3 + Vite 中接入 InstantDB:从环境配置、Schema 同步到实时查询的完整实战指南
在 Vue 3 + Vite 中接入 InstantDB:从环境配置、Schema 同步到实时查询的完整实战指南

在 Vue 3 Vite 中接入 InstantDB:从环境配置、Schema 同步到实时查询的完整实战指南 【免费下载链接】instant Instant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps … · 2026/9/24 14:47:28

Maven多模块编译加速:从30分钟到8分钟的工程实践
Maven多模块编译加速:从30分钟到8分钟的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 14:47:21

F´ (F Prime) 开源飞控框架快速入门与核心架构指南
F´ (F Prime) 开源飞控框架快速入门与核心架构指南

嵌入式系统编程 【免费下载链接】fprime F - A flight software and embedded systems framework 项目地址: https://gitcode.com/gh_mirrors/fp/fprime 点击查看 免费下载 F(F Prime)是由 NASA 喷气推进实验室(JPL)开… · 2026/9/24 14:47:21

FerretDB 求值查询运算符实战指南:`$mod` 取模与 `$regex` 正则匹配全解析
FerretDB 求值查询运算符实战指南:`$mod` 取模与 `$regex` 正则匹配全解析

FerretDB 求值查询运算符实战指南:$mod 取模与 $regex 正则匹配全解析 【免费下载链接】FerretDB A truly Open Source MongoDB alternative 项目地址: https://gitcode.com/gh_mirrors/fe/FerretDB 求值查询运算符(Evaluation Query Operators&a… · 2026/9/24 14:47:21

Flet MenuStyle 完全指南:用 12 个属性精确控制菜单外观
Flet MenuStyle 完全指南:用 12 个属性精确控制菜单外观

前端跨平台桌面应用移动开发 【免费下载链接】flet Build realtime web, mobile and desktop apps in Python only. No frontend experience required. 项目地址: https://gitcode.com/gh_mirrors/fl/flet 点击查看 免费下载 flet.MenuStyle 是 Flet 中专门用于定义… · 2026/9/24 14:47:20

PaddleSpeech 流式 TTS 在线引擎(Python 动态图后端)源码级解析与实战指南
PaddleSpeech 流式 TTS 在线引擎(Python 动态图后端)源码级解析与实战指南

人工智能语音音频 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword… · 2026/9/24 14:47:11

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码