The Knowledge Within: Methods for Data-Free Model Compression
3. Methods for data-free distillation
我们对无数据制度感兴趣,在这种制度下,给出的模型没有用于训练的相应数据集。这种制度反映了一种现实的情况,因为训练数据往往是保密的或私人的。因此,我们提供三种方法来生成有用的合成数据,用于蒸馏和校准。
高斯方案:从高斯分布中随机抽取样本。
初始方案:通过logit最大化生成样本(即,Inceptionism的一个特例)。
BN统计量方案:通过优化一种新的内部统计量的散度度量来生成样本。
3.1. Gaussian Scheme
作为原始数据集的简单近似,我们自然会考虑一个简单的高斯生成器(表示为G),定义first and second moments来匹配原始输入数据。我们建议,在轻度压缩要求下,仅此一项就足以用于低数值精度推断所需的模型校准任务。这样一种生成方案是有吸引力的,因为不确定数量的样本可以随意生成,而计算和存储需求最小。然而,正如人们所料,在极端压缩要求下,当需要调整模型参数时(例如,使用蒸馏进行微调),这种方法可能被证明是不够的。
由于该方法不保留原始输入的结构,内部激活的统计信息可能与训练数据产生的原始统计信息有显著差异。这种变化可能会损害模型的准确性,特别是当它包含批量归一化(BN)层时[14]。BN层通常用于DNNs工作负载中,因为在应用其操作之前,通过将层的输入标准化为零均值和单位方差,BN层可以提高收敛的精度和速度。在训练期间,每个BN层保持其输入的每个通道的经验平均值和标准差的连续估计,后者用于在推理期间归一化输入数据。
通过对随机产生的样本使用蒸馏法来调整模型的参数,将不可挽回地改变现有的BN层参数以适应观察到的统计特性,导致在回头评估真实数据时即将失败。因此,我们建议强迫模型中的所有BN层保持其原始运行估计值进行评估。如第4节所示,这可能在一定程度上否定了这一障碍,使人们能够使用这种样本进行蒸馏任务。
3.2. Inception Scheme
Inceptionism[22]相关的生成方案,通常只对模型的输入和输出施加约束。我们将关注一种特殊情况,我们称之为Inception方案(表示为I),在输入平滑度要求下,只有最终模型输出的单个神经元被最大化。我们将优化目标定义为域先验项和Inception loss term之和。作为域的先验知识,我们使用高斯平滑核来生成所提供输入的平滑版本。然后将损失项计算为输入图像和平滑变量之间的均方误差,从而鼓励附近的像素具有相似的值。Inception Loss是通过选择一个任意的标签,并对从全连接(FC)层输出中提取的适当的类Logit的负指数进行梯度下降而得出的,例如 e − l o g i t / s c a l e e^{-logit/scale} e−logit/scale。Inception Loss注入了所需的类别信息,其中指数和温标控制着logit量级对损失的影响,通过将logit对总损失的贡献按其大小指数衰减,防止模型产生导致输出爆炸的输入增加。这个方案通常会产生高置信度输出,但对超参数非常敏感(见附录A)。
3.3. BNStatistics Scheme
当优化初始损失时,测得的BNS损失迅速发散,表明生成的样本可能超出了原始数据分布。
(b) 高斯平滑损失在BNS损失优化过程中不断减少,揭示了统计损失与特征图空间结构之间的相关性。
Figure 2: Generating synthetic samples from ResNet-44 trained on CIFAR10.
基于我们的Gaussian和Inception方案实验,我们假设在样本生成过程中缺乏对内部统计量的正则化,可能导致内部统计量与实际数据的观测统计量有显著的差异。表明这些样本不是从与原始数据类似的分布中提取的(如我们稍后在图2a中所示)。
这反过来可能会妨碍它们用于模型压缩和KD.因此我们提出的方法是,通过优化一个新的度量,我们称之为“BN Stats”(表示为BNS),直接最小化内部统计的分歧(divergence)。BNS仅假设可以访问每个BN层的预定经验测量值。我们将使用这些估计作为目标,并通过测量的统计数据之间的相似性来比较新的数据样本。
对于给定BN层中的 μ ^ a n d σ ^ \hat \mu\ and\ \hat \sigma μ^ and σ^,我们希望我们的新数据激活D μ ~ = μ ( D ) a n d σ ~ = σ ( D ) \widetilde \mu=\mu(D)\ and\ \widetilde \sigma=\sigma(D) μ =μ(D) and σ =σ(D),并评估其与参考统计数据的相似性。BNS使用Kullback-Leibler(KL)发散来定义这种相似性,在一个简单的各向同性的高斯假设下,即
我们的生成过程从一批随机输入样本开始,然后迭代调整,使参考集中所有层的平均统计分歧最小。也就是说,对于输入批次X的每个优化步骤,我们提取每个BN层的激活集 { D l } l = 1 N \{D_l\}^N_{l=1} {Dl}l=1N。然后,我们将优化目标定义为所有BN的平均统计量的散度 B N S ( D l , μ ^ , σ ^ l ) \mathcal BNS(D_l,\hat \mu,\hat\sigma_l) BNS(Dl,μ^,σ^l)。
而优化目标(即BNS测度)定义为集T上的KL平均散度,即
一个小的 ϵ = 1 e − 8 \epsilon=1e^{-8} ϵ=1e−8,被添加到诱导的合成分布的测量方差中,以适应零方差的通道。
我们注意到,在相同的基本假设下,可以对BNS使用替代度量,例如经验矩上的均方误差,它是对称的,可以处理零方差通道。最后,利用标准反向传播算法调整X。
3.4. Combining BNS + I
除上述三种方案外,我们还试验了BN统计量和Inception方案(目标表示为BNS+I)的组合,参见算法1。
这种生成方法试图利用每种方法的优势。由I施加的类约束影响依赖于批组成的诱导统计,迫使优化过程补偿采样的类。这种方法的缺点是在初始方案的超参数基础上增加了额外的损耗标度参数。我们并没有详尽地研究将两者结合起来的最佳方法,但是,简单聚合的结果在某些情况下提供了令人鼓舞的改进。
In-Batch Augmentations:
由于在反向标准传播过程中,激活梯度不会在批次间聚集,因此我们使用批内增强[11]技术来获得每个样本的梯度平滑效果;具体地说,每个样本用一组随机差分增强重复N次,这些随机差分增强是从包含随机N-剪切、裁剪大小调整和翻转的集合中选择的。
此外,在每组实验中,优化设置都是固定的,以便进行公平的比较:所有模型都以固定的随机梯度衰减(SGD)迭代次数进行优化,学习率调度器从一个短暂的热身阶段开始,然后是余弦衰减阶段,而对于每个优化步骤,从目标数据集中提取一个批次,并使用标准增强方法进行增强。我们还遵循McKinstry等人[20]的意见,在整个优化过程中冻结学生激活的动态范围(我们没有发现冻结学生激活动态范围的建议。冻结权重的动态范围的建议没有必要)。
具体来说,我们使用中间层输出来计算教师和学生特征之间的平滑-l1距离,我们将这种损失命名为中间量化(IQ)损失Intermediate Quantization (IQ) loss。
我们发现在极端量化的情况下,IQ通常会导致更稳定的训练收敛,并改善合成和真实样本的KD结果。此外,我们在输入上应用了类似于[31]的批量MixUp技术,而没有混合教师的输出。整个蒸馏过程由算法-2说明,同时还有一个消减实验结果(表-1)。
,我们在输入上应用了类似于[31]的批量MixUp技术,而没有混合教师的输出。整个蒸馏过程由算法-2说明,同时还有一个消减实验结果(表-1)。**