论文阅读:基于谱分析的全新早停策略

来自JMLR的一篇论文,https://www.jmlr.org/papers/volume24/21-1441/21-1441.pdf

这篇文章试图通过分析模型权重矩阵的频谱来解释模型,并在此基础上提出了一种用于早停的频谱标准。

1,分类难度对权重矩阵谱的影响

1.1 相关研究

在最近针对深度模型的可解释性研究中,出现了一种流行的方法,即对DNNs的各种大型特征随机矩阵进行谱分析,所谓大型特征随机矩阵,就是例如反向传播算法的Hessian矩阵、不同层之间的权重矩阵以及输出特征的协方差矩阵等。这样的谱分析有助于深入了解DNNs的行为。

1.2  权重矩阵的谱的类型

权重矩阵的谱在训练的最后阶段被分类为三种类型:轻尾(LT)、块过渡期(BT)和重尾(HT)。

重尾(Heavy Tails)、轻尾(Light Tails)和块过渡(Bulk Transition)是指权重矩阵或Hessian矩阵的特征值分布的不同类型。区别如下:

1)重尾分布指的是在特征值分布的尾部存在较大概率密度,即存在一些非常大的特征值。在深度学习中,重尾可能表明权重矩阵中存在高度相关的条目,这可能导致过拟合或模型的泛化能力下降。

2)轻尾分布的特征是特征值分布的尾部概率密度较低,即特征值普遍较小,没有特别大的异常值。在深度学习中,轻尾可能表示权重矩阵的正则化较好,有助于提高模型的泛化能力。

3)块过渡是一种介于重尾和轻尾之间的状态,特征值分布的主体(块)接近Marcenko-Pastur分布,但可能存在一些异常的“尖峰”或“离群点”。这种状态可能表明模型正在从过拟合状态(重尾)过渡到更好的泛化状态(轻尾),或者是模型训练过程中的一个中间阶段。

1.3 如何计算权重矩阵的谱

对权重矩阵计算其Gram矩阵,接着求解Gram矩阵的特征值。接着将计算出的特征值按降序排列,以便于分析最大的特征值。最后,构建经验谱分布,这是一个经验分布函数,用于估计权重矩阵特征值的分布。ESD可以通过直方图或核密度估计来实现。

其中I是指示函数,当括号内的表达式为真时,I的值为1;否则为0。

1.4作者的发现

作者发现分类难度是影响权重矩阵谱中出现HT的一个重要因素。分类难度越高,HT出现的几率越大。在合成数据集和真实数据集上进行的实验都支持这一发现。特别是,降低数据集的信噪比或在高斯数据实验中增加类别数量K,都会增加分类难度,并在训练结束时产生重尾。在真实数据实验中,由于CIFAR10具有更复杂的特征和更高的分类难度,因此在CIFAR10的实验中出现重尾的情况比在MNIST的实验中更多。

2,基于权重矩阵谱的早停准则

2.1 内容

本文提出的基于谱的早停策略通过分析深度神经网络(DNN)权重矩阵的谱特性来确定训练过程中的停止时机。

步骤:

1)权重矩阵的谱分析:这涉及到计算权重矩阵的非零特征值.

2)特征值排序与检测:将这些特征值按降序排列,并使用算法自动检测特征值中的“尖峰”(spikes),即那些远离其他特征值的特征值。

3)计算谱准则值也就是计算权重矩阵的谱与Marcenko-Pastur (MP) 定律的偏差。这涉及到构造一个直方图估计器来近似权重矩阵特征值的联合密度,并与MP定律的密度函数进行比较。

距离的定义是这样的

其中P_{M}(x)是ESD的直方图估计,公式如下

其中,,对于一个n×p的随机矩阵,其中n/p→c(c是一个正常数)。\sigma ^{2}是权重矩阵元素的方差。参数 M 通常表示直方图估计中使用的“bins”或“binsize”的数量,用于将数据分成多个区间以估计概率密度函数,本文设置为2[n^{\frac{1}{3}}]。B(x) 表示的是一个函数,它将一个实数 x 映射到包含 x 的“bin”或区间。在频谱分析中,B(x)可以用于计算每个区间内的点的数量,从而估计概率密度函数或特征值分布。

而后一项是MP分布的密度函数,公式如下:

MP分布可用于描述大随机矩阵特征值的分布。MP定律与DNN的泛化能力有关。接近MP分布的谱可能意味着模型具有较好的泛化能力,而偏离MP分布可能指示过拟合或其他问题。

4)设定阈值:该值基于L1距离

5)监控训练过程:在训练过程中,对于每个训练周期,计算权重矩阵的谱准则值

6)判断停止时机:如果在连续的几个训练周期中,谱准则值超过了阈值,则认为达到早停条件。

2.2 相较于传统早停策略的优势

1)不需要测试集:传统早停依赖于对模型在测试集上的准确率或者loss的测量,而本文提出的基于谱分析的早停策略完全不需要测试集。只要分析训练集上的权重矩阵的谱就可以了

2)适应性强:因为是依靠权重矩阵的谱分析而不是测试集,所以数据类型或者数据集组成结构等影响较小

3)鲁棒性更强:实验证明,即使训练准确率还在上升,本方法依然能实现早停。

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

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

相关文章

康谋分享 | 从CAN到CAN FD:ADTF在汽车网络中的应用

随着汽车电子技术的发展,车辆上配备了越来越多的电子装置,这些设备多采用点对点的方式通信,这也导致了车内存在庞大的线束。造成汽车制造和安装的困难并进一步降低汽车的配置空间,汽车总线逐步开始向网络化方向发展。 在此背景下…

QT绘图项目 - 汽车表盘

目录 前言: 整体代码 widget.h widget.cpp 效果演示 实现刻度文字正确排版 优化代码 达到效果 封装整理代码结构: widget.h widget.cpp 指针样式美化 优化后的指针API 效果演示 设置高速刻度为红色 优化刻度API 效果演示 速度显示优化 给内圈画上黑色 优化速度…

[modern c++][11] 类型描述库 typeindex

前言&#xff1a; #include <typeindex> typeindex库 包含两个类 std::type_info 和 std::type_index type_info type_info 可以用来接收 typeid 的返回值&#xff0c;常用成员函数如下&#xff1a; hash_code (C11) returns a value which is identical for the same…

python子类调用其他.py文件的父类

main.py需要使用os.py中的构造类。 os.py中定义了一个Ui_MainWindow类 在main.py中定义了一个MyMainWindow子类&#xff0c;传入两个父类的变量名 super(Ui_MainWindow, self).__init__()super() super() 是一个内置函数&#xff0c;用于返回一个代表父类的对象&#xff0c;…

2024/6/19 英语每日一段

From this story, one might imagine Warwick to be opposed to “killing in the name of conservation”; in fact, though, he’s conflicted. Conservation “is really complicated,” he writes. “There is an old saying that anyone who gives you a simple answer to…

涉及缓存数据的知识点

1. cookie 对比过去使用的cookie缓存数据 cookie 是浏览器缓存数据的一种机制&#xff0c;需要在http环境下&#xff0c;才能使用&#xff0c;才能缓存数据&#xff0c;共享数据。还得使用字符串api进行操作。 document.cookie"keyvalue; expiresnew Date(2024-00-00)&…

Linux CFS 调度器 (1):概述

文章目录 1. 前言2. CFS 调度器2.1 概述2.2 一些实现细节2.3 运行队列&#xff1a;红黑树2.4 一些特征2.5 调度策略2.6 调度器类别2.7 扩展&#xff1a;组调度 3. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff…

探索磁力搜索引擎:互联网资源获取的新视角

在当今数字化社会中&#xff0c;寻找和获取网络资源变得更加便捷和多样化。磁力搜索引擎作为这一趋势的一部分&#xff0c;提供了一种新颖而有效的方法来定位和获取用户所需的文件、媒体和其他数字内容。本文将深入探讨磁力搜索引擎的工作原理、使用场景及其在网络文化中的影响…

最快安装zabbix

部署zabbix 6.x 建议使用红帽系统。 https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.9-x86_64-minimal.iso1> 配置安装yum源 [rootzabbix ~]# yum install https://mirrors.huaweicloud.com/zabbix/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-3.el8…

Spring框架常用注解(Annotation)收录

Spring框架常用注解(Annotation)收录 Spring框架广泛使用注解来配置和管理Bean&#xff0c;简化了XML配置&#xff0c;提高了开发效率。以下是一些Spring框架中常用的注解&#xff1a; 1. Component, Service, Repository, Controller 用途&#xff1a;这些是组件扫描注解&am…

`kubectl get pod -oyaml` 和 `kubectl describe pod`

kubectl get pod -oyaml 和 kubectl describe pod 这两个命令都用于获取 Pod 的信息&#xff0c;但它们提供信息的方式和内容有所不同&#xff1a; kubectl get pod -oyaml&#xff1a; 这个命令列出指定 Pod 的信息&#xff0c;输出格式为 YAML。输出内容是结构化的&#xff0…

精度丢失引起的支付失败问题

问题描述 在提交订单时候&#xff0c;输入充值金额和优惠码&#xff0c;后台会返回具体的订单信息&#xff0c;如下图&#xff0c;支付金额应该是1 * (1 - 0.09) 0.91&#xff08;这个是理想状态&#xff09;&#xff0c;但是表单显示的是0.90999997&#xff0c; 然后点击确…

架构师篇-1、总体架构设计

业务架构哲学本质 定位&#xff1a;赋予业务架构设计能力&#xff0c;具备业务架构设计思维模型&#xff0c;掌握业务架构哲学本质&#xff0c;形成以不变应万变的业务架构设计能力。 架构师所需要的能力&#xff1a; 带领业务成功通过框架思维赋能业务架构师知识体系构建掌…

PostgreSQL源码分析——pg_archivecleanup

pg_archivecleanup用于清理PostgreSQL WAL归档文件。指定归档目录&#xff0c;指定一个最老的日志段文件&#xff08;在此之前的WAL日志都删掉&#xff09;&#xff0c; 用法如下&#xff1a; postgresslpc:~$ pg_archivecleanup --help pg_archivecleanup removes older WAL …

HDU——2090.算菜价、2091.空心三角形、2093.考试排名

2090.算菜价 题目描述 Problem - 2090 Problem Description 妈妈每天都要出去买菜&#xff0c;但是回来后&#xff0c;兜里的钱也懒得数一数&#xff0c;到底花了多少钱真是一笔糊涂帐。现在好了&#xff0c;作为好儿子&#xff08;女儿&#xff09;的你可以给她用程序算一…

理解前端Cookie中的SameSite属性

SameSite属性是一个相对较新的Cookie属性&#xff0c;它可以帮助防止跨站请求伪造&#xff08;CSRF&#xff09;攻击。SameSite属性用于声明Cookie是否可以在跨站点情况下发送。 SameSite属性有三个可选值&#xff1a;Strict&#xff0c;Lax和None。 SameSiteStrict&#xff1…

Idea Git 解决Filename too long的问题

问题描述&#xff1a; 从远程厂库拉取代码以后&#xff0c;可能是被人的文件名字太长了&#xff0c;本地显示文件已经被删除。 原因&#xff1a; Windows系统下&#xff0c;在Git使用过程中&#xff0c;出现“filename too long”错误提示。直译成中文的意思就是&#xff1a;”…

Adobe XD是否收费?试试这几款超值的免费软件吧!

Adobe XD是一站式的 UX/UI 设计平台&#xff0c;设计师可以使用Adobe XD完成移动应用app界面设计、网页设计、原型设计等。Adobe XD也是一款结合原型和设计&#xff0c;提供工业性能的跨平台设计产品。而Adobebe。 XD跨平台的特点得到了很好的弥补 Sketch 没有 Windows 版本的缺…

网安人必备!开源网络安全工具TOP 10(附下载地址)

工欲善其事&#xff0c;必先利其器。对于广大的网络安全从业者&#xff0c;以及未来想要从事网络安全的人来说&#xff0c;选择并善用合适的网络安全工具&#xff0c;能有效提升工作效率。 开源网络安全工具之所以能够在众多安全解决方案中脱颖而出&#xff0c;不仅是因为它们…

C++ 68 之 类模版作函数的参数

#include <iostream> // #include <cstring> #include <string> using namespace std;template<class T1, class T2> // 可以设置默认的类型值&#xff0c;后面在使用的时候&#xff0c;就不用再指定类型了 class Students08{ public:T1 m_name;T2 m_a…