跟着李沐老师学习深度学习(八)
数值稳定性 + 模型初始化和激活函数
数值稳定性
神经网络的梯度
- 考虑如下d层的神经网络(t代表层)
- 计算损失 l 关于参数 Wt 的梯度:
这样的矩阵乘法带来的问题:
(1)梯度爆炸
(2)梯度消失
例子:MLP
- 加入如下MLP(省略偏移)
进行累乘:
(1) 梯度爆炸
-
使用ReLU 作为激活函数
假设W中的值都大于1,那么会得到很大的值(梯度爆炸) -
梯度爆炸的问题
- 值超出值域(infinity)
- 对于 16位浮点数尤为严重(数值区间 6e-5-6e4)
- 对学习率敏感
- 如果学习率太大 ->大参数值 ->更大的梯度
- 如果学习率太小->训练无进展
- 我们可能需要在训练过程不断调整学习率
- 值超出值域(infinity)
(2) 梯度消失
-
使用 sigmoid作为激活函数
当输入相对较大的时候,激活函数的导数会变成0; -
梯度消失的问题
- 梯度值变成 0
- 对 16 位浮点数尤为严重
- 训练没有进展
- 不管如何选择学习率
- 对于底部层尤为严重
- 仅仅顶部层训练的较好
- 无法让神经网络更深(和一个很浅的神经网络没有区别)
(反向传播,更新参数,w越来越小,最终趋于零,也失去了学习的必要)
- 梯度值变成 0
总结
- 当数值过大或者过小时会导致数值问题
- 常发生在深度模型中,因为其会对n个数累乘
让训练更加稳定
目标:让梯度值在合理的范围内,例如[le-6,1e3]
- 将乘法变加法
- ResNet, LSTM
- 归一化:将梯度变成均值为0,方差为1
- 梯度归一化,梯度裁剪
- 合理的权重初始和激活函数
模型初始化和激活函数
让每层的方差是一个常数
- 将每层的输出和梯度都看做随机变量
- 让它们的均值和方差都保持一致
t: 第t层;i: 第i个变量
假设:我们想要的输出如下:所有的输出和梯度的均值、方差 都在一个常数
权重初始化
- 在合理值区间里随机初始参数
- 训练开始的时候更容易有数值不稳定
- 远离最优解的地方损失函数表面可能很复杂
- 最优解附近表面会比较平
- 使用 N(0,0.01)来初始可能对小网络没问题,但不能保证深度神经网络
如何保证之前的假设成立呢?
例子:MLP
-
假设:
i.i.d:独立同分布;均值E为0,Var方差为一个常数;当前层的权重和当前层的输入是一个独立事件。 -
假设没有激活函数:
实现的目标中的 正向方差:
【方差公式】方差等于平方的期望减去期望的平方:方差D(X)=E(X^ 2)-E(X)^2
对于和的平方 等价于 每一项的平方+不相等的交叉项的乘积和
第二行的加号后面的累加为0的原因是:之前假设了wt_i,j是独立的同分布(即 i.i.d),那么w_t_i,j的均值就为0,即E(wti,j)=0,即 E(第二行第二项)=0
方差 = 平方的期望 - 期望的平方 现在期望的平方等于0,所以方差 = 平方的期望,可得到第四行
n_t-1:当前第t层的输入的维度
接下来看 反向的均值和方差
注意: (AB)转置=B转置xA转置
和正向类似,老师并没有细推:
Xavier初始化:(常用的权重初始化的方法)
基于该方式对某层权重初始化时,该层权重的初始化会根据该层的输入维度、输出维度来决定(如权重的方差),尤其是当 输入输出维度不一定、或网络变化比较大时,可以根据输入输出维度来适配权重,使得输出的方差和梯度都在恒定(合理)的范围内
满足正向和反向的条件很难,但可以取一个折中的方法:即 给定当前第t层的输入维度nt-1和输出维度nt的大小,那么就可以由这俩得到当前第t层的权重的方差γt。
假设 线性的激活函数(只是为了简单理论分析,实际上不可能用线性的激活函数))
这就说明:为了使正向的输出为均值为0、方差为固定值,则要求线性激活函数的α=1、β=0,即为 输入x本身;
反向,与正向类似:
也说明:激活函数必须是f(x)=x;
最后,检查真正的激活函数(因为激活函数都是非线性的,而上面是以线性激活函数举例的),如使用泰勒展开:
可以发现下图中tanh和relu在原点处基本都是f(x)=x,虽然sigmoid不过原点,但经过调整后的sigmoid(如下图中蓝线,即 乘四再减二后)也是过原点且在原点处近似为f(x)=x(即 经过调整后的sigmoid函数也能解决以前原sigmoid存在的问题)
为何只关注在0点附近的表现是否能满足f(x)=x的要求:因为一般神经网络的权重w的取值都是在0附近的。
QA
-
问题:nan、inf如何产生,以及怎么解决?
inf:就是太大,即一般是lr太大或 权重初始化时太大了
nan一般是 除0了- 解决:
合理初始化权重(权重的初始 一般均值为0,方差小一点,当能出现正确的值之后 再慢慢调大权重(的方差)使得训练有进展)
选择合适的激活函数、选择合适大小的lr(一般是把lr一直往小调 直到inf、nan不出现)
- 解决:
-
问题:使用ReLU激活函数是如何做到拟合x平方或者三次方这种曲线的?
不是单独的relu来拟合,而是relu+学习到的权重w 共同作用(只是基于relu提供非线性的特性) -
问题:梯度消失可以说是因为使用了sigmoid激活函数引起的对吗?所以我们可以用ReLU替换sigmoid解决梯度消失的问题?
梯度消失产生的原因有很多种,sigmoid只是其中的一种可能
用ReLU替换 可以降低 产生梯度消失的概率,但不确保一定能完全解决 -
问题:梯度爆炸是由什么激活函数引起的吗?
爆炸的产生和激活函数无关,一般都是由每层的输出太大 然后多个层累乘引起的 -
问题:resnet还是会出现数值稳定性?
各种技术都是在缓解、减轻问题,但不是完全解决,用ResNet只是会让数值稳定性更好一点(整个深度学习的进展都是在 让数值更加稳定)
总结
- 合理的权重初始值和激活函数的选取可以提升数值稳定性
相关文章:

跟着李沐老师学习深度学习(八)
数值稳定性 模型初始化和激活函数 数值稳定性 神经网络的梯度 考虑如下d层的神经网络(t代表层) 计算损失 l 关于参数 Wt 的梯度: 这样的矩阵乘法带来的问题: (1)梯度爆炸 (2)梯度…...

元宵小花灯
吃完饭散步回来的路上,看到一个小朋友拿着元宵小灯,后面的家长也闲适的哼着歌。 想起前阵子看到说,大人爱看小孩玩,也是共享那份天真快乐吧。 我小时候每年的元宵节,也有自己的小灯,那是九几年,…...

算法——搜索算法:原理、类型与实战应用
搜索算法:开启高效信息检索的钥匙 在信息爆炸的时代,搜索算法无疑是计算机科学领域中熠熠生辉的存在,它就像一把神奇的钥匙,为我们打开了高效信息检索的大门。无论是在日常生活中,还是在专业的工作场景里,…...

告别传统测量:三维扫描仪测量工件尺寸
在现代制造业中,精确测量工件尺寸是确保产品质量和生产效率的关键环节。然而,传统测量方法往往存在效率低下、精度不足以及操作复杂等问题,难以满足高精度和复杂形状工件的测量需求。 传统工件尺寸测量主要依赖于卡尺、千分尺、三坐标测量仪…...

win32汇编环境,对话框程序使用跟踪条(滑块)控件示例一
;运行效果 ;win32汇编环境,对话框程序使用跟踪条控件示例一 ;生成2条横的跟踪条,分别设置不同的数值范围,设置不同的进度副度的例子 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>…...

WordPress 角标插件:20 种渐变色彩搭配,打造专属菜单标识
源码介绍 WordPress 角标插件使用教程 本插件旨在为 WordPress 菜单添加角标,并且支持 20 种不同的角标样式。 使用步骤 您可以在 WordPress 后台的“插件”页面中,找到“WordPress 角标插件”,然后点击激活按钮。您需要进入主题的菜单设置…...

【鸿蒙开发】第二十九章 Stage模型-应用上下文Context、进程、线程
目录 1 Stage模型基本概念 1.1 开发流程 3 应用上下文Context的典型使用场景 3.1 获取应用文件路径 3.2 获取和修改加密分区 3.3 获取本应用中其他Module的Context 3.4 订阅进程内UIAbility生命周期变化 4 进程 4.1 概述 5 线程 5.1 线程类型 5.2 使用EventHub进行线…...

window 安装GitLab服务器笔记
目录 视频: 资源: Linux CeneOS7: VMware: Linux无法安装 yum install vim -y 1.手动创建目录 2.下载repo PS 补充视频不可复制的代码 安装GitLab *修改root用户密码相关(我卡在第一步就直接放弃了这个操作&…...
3dgs 2025 学习笔记
CVPR 2024 3D方向总汇包含(3DGS、三维重建、深度补全、深度估计、全景定位、表面重建和特征匹配等)_cvpr2024-structure-awaresparse-viewx-ray3dreconstr-CSDN博客 https://github.com/apple/ml-hugs 3DGS COLMAP-Free 3D Gaussian Splatting ⭐code &…...
2024.1.2版本Android Studio gradle下载超时问题处理
一、问题背景 在项目的根build.gradle里面配置了以下地址后,依旧下载gradle包失败,平常如果出现第三方库或者gradle下载失败,配置以下地址,一般可以下载成功 maven { url https://maven.aliyun.com/repository/public } maven { url https://maven.aliyun.com/nex…...

ffmpeg学习:ubuntu下编译Android版ffmpeg-kit
文章目录 前言一. 配置环境1.1 虚拟机版本1.2 安装Android环境1.2.1 Android SDK安装1.2.2 Android NDK安装 1.3 编译前的准备工作1.3.1 libtasn1-1安装1.3.2 meson安装1.3.3 harfbuzz下载 二. 编译ffmpeg-kit三. 总结 前言 ffmpeg-kit是一款跨多个平台的,用于在应…...
mydb:TM实现
一、说明 TM就是事务管理:实现对于事务的新增(active)、事务的状态修改(commit、abort)、事务的状态判断 二、事务管理 2.1创建xid文件/打开xid文件 创建xid、写一个空的 XID 文件头并创建TM public static Transac…...
神经缩放定律:涌现能力与神经元数量、参数数量、数据集大小以及训练所使用的计算量有关
大语言模型的神经缩放定律 大语言模型(LLMs)在自然语言处理领域取得了显著进展,这很大程度上得益于神经缩放定律。该定律指出,模型的损失与模型规模、数据集大小以及训练所使用的计算量呈幂律关系 ,随着模型参数、数据量等的增加,模型会展现出涌现能力,性能会有质的飞跃…...

Microsoft Porject常用字段描述
点击下载《Microsoft Porject常用字段描述》 1. 前言 Microsoft Project 是项目管理中不可或缺的工具,它通过丰富的列(字段)帮助项目经理全面跟踪和管理项目的各个方面。这些列名通常以简称的形式出现,如 ACWP、BCWP、BCWS 等&a…...

web前端开发中vscode常用的快捷键
1.快速复制一行 快捷键: shiftalt 下箭头(上箭头) 或者 ctrlc 然后 ctrlv 2.选定多个相同的单词 快捷键: ctrl d 先双击选定一个单词,然后按下 ctrl d 可以往下依次选择相同的单词。 这样同时修改相同的单词 3.全局替换某单词 当我们一个…...
鲲鹏(ARM64)升级GCC
1、下载压缩包 wget http://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.xz2、解压 tar -xvf gcc-9.5.0.tar.xzcd gcc-9.5.03、下载关联软件 ./contrib/download_prerequisites4、新建文件夹 mkdir build && cd build5、配置 ../configure -enable-checkingrelea…...

国产操作系统安装DeepSeek
从年前到现在,DeepSeek这款语言AI模型,一经发布直接在全球爆火,在热搜上更是牢牢占据一席之地。无论是技术大神,还是紧跟潮流的技术小白,都被它强大的自然语言处理能力所吸引。作为国产操作系统的用户,千万…...

安科瑞 Acrel-2000ES:解锁储能管理新高度,引领能源未来!
安科瑞 崔丽洁 在能源转型的关键时期,高效的储能管理成为众多企业和项目的核心需求。今天,就给大家介绍一款储能管理的 “神器”—— 安科瑞 Acrel-2000ES 储能能量管理系统。 安科瑞电气可是行业内的 “明星企业”,2003 年成立,2…...
DeepSeek总是提示“服务器繁忙,请稍后再试。”的问题的解决办法(替代网站推荐)
文章目录 问题现象原因分析替代网站的可行性分析替代网站秘塔搜索超算互联网360 纳米AI助手百度云千帆字节跳动火山引擎阿里云PAI硅基流动其他文思助手Fireworks英伟达POE 问题现象 频繁遇到错误提示: 在使用DeepSeek时(开启“深度思考(R1&a…...

OpenBayes 教程上新 | 告别服务器繁忙,DeepSeek 一键部署教程上线!
近日,DeepSeek 的技术突破如同一颗横空出世的「科技烟花」,在全球范围内瞬间炸开。 日活跃用户数在短短 18 天内便突破 1500 万,增速达到 ChatGPT 的 13 倍。根据 SensorTower 数据显示,DeepSeek 应用的每日下载量接近 500 万&am…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
Qt Quick Controls模块功能及架构
Qt Quick Controls是Qt Quick的一个附加模块,提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中,这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构,与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...
__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.
这个警告表明您在使用Vue的esm-bundler构建版本时,未明确定义编译时特性标志。以下是详细解释和解决方案: 问题原因: 该标志是Vue 3.4引入的编译时特性标志,用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...

java 局域网 rtsp 取流 WebSocket 推送到前端显示 低延迟
众所周知 摄像头取流推流显示前端延迟大 传统方法是服务器取摄像头的rtsp流 然后客户端连服务器 中转多了,延迟一定不小。 假设相机没有专网 公网 1相机自带推流 直接推送到云服务器 然后客户端拉去 2相机只有rtsp ,边缘服务器拉流推送到云服务器 …...
初级程序员入门指南
初级程序员入门指南 在数字化浪潮中,编程已然成为极具价值的技能。对于渴望踏入程序员行列的新手而言,明晰入门路径与必备知识是开启征程的关键。本文将为初级程序员提供全面的入门指引。 一、明确学习方向 (一)编程语言抉择 编…...
uni-app 项目支持 vue 3.0 详解及版本升级方案?
uni-app 支持 Vue 3.0 详解及升级方案 一、uni-app 对 Vue 3.0 的支持现状 uni-app 从 3.0 版本 开始支持 Vue 3.0,主要变化包括: 核心框架升级: 基于 Vue 3.0 的 Composition API 和 Options API 双模式支持提供 vueuse/core 等组合式 API…...