【深度学习】日常笔记14

news2025/1/11 15:07:54

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

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

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)。例如:预测患者的疾病,我们可能根据症状来判断,即使疾病的相对流⾏率随着时间的推移⽽变化。标签偏移在这 ⾥是恰当的假设,因为疾病会引起症状

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

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

相关文章

【计算机编程语言】JAVA-MyBatis(Eclipse)

文章目录 MyBatis1.简介1.1什么是Mybatis1.2持久化1.3持久层1.4为什么需要Mybatis 2.第一个Mybatis程序2.1搭建环境2.1.1.搭建数据库:2.1.2.新建项目(工程)2.1.3导入依赖 2.2创建一个模块2.2.1.编写Mybatis的核心配置文件2.2.2.编写Mybatis的…

linux学成之路(基础篇(二十三)MySQL服务(下)

目录 MySQL服务之SQL语句 一、SQL语句类型 一、 DDL语句 二、DML语句 三、DCL语句 四、DQL 语句 二、 数据库操作 一、查看 二、创建 三、进入 四、删除数据库 五、更改数据库名称 六、更改字符集 三、数据表管理 一、数据类型 一、数值类型 TINYINT SMALLINT…

JUC并发编程之CompletableFuture详解

目录 1.Future接口 1.1 Future介绍 1.1.1 FutureTask 1.1.2 代码示例 2. CompletableFuture 2.1 基本概念 2.2 代码示例 2.2.1 创建CompletableFuture 2.2.2 函数式接口(补充) 2.2.3 异步任务组合 1.Future接口 1.1 Future介绍 JUC并发编程中的…

(三)InfluxDB入门(借助Web UI)

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦! 第 3 章 InfluxDB入门(借助Web UI) 借助Web UI,我们可以更好地理解InfluxD…

SiddonGpu编译过程记录

1. 还是想要能够快速生成DRR,用了这个up的代码GitHub - fabio86d/CUDA_DigitallyReconstructedRadiographs: GPU accelerated python library for generation of Digitally Reconstructed Radiographs (March 2018) 在看步骤的时候不是很清晰。尤其是procedure to…

生产环境Session解决方案、Session服务器之Redis

目录 一、服务器配置 二、安装nginx 三、安装配置Tomcat: 四、配置session Session服务器之Redis Redis与Memcached的区别 安装部署redis 一、服务器配置 IP地址 主机名 软件包列表 192.168.100.131 huyang1 nginx 192.168.100.133 huyang3 JDK Tomca…

隧道安全监测解决方案

隧道安全监测 解决方案 一、监测目的 通过监控量测,实现信息化施工,不仅能及时掌握隧道实际的地质情况,掌握隧道围岩、支护衬砌结构的受力特征和变形情况,据此可以尽早发现塌方、大变形等灾害征兆,及时采取措施&…

Qgis二次开发-加载高德在线地图失败报错Raster layer Cannot instantiate the ‘wms‘ data provider

1.加载在线的高德地图 以下是在线高德地图地址。 http://webrd01.is.autonavi.com/appmaptile?x{x}&y{y}&z{z}&langzh_cn&size1&scale1&style8 以下是代码示例&#xff1a; #include <QApplication> #include <QMainWindow> #include …

Django学习笔记-表单(forms)的使用

在Django中提供了了form表单&#xff0c;可以更为简单的创建表单模板信息&#xff0c;简化html的表单。 一、网页应用程序中表单的应用 表单通常用来作为提交数据时候使用。 1.1 创建表单模板文件夹 在项目文件夹下创建一个template文件夹&#xff0c;用于存储所有的html模…

Integer 和 int

一、区别 1.Integer是int的包装类&#xff0c;int则是java的一种基本的数据类型&#xff1b; 2.Integer变量必须实例化之后才能使用&#xff0c;而int变量不需要实例化&#xff1b; 3.Integer实际是对象的引用&#xff0c;当new一个Integer时&#xff0c;实际上生成一个指针指向…

Linux vsftp三种模式的简单配置部署

环境&#xff1a;Debian 6.1.27-1kali1 (2023-05-12) vsftpd 安装 --查看是否当前系统是否已安装 apt list --installed | grep vsftpd 没有安装的话&#xff0c;就正常安装 apt-get update apt-get install vsftpd 一、匿名用户模式 分享一些不重要文件&#xff0c;任…

AI学习笔记二:YOLOV5环境搭建及测试全过程

若该文为原创文章&#xff0c;转载请注明原文出处。 记录yolov5从环境搭建到测试全过程。 一、运行环境 1、系统&#xff1a;windows10 &#xff08;无cpu) 2、yolov5版本&#xff1a;yolov5-5.0 3、python版本&#xff1a;py3.8 在创建虚拟环境前需要先把miniconda3和py…

Font Awesome 5使用

Font Awesome 5介绍 Font Awesome 5 的专业版有7842个图标。 要使用免费的Font Awesome 5 图标&#xff0c;您可以选择下载Font Awesome库&#xff0c;或者在Font Awesome注册一个帐户&#xff0c;并获得一个代码&#xff08;称为KIT CODE&#xff09;&#xff0c;以便在将Fo…

Wireshark抓包分析教程(ubuntu版本)

安装 first&#xff0c;多亏我们的C知道&#xff0c;成功安装了wireshark&#xff0c; Steps are as following&#xff1a; 添加wireshark的软件源(PPA:personal package archive(档案)) sudo apt-add-repository ppa:wireshark-dev/stable ppa:wireshark-dev/stable 是一个…

Quad Remesher 参数效果记录

基本属性 Detect Hard-Edges by angle 这个属性最好开启&#xff0c;它用于保持必要的边缘

WEB:ics-06

背景知识 burpsuite的使用 题目 所有都尝试点了一遍&#xff0c;只有报表中心可以打开 先查看源代码&#xff0c;没有发现有用的信息 选择了日期范围但是毫无反应&#xff0c;这里发现url中有一个id1&#xff0c;尝试抓包爆破 使用bp进行抓包 设置有效载荷配置&#xff0c;开…

(链表) 剑指 Offer 24. 反转链表 ——【Leetcode每日一题】

❓剑指 Offer 24. 反转链表 难度&#xff1a;简单 定义一个函数&#xff0c;输入一个链表的头节点&#xff0c;反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制&#xff1a; 0 < …

小程序如何删除/上架/下架商品

在小程序中&#xff0c;产品的删除、上架和下架是常见的操作&#xff0c;可以根据实际需求来管理商品的展示与销售。下面将介绍如何在小程序中删除上架下架商品的具体步骤。 进入商品管理页面&#xff0c; 在个人中心点击管理入口&#xff0c;然后找到“商品管理”菜单并点击。…

Git----分布式版本控制系统

1. 简介 Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或大或小的项目。它是世界上目前最先进的分布式版本控制系统。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversio…

2023最新版本Activiti7系列-流程中的任务

流程中的任务 1.用户任务 用户任务:用于定义流程中需要人工参与的任务。 用户任务可以在流程中创建并分配给特定的用户或用户组。当流程执行到用户任务时&#xff0c;流程将暂停&#xff0c;并等待相应的用户完成该任务。完成用户任务后&#xff0c;流程将继续执行。 用户任…