在无法获取到原始训练数据的情况下,你可以尝试一下这种新型蒸馏算法 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 可以在几个步骤内合成出合理的样本。
使用NVIDIA Riva快速构建企业级TTS语音合成助手
NVIDIA Riva 是一个使用 GPU 加速,能用于快速部署高性能会话式 AI 服务的 SDK,可用于快速开发语音 AI 的应用程序。Riva 的设计旨在帮助您轻松、快速地访问会话 AI 功能,开箱即用,通过一些简单的命令和 API 操作就可以快速构建高级别的 TTS 语音合成服务。
2022年1月12日19:30-21:00,本次线上分享主要介绍:
-
-
-
启动 NVIDIA Riva 客户端快速实现文字转语音功能
-
使用 Python 快速搭建基于 Riva 的 TTS 语音合成服务应用
© THE END
转载请联系本公众号获得授权
投稿或寻求报道:content@jiqizhixin.com