NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

机器之心发布
机器之心编辑部

在 NeurIPS 2019正式召开以前,机器之心精心策划了 NeurIPS 2019 专题,包括线上分享、论文解读、现场报道等内容。11月21日,第一期分享已经圆满结束。本文介绍的是「神经网络模型压缩技术」,这是华为诺亚方舟实验室联合北大和悉尼大学联合提出的一种理论,只需要2%的数据就可以实现云端 NN 模型压缩。

在上周四的第二期分享中,华为诺亚方舟实验室研究员许奕星为大家详细解读了大会接收的这篇 Spotlight 论文《Positive-Unlabeled Compression on the Cloud》。

华为诺亚方舟实验室联合北京大学和悉尼大学发布论文《Positive-Unlabeled Compression on the Cloud》,提出了基于少量样本的云端网络压缩技术,ResNet-18网络在 CIFAR-10 和 ImageNet 上分别达到了 93.75% 和 86.00% 的准确率(分别使用2% 和 10% 的原始数据集),该论文已被 NeurIPS2019 接收。
论文地址:https://arxiv.org/pdf/1909.09757.pdf

研究背景
深度卷积网络(CNN)被广泛应用于诸多 CV 领域的实际任务中(例如,图片分类、物体检测、语义分割等)。然而,为了保证性能,神经网络通常是过参数化的,因此会存在大量的冗余参数、为了将 NN 直接应用于小型化移动设备例如手机、相机、摄像头等,通常需要使用压缩算法对过参数化的原神经网络进行压缩和加速。
传统的 NN 压缩算法通常需要完整的训练集来得到性能优异的压缩网络,然而在提供云端模型压缩时,上传这些原始训练集通常非常耗时。例如,用户上传一个 95MB 大小的 ResNet-50 只需几秒至几分钟,但上传 120GB 完整原训练集 ImageNet 则需要数小时甚至数天,从而极大伤害用户体验。
为了解决这个问题,我们提出了一种基于少样本的云端网络压缩技术,如图1。我们利用用户上传的少量样本以及云上存在的大量未标注数据,通过正类与未标注学习 (PU Learning)方法从未标注样本中挑选出和用户上传的数据属于同类别的数据,之后,使用改进的稳健性知识蒸馏( Robust Knowledge Distillation )方法对网络进行压缩。
实验表明,论文中的算法能够在使用非常少量原始训练数据的情况下,达到和使用全部样本的压缩算法类似的准确率。

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

图1:本方法结构框架

使用PU分类器挑选数据
由于传输速度的限制,或基于隐私的原因,实际中我们通常只能够得到少量的训练样本,传统的 NN 压缩方法在这种情况下没办法得到高性能的压缩网络。因此,本文提出了云端模型压缩方案,利用云端海量无标签数据,使用 PU 分类器从中挑选出和用户上传少量样本属于相同类别的样本,以便于网络的压缩。
PU 分类方法是一种特殊的半监督算法,用于解决标注数据只有正样本的问题。在本问题中,用户上传的少量训练样本可以视为正样本,云端无标签数据可以视为未标注样本,因此能够使用 PU 学习算法对未标注数据进行分类,从中挑选出正样本。具体的,给定一个训练集T:

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术


其中L为标注数据集,U为未标注数据集。PU分类器通过优化以下方程来学习:

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术


其中

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

为决策函数,

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

为任意损失函数,

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

为对应的风险函数,

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

为类别先验。该优化方程通过对正样本及未标注样本施加不同的损失函数,并利用未标注数据中的类别先验知识,完成对未标注样本的分类问题。
因此,给定用户上传的原始网络,我们可以将少量用户上传样本与大量的云上未标注样本输入网络,并通过上述优化方程对网络进行学习。
事实上,由于用户数据与未标注数据分布不同,直接使用用户上传的原网络作为特征提取器并不能够达到好效果。同时用户上传的原网络是针对于传统分类问题设计的,并不适用于PU数据分类问题。因此我们构造了基于Attention机制的多尺度特征提取器,用于对输入数据提取特征。具体如图2所示:

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

图2:基于注意力机制的多尺度特征提取器
以 ResNet-34 为例,我们对网络的各个 block 提取的特征进行基于Attention机制的变换,并学习其对应的权重向量,用于确定对于一个输入样本,应该更关注于网络哪个部分的特征。利用上述网络求特征,并通过 PU 分类器进行优化,就能够完成对未标注样本的分类任务,从中挑选出和用户上传数据属于同类别的数据。算法1是上述方法的总结。

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

算法1:PU分类器。

鲁棒的知识蒸馏算法
利用上个步骤得到的扩展数据集,本文使用了鲁棒的知识蒸馏方法对网络进行压缩。
注意扩展数据集可能存在严重的类不平衡问题,因为未标注数据集中可能存在大量某一类的用户数据,然而不存在或只存在很少另一类用户数据。
除此之外,通过PU方法得到的扩展训练集存在噪声,因为上一步骤中从未标注数据集中挑出的正样本不可能达到完全准确的程度,因此我们对传统知识蒸馏方法进行了改进。
具体的,针对类不平衡问题,我们为每个类的样本增加一个权重,拥有更少数据的类的权重会更大。定义

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

为用户上传的教师网络对于输入数据的输出分布之和,类别权重向量

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

可以通过下式计算:

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

其中,K为原始数据中的类个数。当训练学生网络时,输入数据的权重被定为

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

,其中

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

为教师网络对输入数据的预测类。因此,改进的知识蒸馏损失为:

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术


其中,

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

为交叉熵损失。
注意到

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

并非最优的,因为教师网络对训练数据预测的输出分布

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

不是最优,并含有噪声。然而我们认为教师网络已经被很好地训练,因此

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

与最优的权重向量

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

之间相差不大,即:

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

因此对原权重向量

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

中的每一个元素给予一个随机扰动

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

,并得到多个扰动后的权重向量

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

,其

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

。我们通过优化如下方程学习压缩后的学生网络:

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

算法 2 总结了上述方法。

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

算法2:鲁棒的知识蒸馏方法

实验结果
我们首先在 CIFAR-10、ImageNet、MNIST 三个数据集上进行了实验。
表1 是 CIFAR-10 上的结果,我们使用了 ResNet-34 模拟用户上传的教师网络,ResNet-18 为待压缩的学生网络。可以看到,在使用了 2% 的 CIFAR-10 训练数据集下,本方法能自动从未标注样本中挑选出 nt 个数据,并使用鲁棒知识蒸馏方法对学生网络进行压缩,达到 93.75% 的性能,仅比使用全部数据进行知识蒸馏的压缩方法少0.65% 的准确率。

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

表1 CIFAR-10数据集实验结果
在 ImageNet 上,在使用 10% 原始数据集情况下,我们方法达到了 86.00% 的 top-5准确率,比使用完整训练集得到的压缩结果仅有很少下降,超过了从原始数据集中挑选50%的训练样本情况下的压缩结果。

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

表2 ImageNet数据集实验结果
我们在 MNIST 上进行了实验,并与其余使用少量数据的压缩方法进行对比,可以看到我们的方法具有明显优势。

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

表3 MNIST数据集实验结果
最后,我们对本方法关于类先验的鲁棒性进行了分析,并对RKD方法进行了对照实验,证明本方法的有效性,如图3。

NeurIPS 2019分享:华为提出基于少量数据的神经网络模型压缩技术

图3:使用不同类别先验在CIFAR-10上的准确率

NeurIPS 2019 机器之心线上分享

在 NeurIPS 2019 收录的大量优秀论文中,我们将选出数篇优质论文,邀请论文作者来做线上分享。整场分享包括两个部分:论文解读和互动答疑。论文解读包括使用技术介绍、理论方法解读和具体代码实现。

线上分享将在「NeurIPS 2019 交流群」中进行,加群方式:添加机器之心小助手(syncedai4),备注「AI」,邀请入群。入群后将会公布斗鱼直播链接。

相关推荐