深度学习-----------数值稳定性

news2025/1/22 13:06:55

目录

  • 神经网络的梯度
  • 数值稳定性的常见两个问题
    • 例子:MLP
  • 梯度爆炸
    • 梯度爆炸的问题
  • 梯度消失
    • 梯度消失的问题
  • 总结
  • 模型初始化和激活函数
    • 让训练更加稳定
    • 让每层的方差是一个常数
  • 权重初始化
  • 正向均值和方差
    • 正向均值
    • 正向方差
  • 反向均值和方差
  • Xavier初始
  • 正向和反向的均值和方差(书上)
    • 正向均值和方差
    • 反向均值和方差
  • 从线性的激活函数的角度提升数值稳定性
    • 正向
    • 反向
  • 检查常用激活函数
  • 总结
  • 问题

在这里插入图片描述

神经网络的梯度

考虑如下有d层的神经网络,输入x和输出y的深层网络。每一层t由线性变换 f 1 f_1 f1定义,该变换的参数为权重 w ( t ) w^{(t)} w(t),其隐藏变量是 h ( t ) h^{(t)} h(t)(令 h ( 0 ) h^{(0)} h(0)=x)。我们的网络可以表示为:

在这里插入图片描述
层:记作t
l:损失函数(即预测的要进行优化的目标函数)
y:y不是预测,还包括损失函数

计算损失l关于参数 w ( t ) w^{(t)} w(t)的梯度。

在这里插入图片描述




数值稳定性的常见两个问题

在这里插入图片描述

例子:MLP

加入如下MLP(为了简单省略了偏移)(即MLP:多层感知机的模型)

在这里插入图片描述
首先对激活函数进行求导,它是一个按元素的一个函数,所以对它的求导就变成一个diag(对角)矩阵

在这里插入图片描述




梯度爆炸

使用ReLU作为激活函数
在这里插入图片描述
在这里插入图片描述
通过(元素为0和1的)对角矩阵与在这里插入图片描述相乘,那么意味着把某一列留住了,要么把它全变为0。



在这里插入图片描述是指那些没有变成0的那一列的乘法



如果d-t很大,值将会很大。(意思是网络比较深的话,那么它的值会比较大,因为里面全是w的元素,假设每个w的元素都是大于1的话,而且层数比较大的情况下,那么就会有非常大的值。)




梯度爆炸的问题

值超出值域(infinity)
    对于16位浮点数尤为严重(数值区间为(6e-5,6e-4))

对学习率敏感
    如果学习率太大→大参数值→更大的梯度
(如果学习率太大,那么就会带来比较大的参数值,因为每一步走的比较远,那么权重会变的比较大,权重变大对应的梯度更大(这里的梯度即:权重的乘法))在这里插入图片描述

    如果学习率太小→训练无进展
我们可能需要在训练过程不断调整学习率。




梯度消失

使用sigmoid作为激活函数
在这里插入图片描述
在这里插入图片描述
当激活函数的输入稍微大一点时,它的导数就变为接近0,连续n个接近0的数相乘,最后的梯度就接近0,梯度就消失了。

梯度消失的问题

梯度值变成0
    对16位浮点数尤为严重

训练没有进展
    不管如何选择学习率
(梯度为0,不管学习率如何变都不会有进展,权重=学习率*梯度)

对于比较深的网络的时候,对于底层尤为严重
    仅仅顶部层训练的较好
    无法让神经网络更深




总结

当数值过大或者过小时会导致数值问题。
常发生在深度模型中,因为其会对n个数累乘。




模型初始化和激活函数

让训练更加稳定

在这里插入图片描述
目标:让梯度值在合理的范围内
    例如:[1e-6,1e3]
将乘法变加法
    ResNet,LSTM
归一化
    梯度归一化,梯度裁剪
合理的权重初始和激活函数




让每层的方差是一个常数

将每层的输出和梯度都看做随机变量
让它们的均值和方差都保持一致

在这里插入图片描述




权重初始化

在合理值区间里随机初始参数
训练开始的时候更容易有数值不稳定
    远离最优解的地方损失函数表面可能很复杂(比较陡,说明梯度越大)
    最优解附近表面会比较平
使用N(0,0.01)来初始可能对小网络没问题,但不能保证深度神经网络。

在这里插入图片描述

正向均值和方差

例子:MLP
假设
在这里插入图片描述
(即:权重是一个独立同分布(Independent identical distribution),代表的意思是权重的第t层第i行第j列,那么均值等于0,方差等于 γ t γ_t γt,t为其层数。
t-1层的输入独立于当前的权重。


正向均值

在这里插入图片描述

正向方差

方差=平方的期望-期望的平方
在这里插入图片描述



方差=在这里插入图片描述平方项的均值-在这里插入图片描述均值的平方。
其中在这里插入图片描述为0.

在这里插入图片描述全独立,每个的均值为0,

在这里插入图片描述在这里插入图片描述的均值为0,这两项就等价于其方差。
题设:在这里插入图片描述
其中对j进行求和,j的取值就是[0,t-1]
n t − 1 n_{t-1} nt1是第t-1层的维度数



反向均值和方差

在这里插入图片描述




Xavier初始

在这里插入图片描述




正向和反向的均值和方差(书上)

正向均值和方差

假设:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述相互独立
在这种情况下,我们可以按如下方式计算 o_i 的平均值和方差:

在这里插入图片描述
保持方差不变(在这里插入图片描述)的一种方法是设置在这里插入图片描述


反向均值和方差

假设:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到,除非在这里插入图片描述
否则梯度的方差可能会增大,其中 在这里插入图片描述是该层的输出的数量。这使得我们进退两难:我们不可能同时满足这两个条件。 相反,我们只需满足:

在这里插入图片描述或等价于在这里插入图片描述

通常,Xavier初始化从均值为零,方差在这里插入图片描述高斯分布中采样权重。
我们也可以将其改为选择从均匀分布中抽取权重时的方差。 注意均匀分布在这里插入图片描述的方差为在这里插入图片描述。 将在这里插入图片描述代入到 在这里插入图片描述的条件中,将得到初始化值域:

在这里插入图片描述




从线性的激活函数的角度提升数值稳定性

正向

在这里插入图片描述

反向

在这里插入图片描述




由以上推理可知:从激活函数的角度保持每层的输入和输出的均值和方差不变,必须使得激活函数 在这里插入图片描述






检查常用激活函数

在这里插入图片描述




总结

合理的权重初始值和激活函数的选取可以提升数值稳定性。




问题

①nan(not a number)和inf是怎么产生的以及怎么解决吗?
inf是太大了,权重初始没更新
nan是除0产生的。
解决:合理初始化权重、学习率、激活函数

②在训练的过程中,如果网络层的输出层特征元素的值突然变成nan了,是发生了梯度爆炸了吗?还是有什么其它可能的原因?
对,一般来说nan就是梯度太大造成的,所以一般是梯度的问题

③梯度消失可以说是因为使用了sigmoid激活函数引起的对吗?所以我们可以用ReLU替换sigmoid解决梯度消失的问题吗?
不对,梯度消失有很多可能因素,不一定是sigmoid引起的。ReLU替换sigmoid可以让梯度消失的概率减少。

④为什么乘法变加法可以让训练更稳定?
100个1.5乘在一起梯度会炸,但100个1.5相加没问题。

⑤使用resnet为什么还会出现数值稳定性问题?
只能缓解问题不能解决问题。

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

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

相关文章

HTTP:从基础概念到协议机制,详解请求响应与状态保持

文章目录 一、HTTP概述1、HTTP的理解2、HTTP是无状态的协议 二、HTTP协议的过程1、URL(统一资源定位符)2、客户端3、服务器端 三、HTTP请求与响应1、HTTP请求和响应2、HTTP请求方法3、状态码 四、HTTP报文1、请求报文首部2、响应报文首部3、首部字段 五、…

全网唯一!R语言顶刊配色包TheBestColors

与Matlab相比,R语言在绘图方面有着天然的优势。 比如在配色方面,R语言有各式各样现成的包,按理说配色这种事应该很方便才对。 但实际体验下来,发现似乎不是那么回事。 首先,你很难记住每个包的调用方法以及每种配色…

【autodl】stable-diffusion-3-medium快速部署

sd3m是一个文生图模型,支持英文提示词, 支持自然语言 stable diffusion 3 medium 是一个开源模型,本教程是在autodl上部署modelscope上的sd3模型。下面是运行的webui页面图 配置 充值autodl ,并且创建一个服务器:我的…

7.C基础_数组

一维数组 1、数组定义 形式&#xff1a;<数据类型> <数组名>[元素数量]&#xff0c;如&#xff1a;int a[3]; 数组的元素&#xff1a;组成数组的各个变量 注意&#xff1a; 数组中各元素的数据类型要求相同元素数量必须为整数&#xff0c;数组一旦创建&#x…

图片管理组建

父 <template><div style"height: 100%;"><!-- 加载中 --><div class"demo-spin-cols" :style"loading"><Icon type"ios-loading" size18 class"demo-spin-icon-load"></Icon><div…

【Kubernetes】Deployment 的状态

Deployment 的状态 Deployment 控制器在整个生命周期中存在 3 3 3 种状态&#xff1a; 已完成&#xff08;Complete&#xff09;进行中&#xff08;Progressing&#xff09;失败&#xff08;Failed&#xff09; 通过观察 Deployment 的当前特征&#xff0c;可以判断 Deploym…

『 Linux 』线程安全的单例模式,自旋锁与读写锁

文章目录 单例模式懒汉模式与饿汉模式 自旋锁读写锁 单例模式 单例模式是一种创建型设计模式,其主要目的是确保一个类只有一个实例,并提供一个全局访问点来访问该实例; 这在需要严格控制如何及合适访问某个唯一资源型下有一定作用; 单利模式的主要特点为如下: 私有构造函数 单…

使用Dockerfile构建一个包含NVIDIA的PyTorch和Detectron2的镜像

查看Dockerfile 以下是详细的解释&#xff1a; # 使用更具体的标记来固定基础镜像版本&#xff0c;确保环境一致性 FROM nvcr.io/nvidia/pytorch:23.01-py3# 设置工作目录和环境变量 WORKDIR /root ENV DETECTRON2_PATH /root/detectron2# 复制并安装 Detectron2 COPY detect…

YOLOv10模型训练、验证、推理

前言 yolov10关于模型的各种参数其实都写到了一起&#xff08;包括训练、验证和推理的参数&#xff09;&#xff0c;在./ultralytics/cfg/default.yaml中&#xff0c;通过使用这些指令我们可以实现各种所需的操作。 代码地址&#xff1a;https://github.com/THU-MIG/yolov10 …

【Material-UI 组件】Autocomplete 中的 Grouped 功能详解

文章目录 一、组件概述1.1 Grouped 功能介绍1.2 适用场景 二、基础用法2.1 实现 Grouped 功能代码拆解 三、高级配置3.1 自定义组渲染3.2 常见配置 四、最佳实践4.1 数据排序4.2 组标题优化4.3 性能优化4.4 可访问性 五、总结 Grouped 功能使得 Autocomplete 组件能够按特定维度…

Linux系统驱动(三)ioctl函数

文章目录 一、ioctl函数&#xff08;一&#xff09;函数格式&#xff08;二&#xff09;ioctl命令码的组成1. 命令码的组成2. 自己封装命令码2. 内核提供了封装命令码的宏 &#xff08;三&#xff09;使用示例1. 驱动2. 应用 一、ioctl函数 Linux内核开发者想要将数据的读写和…

c++ 21 指针

*像一把钥匙 通过钥匙去找内存空间 间接修改内存空间的值 不停的给指针赋值 等于不停的更改指针的指向 指针也是一种数据类型 指针做函数参数怎么看都不可以 指针也是一个数据类型 是指它指向空间的数据类习惯 作业 野指针 向null空间地址copy数据 不断改变指针指向 …

JVM的组成 -- 字节码文件

类加载器(ClassLoader)&#xff1a;将字节码文件加载到内存中运行时数据区(JVM管理的内存)&#xff1a;负责管理JVM使用的内存&#xff0c;比如创建对象和销毁对象执行引擎&#xff1a;即时编译器、解释器、垃圾回收器。负责本地接口的调用本地接口&#xff1a;native方法&…

高等数学 第八讲 积分学计算_不定积分_定积分_反常积分的计算

高等数学 第八讲 积分学计算 文章目录 高等数学 第八讲 积分学计算1.不定积分的计算1.1 基本积分公式1.2 不定积分的计算方法1.2.1 凑微分法1.2.2 换元法1.2.3 分布积分法1.2.4 有理函数的积分计算(待更新)1.2.5 不定积分的一些计算结论总结 2.定积分的计算2.1 牛顿莱布尼茨公式…

大数据Flink(一百零八):阿里云与开源的功能优势对比

文章目录 阿里云与开源的功能优势对比 阿里云与开源的功能优势对比 下面通过表格介绍阿里云实时计算Flink全托管产品的功能点和价值&#xff0c;以及和开源Flink的对比优势。 类型 功能 描述 价值 性能与成本 资源利用率提升 可以根据业务负载进行弹性扩缩容。 更好的…

手摸手教你前端和后端是如何实现导出 Excel 的?

前言 大家好呀&#xff0c;我是雪荷。在上篇文章&#xff08;EasyExcel 初使用—— Java 实现多种写入 Excel 功能-CSDN博客&#xff09;中给大家介绍了 Java 是如何写入 Excel 的&#xff0c;那么这篇算是对上篇文章的拓展&#xff0c;主要介绍前端和后端分别是如何导出数据至…

一篇了解: MyBatis-Plus 操作数据库的使用

目录 一、MyBatis-Plus介绍 二、基础使用 2.1 准备工作 2.2 编码 2.3 CRUD单元测试 三、MyBatis-Plus复杂操作 3.1 打印日志 3.2 常见注解 3.2.1 TableName 3.2.2 TableField 3.2.3 TableId 3.3 条件构造器 3.3.1 QueryWrapper 3.3.2 UpdateWrapper 3.3.3 Lamb…

网络空间安全专业怎么样,可通过哪些途径自学?

网络空间安全主要研究网络空间的组成、形态、安全、管理等&#xff0c;进行网络空间相关的软硬件开发、系统设计与分析、网络空间安全规划管理等。例如&#xff0c;网络犯罪的预防&#xff0c;国家网络安全的维护&#xff0c;杀毒软件等安全产品的研发&#xff0c;网络世界的监…

计算机常识与NOIP历史-CSP初赛知识点整理

真题练习 [2021-CSP-J-第2题] 以下奖项与计算机领域最相关的是&#xff08; &#xff09;。 A.奥斯卡奖 B.图灵奖 C.诺贝尔奖 D.普利策奖 [2017-NOIP-第7题] 中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。 A. 1983 B. 1984 C. 1985 D. 1986 [2018-NOIP-第5题…

Professional Scrum Master (PSM) 官方认证培训班:掌握Scrum,提升项目管理能力

在快速变化的商业环境中&#xff0c;高效的项目管理和团队协作是企业成功的关键。作为一种广泛认可的敏捷框架&#xff0c;Scrum已成为推动项目成功和提高团队效率的重要工具。为了帮助专业人士掌握Scrum方法和实践&#xff0c;Scrum.org推出了Professional Scrum Master (PSM)…