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

深度学习中的参数初始化

      深度学习中的参数初始化主要是指初始化神经网络中的权重和偏置。权重和偏置通常分开初始化,偏置通常初始化为零或较小的常数值

      没有一种万能的初始化技术,因为最佳初始化可能因具体架构和要解决的问题而异。因此,尝试不同的初始化技术以了解哪种技术最适合给定任务通常是一个好主意。

      如果没有一个有用的权值初始化,训练网络可能会导致收敛速度非常慢或无法收敛

      梯度消失和梯度爆炸(vanishing and exploding gradients):适当的权重初始化对于防止梯度消失和梯度爆炸至关重要。

      1.梯度消失:梯度变得越来越小,权重更新很小,权重几乎保持不变,导致收敛速度变慢,在最坏的情况下,可能会导致网络完全停止收敛,学习过程停滞。

      2.梯度爆炸:梯度可能会呈指数增长,导致不成比例的大量更新并导致学习过程发散(divergence)。

      参数初始化方法

      1.零初始化:将所有权重和偏置(weights and biases)初始化为0。这在深度学习中通常不使用,因为它会导致梯度对称(symmetry),从而导致所有神经元在训练期间学习相同的特征。所有神经元中的所有激活都是相同的,因此所有计算都是相同的,这使得相关模型成为线性模型(linear model)。当用0初始化时,偏置不会产生任何影响。

      2.常数初始化:用常数值初始化权重和偏置。任何常数初始化方案的性能都会很差,与零初始化类似。如果神经网络中的神经元的权重被初始化为相同的值,它们将在训练期间学习相同的特征。

      3.随机初始化:从均匀或正态分布(uniform or normal distribution)中随机初始化权重和偏置。这是深度学习中最常用的技术。改进了对称性破坏(symmetry-breaking)过程,即如果两个隐藏神经元具有相同的输入和相同的激活函数,则它们必须具有不同的初始参数,并提供了更高的精度。这种方法可以防止对输入参数学习相同的特征。选择适当的初始化值对于高效训练是必要的。初始化过大会导致梯度爆炸(梯度太大)。初始化太小会导致梯度消失(梯度太小)。随机为权重分配值可能会出现过拟合、梯度消失、梯度爆炸等问题。

      4.Xavier/Glorot初始化:使用均值为0、方差为sqrt(1/n)的正态分布或均匀分布初始化权重,其中n是前一层的神经元数量。权重(例如激活的方差)在每一层上都是相同的,缓解梯度爆炸和消失问题。用于Sigmoid、Tanh激活函数

      5.He/Kaiming初始化:使用均值为0、方差为sqrt(2/n)的正态分布或均匀分布初始化权重,其中n是前一层的神经元数量。保留了激活函数(例如ReLU激活)的非线性。防止出现值过小或过大等问题,缓解梯度爆炸和消失问题。用于ReLU激活函数

      6.正交初始化:使用正交矩阵(orthogonal matrix)初始化权重,这在反向传播期间保留梯度范数(gradient norm)。

      7.均匀初始化:使用均匀分布(uniform distribution)初始化权重。

      总结

      1.权重初始化的原则:权重不应相对过小或过大、权重不应相同、权重应具有良好的方差

      2.对复杂数据集使用权重初始化技术非常重要。权重初始化在复杂数据的训练中起着重要作用,尤其是在使用基于启发式(heuristic)的方法时,如Xavier、He,这些方法是通过激活函数的某些属性设计的。在权重初始化较小的情况下,神经元的输入将很小,从而导致激活函数的非线性损失。否则,在权重初始化较大的情况下,神经元的输入将很大,从而导致激活函数饱和。选择合适的权重初始化方法将有助于获得更好的深度学习模型性能。此外,良好的权重初始化有助于基于梯度的方法快速收敛。

      3.选择合适的权重初始化方法是一个悬而未决的问题。Xavier初始化方法在可微激活函数(如Sigmoid)的情况下提供了良好的结果。He初始化方法在ReLU等不可微激活函数的情况下提供了良好的效果。大多数情况下,DNN模型都是基于ReLU激活函数的。因此,在DNN的情况下,最好使用He方法进行权重初始化。

      4.通过迁移学习(transfer learning),你不是从随机初始化的权重开始,而是使用从以前的网络保存的权重作为新实验的初始权重(即微调预先训练的网络)。

      注:以上整理的内容主要来自:

      1. https://medium.com

      2. https://www.geeksforgeeks.org

      3. https://arxiv.org/pdf/2102.07004

      PyTorch中参数初始化函数的实现在:torch/nn/init.py ,支持的参数初始化函数有:uniform_(uniform distribution)、normal_(normal distribution)、trunc_normal_(truncated normal distribution)、constant_、ones_(scalar value 1)、zeros_(scalar value 0)、eye_(identity matrix)、dirac_(Dirac delta function)、xavier_uniform_(Xavier uniform distribution)、xavier_normal_(Xavier normal distribution)、kaiming_uniform_(Kaiming uniform distribution)、kaiming_normal_(Kaiming normal distribution)、orthogonal_((semi) orthogonal matrix)、sparse_(sparse matrix)。

      PyTorch根据层的类型使用不同的默认权重和偏置初始化方法。

      GitHub:https://github.com/fengbingchun/NN_Test

相关文章:

深度学习中的参数初始化

深度学习中的参数初始化主要是指初始化神经网络中的权重和偏置。权重和偏置通常分开初始化,偏置通常初始化为零或较小的常数值。 没有一种万能的初始化技术,因为最佳初始化可能因具体架构和要解决的问题而异。因此,尝试不同的初始化技术以了解…...

wpf 基于Behavior库 的行为模块

Microsoft.Xaml.Behaviors 是一个用于WPF(Windows Presentation Foundation)的行为库,它的主要作用是允许开发者在不修改控件源代码的情况下,为控件添加自定义的行为和交互逻辑。行为库的核心思想是通过定义可重用的行为组件&…...

【每日学点鸿蒙知识】导入cardEmulation、自定义装饰器、CallState状态码顺序、kv配置、签名文件配置

1、HarmonyOS 无法导入cardEmulation? 在工程entry mudule里的index.ets文件里导入cardEmulation失败 可以按照下面方式添加SystemCapability;在src/main/syscap.json(此文件需要手动创建)中添加如下内容 {"devices": {"gen…...

【SpringMVC】REST 风格

REST(Representational State Transfer,表现形式状态转换)是一种访问网络资源的格式。传统的资源描述方式通常如下: http://localhost/user/getById?id1http://localhost/user/saveUser 而 REST 风格的描述则更简洁&#xff1a…...

IDEA修改编译版本

目录 一、序言 二、修改maven配置 1.修改 2.代码 三、pom文件配置 1.修改 2.代码 3.问题 一、序言 有两种方法可以帮助大家解决IDEA每次刷新maven的pom配置时,会发生发行源版本不正常的报错。个人推荐第二种,原因:第二种你刷新maven后…...

SkyWalking Agent 配置 Spring Cloud Gateway 插件解决日志错误

SkyWalking Agent 配置 Spring Cloud Gateway 插件解决日志错误 IDEA中启动网管时,需要配置VM启动参数,格式如下: # 配置 SkyWalking Agent 启动参数,以便将网关服务的性能数据上报到 SkyWalking 服务器。 -javaagent:/path/to/sk…...

canvas+fabric实现时间刻度尺(一)

前言 需求:显示一个时间刻度尺,鼠标移动会显示当前时间 技术:我们采用canvasfabric进行实现 效果 实现 1.创建canvas(设置宽高)设为全局变量 2.引入fabric包 3.画时间刻度尺(长方形横线) …...

傲雷亮相2024中国时尚体育季(珠海站),展现户外移动照明风采

2024年12月28-29日,2024中国时尚体育季(珠海站)国家级轮滑比赛在珠海金山体育公园成功举办。作为户外创新型移动照明领域的领导品牌,傲雷受邀参加了本次珠海金湾运动生活嘉年华的展览单元,与众多户外运动品牌同台展示。…...

YOLOv10-1.1部分代码阅读笔记-block.py

block.py ultralytics\nn\modules\block.py 目录 block.py 1.所需的库和模块 2.class DFL(nn.Module): 3.class Proto(nn.Module): 4.class HGStem(nn.Module): 5.class HGBlock(nn.Module): 6.class SPP(nn.Module): 7.class SPPF(nn.Module): 8.class C1(nn…...

@RestControllerAdvice注解

RestControllerAdvice 是 Spring 4 引入的一个组合注解,它结合了 ControllerAdvice 和 ResponseBody,专门用于处理 RestController 类型的控制器中的全局异常、全局数据绑定和全局模型属性等问题。在 Spring Boot 中,RestControllerAdvice 通…...

Enum枚举类与静态变量和静态数组的区别

Enum枚举类与静态变量和静态数组的区别 组成结构Enum枚举类静态变量静态数组 组成结构的区别相同之处不同之处 用法使用相同之处不同之处 组成结构 先来看下Enum枚举类,静态变量,静态数组的初始化过程,以下面为例子: public enu…...

uniapp——微信小程序读取bin文件,解析文件的数据内容(三)

微信小程序读取bin文件内容 读取用户选择bin文件,并解析数据内容,分包发送给蓝牙设备; 文章目录 微信小程序读取bin文件内容读取文件读取内容返回格式 API文档: getFileSystemManager 关于App端读取bin文件,请查看&…...

SpringBoot集成ECDH密钥交换

简介 对称加解密算法都需要一把秘钥,但是很多情况下,互联网环境不适合传输这把对称密码,有密钥泄露的风险,为了解决这个问题ECDH密钥交换应运而生 EC:Elliptic Curve——椭圆曲线,生成密钥的方法 DH&…...

python文件操作相关(excel)

python文件操作相关(excel) 1. openpyxl 库openpyxl其他用法创建与删除操作单元格追加数据格式化单元格合并单元格插入图片公式打印设置保护工作表其他功能 2. pandas 库3. xlrd 和 xlwt 库4. xlsxwriter 库5. pyxlsb 库应用场景参考资料 在 Python 中&a…...

探索React与Microi吾码的完美结合:快速搭建项目,低代码便捷开发教程

一、摘要 在当今的数字化时代,软件开发就像是一场探险,每个开发者都是探险家,探索着代码的奥秘。React作为前端开发的领军框架,其组件化和高效的渲染机制为开发者提供了强大的工具。而Microi吾码低代码平台的出现,则为…...

【面试系列】深入浅出 Spring Boot

熟悉SpringBoot,对常用注解、自动装配原理、Jar启动流程、自定义Starter有一定的理解; 面试题 Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?Spring Boot的自动配置原理是什么?你如何理解 Spring Boot 配置…...

@colyseus/social 模块详解

@colyseus/social 模块介绍 @colyseus/social 是一个适用于 Colyseus 游戏框架的扩展模块,提供了社交功能的支持,帮助开发者在多人游戏中快速实现玩家之间的社交互动。它主要提供了玩家账户管理、好友系统、好友请求、组队和聊天功能等,旨在简化游戏中社交功能的实现。 核心…...

石岩路边理发好去处

周末带娃去罗租公园玩,罗租公园旁边就是百佳华和如意豪庭小区,发现如意豪庭小区对面挺多路边理发摊点 理发摊点聚焦在这里的原因是刚好前面城管来了暂时避避,例如还有一个阿姨剪到一半就跟着过来。这里的城管只是拍了一处没有摊位的地方&…...

ROS 2中的DDS中间件

文章目录 一、简介二、默认支持的 DDS (Data Distribution Service) 实现三、切换DDS实现小结 一、简介 中间件是一个软件层,通常用于连接不同的应用程序、服务或系统,以便它们能够相互通信和交换数据。中间件并不直接向用户暴露,而是在系统…...

「下载」智慧文旅运营综合平台解决方案:整体架构,核心功能设计

智慧文旅运营综合平台,旨在通过集成大数据、云计算、物联网、人工智能等先进技术,为景区、旅游企业及相关管理机构提供一站式的智慧化运营服务。 智慧文旅运营综合平台不仅能够提升游客的游览体验,还能帮助景区管理者实现资源的优化配置和业务…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​,覆盖应用全生命周期测试需求,主要提供五大核心能力: ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

Unity中的transform.up

2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...