沈阳做网站黑酷科技/网站优化排名易下拉霸屏

沈阳做网站黑酷科技,网站优化排名易下拉霸屏,济南集团网站建设费用,做特殊原产地证的网站一、背景 说到参数初始化,先提一下大家常见的两个概念梯度消失和梯度爆炸。 (一)、梯度消失:深层网络的“静默杀手” 定义: 在反向传播过程中,梯度值随着网络层数增加呈指数级衰减,最终趋近…

一、背景

说到参数初始化,先提一下大家常见的两个概念梯度消失梯度爆炸

(一)、梯度消失:深层网络的“静默杀手”

定义

在反向传播过程中,梯度值随着网络层数增加呈指数级衰减,最终趋近于零,导致浅层权重几乎不更新。

核心成因
  1. 激活函数选择:Sigmoid/Tanh等函数在输入极大/极小时导数趋近0(如Sigmoid导数最大仅0.25),经多层连乘后梯度迅速消失。
  2. 链式法则连乘效应:梯度通过链式法则逐层传递,若每层梯度均小于1,总梯度将呈指数衰减。
  3. 权重初始化不当:初始权重过小或分布不合理,加剧前向信号衰减,间接导致梯度消失。
解决方案
  1. 激活函数优化:采用ReLU及其变种(Leaky ReLU、PReLU等),其正区间导数为1,避免梯度衰减。
  2. 权重初始化
    • He初始化:针对ReLU设计,使权重方差随输入神经元数调整。
    • Xavier初始化:适用于Sigmoid/Tanh,平衡前向/反向传播信号。
  3. 批量归一化(BN):通过归一化每层输入分布,减少内部协变量偏移,稳定梯度传播。
  4. 残差连接(ResNet):引入跨层跳跃连接,使梯度可直接传递至浅层,缓解衰减。
  5. LSTM/GRU门控机制:通过记忆单元选择性保留梯度,适用于序列数据。
案例

在MNIST分类任务中,使用He初始化+BN+残差连接,可将深度MLP精度提升至98%以上。

(二)、梯度爆炸:训练过程的“不稳定因子”

定义

        反向传播中梯度值随层数增加呈指数级增长,导致参数更新步长过大,模型无法收敛。

核心成因
  1. 权重初始化过大:初始权重过大时,梯度经多层连乘后迅速放大。
  2. 网络层数过深:深层网络加剧梯度累积效应。
  3. 学习率过高:过大学习率放大梯度更新幅度,加剧不稳定性。
实际影响
  • 模型参数更新剧烈,损失值震荡或发散(NaN)。
  • 浅层权重因梯度过大频繁越界,破坏已学习特征。
解决方案
  1. 梯度裁剪(Gradient Clipping)
    • 按值裁剪:限制梯度最大值(如clipvalue=1.0)。
    • 按范数裁剪:缩放梯度向量使其L2范数不超过阈值(如clipnorm=1.0)。
  2. 权重正则化:L1/L2正则化约束权重幅值,间接限制梯度增长。
  3. 优化器选择:使用Adam、RMSProp等自适应学习率算法,动态调整更新步长。
  4. 合理初始化:采用He/Xavier初始化,避免初始权重过大。
案例

        在训练深度RNN时,结合梯度裁剪(阈值=1.0)与LSTM单元,可稳定处理长序列数据。

(三)、对比与本质联系

维度梯度消失梯度爆炸
数学形式梯度 → 0(指数衰减)梯度 → ∞(指数增长)
核心诱因激活函数导数<1、层数过深权重初始化过大、学习率过高
后果浅层学习失效,模型退化参数更新不稳定,训练发散
通用策略ReLU+BN+残差连接梯度裁剪+权重正则化+自适应优化器

本质联系:二者均源于反向传播中梯度的连乘累积效应,是网络深度与参数初始化的“副作用”。

(四)、实践建议

  1. 优先使用ReLU激活函数,避免Sigmoid/Tanh的梯度衰减问题。
  2. 初始化策略:根据激活函数选择He或Xavier初始化。
  3. 深层网络必备:批量归一化+残差连接,稳定梯度传播。
  4. 梯度爆炸预防:默认启用梯度裁剪(阈值=1.0),尤其在RNN/Transformer中。
  5. 监控工具:利用TensorBoard跟踪梯度分布,及时检测异常。

通过理论创新与工程优化,梯度问题已不再是深度学习的“拦路虎”,反而推动了残差网络、Transformer等革命性架构的诞生。理解其机理并灵活应对,是掌握深度学习调参艺术的关键。

二、理论篇

经过背景的基本了解,相信大家都有个宏观的认知了,接下来从参数初始化、原理和实战的角度,带大家深入理解一下梯度消失和梯度爆炸这个两个概念。

(一)、公式推导

这里以线型层为列,假设我们堆叠了3层的全链接网络。

输入是X -> W1 -> H1(第一层隐层)->W2->H2(第二层隐层)->W3->输出层

我们对第二层的梯度进行分析。

H_1*W_2=H_2

\Delta W_2 = \frac{\partial loss}{\partial W_2}= \frac{\partial loss }{\partial out} * \frac{\partial out }{\partial H_2} * \frac{\partial H_2 }{\partial W_2} \\ = \frac{\partial loss }{\partial out} * \frac{\partial out }{\partial H_2} * H_1

我们从这个公式可以看出,第二层的梯度,会依赖上一层的输出。

如果H1趋近于0,则第二层梯度趋近于0,导致梯度消失

若H1趋近于无穷大,则第二层梯度趋近于无穷大,导致梯度爆炸。

因此我们需要约束上层的输出值大小,也就是说我们需要对每一层的网络输出进行约束。

这里大家可以实战操作一下,看看是不是符合预期~

(二)、数学推导

为了更细节的理解其原理,接下来进行一些简单的数学公式温习。

两个相互独立的随机变量

E(X+Y)=E(X)+E(Y)\\ E(XY)=E(X)*E(Y)\\ Var(x) = E(X^2) - [E(X))]^2\\ Var(X+Y)=Var(X)+Var(Y)\\ Var(XY)=Var(X)Var(Y)+Var(X)[E(Y)]^2+Var(Y)[E(X)] ^2\\

对上述公式做个简化,若X和Y 均为均值为0,方差为1,则有如下公式

Var(XY)=Var(X)Var(Y)

(三)、网络层神经元值推导

好了,有了上面的公式推导+数学基础,我们来细节看一下,隐藏层H的值是怎么变化的吧。

我们这里以隐层H1为例子,来看下H11(第一个隐层的第一个神经元的标准差的变化)。

这里还是假设我们的输入和W1服从均值0,标准差1的分布,我们来看看,经历过一层全链接后,分布的变化~

H_{11} = \sum_{i=0}^{n} X_i * W_{1i}\\ var(H_{11} ) = \sum_{i=0}^{n} var(X_i )* var(W_{1i})\\ = n * 1 * 1=n \\ std(H_{11} ) =\sqrt{var(H_{11} )} = \sqrt{n}

我们可以看出,标准差从1 变成了根号n,n为上一层的神经元个数。那么大家可以想象一下,随着网络层的不断加深,每层的标准差都会扩大根号n倍,尺度不断变大,最终就会超出最大精度范围,引发nan。

这里理论已经给出来了,大家也可亲手实践验证一下~

(四)、理论解决

针对上面nan的问题,如何解决呢?

我们从公式不难看出,我们的目标是让每层的分布保持标准差为1,而决定标准差的有三项,上层神经元个数、输出的方差和w的方差,因此,如果需要让结果目标层的标准差保持1不变,则需要。

std(W) =\sqrt{\frac{1}{n}}

(五)、激活函数引入

如果我们在一个简单的全链接网络里面,假设100层,我们会发现会出现nan,然后我们通过网络层参数的分布约束,可以保证最后一层的输出分布保持均值0,标准差1;但是如果这时候引入tanh激活函数,那么会发现随着层数加深,输出值逐渐减小。

因此引出了今天的正题!xavier初始化

三、xavier初始化

(一)、背景

Xavier初始化(又称Glorot初始化)是深度学习中一种经典的权重初始化方法,由Xavier Glorot和Yoshua Bengio于2010年提出。其核心思想是通过调整权重的初始值,使得神经网络在训练过程中能够保持信号的稳定传播,从而避免梯度消失或爆炸的问题。以下是Xavier初始化的详细解析:

(二)、核心原理

Xavier初始化的核心目标是保持每一层输入和输出的方差一致,确保信号(激活值)和梯度在多层网络中的双向稳定性。它特别适用于使用TanhSigmoid等对称激活函数的网络,因为这些激活函数在输入值为0附近时具有较大的梯度,有助于保持信号的稳定传播。

(三)、数学推导

1.前向传播方差分析

        假设 x 和 W 的元素独立同分布,且均值为0。为了保证输入和输出的方差一致,这个上面已经推导过了,不做过多阐述,直接写结果:

        var(W) = \frac{1}{n_{in}}

2.反向传播方差分析
  1. var(W) = \frac{1}{n_{out}}

3.调和平均

        综合前向和反向传播的方差要求,Xavier初始化取两者的调和平均:

        var(W) = \frac{1}{n_{in}+n_{out}+2}

(四)、实现方式

        1.均匀分布

 权重 W 的值在区间[-\frac{\sqrt{6}}{\sqrt{​{n_{in}+n_{out}}}},+\frac{\sqrt{6}}{\sqrt{​{n_{in}+n_{out}}}}] 内均匀随机采样。

        2.正态分布

权重 W 服从均值为0、方差为 \frac{2}{n_{in}+n_{out}} 的正态分布。

(五)、应用场景

  • 适用网络:前馈神经网络(FNN)、自编码器、使用Tanh或Sigmoid激活函数的卷积神经网络(CNN)或循环神经网络(RNN)。
  • 深层网络:通过平衡信号传播,改善深层网络的训练效果,避免梯度消失或爆炸。

(六)、与其他初始化方法的对比

方法核心思想适用激活函数特点
Xavier初始化保持输入输出方差一致Tanh、Sigmoid通用性强,适合对称激活函数
He初始化适配ReLU的非线性特性ReLU及其变体放大方差以应对ReLU的梯度衰减,适合非对称激活函数
零初始化所有权重设为0简单但无效,导致神经元对称性
随机初始化小随机数初始化通用需手动调参,稳定性差

(七)、代码实现(PyTorch示例)

import torch
import torch.nn as nn# 创建一个线性层
layer = nn.Linear(128, 64)# 使用Xavier均匀分布初始化
nn.init.xavier_uniform_(layer.weight)# 使用Xavier正态分布初始化
# nn.init.xavier_normal_(layer.weight)

(八)、局限性

  1. 激活函数假设:推导基于激活函数为线性的假设,对ReLU等非对称激活函数效果有限。
  2. 梯度稳定性:虽能缓解梯度问题,但在极深网络中仍需结合批归一化(Batch Normalization)等技术。

(九)、总结

Xavier初始化解决的是饱和激活函数(sigmoid/tanh)\但是针对非饱和激活函数,relu等无效。那么针对于relu这种激活函数该怎么办呢?可以使用kaiming初始化。

(十)、引申kaiming初始化

核心思想适用激活函数特点
Kaiming初始化保持输入输出方差一致,适配ReLU特性ReLU及其变体通过放大方差补偿ReLU的梯度衰减,适合非对称激活函数
Xavier初始化保持输入输出方差一致Tanh、Sigmoid通用性强,适合对称激活函数

四、附加题-面试常问

先对上述内容进行总结,总而言之,言而总之、所有的初始化方法都是为了,保证输入和输出的分布一致行,防止导致梯度消失和梯度爆炸。

具体的面试题,大家可以跳转这个链接去查看:

面试常问系列(二)-神经网络参数初始化之自注意力机制-CSDN博客

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

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

相关文章

(学习总结29)Linux 进程概念和进程状态

Linux 进程概念 冯诺依曼体系结构软件运行与存储分级数据流动的理论过程 操作系统操作系统(Operator System) 概念操作系统的功能与作用系统调用和库函数概念 进程概念描述进程 - PCBtask_struct查看进程通过系统调用获取进程标示符 PID通过系统调用 fork 函数创建进程简单使用…

Wi-Fi NAN 架构(Wi-Fi Aware Specification v4.0,第2章:2.3~2.6)

1. NAN 数据通信架构 1.1 单播支持 要在两个NAN设备之间启动单播数据通信&#xff0c;服务需发起一个NAN数据路径&#xff08;NDP&#xff0c;NAN Data Path&#xff09;请求。这对NAN设备之间会建立一个NAN设备链路&#xff08;NDL&#xff0c;NAN Device Link&#xff09;&…

Lineageos 22.1(Android 15)实现负一屏

一、前言 方案是参考的这位大佬的&#xff0c;大家可以去付费订阅支持一波。我大概理一下Android15的修改。 大佬的方案代码 二、Android15适配调整 1.bp调整&#xff0c;加入aidl引入&#xff0c;这样make之后就可以索引代码了 filegroup {name: "launcher-src"…

Java 大视界 -- Java 大数据在智能医疗远程会诊与专家协作中的技术支持(146)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

练习:运动计划

需求&#xff1a;键盘录入星期数&#xff0c;显示今天的减肥活动。 周一&#xff1a;跑步&#xff1b; 周二&#xff1a;游泳&#xff1b; 周三&#xff1a;慢走&#xff1b; 周四&#xff1a;骑动感单车&#xff1b; 周五&#xff1a;拳击&#xff1b; 周六&#xff1a;…

《TCP/IP网络编程》学习笔记 | Chapter 20:Windows 中的线程同步

《TCP/IP网络编程》学习笔记 | Chapter 20&#xff1a;Windows 中的线程同步 《TCP/IP网络编程》学习笔记 | Chapter 20&#xff1a;Windows 中的线程同步用户模式和内核模式用户模式同步内核模式同步 基于 CRITICAL_SECTION 的同步内核模式的同步方法基于互斥量对象的同步基于…

VBA-Excel

VBA 一、数据类型与变量 常用数据类型&#xff1a; Byte&#xff1a;字节型&#xff0c;0~255。Integer&#xff1a;整数型&#xff0c;用于存储整数值&#xff0c;范围 -32768 到 32767。Long&#xff1a;长整型&#xff0c;可存储更大范围的整数&#xff0c;范围 -214748364…

PairRE: Knowledge Graph Embeddings via Paired Relation Vectors(论文笔记)

CCF等级&#xff1a;A 发布时间&#xff1a;2020年11月 25年3月24日交 目录 一、简介 二、原理 1.整体 2.关系模式 3.优化模型 三、实验性能 四、结论和未来工作 一、简介 将RotatE进行生级&#xff0c;RotatE只对头实体h进行计算&#xff0c;PairRE对头尾实体都进行…

从报错到成功:Mermaid 流程图语法避坑指南✨

&#x1f680; 从报错到成功&#xff1a;Mermaid 流程图语法避坑指南 &#x1f680; &#x1f6a8; 问题背景 在开发文档或技术博客中&#xff0c;我们经常使用 Mermaid 流程图 来可视化代码逻辑。但最近我在尝试绘制一个 Java Stream 转换流程图时&#xff0c;遭遇了以下报错…

Android10 系统截屏功能异常的处理

客户反馈的问题&#xff0c;设备上使用状态栏中“长截屏”功能&#xff0c;截屏失败且出现系统卡死问题。 在此记录该问题的处理 一现象&#xff1a; 设备A10上使用系统“长截屏”功能&#xff0c;出现截屏失败&#xff0c;系统死机。 二复现问题并分析 使用设备操作该功能&…

ENSP学习day9

ACL访问控制列表实验 ACL&#xff08;Access Control List&#xff0c;访问控制列表&#xff09;是一种用于控制用户或系统对资源&#xff08;如文件、文件夹、网络等&#xff09;访问权限的机制。通过ACL&#xff0c;系统管理员可以定义哪些用户或系统可以访问特定资源&#x…

JVM的组成--运行时数据区

JVM的组成 1、类加载器&#xff08;ClassLoader&#xff09; 类加载器负责将字节码文件从文件系统中加载到JVM中&#xff0c;分为&#xff1a;加载、链接&#xff08;验证、准备、解析&#xff09;、和初始化三个阶段 2、运行时数据区 运行时数据区包括&#xff1a;程序计数…

RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”

嘿&#xff0c;亲爱的算法工程师们&#xff01;今天咱们聊一聊PDF解析的那些事儿&#xff0c;简直就像是在玩一场“信息捉迷藏”游戏&#xff01;PDF文档就像是个调皮的小精灵&#xff0c;表面上看起来规规矩矩&#xff0c;但当你想要从它那里提取信息时&#xff0c;它就开始跟…

Python网络编程入门

一.Socket 简称套接字&#xff0c;是进程之间通信的一个工具&#xff0c;好比现实生活中的插座&#xff0c;所有的家用电器要想工作都是基于插座进行&#xff0c;进程之间要想进行网络通信需要Socket&#xff0c;Socket好比数据的搬运工~ 2个进程之间通过Socket进行相互通讯&a…

mac calDAV 日历交互

安装Bakal docker https://sabre.io/dav/building-a-caldav-client/ 在Bakal服务器上注册账户 http://localhost:8080/admin/?/users/calendars/user/1/ 在日历端登录账户&#xff1a; Server: http://127.0.0.1:8080/dav.php Server Path: /dav.php/principals/lion No e…

Python设计模式 - 适配器模式

定义 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它用于将一个类的接口转换为客户端所期待的另一个接口。 注&#xff1a;在适配器模式定义中所提及的接口是指广义的接口&#xff0c;它可以表示一个方法或者一组方法的集合。 结构 …

【前端工程化】

目录 前端工程户核心技术之模块化前端模块化的进化过程commonjs规范介绍commonjs规范示例commonjs模块打包 amd规范、cmd规范前端工程化关键技术之npmwebpack原理 前端工程户核心技术之模块化 前端模块化是一种标准&#xff0c;不是实现。commonjs是前端模块化的标准&#xff…

T113-i开发板的休眠与RTC定时唤醒指南

​​在嵌入式系统设计中&#xff0c;休眠与唤醒技术是优化电源管理、延长设备续航的关键。飞凌嵌入式基于全志T113-i处理器开发设计的OK113i-S开发板提供了两种休眠模式&#xff1a;freeze和mem&#xff0c;以满足不同应用场景下的功耗与恢复速度需求。本文将详细介绍如何让OK1…

SpringBoot项目实战(初级)

目录 一、数据库搭建 二、代码开发 1.pom.xml 2.thymeleaf模块处理的配置类 3.application配置文件 4.配置&#xff08;在启动类中&#xff09; 5.编写数据层 ②编写dao层 ③编写service层 接口 实现类 注意 补充&#xff08;注入的3个注解&#xff09; 1.AutoWir…

某视频的解密下载

下面讲一下怎么爬取视频&#xff0c;这个还是比小白的稍微有一点绕的 首先打开网址&#xff1a;aHR0cDovL3d3dy5wZWFydmlkZW8uY29tL3BvcHVsYXJfNA 首页 看一下&#xff1a; 有一个标题和一个href&#xff0c;href只是一个片段&#xff0c;待会肯定要拼接&#xff0c; 先找一…