论文阅读:Dataset Quantization

摘要

最先进的深度神经网络使用大量(百万甚至数十亿)数据进行训练。昂贵的计算和内存成本使得在有限的硬件资源上训练它们变得困难,特别是对于最近流行的大型语言模型 (LLM) 和计算机视觉模型 (CV)。因此最近流行的数据集蒸馏方法得到发展,旨在通过梯度匹配合成小规模数据集来减少训练样本的数量。然而,由于梯度计算与特定的网络架构相结合,合成数据集是有偏差的,并且在用于训练unseen architectures时表现不佳。为了解决这些限制,我们提出了数据集量化 (DQ),这是一种将大规模数据集压缩成小子集的新框架,可用于训练任何神经网络架构。大量实验表明,DQ 能够生成压缩的小型数据集,用于训练unseen network architectures,以最大压缩比进行不降低模型性能的训练。据我们所知,DQ 是第一个能够成功提取大规模数据集的方法,例如具有最大的压缩比的 ImageNet-1k。值得注意的是,使用来自 ImageNet 的 60% 数据和来自 Alpaca 指令微调数据的 20% 数据,这些模型训练后用于视觉任务(包括分类、语义分割和目标检测)和语言任务(包括指令调优任务,如BBH和DROP)的性能几乎没有下降。
在这里插入图片描述

1 引言

深度神经网络在计算机视觉和自然语言处理等多个领域表现出了优越的性能。它们的性能在很大程度上取决于训练数据量。例如,最近在ImageNet-1K上最先进的模型需要 30 亿数据进行预训练。对于计算资源有限的研究人员来说,这很难负担得起。然而,大型数据集中的所有数据是否有利于训练?是否有可能在不降低训练性能的情况下删除一些冗余样本?在下游任务上使用较少数据的预训练模型的性能是什么?在本文中,我们进行了广泛的实验并对这些问题进行了详细的探索。为了解决第一个问题,最近提出了几个数据集蒸馏 (DD) 算法 [62, 60, 30, 61, 53, 4, 16, 52, 35],通过合成一组明显小于原始数据集的新数据集来减少训练数据集大小。使用新的合成数据集,训练成本显著降低,同时产生与在原始数据集上训练的模型相当的结果。
在这里插入图片描述

尽管取得了重大进展,但两个限制使得这些算法难以部署在工业环境中:

  1. 泛化能力差
  2. 对更大数据集的可扩展性低
    在本文中,我们旨在实现一种结合数据集蒸馏方法和corset方法优点的方法:一种统一的数据集压缩方法,它生成紧凑的数据集,可用于训练各种网络架构,同时保持所有数据保持率下最先进的训练性能。我们首先研究了在低数据率下coreset选择方法性能不佳背后的原因,我们发现它在于一次性选择策略,导致所选数据的多样性较低。
    因此,我们提出了一种新的pipeline来克服coreset算法的上述问题,并将其称为数据集量化(DQ)。具体来说,DQ 首先基于子模块收益递归地将整个数据集划分为一组不重叠的 bins,旨在最大化等式1中定义的多样性收益。然后,从所有 bin 中统一采样一小部分数据样本。通过这种方式,对所选样本进行了优化,以尽可能地覆盖整个数据间多样性最大化的数据集。
    我们的主要贡献总结如下:
  3. 我们提出了一种新的框架数据集量化 (DQ),将数据集压缩成一个小的紧凑数据集,可用于训练具有最先进压缩性能的看不见的网络架构的神经网络。
  4. 我们提出了一种可扩展且高效的数据集压缩算法,可用于大型数据集,例如 ImageNet-1K。使用数据集量化,我们能够从 ImageNet-1K 数据集中删除 40% 的数据和Alpaca 指令数据集中删除 80% 的数据,并训练出没有性能损失的模型 。
  5. 我们验证了使用压缩数据集训练的模型可用于下游任务。在 ImageNet-1K 上用 60% 的数据预训练的模型在 COCO 上实现了对象检测的性能,ADE20K上进行分割。

2 相关工作

在本节中,我们回顾了两种具有代表性的相关方法:数据集蒸馏和核心集选择。我们还介绍了这两种方法的局限性和分析。

2.1 数据集蒸馏

数据集蒸馏(DD)是第一个提出从大型数据集合成少量信息样本的方法。具体来说,它通过最小化在合成数据集上训练的模型的原始训练样本的损失来优化合成样本。然后,人们提出了一系列技术,如数据集凝聚(DC)[63]、DSA[60]和IDC[31]。这些方法建议匹配从原始数据和合成数据计算的损失梯度。CAFE [53] 和 DM [61] 引入了特征分布匹配策略来减少大梯度样本的潜在偏差。最近的工作 [4] 试图最小化原始样本和合成样本之间的训练轨迹的差异。

2.2 核心集选择

核心集选择已被积极探索用于压缩数据集,旨在从目标数据集中选择最具代表性的样本的子集。以往的方法提出了不同的选择标准:geometry-based [8, 1, 44, 46], uncertainty-based [10], error-based [50, 41], decision-boundary-based [18, 38], gradient-matching [39, 28], bilevel optimization [29] and submodularity-based methods[26]。其中,上下文多样性 (CD) [1]、Herding [57] 和 k-Center Greedy [44] 试图根据它们与剩余样本的相似性去除冗余样本。Cal [38] 和 Deepfool [18] 认为核心集应该根据它们的学习困难来选择。Craig [39] 和 GradMatch [28] 试图在网络上训练时找到与整个数据集具有相似梯度值的最佳核心集。Glister [29] 引入了一个验证集来最大化整个数据集的对数似然,其中涉及耗时的双层优化。FL[26]和Graph Cut (GC)[26]同时考虑多样性和信息。

2.3 局限性和分析

DD 方法很难应用于大型数据集或架构,例如 ImageNet-1K 或 ResNet 系列,这主要是由于以下限制:泛化性差、可扩展性差和大型数据集的高计算成本。
在这里插入图片描述

3 方法

如第 2 节所述,基于 DD 方法的合成数据集在训练看不见的网络架构方面表现不佳,因为匹配指标与所使用的网络相结合。因此,我们积极探索对模型架构不敏感的数据选择策略。在本节中,我们首先介绍核心集选择方法的预备知识,并从理论上分析其局限性。特别是,我们选择基于 GraphCut 的方法 [26] 为例。然后,我们详细介绍了我们提出的数据集量化 (DQ) 方法。

3.1 核心集选择方法的预备知识

基于核心集的算法解决了 DD 方法的局限性。然而,几乎所有的coreset选择方法只以一次性的方式从整个数据集中选择单个子集。我们凭经验观察到它不可避免地引入了严重的选择偏差——位于数据集分布高密度区域的样本比其他样本更频繁地被选择——并产生多样性有限的选择结果。我们为观察提供了更详细的理论分析。
核心集选择的理论分析。几乎所有的coreset选择方法都使用heuristic metric来选择样本,这很难避免在heuristic metric下选择一些具有相似性能的样本。GraphCut[26]是一种最新的方法,我们选择它作为分析核心集选择过程的示例。 D = ( x k , y k ) k = 1 M D={(x_k,y_k)}^M_{k=1} D=(xk,yk)k=1M表示M个标注样例。我们默认从 D 中选择 K 个样本以形成核心集。核心集初始化为 S 1 1 ← ∅ S^1_1\leftarrow\emptyset S11,并且更新为 S 1 k ← S 1 k − 1 ∪ x k S^k_1\leftarrow S^{k-1}_1\cup x_k S1kS1k1xk。请注意, S n S_n Sn表示第n个bin, S n k S_n^k Snk表示第n个bin的前k个样例,并且 x k x_k xk表示第k个样例。我们将特征提取器定义为 f (·),在 GraphCut 中,通过最大化特征空间中的子模块增益 P ( x k ) P(x_k) P(xk) 来选择样本,定义如下
在这里插入图片描述

其中 S 1 k − 1 S^{k-1}_1 S1k1表示所选样本集, D / S 1 k − 1 D/S^{k-1}_1 D/S1k1表示剩余样本集。GraphCut 旨在最大化 P ( x k ) P(x_k) P(xk):它期望最大化 x k x_k xk和所选集合之间的多样性,同时最小化 x k x_k xk和剩余集合之间的距离。因此, S 1 S_1 S1 有望成为覆盖原始分布的核心集,同时保持最大的多样性。不过,当K远小于M, C 1 ( x k ) C_1(x_k) C1(xk)的和值远小于 C 2 ( x k ) C_2(x_k) C2(xk) x k x_k xk和剩余集之间的距离在增益计算中采用了主导位置。因此,正如预期的那样,所选 K 个样本的多样性并不能保证,特别是当数据比率较低时。

3.2 DQ概述

基于上述观察和分析,我们提出了数据集量化(DQ),这是一种量化大规模数据集以进行无损训练的新框架,其中考虑了数据效率、可扩展性和计算成本。在本文中,我们首先通过最大化子模块增益将数据集划分为几个不重叠的 bin。
在这里插入图片描述

如图3,给定一个数据集 D,使用预定义大小 K 的 bin 从 D 递归采样小信息集 bin,产生一组小 bin [ S 1 , . . . , S n , . . . , S N ] [S_1,...,S_n,...,S_N] [S1,...,Sn,...,SN]其中 N = M/K。每个bin S n = ( x j ( n ) , y j ( n ) ) j = 1 K ⊂ D S_n = {(x^{(n)}_j,y^{(n)}_j)} ^K_{j=1} \subset D Sn=(xj(n),yj(n))j=1KD在递归选择过程中,受限于原始特征分布的数据间多样性和代表性。早期步骤生成的 bin 主要受与剩余集的距离的限制,而后期的 bin 受到数据间多样性的限制。为了更好地捕获完整数据集的分布,并从以上两个角度平衡影响,然后通过从这些bin中均匀采样集成核心集S *进行训练。最终,通过从图像中删除非信息patchs来进一步减轻存储负担,从而去除冗余信息。
数据集 bin 生成,每个 bin 通过最大化等式1中声称的子模块增益来选择。DQ 从 D 递归地选择 bin,其中第 n 个 bin 中的第 i 个样本的选择公式如下:
在这里插入图片描述

Bin采样:在生成具有各种特征的数据集 bin 后,为了获得多样化和信息丰富的子集,使用采样器 g(·,·) 从每个 bin 中采样某个部分并形成最终的紧凑集。该过程正式定义为
在这里插入图片描述

此外,我们通过将每个样本的冗余数据划分为patch来去除每个样本中的冗余数据。受 Masked Auto-Encoder (MAE) [20] 的启发,它仅使用其中的一些patch来恢复图像,我们删除了不太重要的patch,以减少每张图片用于描述的像素数量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第三天 Kubernetes进阶实践

第三天 Kubernetes进阶实践 本章介绍Kubernetes的进阶内容,包含Kubernetes集群调度、CNI插件、认证授权安全体系、分布式存储的对接、Helm的使用等,让学员可以更加深入的学习Kubernetes的核心内容。 ETCD数据的访问 kube-scheduler调度策略实践 预选与…

Python内置模块

目录 什么是模块 模块分类 通过模块创建者分类 系统内置模块 第三方模块 在线安装 离线安装 模块导入 math和random模块介绍 math模块 random模块 什么是模块 在我们编写程序时,需要导入包。例如随机数的产生,需要import random。import XXX&…

【MATLAB】兔子机器人总系统_动力学模型解读(及simulink中的simscape的各模块介绍)

1、动力学模型 Rectangular Joint 控制平面上(x,y轴)的移动,去掉以后,机器人在原地翻滚不移动 Rigid Transform 坐标转换,B站视频已收藏 去掉,机体与地面贴合 此处的作用是设定机体的初…

【conda】实现conda环境迁移的4种方式

文章目录 方案1: 使用conda pack制作压缩包并在目标环境解压使用方案2: 使用package列表文件重新创建conda环境方案3: scp将环境文件夹拷贝到目标主机上方案4: 通过--clone先克隆一个环境再conda pack打包迁移 方案1: 使用conda pack制作压缩包并在目标环境解压使用 适合离线环…

不买后悔的阿里云服务器租用价格表_优惠活动整理_2024新版

2024阿里云服务器优惠活动政策整理,阿里云99计划ECS云服务器2核2G3M带宽99元一年、2核4G5M优惠价格199元一年,轻量应用服务器2核2G3M服务器61元一年、2核4G4M带宽165元1年,云服务器4核16G10M带宽26元1个月、149元半年,云服务器8核…

Python基于opencv的人脸识别上课签到考勤系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

JS 实现AES方式加密数据实现示例

简介:全称高级加密标准(英文名称:Advanced Encryption Standard),在密码学中又称 Rijndael 加密法,由美国国家标准与技术研究院 (NIST)于 2001 年发布,并在 2002 年成为有…

最近开发中遇到的一些问题

puppeteer下载失败问题 使用的淘宝镜像,但执行命令npm i puppeteer之后,报错: npm ERR! code 1 npm ERR! path E:\项目-临时\test_install_puppeteer\node_modules\puppeteer npm ERR! command failed npm ERR! command C:\WINDOWS\system3…

00X集——CAD vba 填充(hatch)及挖空

首先,画个椭圆,并填充,直接上代码: Sub 画椭圆填充() 2024年3月6日21:10:22 by qq443440204 Dim hat As AcadHatch 填充 Dim ell(0) As AcadEllipse 椭圆 Dim cent(0 To 2) As Double 椭圆中心点 Dim dd(0 To 2) As Double 椭圆长…

【爬虫】单首音乐的爬取(附源码)

以某狗音乐为例 import requests import re import time import hashlibdef GetResponse(url):# 模拟浏览器headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0}# 发送请求…

python+django+vue房屋租赁系统 8gwmf

房屋租赁系统在设计与实施时,采取了模块性的设计理念,把相似的系统的功能整合到一个模组中,以增强内部的功能,减少各组件之间的联系,从而达到减少相互影响的目的。如房源信息、预约信息、求租信息模块等[12]。 管理员后…

常见排序算法解析

芝兰生于深林,不以无人而不芳;君子修道立德,不为穷困而改节 文章目录 插入排序直接插入排序希尔排序 选择排序直接选择排序堆排序 交换排序冒泡排序快速排序优化挖坑法前后指针法非递归版 归并排序递归非递归 总结 插入排序 插入排序&#…

STM32控制气泵和电磁阀实现

一、功能简介 使用STM32控制气泵和电磁阀的开和关,气泵和电磁阀的供电电压为12V。 二、实现过程 1、气泵和电磁阀的开和关均为开关量,实现控制方法有多种,比如继电器,但是继电器动作有噪声且体积较大,更好的方法为使…

Xilinx 7系列FPGA配置(ug470)

Xilinx 7系列FPGA配置(ug470) 配置模式串行配置模式接口从-连接方式主-连接方式串行菊花链(非同时配置)串行配置(同时配置)时序 主SPI配置模式SPIx1/x2 连接图SPIx1模式时序SPIx4 连接图SPI操作指令操作fla…

php反序列化字符逃逸

php反序列化和序列化 PHP序列化:serialize() 序列化是将变量或对象转换成字符串的过程,用于存储或传递 PHP 的值的过程中,同时不丢失其类型和结构。“序列化”是一种把对象的状态转化成字节流的机制 类似于这样的结构: O:4:&quo…

【Linux】Linux网络故障排查与解决指南

🍎个人博客:个人主页 🏆个人专栏:Linux ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 检查网络连接状态: 检查路由表: 检查DNS配置: 检查网络连接状态: 检查防火墙设…

类与对象(三)--构造函数体中的赋值和初始化列表的区别

🎧1构造函数体赋值 🔎在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 ⭐️就像上述代码中的构造函数,其函数体的语句只能被称为赋予初值而不能称为初始化。因为初始化是在定义的同时赋…

解决WordPress更新插件或者更新版本报WordPress 需要访问您网页服务器的权限的问题

文章目录 前言一、原因二、解决步骤总结 前言 当对WordPress的插件或者版本进行更新时报错:要执行请求的操作,WordPress 需要访问您网页服务器的权限。 请输入您的 FTP 登录凭据以继续。 如果您忘记了您的登录凭据(如用户名、密码&#xff09…

前端面试拼图-原理源码

摘要:最近,看了下慕课2周刷完n道面试题,记录下... 1. JS内存泄漏如何检测?场景有哪些? 1.1 垃圾回收 GC 垃圾回收是一种自动管理内存的机制,它负责在运行时跟踪内存的分配和使用情况,并在不再需要的对象…

Python 开发图形界面程序

用 Python 语言开发图形界面的程序,有2种选择: Tkinter 基于Tk的Python库,这是Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…