来源:机器之心
本文共2400字,建议阅读5分钟
本文为你介绍知识蒸馏的新方法。

在无法获取到原始训练数据的情况下,你可以尝试一下这种新型蒸馏算法 FastDFKD,数据合成与现有的生成方法相比,可以实现 10 倍的加速,与非生成方法相比,甚至可以达到 100 倍以上的加速。

知识蒸馏(KD)最近成为一种流行的范式,它是一种很典型的模型压缩方法,可以复用如今在线流行的预训练模型。随着自然语言处理模型等进入了预训练模型的时代,模型的规模也在极速增长,例如 GPT-3 参数量达到 1750 亿。如何在资源有限的情况下部署使用这些庞大的模型是一个很大的挑战。

知识蒸馏在解决这一问题中占据了重要的地位。我们可以用它来有效地从大型教师模型学习小型学生模型,并且学生模型的性能也很不错。

KD 的传统设置需要拥有原始训练数据作为输入以训练学生模型。不幸的是,由于隐私或版权原因,在很多情况下,原始数据无法发布,用户只能使用预先训练好的模型,反过来,这对 KD 应用于更广泛的领域构成了主要障碍。

为了解决这个问题,有研究者(Lopes, Fenu,Starner 2017)提出了无数据知识蒸馏 (DFKD,Data-free knowledge distillation) 方法,这种方法假设根本无法获得训练数据。由于 DFKD 对训练数据的约束非常宽松,其在自然语言处理、计算机视觉等领域受到越来越多的关注。

DFKD 虽然取得了一些比较好的结果,但 SOTA 性能的 DFKD 方法仍然存在数据合成效率较低的问题,这使得无数据训练过程非常耗时,因此不适用于大规模训练任务。

在这项研究中,来自浙江大学、新加坡国立大学等机构的研究者引入了一种有效的解决方案 FastDFKD,其能够将 DFKD 加速一个数量级。FastDFKD 的核心是:复用训练数据中共享的公共特征,从而合成不同的数据实例。不同于之前单独优化一组数据,该研究建议学习一个元合成器(meta-synthesizer),可以寻求共同特征作为快速数据合成的初始化。因此,FastDFKD 只需几步即可实现数据合成,显着提高了无数据训练的效率。在 CIFAR、NYUv2 和 ImageNet 上的实验表明,所提出的 FastDFKD 实现了 10 倍甚至 100 倍的加速,同时保持了与当前 SOTA 相当的性能。

论文地址:

https://arxiv.org/pdf/2112.06253.pdf

方法

在 DFKD 中,求解如下等式 (2) 的一种流行方法是直接按批次优化多种样本。

如下图 2 (a) 所示,基于批的方法独立合成不同的实例,仅考虑样本之间的关系。尽管这种方法取得了不错的结果,但 DFKD 方法通常存在数据合成效率低下的问题,因为制作大规模数据集需要大量优化问题,每个问题都需要数千步才能收敛。然而,来自同一域的数据通常具有一些共同特征,这些特征可以重复用于合成不同的样本。因此,FastDFKD 旨在提供一种学习共同特征来加速等式 (2) 优化的新型有效方法。

FastDFKD 方法的核心是复用共同特征,这是基于来自同一领域的数据通常共享一些模式,而这些模式可以被复用以合成不同的实例。该研究从生成的角度对共同特征进行了新的定义,并提出 FastDFKD 来捕获共同特征,以便通过元学习过程进行快速合成。

共同特征

作为快速无数据训练的关键步骤,需要给共同特征一个明确的定义,以构建用于网络训练的可优化目标。如图 2 (b) 所示,一种简单的复用策略是顺序特征复用,其中在先前合成中学得的特征直接用作初始化以制作新样本。然而,这种简单的方案存在一些问题,因为学得的特征仅来自单个数据点,可能并不总是可用于其他样本。

为了解决这个问题,该研究从生成的角度为共同特征创建了一个更自然的定义。首先考虑一个生成网络 G(z;θ),其中 z 为潜码(latent code),θ是可训练参数。对于每个样本 x_i ∈ D’ ,都可以找到一个潜码 z_i 来生成 x_i = G(z_i ; θ)。生成器描述了不同样本 x_i 的生成过程。在某种程度上,一组样本之间是否存在共同特征 D’ = {x_1, x_2, ..., x_N } 通常与不同数据实例的相似度高度相关,这意味着如果能找到最优参数 θ 使得不同样本的潜码 z = {z_1, z_2, ..., z_N } 在潜在空间中接近,那么生成器就可以隐式地捕获共同特征。基于此,该研究发现可以通过解决以下问题来学习共同特征:

上式 (3) 中 d_z 和 d_x 分别代表潜在空间和输入空间中的距离指标。上述优化旨在为数据集 D’找到一种生成过程,其潜在空间中的 z 距离尽可能的小,借助学得的共同特征和潜码 z 就可以有效获得多种样本。

然而在无数据环境中,合成数据集 D’在合成完成之前还不可用。因此,该研究用 DFKD 的逆向损失(inversion loss)L 替换式子 (3) 中第二项的 d_x,这就形成了用于共同特征学习的无数据目标:

元生成器

上述式子 (4) 的优化具有挑战性,因为它需要使用单个生成网络生成完整的数据集 D’,其中包括许多不可复用的特征。为此,该研究提出训练一个只包含共同特征的生成器,并在数据合成过程中动态合成其他缺失的特征,如图 2 (c) 所示。

具体来说,该研究用共同特征学习的目标来训练一个轻量级生成器,该生成器可以适应为在 k 步内合成不同的实例,表述为元学习问题的形式:

其中是元学习的内循环(inner loop),它指的是从用于 x_i 合成的和潜码初始化的一种 k 步优化。内循环可以以如下形式展开:

值得注意的是,式子 (5) 与式子 (4) 中的共同特征损失起着相似的作用。内循环(即 k 步自适应)旨在通过显式优化式子 (4) 的第二项来学习用于合成的生成器。

另一方面,外循环(outer loop)试图通过隐式优化式子 (4) 的第一项来使不同样本均能在 k 步优化中可达。优化方程 (6) 会自然地形成一个元学习问题,其中要用到初始化来实现快速适应。经过 k 步梯度下降后,该研究在损失函数 L_i 的指导下得到一组新的参数,梯度是:

其中代表使用等式(6)k 步自适应得到的优化结果,代表损失 L_i 指导下的合成结果。

但是,请注意,公式 6 中的 k-step 自适应涉及 k 个梯度更新:

其中 g_k 是指在方程 6 的第 k 步计算的梯度,这将高阶梯度引入到生成器训练中,使的反向传播非常低效。受元学习先前工作的启发,该研究应用一阶近似来进一步加速梯度计算,将 3 中的高阶梯度视为常数并替换,在这种情况下,方程 7 中的梯度计算只涉及一阶梯度,可以简化为:

一阶近似直接使用在内循环中的自适应生成器上计算的梯度来更新元生成器。此外,通过使用自适应生成器和元生成器之间的参数差异来逼近方程 9 中的梯度,可以实现更有效的梯度近似,这进一步将方程 9 简化为:

综上所述,可以对元生成器进行如下优化:

算法 1 分为三个阶段:用于数据合成的 k-step 适应;用于通用特征学习的元学习 step;通过优化 KL 散度来更新学生模型的的步骤如下:

实验

基线:实验比较了两种 DFKD 方法:(1)和生成方法训练合成的生成模型进行比较,包括 DAFL、ZSKT、DFQ 和 Generative DFD(2)与分批(batch-by-batch)方式制作迁移集的非生成方法比较,包括 DeepInv 和 CMI。

CIFAR-10 和 CIFAR-100 分类结果。在 CIFAR-10 和 CIFAR-100 数据集上获得的学生模型准确率如表 1 所示。在表中,基线「Teacher」、「Student」和「KD」使用原始训练数据训练网络,不需要数据合成。

如表 1 所示,生成方法通常比 DeepInv 和 CMI 等非生成方法快 10 倍,因为生成方法只需要训练一个生成器进行合成就可以了。然而,由于生成网络的容量有限,我们发现数据集从 CIFAR-10 增加到 CIFAR-100,生成方法的性能趋于下降。相比之下,非生成式通常比生成式更灵活,因此更适用于不同的任务。

与非生成方法一样,FastDFKD 还可以优化用于数据合成的小批量。如表 1 所示,5-step FastDFKD,即 Fast_5,与现有的生成方法相比,可以实现 10 倍的加速,与非生成方法相比,甚至可以达到 100 倍以上的加速。

ImageNet:为了验证 FastDFKD 的有效性,该研究在更具挑战性的数据集(即 ImageNet)上进行了评估。ImageNet 显然比 CIFAR 复杂得多,因此无数据训练要耗时得多。结果如表 2 所示:相比之下,FastDFKD(Fast_50)只需要 6.28 小时就能进行图像合成,并保持了与现有方法相当的性能。

在分割任务中,该研究仅使用特征正则化损失和对抗性损失进行数据合成。学生模型的 mIoU,以及数据量和合成时间,如表 3 所示:相比之下,FastDFKD 仅在 0.82 小时内成功合成了一个训练集,这比 DAFL(3.99 小时)和 DFAD(6.0 小时)高效得多。

Few-step 合成:如前所述,FastDFKD 只需几步即可实现高效的数据合成。下表比较了 FastDFKD 与现有非生成方法的「fewstep」版本的比较。如表 4 所示,当优化 step 减少时,DeepInv 和 CMI 的学生精度严重下降,这意味着现有方法无法仅在 few step 内完成数据合成。相比之下,FastDFKD 即使只部署了 2-step 优化,也能很好地工作,这为 FastDFKD 的有效性提供了强有力的证据。

消融研究:表 5 考虑了图 2 中的三种复用策略:1)没有特征复用;2)序列特征复用;3)提议共同特征复用,结果如下:

可视化:在 ImageNet 上的合成结果如图 3 所示,其中所有样本都是通过在现有的 ResNet50 分类器上部署 50-step FastDFKD 获得的。与现有方法相比,FastDFKD 可以在几个步骤内合成出合理的样本。

编辑:王菁

校对:杨学俊

加速100倍,性能媲美SOTA!浙大提出无数据知识蒸馏新方法FastDFKD相关推荐

  1. 加速100倍,性能媲美SOTA,浙大提出无数据知识蒸馏新方法FastDFKD

    点击上方"迈微AI研习社",选择"星标★"公众号 重磅干货,第一时间送达 选自|机器之心 在无法获取到原始训练数据的情况下,你可以尝试一下这种新型蒸馏算法 Fa ...

  2. 加速100倍,性能媲美SOTA,浙大知识蒸馏新方法FastDFKD

    来源:机器之心 在无法获取到原始训练数据的情况下,你可以尝试一下这种新型蒸馏算法 FastDFKD,数据合成与现有的生成方法相比,可以实现 10 倍的加速,与非生成方法相比,甚至可以达到 100 倍以 ...

  3. 【论文翻译_无数据知识蒸馏_元学习_2022】Up to 100× Faster Data-free Knowledge Distillation

    可以参考2021的另一篇解决相似问题的文章(Learning_Student_Networks_in_the_Wild) 摘要 data-free知识蒸馏(DFKD)由于其仅使用人造合成数据压缩模型的 ...

  4. Waymo SOTA!SparseKD:高效知识蒸馏下的3D检测(港大NIPS2022)

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[3D目标检测]技术交流群 后台回复[SparseKD]获取本文论文及代码!!! 摘要 ...

  5. Facebook开源高效图像Transformer,速度、准确率与泛化性能媲美SOTA CNN

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自 | 机器之心 将自然语言处理领域主流模型 Transform ...

  6. 速度、准确率与泛化性能媲美SOTA CNN,Facebook开源高效图像Transformer

    机器之心报道 参与:魔王.小舟.杜伟 将自然语言处理领域主流模型 Transformer 应用在视觉领域似乎正在成为趋势.最近,Facebook 研究人员提出一项新技术--数据高效图像 Transfo ...

  7. 让电脑加速100倍!这家英国创业团队的芯片新思路

    图1:英国人工智能芯片硬件设计初创公司Graphcore推出的IPU加速卡 编译:网易智能 参与:小小 选自:Bloomberg 作者:DylanJackson  与其他数字处理软件不同的是,英国人工 ...

  8. 刷新SOTA!Salesforce提出跨模态对比学习新方法,仅需4M图像数据!

    文 | 子龙 多模态已经不是一个新鲜的话题,如何在一个模型中融合CV和NLP的信息同时吸引了两个领域的目光(CV.NLP的会都能投),但是很容易就能想到,来自图片的视觉特征和来自语料的文本特征来自不同 ...

  9. 无需用户输入,Adobe提出自动高质量图像合成新方法

    本文转载自机器之心. 选自arXiv 作者:He Zhang等 机器之心编译 编辑:小舟.杜伟 没有用户输入,也能生成高质量的合成图像吗? 图像合成是指组合不同图像中的部分区域以合成一张新的图像,一个 ...

最新文章

  1. bash 脚本编程2 条件判断 (笔记)
  2. vs调试按钮为灰色的_IntelliJ IDEA 调试 Java 8,实在太香了
  3. php中如何上传非表单类数据,PHP Post获取不到非表单数据的问题解决办法
  4. WebBrowser(IE) 与 JS 相互调用
  5. 《算法竞赛入门经典》—— 5.2.6 栈、队列与优先队列
  6. AlphaGo 原理讲解(附代码)
  7. 关于液晶触摸屏的信号传递?
  8. 太极拳透劲的原理推测
  9. CReFF缓解长尾数据联邦学习(IJCAI 2022)
  10. 每日一诗词 —— 假如我不曾见过太阳
  11. 强大的分组SectionListView, 支持自定义组头布局和分组的内容布局, 组头有挤压效果
  12. 华为如何显示我的电脑连接到服务器地址,怎么查电脑的服务器连接地址
  13. C++设计模式-中介者模式详解
  14. ForkJoinPool介绍
  15. golang not enough arguments in call to uuid.Must have (uuid.UUID) want (uuid.UUID, error)
  16. 时间的流逝,流逝了谁的无奈?
  17. virtualbox 虚拟机 win7 激活后开机黑屏,只有横杠
  18. python查找第k大的数_寻找数组中第K大的数
  19. 快速理解绝对地址和相对地址
  20. 拼多多信誉度太低,怎么办?

热门文章

  1. LeetCode(7.整数反转)JAVA
  2. java doublebuffer_Java DoubleBuffer clear()用法及代码示例
  3. 剑指offer :从尾到头打印链表
  4. 记一次数组工具类 交集,去重
  5. 继爆款超级账本后,IBM再次推出新产品
  6. 极光大数据:00后王者大军来袭 荣耀手机偏偏独得恩宠
  7. 是否能领先e步 浅析SSD中的eTLC和eMLC颗粒
  8. CentOS7 systemctl的使用
  9. 苹果服务器修改主目录就打不开,苹果应用商店又挂了 App Store打不开怎么修复...
  10. java jni demo_Android JNI:让你一眼知之的JNI DEMO