【深度学习】日常笔记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应用案例
项目一:记事本 <!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的奇妙之处和革命性进步
🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~ἳ…...

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

spring-websocket在SpringBoot(包含SpringSecurity)项目中的导入
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 🥭本文内容:spring-websocket在SpringBoot(包含SpringSecurity…...

SpringBoot + Vue前后端分离项目实战 || 六:Jwt加密整合配置
文章目录 回顾添加依赖Jwt依赖Jwt配置定义Jwt拦截器注册Jwt拦截器,配置需要验证token的URL 测试Jwt修改登录等逻辑 回顾 在之前的系统中,我们利用UUID配合Redis以达到角色登录的功能。 当前整个系统存在一个问题:人为修改token值后…...

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

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

探索AI图像安全,助力可信AI发展
探索AI图像安全,助力可信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…...

【JavaEE初阶】HTTP协议
文章目录 1. HTTP概述和fiddler的使用1.1 HTTP是什么1.2 抓包工具fiddler的使用1.2.1 注意事项1.2.2 fiddler的使用 2. HTTP协议格式2.1 HTTP请求格式2.1.1 基本格式2.1.2 认识URL2.1.3 方法 2.2 请求报头关键字段2.3 HTTP响应格式2.3.1 基本格式2.3.2状态码 1. HTTP概述和fidd…...

基于SaaS模式的Java基层卫生健康云HIS系统源码【运维管理+运营管理+综合监管】
云HIS综合管理平台 一、模板管理 模板分为两种:病历模板和报表模板。模板管理是运营管理的核心组成部分,是基层卫生健康云中各医疗机构定制电子病历和报表的地方,各医疗机构可根据自身特点特色定制电子病历和报表,制作的电子病历…...

effective c++ 条款2
条款2 常量(const)替换宏(#define)指针常量类成员常量 枚举(enum)替换宏(#define)模板函数(template inline)替换宏函数 尽量用const,enum,inline替换#define 总结就是: 常量(const)替换宏(#define) // uppercase names are usually for macros #define ASPECT_R…...

Python爬虫之Scrapy框架系列(23)——分布式爬虫scrapy_redis浅实战【XXTop250部分爬取】
目录: 1.实战讲解(XXTop250完整信息的爬取):1.1 使用之前做的完整的XXTOP250项目,但是设置为只爬取一页(共25个电影),便于观察1.2 配置settings文件中使用scrapy_redis的必要配置,并…...

html基于onmouse事件让元素变颜色
最近,在书写div块时,遇到一个小问题,这个小问题我搞了将近一个小时多才慢慢解决。问题是这样子的,有一个div块,我想让鼠标移上去变成蓝色,移开变成灰色,当鼠标按下去时让他变成深蓝色。于是就单…...

Linux环境PostgreSQL安装
今日一语:鲲鹏扶摇而直上九万里,雄鹰展翅高飞,这是因为鲲鹏一出世就得历劫,老鹰刚长出翅膀就会被扔下悬崖 下载安装包,解压到服务器中,然后 make && make install # 登录使用 ./psql # 切换数据库…...

Rust 数据类型 之 结构体(Struct)
目录 结构体(Struct) 定义与声明 结构体定义 结构体实例 结构体分类 单元结构体(Unit Struct) 元组结构体(Tuple Struct) 具名结构体(Named Struct) 结构体嵌套 结构体方法…...

数据结构之Queue的实现
Queue支持的方法 方法名参数功能返回Sizevoid返回链表规模(该方法由List< T>派生而来)emptyvoid返回链表是否为空(该方法由List< T>派生而来)frontvoid返回队首数据域的引用enqueueT const & e入队voiddequeuevoid出队出队的对象 code // Queue.h # pragma …...

rust声明式宏
宏 在 rust 中,我们一开始就在使用宏,例如 println!, vec!, assert_eq! 等。看起来宏和函数在使用时只是多了一个 !。实际上这些宏都是声明式宏(也叫示例宏或macro_rules!),rust 还支持过程宏,过程宏为我们…...

第二章:Learning Deep Features for Discriminative Localization ——学习用于判别定位的深度特征
0.摘要 在这项工作中,我们重新审视了在[13]中提出的全局平均池化层,并阐明了它如何明确地使卷积神经网络(CNN)具有出色的定位能力,尽管它是在图像级别标签上进行训练的。虽然这个技术之前被提出作为一种训练规范化的手…...