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

《论文阅读:Dataset Condensation with Distribution Matching》

点进去这篇文章的开源地址,才发现这篇文章和DC DSA居然是一个作者,数据浓缩写了三篇论文,第一篇梯度匹配,第二篇数据增强后梯度匹配,第三篇匹配数据分布。DC是匹配浓缩数据和原始数据训练一次后的梯度差,DSA是在DC前加入了一层数据增强,DM直接就匹配浓缩数据和原始数据丢入模型得到的输出,匹配输出的分布。

一个github地址包含了三个数据浓缩方法的开源代码。

1. 基于分布匹配的数据集浓缩

在降低训练成本方面,最近一个很有前途的方向是数据集凝聚,其目的是在保留原始信息的情况下,用一个小得多的学习合成集取代原来的大训练集。
虽然在小集合的压缩图像上训练深度模型可以非常快,但由于复杂的双层优化和二阶导数计算,它们的合成仍然是计算昂贵的(DD,DC,DSA)。
在本工作中,我们提出了一种简单而有效的方法,通过匹配合成图像和原始训练图像在多个采样嵌入空间的特征分布来合成压缩图像。我们的方法显著降低了合成成本,同时实现了相当或更好的性能。

2. 方法

2.1 数据浓缩的问题:

现有的方法包括DD,DC和DSA等,他们的弊端在于时间复杂度太高,内层需要训练模型并更新浓缩数据集,外层还需要适应不同的 θ 0 \theta_0 θ0,实现起来需要三层循环,时间复杂度高。

2.2 分布匹配的数据浓缩

真实数据分布记为 P D P_{\mathcal{D}} PD
我们将训练数据记为 x ∈ ℜ d \boldsymbol{x} \in \Re^d xd ,并且可以被编码到一个低维空间,通过函数 ψ ϑ : ℜ d → ℜ d ′ \psi_{\vartheta}: \Re^d \rightarrow \Re^{d^{\prime}} ψϑ:dd ,其中 d ′ ≪ d d^{\prime} \ll d dd ϑ \vartheta ϑ 是函数的参数数值。 换句话说,每个embedding 函数 ψ \psi ψ可以被视为提供其输入的部分解释,而它们的组合则提供完整的解释。

现在我们可以使用常用的最大平均差异(MMD)来估计真实数据分布和合成数据分布之间的距离:
sup ⁡ ∥ ψ ϑ ∥ H ≤ 1 ( E [ ψ ϑ ( T ) ] − E [ ψ ϑ ( S ) ] ) \sup _{\left\|\psi_{\vartheta}\right\|_{\mathcal{H}} \leq 1}\left(\mathbb{E}\left[\psi_{\vartheta}(\mathcal{T})\right]-\mathbb{E}\left[\psi_{\vartheta}(\mathcal{S})\right]\right) ψϑH1sup(E[ψϑ(T)]E[ψϑ(S)])

由于我们无法获得真实数据分布,因此我们使用 MMD 的经验估计:
E ϑ ∼ P ϑ ∥ 1 ∣ T ∣ ∑ i = 1 ∣ T ∣ ψ ϑ ( x i ) − 1 ∣ S ∣ ∑ j = 1 ∣ S ∣ ψ ϑ ( s j ) ∥ 2 \mathbb{E}_{\boldsymbol{\vartheta} \sim P_{\vartheta}}\left\|\frac{1}{|\mathcal{T}|} \sum_{i=1}^{|\mathcal{T}|} \psi_{\boldsymbol{\vartheta}}\left(\boldsymbol{x}_i\right)-\frac{1}{|\mathcal{S}|} \sum_{j=1}^{|\mathcal{S}|} \psi_{\boldsymbol{\vartheta}}\left(\boldsymbol{s}_j\right)\right\|^2 EϑPϑ T1i=1Tψϑ(xi)S1j=1Sψϑ(sj) 2

就是在不同参数取值的embedding函数下,输入原始数据和浓缩数据得到的输出要尽可能接近,论文里就直接使用了神经网络的输出,让神经网络的输出尽可能接近。

因为这篇论文是DSA的后续作,所以顺其自然,沿用了DSA的方法,训练的时候对浓缩数据和原始数据都进行了相同的数据增强。
min ⁡ S E ω ∼ P ϑ ω ∼ Ω ∥ 1 ∣ T ∣ ∑ i = 1 ∣ T ∣ ψ ϑ ( A ( x i , ω ) ) − 1 ∣ S ∣ ∑ j = 1 ∣ S ∣ ψ ϑ ( A ( s j , ω ) ) ∥ 2 \min _{\mathcal{S}} \mathbb{E}_{\substack{\boldsymbol{\omega} \sim P_{\boldsymbol{\vartheta}} \\ \omega \sim \Omega}}\left\|\frac{1}{|\mathcal{T}|} \sum_{i=1}^{|\mathcal{T}|} \psi_{\boldsymbol{\vartheta}}\left(\mathcal{A}\left(\boldsymbol{x}_i, \omega\right)\right)-\frac{1}{|\mathcal{S}|} \sum_{j=1}^{|\mathcal{S}|} \psi_{\boldsymbol{\vartheta}}\left(\mathcal{A}\left(\boldsymbol{s}_j, \omega\right)\right)\right\|^2 SminEωPϑωΩ T1i=1Tψϑ(A(xi,ω))S1j=1Sψϑ(A(sj,ω)) 2
A \mathcal{A} A就是对应的数据增强操作, ω \omega ω是对应数据增强操作的参数。

2.3 训练步骤

在这里插入图片描述
训练K-1步,每一步都选定一个embedding函数的参数,不断地训练并修改S使得S输出尽可能接近原始数据集T。(这个embedding函数就是一个具体的神经网络)

3. 结果

在这里插入图片描述
由于此方法计算不需要计算梯度,只需要正向传播embedding网络,得到输出之后反向传播浓缩数据集S即可,因此可以压缩到更多数量的图片上,并且第一次在TinyImageNet这种大数据集上进行压缩。

在这里插入图片描述
比起DC和DSA,DM得到的数据分布更接近原始数据分布。

相关文章:

《论文阅读:Dataset Condensation with Distribution Matching》

点进去这篇文章的开源地址,才发现这篇文章和DC DSA居然是一个作者,数据浓缩写了三篇论文,第一篇梯度匹配,第二篇数据增强后梯度匹配,第三篇匹配数据分布。DC是匹配浓缩数据和原始数据训练一次后的梯度差,DS…...

免费chatGPT工具

发现很多人还是找不到好用的chatGPT工具,这里分享一个邮箱注册即可免费试用。 PromptsZone - 一体化人工智能平台使用 PromptsZone 与 ChatGPT、Claude、AI21 Labs、Google Bard 聊天,并使用 DALL-E、Stable Diffusion 和 Google Imagegen 创建图像&…...

数据分析基础:数据可视化+数据分析报告

数据分析是指通过对大量数据进行收集、整理、处理和分析,以发现其中的模式、趋势和关联,并从中提取有价值的信息和知识。 数据可视化和数据分析报告是数据分析过程中非常重要的两个环节,它们帮助将数据转化为易于理解和传达的形式&#xff0…...

settings.xml的文件配置大全

settings.xml 文件中最常配置的还是这几个标签 localRepository和mirrors settings.xml文件官方文档地址 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"ht…...

极简c++(7)类的继承

为什么要用继承 子类不必复制父类的任何属性&#xff0c;已经继承下来了&#xff1b;易于维护与编写&#xff1b; 类的继承与派生 访问控制规则 一般只使用Public&#xff01; 构造函数的继承与析构函数的继承 构造函数不被继承&#xff01; 在创建子类对象的时候&…...

DOSBox和MASM汇编开发环境搭建

DOSBox和MASM汇编开发环境搭建 1 安装DOSBox2 安装MASM3 编译测试代码4 运行测试代码5 调试测试代码 本文属于《 X86指令基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 安装DOSBox 下载DOSBox和MASM&#xff1a;https://download.csdn.net/download/u011832525/884180…...

047:mapboxGL本地上传shp文件,在map上解析显示图形

第047个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中本地上传shp文件,利用shapefile读取shp数据,并在地图上显示图形。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共117行)加载shapefile.js方式…...

Windows下DataGrip连接Hive

DataGrip连接Hive 1. 启动Hadoop2. 启动hiveserver2服务3. 启动元数据服务4. 启动DG 1. 启动Hadoop 在控制台中输入start-all.cmd后&#xff0c;弹出下图4个终端&#xff08;注意终端的名字&#xff09;2. 启动hiveserver2服务 单独开一个窗口启动hiveserver2服务&#xff0c;…...

Xshell7和Xftp7超详细下载教程(包括安装及连接服务器附安装包)

1.下载 1.官网地址&#xff1a; XSHELL - NetSarang Website 选择学校免费版下载 2.将XSHELL和XFTP全都下载下来 2.安装 安装过程就是选择默认选项&#xff0c;然后无脑下一步 3.连接服务器 1.打开Xshell7&#xff0c;然后新建会话 2.填写相关信息 出现Connection establi…...

ASP.net数据从Controller传递到视图

最常见的方式是使用模型或 ViewBag。 使用模型传递数据&#xff1a; 在控制器中&#xff0c;创建一个模型对象&#xff0c;并将数据赋值给模型的属性。然后将模型传递给 View 方法。 public class HomeController : Controller {public IActionResult Index(){// 创建模型对…...

c++ 友元函数 友元类

1. 友元函数 1.1 简介 友元函数是在类的声明中声明的非成员函数&#xff0c;它被授予访问类的私有成员的权限。这意味着友元函数可以访问类的私有成员变量和私有成员函数&#xff0c;即使它们不是类的成员。 一个类中&#xff0c;可以将其他类或者函数声明为该类的友元&#…...

Spring推断构造器源码分析

Spring中bean虽然可以通过多种方式&#xff08;Supplier接口、FactoryMethod、构造器&#xff09;创建bean的实例对象&#xff0c;但是使用最多的还是通过构造器创建对象实例&#xff0c;也是我们最熟悉的创建对象的方式。如果有多个构造器时&#xff0c;那Spring是如何推断使用…...

十五、【历史记录画笔工具组】

文章目录 历史记录画笔工具历史记录艺术画笔工具 历史记录画笔工具 历史记录画笔工具很简单&#xff0c;就是将画笔工具嗯&#xff0c;涂抹过的修改过的地方&#xff0c;然后用历史记录画笔工具重新修改回来&#xff0c;比如我们将三叠美元中的一叠用画笔工具先涂抹掉&#xf…...

Spark上使用pandas API快速入门

文章最前&#xff1a; 我是Octopus&#xff0c;这个名字来源于我的中文名--章鱼&#xff1b;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github &#xff1b;这博客是记录我学习的点点滴滴&#xff0c;如果您对 Python、Java、AI、算法有兴趣&#xff0c;可以关注我的…...

【WebRTC---源码篇】(十:零)WEBRTC/StreamStatisticianImpl持续更新中)

StreamStatisticianImpl是WebRTC的一个内部实现类&#xff0c;用于统计和管理媒体流的各种统计信息。 StreamStatisticianImpl负责记录和计算以下统计数据&#xff1a; 1. 带宽统计&#xff1a;记录媒体流的发送和接收带宽信息&#xff0c;包括发送比特率、接收比特率、发送丢…...

​调用Lua脚本tostring(xxx)报attempt to call a nil value (global ‘tostring‘

在c程序里调用Lua脚本, 脚本中用到了转字符串 tostring(xxx) str "test" function output(a,b,c)d "a:"..tostring(a).."b:"..tostring(b).."c"..tostring(c)return d end 实际运行会报错&#xff1a; attempt to call a nil v…...

PBA.客户需求分析 需求管理

一、客户需求分析 1 需求的三个层次: Requirement/Wants/Pains 大部分人认为&#xff0c;产品满足不了客户需要&#xff0c;是因为客户告知的需求是错误的&#xff0c;这听起来有一些道理&#xff0c;却没有任何意义。不同角色对于需求的理解是不一样的。在客户的需求和厂家的…...

Kafka进阶

Kafka进阶 Kafka事务 kafka的事务机制是指kafka支持跨多个主题和分区的原子性写入&#xff0c;即在一个事务中发送的所有消息要么全部成功&#xff0c;要么全部失败。 kafka的事务机制涉及到以下几个方面&#xff1a; 事务生产者&#xff08;transactional producer&#x…...

大数计算:e^1000/300!

1.问题&#xff1a;大数计算可能超出数据类型范围 当单独计算 &#xff0c;因为 &#xff0c;double的最大取值为1.79769e308&#xff0c;所以 肯定超过了double的表示范围。 同样&#xff0c;对于300&#xff01;也是如此。 那我们应该怎么去计算和存储结果呢&#xff1f;…...

力扣164最大间距

1.前言 因为昨天写了一个基数排序&#xff0c;今天我来写一道用基数排序实现的题解&#xff0c;希望可以帮助你理解基数排序。 这个题本身不难&#xff0c;就是线性时间和线性额外空间(O(n))的算法&#xff0c;有点难实现 基数排序的时间复杂度是O(d*(nradix))&#xff0c;其中…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

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

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

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...