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

《DATASET DISTILLATION》

这篇文章提出了数据浓缩的办法,在前面已有的知识浓缩(压缩模型)的经验上,提出了不压缩模型,转而压缩数据集的办法,在压缩数据集上训练模型得到的效果尽可能地接近原始数据集的效果。

摘要

模型蒸馏的目的是将复杂模型的知识提炼为简单模型的知识。在本文中考虑了一个替代的公式,称为数据集蒸馏:我们保持模型固定,而不是尝试从一个大的训练数据集提取知识到一个小的。其思想是合成少量的数据点,这些数据点不需要来自于正确的数据分布,但当给学习算法作为训练数据时,会近似于在原始数据上训练的模型。例如,文章展示了可以将6万幅MNIST训练图像压缩成10幅合成蒸馏图像(每类一张),在给定一个固定的网络初始化条件下,只需几个梯度下降步骤,就可以达到接近原始性能的效果。
在这里插入图片描述
效果1:使用压缩后的图片进行训练,10张MNIST或者100张CIFAR10,就可以达到94%的准确率和54%的准确率。
在这里插入图片描述
效果2:使用压缩数据进行fine-tune,可以很好地微调数据集效果。
效果3:将攻击数据集浓缩,可以更好地强化攻击的效果,仅仅用300张图片就使得目标类的分类准确率降低至7%。

相关工作:

Pass

方法:

准备工作

考虑有数据集 x = { x i } i = 1 N \mathbf{x}=\left\{x_i\right\}_{i=1}^N x={xi}i=1N为原始数据集,神经网络为 θ \theta θ ℓ ( x i , θ ) \ell\left(x_i, \theta\right) (xi,θ) x i x_i xi在模型 θ \theta θ上的损失。
θ ∗ = arg ⁡ min ⁡ θ 1 N ∑ i = 1 N ℓ ( x i , θ ) ≜ arg ⁡ min ⁡ θ ℓ ( x , θ ) \theta^*=\underset{\theta}{\arg \min } \frac{1}{N} \sum_{i=1}^N \ell\left(x_i, \theta\right) \triangleq \underset{\theta}{\arg \min } \ell(\mathbf{x}, \theta) θ=θargminN1i=1N(xi,θ)θargmin(x,θ)
上式就是神经网络优化的最终目标,训练获得一个 θ ∗ \theta^* θ使得模型在数据集上的损失最小。
这里为了方便,直接将
ℓ ( x , θ ) \ell(\mathbf{x}, \theta) (x,θ)
记为数据集上的损失平均和

优化浓缩数据

浓缩数据和浓缩学习率都是随机初始化的,通过不断地计算损失梯度下降,优化得到最终的浓缩数据集以及浓缩学习率,如何获得优化函数便是这里的重点。

x ~ = { x ~ i } i = 1 M \tilde{\mathbf{x}}=\left\{\tilde{x}_i\right\}_{i=1}^M x~={x~i}i=1M M ≪ N M \ll N MN 并且对应的学习率 η ~ \tilde{\eta} η~,对应的梯度下降为:
θ 1 = θ 0 − η ~ ∇ θ 0 ℓ ( x ~ , θ 0 ) \theta_1=\theta_0-\tilde{\eta} \nabla_{\theta_0} \ell\left(\tilde{\mathbf{x}}, \theta_0\right) θ1=θ0η~θ0(x~,θ0)
使用生成的浓缩数据集 x ~ \tilde{\mathbf{x}} x~ 可以极大地增强训练的效果。给定一个初始的 θ 0 \theta_0 θ0,我们获得 x ~ \tilde{\mathbf{x}} x~ 和学习率 η ~ \tilde{\eta} η~ 通过最小化以下损失函数 L \mathcal{L} L :
x ~ ∗ , η ~ ∗ = arg ⁡ min ⁡ x ~ , η ~ L ( x ~ , η ~ ; θ 0 ) = arg ⁡ min ⁡ x ~ , η ~ ℓ ( x , θ 1 ) = arg ⁡ min ⁡ x ~ , η ~ ℓ ( x , θ 0 − η ~ ∇ θ 0 ℓ ( x ~ , θ 0 ) ) , \tilde{\mathbf{x}}^*, \tilde{\eta}^*=\underset{\tilde{\mathbf{x}}, \tilde{\eta}}{\arg \min } \mathcal{L}\left(\tilde{\mathbf{x}}, \tilde{\eta} ; \theta_0\right)=\underset{\tilde{\mathbf{x}}, \tilde{\eta}}{\arg \min } \ell\left(\mathbf{x}, \theta_1\right)=\underset{\tilde{\mathbf{x}}, \tilde{\eta}}{\arg \min } \ell\left(\mathbf{x}, \theta_0-\tilde{\eta} \nabla_{\theta_0} \ell\left(\tilde{\mathbf{x}}, \theta_0\right)\right), x~,η~=x~,η~argminL(x~,η~;θ0)=x~,η~argmin(x,θ1)=x~,η~argmin(x,θ0η~θ0(x~,θ0)),

现在看着可能会很抽象,这里简单的讲解一下,方法就是:

  1. 先使用随机初始化的 x ~ \tilde{\mathbf{x}} x~ η ~ \tilde{\eta} η~,将浓缩数据集 x ~ \tilde{\mathbf{x}} x~和浓缩学习率 η ~ \tilde{\eta} η~丢入神经网络 θ 0 \theta_0 θ0进行一轮训练。
  2. 使用原始数据集 检验 使用浓缩数据集 x ~ \tilde{\mathbf{x}} x~和浓缩学习率 η ~ \tilde{\eta} η~训练得到的新一轮神经网络 θ 1 \theta_1 θ1,计算原始数据集在这个模型上的损失。
  3. 这个损失就是我们的优化目标,我们要让这个损失最小。

模型随机初始化

上面的函数中,模型总是使用 θ 0 \theta_0 θ0进行训练获得浓缩数据集和浓缩学习率,作者担心这样获得的浓缩数据集和浓缩学习率会和 θ 0 \theta_0 θ0有较大的关系,不能很好地泛化到其他初始化,因此作者又提出使用随机的 θ 0 \theta_0 θ0来训练。
于是作者就改成,每一轮的 θ \theta θ都不同, θ 0 \theta_0 θ0是一个满足 p ( θ ) p(\theta) p(θ)的分布。

SGD下降法

每次选中一个batch,每个batch使用不同的初始化,就是把之前的GD修改为minibatch梯度下降。


具体算法如下图所示:在这里插入图片描述
将原始数据集划分为 x t x_t xt的batch,每一个batch有不同的初始化 θ 0 \theta_0 θ0,每一个batch的计算方法与前面相同,最后将每个batch计算获得的 x ~ \tilde{\mathbf{x}} x~ η ~ \tilde{\eta} η~平均。

相关文章:

《DATASET DISTILLATION》

这篇文章提出了数据浓缩的办法,在前面已有的知识浓缩(压缩模型)的经验上,提出了不压缩模型,转而压缩数据集的办法,在压缩数据集上训练模型得到的效果尽可能地接近原始数据集的效果。 摘要 模型蒸馏的目的是…...

GDPU 数据结构 天码行空1

1. 病历信息管理 实现病历查询功能。具体要求如下: 定义一个结构体描述病人病历信息(病历号,姓名,症状);完成功能如下: 输入功能:输入5个病人的信息; 查询功能:输入姓名,在5个病历中进行查找,如果找到则显示该人的信息&#xff0c…...

【C++】红黑树的模拟实现

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…...

【多线程】Thread 类 详解

Thread 类 详解 一. 创建线程1. 继承 Thread 类2. 实现 Runnable 接口3. 其他变形4. 多线程的优势-增加运行速度 二. Thread 类1. 构造方法2. 常见属性3. 启动线程-start()4. 中断线程-interrupt()5. 线程等待-join()6. 线程休眠-sleep()7. 获取当前线程引用 三. 线程的状态1. …...

LINUX 网络管理

目录 一、NetworkManager的特点 二、配置网络 1、使用ip命令临时配置 1)查看网卡在网络层的配置信息 2)查看网卡在数据链路层的配置信息 3)添加或者删除临时的网卡 4)禁用和启动指定网卡 2、修改配置文件 3、nmcli命令行…...

refresh rate

1920 x 1080 显卡刷新率 60...

使用 NGINX Unit 实施应用隔离

原文作者:Artem Konev - Senior Technical Writer 原文链接:使用 NGINX Unit 实施应用隔离 转载来源:NGINX 中文官网 NGINX 唯一中文官方社区 ,尽在 nginx.org.cn NGINX Unit 特性集的最新动态之一是支持应用隔离,该特…...

2023/09/12 qtc++

实现一个图形类(Shape) ,包含受保护成员属性:周长、面积, 公共成员函数:特殊成员函数书写 定义一个圆形类(Circle) ,继承自图形类,包含私有属性:半径 公共成员函数:特殊成员函数…...

全科医学科常用评估量表汇总,建议收藏!

根据全科医学科医生的量表使用情况,笔者整理了10个常用的全科医学科量表,可在线评测直接出结果,可转发使用,可生成二维码使用,可创建项目进行数据管理,有需要的小伙伴赶紧收藏! 日常生活能力量表…...

了解消息中间件的基础知识

为什么要使用消息中间件? 解耦:消息中间件可以使不同的应用程序通过解耦的方式进行通信,减少系统间的依赖关系提供异步通信:消息中间件可以实现异步消息传递,提高系统的响应性能。流量削峰:消息中间件可以…...

【linux】Linux wps字体缺失、加粗乱码解决

解决wps字体缺失问题 1、下载字体包 git clone https://github.com/iamdh4/ttf-wps-fonts.git2、创建单独放置字体的目录 mkdir /usr/share/fonts/wps-fonts3、复制字体到系统目录下 cp ttf-wps-fonts/* /usr/share/fonts/wps-fonts4、修改字体权限 chmod 644 /usr/share/f…...

每日两题 103二叉树的锯齿形层序遍历(数组) 513找树左下角的值(队列)

103 题目 103 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:root [3,9,…...

ROS2报错:ImportError: cannot import name ‘Log‘ from ‘rosgraph_msgs.msg‘

在使用ros2的bag命令查看数据集信息时报错 Traceback (most recent call last):File "/opt/ros/noetic/bin/rosbag", line 34, in <module>import rosbagFile "/opt/ros/noetic/lib/python3/dist-packages/rosbag/__init__.py", line 33, in <mo…...

【Vue】Vue中的代码分为哪几种类型?

在 Vue 中的代码可以分为以下几种类型&#xff1a; 1.模板代码 模板代码是 Vue 中用来生成 HTML 的一种语法&#xff0c;可以通过 Vue 的模板语法和指令来动态渲染页面。模板代码一般写在 Vue 组件的 template 标签中。 2.JavaScript 代码 JavaScript 代码是 Vue 组件中用来…...

es6中includes用法

js中的includes用法 1.数组 includes 可以判断一个数组中是否包含某一个元素&#xff0c;并返回true 或者false [a,b,c].includes(a) true [a,b,c].includes(1) false includes可以包含两个参数&#xff0c;第二个参数表示判断的起始位置 起始位置第一个数字是0。 2.字符串 …...

QT中QRadioButton实现分组C++

通过对QRadioButton组件进行分组可解决QRadioButton组件的互斥性 实现如下。 假设已设计好UI并且有UI代码情况&#xff1a; 头文件引用&#xff1a; #include <QButtonGroup> 分组功能 &#xff0c;cpp文件代码实现&#xff1a; Your_Project::Your_Project(QWidge…...

kafka实战报错解决问题

需求 在一个在线商城中&#xff0c;用户下单后需要进行订单的处理。为了提高订单处理的效率和可靠性&#xff0c;我们使用Kafka来实现订单消息的异步处理。当用户下单后&#xff0c;订单信息会被发送到Kafka的一个Topic中&#xff0c;然后订单处理系统会从该Topic中消费订单消…...

vite+react 使用 react-activation 实现缓存页面

对应的版本 "react": "^18.2.0", "react-activation": "^0.12.4", "react-dom": "^18.2.0", "react-router-dom": "^6.15.0",react-activation 这是一个npm包&#xff0c;在react keep alive…...

【android 蓝牙开发——蓝牙耳机】

【android 蓝牙开发——传统蓝牙】 【android 蓝牙开发——BLE&#xff08;低功耗&#xff09;蓝牙 2021-10-09更新】 总结一下蓝牙开发的基本使用以及蓝牙耳机的断开和链接。 所以需权限&#xff1a; <uses-permission android:name"android.permission.ACCESS_FIN…...

Golang goroutine 进程、线程、并发、并行

goroutine 看一个需求 需求&#xff1a;要求统计1-200000000000的数字中&#xff0c;哪些是素数? 分析思路&#xff1a; 1)传统的方法&#xff0c;就是使用一个循环&#xff0c;循环的判断各个数是不是素数&#xff08;一个任务就分配给一个cpu去做&#xff0c;这样很不划算…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...