ICCV2019 | 北大、华为联合提出无需数据集的Student Networks
Data-Free Learning of Student Networks
论文地址:https://arxiv.org/pdf/1904.01186
开源地址:https://github.com/huawei-noah/DAFL
论文作者:Hanting Chen, Yunhe Wang, Chang Xu, Zhaohui Yang, Chuanjian Liu, Boxin Shi;Chunjing Xu, Chao Xu, Qi Tian(北京大学电子与计算机工程学院,华为诺亚方舟实验室等)
前言
本文将对ICCV2019会议论文《Data-Free Learning of Student Networks》进行解读,这篇论文在神经网络压缩领域有相当高的实用价值。作者从难以获取teacher网络原始训练集的角度出发,提出了一种将teacher网络用作固定的判决器,利用GAN(Generative Adversarial Networks)的生成器来产生模拟原始训练集的训练样本,进一步训练、获得具有较小尺寸和复杂度的student(portable)网络。
实验结果表明,作者所提出的DAFL(Data-Free Learning)方法在MNIST、CIFAR、CelebA等数据集上具有很好的性能,相对于KD(Knowledge Distillation)等方法具有更好的实用性。
背景
神经网络压缩算法目前根据有无原始数据的参与分为两种。
Data-Driven类
Hinton等提出了一种知识蒸馏方法(knowledge distillation,KD),该方法提炼出经过预训练的teacher网络的信息,以学习portable (student )网络【Geoffrey Hinton, Oriol Vinyals, and Jeff Dean. Distillingthe knowledge in a neural network. arXiv preprintarXiv:1503.02531, 2015】。Denton等利用低秩分解(SVD)来处理全连接层的权重矩阵【Emily L Denton, Wojciech Zaremba, Joan Bruna, Yann Le- Cun, and Rob Fergus. Exploiting linear structure within convolutional networks for efficient evaluation. In NIPS, 2014】。Han等采用修剪、量化和霍夫曼编码来获得紧凑的深度CNN,使之具有较低的计算复杂度【Song Han, Huizi Mao, and William J Dally. Deep compression:Compressing deep neural networks with pruning, trained quantization and huffman coding. arXiv preprint arXiv:1510.00149, 2015】。Li等进一步提出了一种特征模拟框架,以训练有效的卷积网络进行目标检测【Quanquan Li, Shengying Jin, and Junjie Yan. Mimicking very efficient network for object detection. In CVPR, pages 7341-7349. IEEE, 2017】。
上述方法在大多数据集上取得了良好的效果,但如果没有原始训练数据集,则很难应用。
Data- Free类
Lopes等利用原始训练数据集记录的 “元数据”(meta-data)(例如,每层激活的平均值和标准偏差),但大多数训练过的CNN很难提供此数据【Raphael Gontijo Lopes, Stefano Fenu, and Thad Starner.Data-free knowledge distillation for deep neural networks.arXiv preprint arXiv:1710.07535, 2017】。Srinivas和Babu提出在完全连接的层中直接合并相似的神经元来压缩网络,但这很难应用于未详细说明结构和参数信息的卷积层和网络【Suraj Srinivas and R Venkatesh Babu. Data-free parameter pruning for deep neural networks. arXiv preprint arXiv:1507.06149, 2015】。
实际上,由于如涉及隐私、传输限制等因素,原始训练数据集和详细的网络结构、参数等很难获取,这就意味着上述两类方法难于应用。
整体架构
GAN有一个生成器和一个判决器,给定的teacher网络同时作为GAN的判决器,不对其进行任何更新。Random Signals(随机信号)输入到GAN的生成器,变换为模拟的原始数据,由判决器进行识别。生成器生成一组数据后,再通过KD方法对student网络的参数进行更新。
Data-free Student Network learning
Teacher-Student关系
由于很难获取原始训练数据集,有时也无法获得参数和详细结构信息。作者从teacher-student学习范例来着手。作者认为KD并未利用给定网络的参数和体系结构的信息,尽管可能仅提供有限的接口(如输入和输出接口),但仍然可以从teacher网络继承一些有用的信息。令N_T和N_S表示teacher网络和所需的portable/student网络,可用以下基于知识提炼的损失函数来优化student网络:
其中H_cross为交叉熵损失,y_T^i=N_T (x^i)和y_s^i=N_s (x^i)分别是N_T和N_S的输出。利用知识转移技术,可在没有给定网络特定架构的情况下优化portable网络。
用GAN生成训练样本
one-hot损失函数
GAN由生成器G和判决器D组成,G用来生成数据,D用来识别真实图像与G生成的图像之间的差异。若获得最优的G,必须先得到一个最佳判决器D^*,而判决器一般需要真实的图像进行训练。作者认为给定的深度神经网络已经在大规模数据集上得到了很好的训练,因此它也可以从图像中提取语义特征,因此不需额外的判决器,所以作者将之视为固定的判别器。
另外,判决器的输出是显示输入图像在vanilla GANs中是真实还是伪造的概率。但是,考虑到将teacher网络作为判别器,其输出是图像分类。为此作者设计了一些新的损失函数。
如给定一组随机向量{z^1,z^2,···,z^n},通过公式x^i=G(z^i),生成图像{x^1,x^2,···,x^n}。将这些图片输入到teacher网络,由公式y_T^i=N_T (x^i),获得输出{ y_T^1, y_T^2,···,y_T^n}。再根据公式t^i=arg max(y_T^i),可获得预测的标签{t^1,t^2,···,t^n}。如果G生的图像遵循与原始训练数据相同的分布,则它们应具有相似的输出。因此,作者引入了one-hot损失,来使生成图片的输出接近teacher网络one-hot向量。把{t^1,t^2,···,t^n}作为ground-truth标签,作者设计的one-hot损失函数为
其中,N_cross为交叉熵损失函数。
特征图激活损失
作者认为由卷积层提取的中间特征也是输入图像的重要信息。将teacher网络提取的x^i的特征表示为f_T^i,它对应于全连接层之前的输出。由于已对teacher中的过滤器进行了训练以提取训练数据中的固有模式,如果输入图像是真实的而不是一些随机矢量,则特征图往往会收到更高的激活值。因此,作者将激活损失函数定义为:
其中,‖·‖_1是常规的l1范数。换言之,如输入图像触发了teacher网络的某些特征提取器,则意味与真实图像相似,是真实图片的概率较大。
图像的信息熵损失函数
作者采用信息熵损失来衡量生成图像的类平衡。给定一个概率向量 {p_1,p_2,···,p_k},测量混乱度信息熵p的计算方式是H_info (p)=-1/k ∑_ip_i log(p_i)。H_info(p)的值表示p拥有的信息量,当所有变量等于1时将取最大值。给定一组输出向量{ y_T^1, y_T^2,···,y_T^n},每个类生成的图像的频率分布是1/n ∑_iy_T^i 。因此,作者将生成图像的信息熵损失定义为
当损失最小时,1/n ∑_iy_S^i 向量中每个元素都等于1/k,意味着G可以以大致相同的概率生成每个类别的图像。因此,最小化所生成图像的信息熵可以导致合成图像的平衡集合。
通过结合上述三个损失函数,得到最终的目标函数
α和β是平衡三个不同项的参数。作者认为该方法可以直接模拟训练数据的分布,更加灵活,高效地生成新图像。
优化
作者设计的学习过程可以分为两个训练阶段。首先,将teacher网络作为固定判决器。使用上述的L_Total损失函数,优化生成器G。其次,我们利用KD方法将知识直接从teacher网络转移到student网络。使用KD的损失L_KD来优化具有较少参数的student网络。
实验
MNIST实验
作者分别使用基于卷积的结构和由全连接组成的网络。前者,采用LeNet-5为teacher网络,使用LeNet-5-Hafl(修改后的版本为每层通道数的一半)作为student模型。后者,teacher网络由两个有1200个单元的隐藏层组成(Hinton-784-1200-1200-10),student网络由两个有800个单元的隐藏层组成(Hinton-784-800-800-10)。表1为MNIST实验结果。
作者首先采用随机生成的正态分布数据来作为训练集时,student网络准确度仅有88.01%,再用USPS数据集训练student网络准确度也仅达到94.56%,说明原始训练集的效果是其他数据集难以替代。作者提出的DAFL方法达到了98.20%的准确度。
在全连接结构上,与前者结果类似,DAFL方法达到了97.91%的准确度。
消融实验
作者用随机生成的样本,student网络的准确度只有88.01%。仅用one-hot损失或特征图激活损失,所产生的样本不均衡,会导致较差。将L_oh或L_a与L_ie结合时,student网络分别为97.25%和95.53%。一起使用时,可达到最佳性能。
可视化结果实验
MNIST数据集上的平均图像
生成的数据集上的平均图像
说明生成器确实以某种方式在学习原始数据分布。
第一卷积层中过滤器的可视化结果如下所示,表明student网络从teacher网络获取了某些有价值的知识。
CIFAR数据集实验
作者进一步使用ResNet-34作为teacher网络,ResNet-18作为student网络。
在CIFAR-10上,KD的student网络为94.34%的准确度,DAFL方法可达到92.22%准确度,进一步说明DAFL方法可更好地模拟原始数据。
CIFAR数据集CelebA
作者将AlexNet网络设置为teacher网络,student网络设置为AlexNet-Hafl(修改后的版本为每层通道数的一半)。
DAFL的student网络的准确度为80.03%,与teacher网络的准确度几乎相当。
扩展实验
作者使用生成的图像训练与teacher网络具有相同架构的student网络。重新训练的student网络的准确度与teacher网络的准确度非常接近。
总结
神经网络压缩算法通常需要原始训练数据。但在实际中,由于某些隐私和传输限制,要获取给定网络的训练数据和详细网络结构信息并非易事。在本文中,作者提出了一个新颖的框架来训练生成器,以模拟原始训练数据集。然后通过KD方法有效地学习、得到portable网络。在MNIST、CIFAR等数据集上的实验表明,作者所提出的DAFL方法可获得性能较好的portable网络,显示了一定的实用价值。
大家都在看: