随着智能设备的普及,深度神经网络在智能手机、可穿戴设备等嵌入式设备上的应用越来越常见,这些嵌入式设备对模型体积、计算性能、功耗等方面都有比较严格的要求。但与此同时,深度学习网络规模却在不断增大,计算复杂度随之增高,严重限制了其在手机等智能设备上的应用。深度学习模型压缩与加速技术就是为了解决这一问题而生。InfoQ 将通过选题的方式逐一介绍各大公司在模型压缩上的技术创新和落地实践。
在移动设备和许多在线应用中,实时性能好的轻量级模型是一大重要需求,而为了保证神经网络的实时性,很多时候都有必要对模型进行压缩;但与此同时,几乎所有神经网络模型压缩算法都会在压缩过程中减损原始模型的准确度。因此,在进行模型压缩时,需要在实时性和准确性之间找到一个合适的平衡。
为了保证压缩后模型的准确度,当下流行的模型压缩方法普遍依赖于使用原始数据对模型进行微调(fine-tuning)。然而,使用原始数据往往带来隐私和安全性的困扰,因而隐私和安全性问题正成为模型压缩领域新兴的研究方向。
腾讯 AI Lab 与香港中文大学合作完成的论文《通过交叉知识蒸馏实现少样本神经网络压缩(Few Shot Network Compression via Cross Distillation)》提出的新方法能很好地在保证实时性和准确性平衡的前提下兼顾隐私和安全性。该论文已被 AAAI 2020 会议接收,且相关源代码也已在 GitHub 发布。
论文地址:https://arxiv.org/pdf/1911.09450.pdf
开源代码:https://github.com/haolibai/Cross-Distillation
不同于其它模型压缩方法,这篇论文为了兼顾隐私与性能,采用了基于少样本学习的神经网络压缩思路,即:给定每个类别很少的样本,如何才能有效地压缩网络而使性能下降最小化?
腾讯 AI Lab 发现小样本情况下进行神经网络压缩的核心挑战是:压缩后的模型很容易在少数训练实例上过拟合,从而导致推断过程中与原始网络之间存在较大的估计误差。估计误差可能会逐层累积和传播,最终破坏网络输出。为解决该问题,腾讯 AI Lab 提出了交叉知识蒸馏的思想,这是一种新颖的逐层知识蒸馏方法。该方法通过交叉连接教师和学生网络的隐藏层,可以有效地减少网络压缩过程中逐层累积的估计误差,提高准确率。而且新提出的算法还可以与剪枝、量化等流行的网络压缩算法相结合,有广阔的应用前景。
交叉知识蒸馏算法设计
图 1: 传统逐层知识蒸馏算法(a)与交叉蒸馏算法(b,c,d)示意图
1.逐层知识蒸馏
图 1(a) 展示了逐层知识蒸馏算法的工作过程示意图。给定一个教师网络(Teacher Network)和一个学生网络(Student network),为了实现对学生网络的监督训练,逐层知识蒸馏的方法是最小化两个网络之间的特征图距离,即:
其中
称为估计误差。在训练数据充足时,该方法可以通常可以取得较好的效果。但是在小样本数据下,训练容易受到过拟合的影响,估计误差显著增大并会逐层传播。
2.交叉知识蒸馏
本文新提出交叉蒸馏方法分成两部分:
第一部分如图 (b) 所示,即将教师网络的隐藏层输入学生网络,并最小化纠正误差 (correction loss)。该做法初衷是为把教师网络的隐藏层当作基本真值(Ground Truth),在网络中间位置输入到学生网络。因此,学生网络可以在中间位置接受正确的监督信号以对后续层进行训练,从而可避免估计误差过大并传播的现象。纠正误差定义为:
第二部分如图 © 所示,将学生网络的隐藏层输入教师网络,并最小化模仿误差 (imitation loss)。由于估计误差在学生网络上逐层传播,导致在同一层位置上学生网络输入和教师网络输入存在较大差异。通过把学生网络隐藏层输入给教师网络,从而在相同输入前提下让学生网络模仿教师网络的输出行为。模仿误差定义为:
通过对以上两种优化目标进行凸组合,得到最终优化目标:
算法 1 简单总结了其工作过程:
为了探讨交叉蒸馏算法与原逐层知识蒸馏方法的联系,文章证明了该最终优化目标为原估计误差的上界。另外,除了对优化目标进行凸组合,文章还探讨了在网络隐藏层上进行凸组合交叉连接(图 d)。更多具体内容可参阅原论文。
3.新方法与已有压缩算法的结合(以剪枝为例)
剪枝算法的目标通常是实现对网络参数的稀疏化,这对应于在优化目标上添加一个稀疏正则化项。比如,结构化剪枝的对应正则化项为 Group-LASSO:
对应地,我们可以使用近端梯度下降法(Proximal Gradient Descent)进行求解,即:
对应近端算子为
非结构化剪枝和量化等其他压缩方法的对应近端梯度算子可参考原文。
实验
1.实验设置
为了测试新算法的有效性,腾讯 AI Lab 使用常用的 VGG Net 和 ResNet 在 CIFAR-10 和 ImageNet 上通过模拟小样本情景进行了测试。具体做法是对每个类别随机采样 K 张图片进行算法测试。每组实验均采用了不同的随机种子,最终报告的结果为多轮测试的均值和标准差。
2.实验结果
表 1 和表 2 分别展示了当剪枝方案固定和样本数量固定时,不同模型压缩方法的测试结果。可以看到,Ours (交叉蒸馏优化目标凸组合)和 Ours-S(交叉蒸馏特征图凸组合,见原文) 代表的新方法在 VGG-16 和 ResNet-34 网络上都普遍优于其它基准方法,其中 Ours 在 VGG-16 上的优势更大,而 Ours-S 在 ResNet-34 上的表现更优。与此同时,样本数据越小,交叉蒸馏相比于其它方法带来的优势更大,这说明当学生网络在更少量训练样本上更严重的过拟合时,交叉蒸馏能为逐层回归提供更多助益。
表 1:VGG-16 在 CIFAR-10 上随样本数量 K 变化的准确率
表 2:ResNet-34 在 ImageNet 上不同模型稀疏度下的准确率,K=1
在图 2 中,我们对比了交叉蒸馏算法与传统逐层蒸馏算法的估计误差。其中横轴代表层数,纵轴代表与传统逐层算法估计误差的比值(越低越好)。从图中可见随网络层数加深,交叉蒸馏算法的估计误差普遍降低,显示出对估计误差传播良好的抑制性。
图 2: 交叉蒸馏算法与传统逐层蒸馏算法的估计误差对比
另外,通过对交叉蒸馏算法凸组合系数进行敏感度分析,腾讯 AI Lab 还发现不同系数配置下的交叉蒸馏算法都优于传统的逐层训练方法。当其处于中间值时,效果相对端点值更好。
图 3:目标函数凸组合系数分析。红色为交叉蒸馏方法,灰色为传统逐层训练方法。
更多实验、分析和拓展讨论可参阅论文原文。
总结起来,相比于其它基准方法,腾讯 AI Lab 新提出的基于交叉蒸馏的神经网络压缩方法可通过降低学生网络和教师网络之间的估计误差而有效地实现性能更强且泛化能力更优的学生网络。
延伸阅读:
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论 1 条评论