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

【深度学习】日常笔记14

对神经网络模型参数的初始化方案对保持数值稳定性有很重要的作用。初始化⽅案的选择可以与⾮线性激活函数的选择有趣的结合在⼀起。

突然有感触:做习题和模拟考研就分别是训练集和验证集,考研不就是最后的测试集()

p168的↓的解释:

(4.8.1)这个公式是表示深层网络的计算过程。在这个网络中,每一层的隐藏变量h(l)通过变换函数fl(h(l-1))得到,其中l表示层数,h(l-1)表示上一层的隐藏变量。最后的输出o是通过将所有层的变换函数依次作用在输入x上得到,即o = fL ◦ . . . ◦ f1(x),其中◦表示函数的复合(即依次执行函数的操作)。在深层网络中,我们有一系列的变换函数f(l),其中每个函数都作用在前一层的隐藏变量h(l-1)上,以产生当前层的隐藏变量h(l)。最后的输出o是通过将所有层的变换函数依次应用在输入x上得到。

在(4.8.2)公式中,"· . . . ·"的作用是表示多个项的乘积。具体来说,在(4.8.2)公式中的每个项都是对应的求偏导结果的乘积。公式右侧的每个项都对应着一个中间变量的偏导数与相应的中间变量的乘积。

例如,∂W(l)o = ∂h(L-1) h(L) · ∂h(l)h(l+1) · … · ∂W(l)h(l) 表示将所有∂h(L-1) h(L),∂h(l)h(l+1),∂W(l)h(l)这些项依次相乘。推导过程涉及到计算梯度(也就是导数)的链式法则。链式法则告诉我们如何计算复合函数的导数,根据(4.8.1)不难看出(4.8.2)的梯度推导是对的。

不稳定梯度带来的⻛险不⽌在于数值表⽰;不稳定梯度也威胁到我们优化算法的稳定性。我们可能⾯临⼀些问题。要么是梯度爆炸(gradient exploding)问题:参数更新过⼤,破坏了模型的稳定收敛;要么是梯度消失(gradient vanishing)问题:参数更新过⼩,在每次更新时⼏乎不会移动,导致模型⽆法学习


梯度消失和梯度爆炸是深度⽹络中常⻅的问题。在参数初始化时需要⾮常⼩⼼,以确保梯度和参数可 以得到很好的控制。

解决梯度消失梯度爆炸、参数化所固有的对称性的问题,可以在参数初始化上下功夫。

① 默认的随机初始化---正态分布初始化。

② Xavier初始化---Xavier初始化从均值为零,⽅差 σ2 = 2/(nin+nout) 的⾼斯分布中采样权重,nin 是当前层的输入度,nout 是当前层的输出维度,也可以将其改为选择从均匀分布中抽取权重。Xavier初始化的理念是使得输入信号在前向传播过程中的方差和反向传播过程中的方差保持一致,以便更好地进行梯度传播。通过从高斯分布中采样权重,我们可以确保权重的初始化不会过于偏向较大或较小的值,避免了梯度消失或梯度爆炸的问题。因为在高斯分布中,大约 95% 的值会位于均值的两个标准差范围内,所以将方差设置为 2 / (nin + nout) 可以将大部分的权重值控制在合适的范围内。


p172练习

1. 除了多层感知机的排列对称性之外,还能设计出其他神经⽹络可能会表现出对称性且需要被打破的情况吗?

答:

①对称激活函数:如果在神经网络的不同层中使用了相同的激活函数,且激活函数具有对称性,那么网络架构可能会表现出对称性。例如,如果所有层使用了相同的ReLU激活函数,它是一个对称的函数,可能导致梯度的方向不明确,使得网络训练困难。为了打破这种对称性,可以在每一层使用不同的激活函数,或者引入一些随机性,如dropout等。

②初始化权重的对称性:如果网络的初始权重具有某种对称性,比如在对称的权重矩阵中,不同的神经元连接具有相同的权重值。这种对称性可能导致网络在训练过程中收敛到相同或相似的权重配置。为了打破这种对称性,常用的方法是使用随机的权重初始化方式,如Glorot/Xavier初始化,以确保不同的神经元连接具有不同的初始权重值。

在这些情况下,为了使网络能够更好地学习和表示数据,需要打破对称性。这可以通过使用不同的激活函数、不同的初始化方法、引入随机性或正则化技术来实现。这样做可以增加网络的表达能力,提高网络的泛化能力,从而更好地适应数据和任务。

2. 我们是否可以将线性回归或softmax回归中的所有权重参数初始化为相同的值?

答:不推荐将线性回归或softmax回归中的所有权重参数初始化为相同的值。

当所有权重参数初始化为相同的值时,模型将没有足够的能力来学习特征之间重要性的差异。这可能导致模型的性能下降,以及对于复杂的数据集和模型,模型的学习能力受到限制。

4. 如果我们知道某些项是发散的,我们能在事后修正吗?看看关于按层⾃适应速率缩放的论⽂ (You et al., 2017) 。

答:

根据提供的参考文献(You et al., 2017),关于按层自适应速率缩放的论文,这是一种用于在训练过程中修正梯度发散问题的方法。

在深度学习中,梯度发散是指训练过程中梯度值变得非常大,导致权重更新过大,模型无法收敛或性能不稳定的问题。按层自适应速率缩放是一种方法,根据每个层的梯度值大小动态地调整学习率,以避免梯度发散问题。

该方法的关键思想是通过监测每个层的梯度变化情况,来决定是否对该层的梯度进行缩放。如果某个层的梯度值超过了一个预先设定的阈值,那么针对该层的学习率将被缩小,即减小权重更新的幅度。这样做可以防止梯度发散,并提高训练的稳定性和效果。

按层自适应速率缩放方法可以在训练过程中实时监控和调整各层的学习率,使其适应当前梯度的大小。通过对梯度发散的修正,该方法可以帮助模型更好地收敛,并提高性能。

总结而言,按层自适应速率缩放是一种可以在训练过程中修正梯度发散问题的方法。它通过动态调整每个层的学习率来避免梯度的发散,提高模型的训练稳定性和性能。

有时,根据测试集的精度衡量,模型表现得⾮常出⾊。但是当数据分布突然改变时,模型在部署中会出现灾难性的失败。更隐蔽的是,有时模型的部署本⾝就是扰乱数据分布的催化剂。举⼀个有点荒谬却可能真实存在的例⼦。假设我们训练了⼀个贷款申请⼈违约⻛险模型,⽤来预测谁将偿还贷款或违约。这个模型发现申请⼈的鞋⼦与违约⻛险相关(穿⽜津鞋申 请⼈会偿还,穿运动鞋申请⼈会违约)。此后,这个模型可能倾向于向所有穿着⽜津鞋的申请⼈发放贷款,并拒绝所有穿着运动鞋的申请⼈。这种情况可能会带来灾难性的后果。⾸先,⼀旦模型开始根据鞋类做出决定,顾客就会理解并改变他们的⾏为。不久,所有的申请者都会穿⽜津鞋,⽽信⽤度却没有相应的提⾼。幸运的是,在对未来我们的数据可能发⽣变化的⼀些限制性假设下,有些算法可以检测这种偏移,甚⾄可以 动态调整,提⾼原始分类器的精度。


由于协变量(特征)分布的变化⽽产⽣的问题,虽然输⼊的分布可能随时间⽽改变, 但标签函数(即条件分布P(y | x))没有改变,称为协变量偏移(covariate shift)

考虑⼀下区分猫和狗的问题:训练数据包括 图4.9.1中的图像。

在测试时,我们被要求对 图4.9.2中的图像进⾏分类。

训练集由真实照⽚组成,⽽测试集只包含卡通图⽚。假设用于训练的训练集的特征与用于实际测试的测试集的特征关系不大,那如果没有⽅法来适应新的领域,可能会有⿇烦。

可以使用下面的协变量偏移纠正算法。假设我们有⼀个训练集{(x1, y1), . . . ,(xn, yn)},x加粗是因为表示特征向量,和⼀个未标记的测试集{u1, . . . , um}。对于协变量偏移,我们假设1 ≤ i ≤ n的xi来⾃某个源分布,ui来⾃⽬标分布。以下是纠正协变量偏移的典型算法:

1. 从概率密度为p的目标分布抽取的数据为1,从概率密度为q的源分布中抽取的数据为−1,生成⼀个⼆元分类训练集:{(x1, −1), . . . ,(xn, −1),  (u1, 1), . . . ,(um, 1)}。

2. ⽤对数⼏率回归训练⼆元分类器得到函数h。

3. 使⽤βi = exp(h(xi))或更好的βi = min(exp(h(xi)), c)(c为常量)对训练数据进⾏加权。

4. 将权重βi扔进公式  ,进行{(x1, y1), . . . ,(xn, yn)}的训练,从而得到真正需要的模型。

当我们认为y导致x时,这⾥我们假设标签边缘概率P(y)可以改变,但是类别条件分布P(x | y)在不同的领域之间保持不变,就称为标签偏移(label shift)。例如:预测患者的疾病,我们可能根据症状来判断,即使疾病的相对流⾏率随着时间的推移⽽变化。标签偏移在这 ⾥是恰当的假设,因为疾病会引起症状

相关文章:

【深度学习】日常笔记14

对神经网络模型参数的初始化方案对保持数值稳定性有很重要的作用。初始化⽅案的选择可以与⾮线性激活函数的选择有趣的结合在⼀起。 突然有感触:做习题和模拟考研就分别是训练集和验证集,考研不就是最后的测试集() p168的↓的解释…...

[JAVAee]synchronized关键字

目录 1.synchronized的特性 ①互斥性 ②可重入性 2.synchronized的使用示例 ①修饰普通方法 ②修饰静态方法 ③修饰代码块 1.synchronized的特性 ①互斥性 互斥性,就像是给门上锁了一样. 当A线程使用了被synchronized修饰的代码块并对其上锁,其他线程(B线程,C线程)想要使…...

Unity游戏源码分享-3d机器人推箱子游戏

Unity游戏源码分享-3d机器人推箱子游戏 一个非常意思的3D游戏 工程地址:https://download.csdn.net/download/Highning0007/88098014...

SAAS部署模式

SAAS(Software as a Service)顾名思义,软件即服务的产品。 常见部署模式: 公有云:SAAS产品部署在公有云平台上,由SAAS提供商管理整个基础架构和应用程序。客户通过互联网访问和使用SAAS产品,无…...

11、PHP面向对象1

1、PHP的面向对象与其他语言类似,但也有不同。 PHP访问成员变量时,需要用“->”,而不能用“.”,访问成员函数时,需要用“->”,而不能用“.”。操作符“::”可以在没有任何声明实例的情况下访问类中的…...

实训笔记7.25

实训笔记7.25 7.25笔记一、MapReduce的特殊使用场景1.1 通过MapReduce程序实现多文件Join操作1.1.1 通过在Reduce端实现join操作1.1.2 通过在Map端实现join操作 1.2 MapReduce中的计数器的使用1.2.1 计数器使用两种方式 1.3 MapReduce实现数据清洗 二、MapReduce的OutputFormat…...

全方位对比 Postgres 和 MongoDB (2023 版)

本文为「数据库全方位对比系列」第二篇,该系列的首部作品为「全方位对比 Postgres 和 MySQL (2023 版)」 为何对比 Postgres 和 MongoDB 根据 2023 年 Stack Overflow 调研,Postgres 已经成为最受欢迎和渴望的数据库了。 MongoDB 曾连续 4 年 (2017 - …...

本地部署中文LLaMA模型实战教程,民间羊驼模型

羊驼实战系列索引 博文1:本地部署中文LLaMA模型实战教程,民间羊驼模型(本博客) 博文2:本地训练中文LLaMA模型实战教程,民间羊驼模型 博文3:精调训练中文LLaMA模型实战教程,民间羊驼模型 简介 LLaMA大部分是英文语料训练的,讲中文能力很弱。如果我们想微调训练自己的…...

全志F1C200S嵌入式驱动开发(spi-nor image制作)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 一般soc系统里面添加spi-nor flash芯片,特别是对linux soc来说,都是把它当成文件系统来使用的。spi-nor flash和spi-nand flash相比,虽然空间小了点,但是胜在稳定,这是很多工业…...

JSON格式Python,Java,PHP等封装图片识别商品数据API方法

淘宝是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取淘宝天猫图片识别商品数据,您可以通过开放平台的接口或者直接访问淘宝天猫商城的网页来获取图片识别商品数据。以下是两种常用方法的介绍&#…...

Vue应用案例

项目一&#xff1a;记事本 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8" /><title>title</title></head> <body><div id"app"><h2 >记事本</h2><input …...

GPT-3.5:ChatGPT的奇妙之处和革命性进步

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…...

【Hadoop 01】简介

目录 1 Hadoop 简介 2 下载并配置Hadoop 2.1 修改/etc/profile 2.2 修改hadoop-env.sh 2.3 修改core-site.xml 2.4 修改hdfs-site.xml 2.5 修改mapred-site.xml 2.6 修改yarn-site.xml 2.7 修改workers 2.8 修改start-dfs.sh、stop-dfs.sh 2.9 修改start-yarn.sh、s…...

【C++】开源:跨平台轻量日志库easyloggingpp

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍跨平台轻量日志库easyloggingpp。 无专精则不能成&#xff0c;无涉猎则不能通。。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&am…...

spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f96d;本文内容&#xff1a;spring-websocket在SpringBoot(包含SpringSecurity…...

SpringBoot + Vue前后端分离项目实战 || 六:Jwt加密整合配置

文章目录 回顾添加依赖Jwt依赖Jwt配置定义Jwt拦截器注册Jwt拦截器&#xff0c;配置需要验证token的URL 测试Jwt修改登录等逻辑 回顾 在之前的系统中&#xff0c;我们利用UUID配合Redis以达到角色登录的功能。 当前整个系统存在一个问题&#xff1a;人为修改token值后&#xf…...

WPF 如何设置全局的订阅发布事件

文章目录 前言代码逻辑修改 总结 前言 我们需要一个全局事件订阅发布功能&#xff0c;实现页面通讯。使两个毫无关系的页面通过一个中间量进行通讯。 代码 IEventAggregator&#xff1a;消息订阅集合 这个是Prism提供的消息订阅功能。使用如下 设置订阅类型&#xff0c;即…...

STM32 USB使用记录:HID类设备(前篇)

文章目录 目的基础说明HID类演示代码分析总结 目的 USB是目前最流行的接口&#xff0c;现在很多个人用的电子设备也都是USB设备。目前大多数单片机都有USB接口&#xff0c;使用USB接口作为HID类设备来使用是非常常用的&#xff0c;比如USB鼠标、键盘都是这一类。这篇文章将简单…...

探索AI图像安全,助力可信AI发展

探索AI图像安全&#xff0c;助力可信AI发展 0. 前言1. 人工智能发展与安全挑战1.1 人工智能及其发展1.2 人工智能安全挑战 2. WAIC 2023 多模态基础大模型的可信 AI2.1 WAIC 2023 专题论坛2.2 走进合合信息 3. AI 图像安全3.1 图像篡改检测3.2 生成式图像鉴别3.3 OCR 对抗攻击技…...

vue 学习笔记 【ElementPlus】el-menu 折叠后图标不见了

项目当前版本 {"dependencies": {"element-plus/icons-vue": "^2.1.0","types/js-cookie": "^3.0.3","types/nprogress": "^0.2.0","axios": "^1.4.0","core-js": &quo…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...