
极市导读
目前很少有工作关注在无数据情况下的网络压缩,然而,这些方法得到的压缩后的网络准确率下降很多,这是因为这些方法没有利用待压缩网络的信息。本文介绍2种无需训练数据的网络压缩方法:来自华为诺亚方舟实验室的无需训练数据的噪声蒸馏技术 DFND 以及仅需少量数据的云端网络压缩技术 PU Compression。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
目录
1 无需训练数据的噪声蒸馏技术 DFND (CVPR 2021)
(来自华为诺亚方舟实验室)
1.1 DFND 原理分析
1.1.1 DFND 的应用背景
1.1.2 从自然场景下的数据集中收集数据
1.1.3 无标签的噪声蒸馏方法
1.1.4 实验结果2 仅需少量数据的云端网络压缩技术 PU Compression (NIPS 2019)
(来自华为诺亚方舟实验室)
2.1 PU Compression 原理分析
2.1.1 PU Compression 的应用背景
2.1.2 使用PU分类器挑选数据
2.1.3 鲁棒的知识蒸馏算法
2.1.4 实验结果
随着深度学习技术的发展,深度神经网络 (CNN) 已经被成功的应用于许多实际任务中 (例如,图片分类、物体检测、语音识别等)。由于CNN需要巨大的计算资源,为了将它直接应用到手机、摄像头等小型移动设备上,许多神经网络的压缩和加速算法被提出。现在的问题是这些神经网络的压缩和加速算法都有一个基本的假设,那就是:训练数据是可获得的。
但是实际情况是:在现实中的应用上,由于隐私因素的制约或者传输条件的限制,我们无法获得训练数据。比如:在医学图像场景中,用户不想让自己的照片 (数据) 被泄露;训练数据太多没办法传到云端,甚至是存储这些巨大量的数据集对于小型企业都是个难题;所以,使用常规的模型压缩办法在这些限制下无法被使用。
甚至,预训练网络的基本架构和参数都是未知的,就像一个黑盒,只能通过输入来获取输出信息。所以剪枝,量化等等常用的模型压缩方法就更无从下手了。
但是,目前很少有工作关注在无数据情况下的网络压缩,然而,这些方法得到的压缩后的网络准确率下降很多,这是因为这些方法没有利用待压缩网络的信息。为了解决这一问题,本文介绍2种无需训练数据的网络压缩方法。
在这里需要强调的一点是:当前有许多用 GAN 来生成自然图像/高清图片/漫画图片/风格迁移/去雨/去噪/去模糊/去马赛克,等等等等各种生成任务。但是,它们无一例外在 GAN 模型的训练过程中都使用了大量的训练数据,它们难以存储、传输和管理,而这在实际的业务条件下有时候是不被允许的。
1 无需训练数据的噪声蒸馏技术 DFND (CVPR 2021)
论文名称:Learning Student Networks in the Wild
论文地址:https://openaccess.thecvf.com/content/CVPR2021/papers/Chen_Learning_Student_Networks_in_the_Wild_CVPR_2021_paper.pdf
开源地址:
https://github.com/huawei-noah/Efficient-Computing
-
1.1 DFND 原理分析:
华为诺亚方舟实验室联合北京大学和悉尼大学于 CVPR 2021 提出了在无数据情况下的网络噪声蒸馏方法 DFND,使用 ResNet18 作为学生网络,在 CIFAR-10 和 100 上分别达到了 94.02% 和 76.35%,在 ImageNet 上无数据的情况下达到了 Top-1 Accuracy 为 61.75% 的学生网络,非常值得研究。
1.1.1 DFND 的应用背景
当我们能够获得全部的训练数据和预训练的模型时,传统的模型压缩方法可以在不损失精度的前提下获得相当大的压缩比。但是,在诸如隐私条件或传输条件受到限制的一些实践场景中,训练数据通常是不可用的。例如,我们希望压缩在数百万张图像上训练的深度模型,而数据集难以传输和存储。此外,人们往往愿意向公众公开他们的预训练模型,但是往往非常担心训练数据,尤其是一些私人数据,例如人脸、语音和指纹。因此,最近的趋势是在没有原始训练数据的情况下使用知识蒸馏的技术来压缩神经网络模型。
之前已经有一些方法实现了无需数据的知识蒸馏技术,链接如下:
但是这些方法往往只是在小数据集上面表现不错。当面对数据集庞大的场景时,由于训练数据的大小通常比给定的网络大得多,因此很难生成具有足够信息来训练压缩网络的图像。例如,ImageNet 数据集由超过1000 万张 224×224 大小的图像组成,需要超过 138GB 的存储空间,而 ResNet-50 模型仅包含 100MB 的参数。因此,这些方法不能保证这些生成图像的质量。此外,为大规模数据集 (例如 ImageNet) 生成足够的图像的运行时间和开销是非常昂贵的。因此,我们迫切需要一种高效、有效的方法来学习没有训练数据的轻量级的学生网络。
令 为预训练的教师超分网络, 为学生网络,知识蒸馏的方法通过下面的目标函数来训练学生网络:
其中, 是训练样本, 是交叉熵损失, 是KL散度 (Kullback–Leibler 距离)。方程中的第二项使教师和学生网络的输出分布之间的距离最小化,这可以被认为是帮助学生网络训练的一个强正则化项。
传统的知识蒸馏过程需要原始的训练数据,即用于训练教师网络 的数据集。然而,如上所述,由于隐私或传输问题,该数据集通常不可用。那么我们发现互联网上有大量的数据 (如 ImageNet 和Flickr1M),都可以为我们所用。我们把这些数据称为 public unlabeled data: 。
一种直观的利用 public unlabeled data 的办法是:直接让教师和学生模型都通过 public unlabeled data,并最小化二者之间的差距,如下式所示:
但是这种做法的缺点在哪里?
-
这种做法只能保证在廉价的 public unlabeled data 上两个网络的输出分布尽量接近,但是 public unlabeled data 的数据分布和原数据集的分布不一样。 -
public unlabeled data 的标签是未知的,缺乏了这么重要的监督信息就很难保证学生网络的分类性能。
针对以上的缺点,本文提出一种无数据噪声蒸馏 (Data-Free Noisy Distillation, DFND) 方法,帮助学生网络从老师那里学习到有用和正确的信息。
简而言之,作者从未标记数据中选择最有价值的样本,这有助于学生网络在原始数据的分布上获得良好的性能,并为未标记数据配备有噪声的伪标签 (noisy pseudo label),以实现2式中缺失的分类损失。
1.1.2 从自然场景下的数据集中收集数据
由于直接使用 public unlabeled data 无法保证学生网络的分类性能,所以说作者希望从 Wild 数据集中找到一些有用的数据,用它们来指导蒸馏的过程。假设原来的数据集为 ,则目标可以使用下式来概括:
意思就是希望从Wild 数据集 中找到这样的一些 ,使得原始数据集中教师模型和学生模型的输出更加接近。
但是这个式子根本没办法直接求解,因为我们并不知道原始数据集 。所以作者提出了一种选择的原则来指导从Wild 数据集 中找到这样的 。
Hinton 在 Distilling the knowledge in a neural network 这篇论文中曾经证明了:最小化教师和学生模型的 soft targets 的 KL 散度等同于是在 temperature 极大时最小化二者的 MSE Loss。
所以对于3式作者改为研究 MSE Loss:
Proposition 1: 给定教师网络 ,和一个巨大的无标记数据集 ,则样本 的噪声价值可以表示为:
式中, 是样本 的伪标签。 可以理解为样本 通过教师模型的真实输出和伪标签的 KL 散度。 越小,代表样本的噪声越小。
Proof:
为了证明的方便,这里计算 Domain 之间的距离,而非直接计算图片之间的距离。
将原始数据的域命名为 ,无标签数据的域命名为 ,根据三角不等式,教师网络和学生网络在原始数据下的距离满足:
式中, 代表学生网络在原始数据的域和无标签数据的域的输出, 代表教师网络在原始数据的域和无标签数据的域的输出。
因为我们无法直接去最小化 ,因为原始数据 未知,但我们可以最小化其上界。
上界的第1项 测量原始数据和未标记数据通过学生网络的输出之间的距离,可以看作是学生网络的泛化能力,由学生网络本身决定。
上界的第2项

