数据蒸馏论文阅读

news/2025/3/6 21:34:48/文章来源:https://www.cnblogs.com/mianmaner/p/18756538

Dataset Distillation

18年的论文,最早提出数据蒸馏的概念

理论

通常的梯度下降是小批量的 SGD,每次都需要从训练数据中选一个 minibatch 来更新。这篇文章的重点是学习到一个合成数据 \(\hat x=\{\hat x_i\}_{i=1}^M\) 和学习率 \(\hat \eta\),这样我们就可以固定梯度下降的函数,不需要选择 minibatch

方法是先给定一个初始参数,最小化以下目标函数来获得合成数据集和学习率
image-20240517010555090

初始参数设定

随机初始化、固定初始化、随机预训练参数、固定预训练参数

Dataset Condensation with Gradient Matching(DC)

首次提出通过梯度匹配策略来蒸馏数据集

本文希望学习一个带有参数 \(\theta\) 的可微函数 \(\phi\)(如深度神经网络),以正确预测未知图像的标签,可以通过最小化训练集中的经验损失项来学习此函数的参数

理论

image-20240517011238486

需要实现一样的泛化性能,就要实现参数 \(\theta^S\)\(\theta^L\) 是相近的。这里提出了一个基于梯度匹配的方法,不仅希望最终参数接近,而且在整个优化过程遵循相似的路径

主要目标函数是让每一层的梯度函数距离函数(这里其实就是用两个向量的夹角余弦来距离)

\[d(A,B)=\sum_{i=1}^{out}(1-\frac{A_i\cdot B_i}{||A_i||||B_I||}) \]

Dataset Condensation with Differentiable Siamese Augmentation(DSA)

主要思路是将真实数据与合成数据使用相同的转换策略,通过数据增强将增强的知识转移到合成图像中(很棒的一个想法)

image-20240518142045926

在学习合成图像的同时应用数据增强,这可以通过重写该式来制定
image-20240518140706728

(其中 \(A\) 表示一系列图像变换,\(\omega^S\)\(\omega^T\) 表示合成和真实数据的变换参数)

Siamese Augmentation

随机采样 \(\omega^S\)\(\omega^T\) 没有意义,这会导致不同区域梯度匹配,造成信息丢失。为了解决这个问题,本文在合成和真实数据集中使用相同的变换,即 \(\omega^S=\omega^T\)

由于两个集合具有不同数量的图像 \(S\ll T\),并且它们之间没有一对一的对应关系,本文随机采样单个变换 \(\omega\),并在每次训练迭代时将其应用于小批量对中的所有图像

Differentiable Augmentation

求解式 (3),对于S 通过反向传播计算合成图像的匹配损失 D 的梯度,所以合成图像 S 的变换 A 必须可微
image-20240518141836543

Dataset Condensation with Distribution Matching

理论

我们将训练数据记为 \(x\in R^d\),并且可以被编码到一个低维空间,通过函数 \(\phi_\theta:R^d\rightarrow R^{d'}\),其中 \(d'\ll d\)\(\theta\) 是函数的参数数值。 换句话说,每个embedding 函数\(\phi\) 可以被视为提供其输入的部分解释,而它们的组合则提供完整的解释

现在我们可以使用常用的最大平均差异(\(MMD\))来估计真实数据分布和合成数据分布之间的距离
image-20240518193706825

又因为无法获得真实数据分布,因此使用 \(MMD\) 的经验估计
image-20240518195124843

因为这篇论文是 DSA 的后续作,所以也沿用了 DSA 的方法

训练

训练K-1步,每一步都选定一个embedding函数的参数,不断地训练并修改S使得S输出尽可能接近原始数据集T

Dataset Distillation by Matching Training Trajectories

image-20240518215908280

训练轨迹匹配,引导网络在多个训练steps中达到与在真实数据上训练的网络相似的状态

专家轨迹

基于真实数据集训练多个 epoch,保存每一次的参数。这些参数序列就称为专家轨迹,它们代表了数据集蒸馏任务的理论上限

参数匹配

每个蒸馏 step,首先在一个随机时间步内的一个专家轨迹 \(\theta_t^*\) 中采样参数,并使用这些参数初始化学生参数 \(\hat \theta_t := \theta_t^*\)

给 t 一个上限 T,使之忽略专家轨迹中靠后的参数变化小(信息较少)的部分

初始化学生网络后,根据合成数据的分类损失对学生参数进行更新。最后使用权重匹配损失更新蒸馏图像

image-20240518222009420

通过反向传播到学生网络的所有N个更新来最小化这个目标

内存优化

为学生网络的每次更新采样一个新的 mini-batch,这样在计算最终权重匹配损失时,所有提炼的图像都将被看到。mini-batch 仍然包含来自不同类别的图像,但每个类别的图像要少得多。

Dataset Quantization

image-20240519034424682

将 Coreset Selection 运用到数据集蒸馏里面,结合二者的优势

使用 Graphcut 方法进行核心集选择,将数据集划分为几个不重叠的 bin。早期步骤生成的 bin 主要受到到剩余集合的距离的约束,而后面的 bin 更多地受到数据间多样性的约束

最终集成一个核心集 S*,通过均匀采样从这些 bin 中进行训练
image-20240519135610773

DATM

推测匹配模型的前期轨迹就会倾向于在生成数据上添加更多的简单特征而匹配后期轨迹则会倾向于添加难特征

进行了探索路径不同的阶段对数据集蒸馏的影响,结果如下
image-20240518224447045

实验结果表示当 IPC 较低时,匹配前期轨迹是有效的。而 IPC 较高时,匹配后期轨迹是最优的,甚至匹配前期轨迹会变得有害。基于这些现象,我们提出基于 IPC 控制生成特征的难易,并基于此提出了我们的方法

方法

可以通过限制匹配的范围来控制生成特征的难度,设置上下限
image-20240519033351211

同时,为了使蒸馏数据集所含的信息更加丰富,我们将蒸馏数据的硬标签替换为软标签并在蒸馏过程中不断优化它。然而这种做法面临着一些挑战,例如软标签的初始化可能会包含错误信息,以及优化软标签会让蒸馏变得不稳定。为了解决这些问题,我们提出了以下策略:

早期蒸馏阶段仅生成简单的特征。在将足够多的简单特征嵌入到合成数据中以便代理模型能够很好地学习它们之后,我们就会逐渐生成更难的特征

实现方式:样本范围上设置了一个浮动上限T,该上限一开始设置得相对较小,并且随着蒸馏的进行逐渐增加,直到达到其上限T+

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

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

相关文章

激活函数汇总

激活函数 激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。 Sigmoid (1) 公式:\(S(x)=\frac{1}{1+e^{-x}}\) (2) 函数图:(3) 缺点: ① 输出值落在(0,1)之间,期望均值为0.5,不符合均值为0的理想状态 ② 该函数存在一正一负两块“死区”(死区:梯度计算为0,…

深入探究C语言内存分配系列函数

深入探究C语言内存分配系列函数 目录深入探究C语言内存分配系列函数内存是什么?内存分配的三种方式为什么要学习动态分配的系列函数?四大内存分配函数前置知识malloc与freemallocfreerealloccallocDeepseek的总结 当我们完成一个程序设计时,需要对其背后的底层原理学习 操作…

第一课 引言与词向量

对于文字的意义,语言学家有很多种定义。其中一种定义运用在自然语言处理中非常有用,这种意义的定义见下分布式语义就是看上下文词来决定单词的意义。于是我们可以利用词向量来衡量两个词之间的相似程度,词的意义被分散在词向量的每一维中 词嵌入之所以叫词嵌入,是因为我们给…

2025.03.06 CW 模拟赛 A. 岛屿

题面 & 题解 A. 岛屿 概率期望会不了一点. 思路 假设我们最开始有 \(a\) 个「蓝蓝 / 红红」链, \(b\)​ 个「蓝红」链. 我们考虑对于每一个「蓝红」链向外连边. 如图, 我们将红点向外连向一条「蓝蓝」链, 由于每一个点只能最多向外连一条边, 那么它们就「合成」了一条蓝蓝链…

日报202535

今天总算是把项目组的事情解决了,于是正式开了Springboot+vue的学习,用了一晚上的时间配置好了环境(更新了JDK与Maven,重新设置了idea的设置) 然后了解了springboot的配置文件和基本使用,跑出了第一个spring的网页。这看着真有意思吧感觉比jsp方便不少。

Java SPI机制使用

1. Service Provider Interface SPI描述接口提供者优先规定接口要求,然后交由具体的实现者对接口进行内容的实现;2. 实现 //1. 定义接口 public Interface Demo_interface{//具体实现者必须要实现的内容void doexcute(); } //2.实现接口 public class Demo_Impl implements D…

互联网寒冬下,如何写好一份.NET求职简历?附带简洁免费的简历模板!!!

前言 在当今互联网行业的寒冬时期,每一位求职者都面临着更为激烈的竞争环境,如何在众多.NET候选人中脱颖而出,成为企业心仪的对象,用心准备一份简历显得尤为重要。简历不仅是个人职业经历的简要概述,更是向潜在雇主、HR展示你专业技能、项目经验、个人特质以及求职诚意的关…

注册github

今天成功注册了github账户,并上传了一个小项目。

HarmonyOS Next 属性动画和转场动画

HarmonyOS Next 属性动画和转场动画 在鸿蒙应用开发中,动画是提升用户体验的关键要素。通过巧妙运用动画,我们能让应用界面更加生动、交互更加流畅,从而吸引用户的注意力并增强其使用粘性。鸿蒙系统为开发者提供了丰富且强大的动画开发能力,其中属性动画是整个动画体系的核…

C语言小记

int a =10; int b=3; int c= pow(10,3); //表示10的三次方unsigned 表示不用补码表示 //数字的输入,%d 包括 char,short,int%u unsigned%ld long long%lu unsigned long long输入 float 是 %f double 是 %lf shuchu dou shi %f保留小数的话是大于5才入,小于等于5舍去强…

系统流程图联系

练习题一:图书馆借阅管理系统流程图绘制 背景说明:在学校图书馆借阅管理系统中,学生借阅图书需要经过一系列流程。首先,学生携带校园卡前往借阅处,工作人员通过刷卡设备读取学生信息,系统验证学生身份是否有效。若身份无效,系统提示原因(如校园卡过期、欠费等)。若身份…