9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

兼顾实时性、准确度和隐私:腾讯联合港中文提出新型神经网络压缩方法

  • 2020-04-27
  • 本文字数:2861 字

    阅读完需:约 9 分钟

兼顾实时性、准确度和隐私:腾讯联合港中文提出新型神经网络压缩方法

随着智能设备的普及,深度神经网络在智能手机、可穿戴设备等嵌入式设备上的应用越来越常见,这些嵌入式设备对模型体积、计算性能、功耗等方面都有比较严格的要求。但与此同时,深度学习网络规模却在不断增大,计算复杂度随之增高,严重限制了其在手机等智能设备上的应用。深度学习模型压缩与加速技术就是为了解决这一问题而生。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(微信同手机号)。

2020-04-27 09:003426

评论 1 条评论

发布
暂无评论
发现更多内容

泄露了,Alibaba697页的MySQL应用实战与性能调优手册,太强了

Java编程日记

Java 编程 程序员 面试 架构师

为Bert注入知识的力量 Baidu-ERNIE & THU-ERNIE & KBert

了不起的程序猿

Java 编程 后端 java程序员 BERT

CSS

武师叔

8月月更

组件解析:基础组件button的实现

独来独往

大前端 低代码 可视化 组件化 低代码平台

如何在企业数字化团队内部实现分析建模过程全要素的可获得与成果可复现

ModelWhale

团队协作 数字化转型 全要素场景 代码复现 金融场景

美国商务部宣布:EDA等四项技术实施新的出口管制,8月15日生效!

雨果

芯片技术

一文搞定架构思维,DFD 的结构化分析,只需明白这3点

老崔说架构

QCA9882 wallys 802.11AC 802.11AN wifi QCA9882 Module Wireless AC/AN MiniPCIE Standard Card

wallys-wifi6

QCA9882

怎么分辨企业转型是“真数字化”还是 “伪数字化”?

雨果

数字化转型

阿里最新的Spring Boot项目开发实战手册,掀起了项目实战变革狂潮

Java面试那些事儿

Java 编程 程序员 面试 架构师

迄今为止最完整的DDD实践

阿里技术

DDD 经验分享

Linux 6.0 第一个候选版本发布

雨果

Liunx

腾讯发布第二季度财报,腾讯云数据库收入同比增长超过30%

科技热闻

阿里云鲍文乐:基于事件的自动化运维最佳实践

阿里云弹性计算

事件 自动化运维 CloudOps

少儿编程是智商税吗?不花钱让孩子赢在起跑线!

博文视点Broadview

数据工程师越做越有成就感的7点经验分享

雨果

数据工程师

Promise.allSettled 的 Polyfill 处理

Jerry Wang

JavaScript Promise Async 8月月更 web编程

什么是文件存储?与对象存储有什么区别?

wljslmz

文件存储 8月月更

Node 之父着急宣布Deno 将迎来重大变革,疑为针对最近大火的“Bun”

雨果

node.js

区块链带你避“坑”,电信诈骗退!退!退!

旺链科技

区块链 产业区块链 电信诈骗

C#/VB.NET 替换 PDF 文件上的现有图像

在下毛毛雨

C# .net PDF 替换图像

QCA9880 wallys 2×2 MIMO 802.11ac Mini PCIe 2,4GHz / 5GHz Designed for E

wallys-wifi6

乔布斯之后,下一代触控交互由一家中国公司重新定义

硬科技星球

TiFlash 源码阅读(六)DeltaTree Index 的设计和实现分析

PingCAP

TiDB TiDB 源码解读

借我 1 小时,与 1000 人一起参与开源

腾源会

开源 腾源会

JSON 之父:JavaScript 已经成为了进步的障碍

雨果

JavaScript

AntDB基于WAL日志的DML数据闪回实现

亚信AntDB数据库

AntDB 国产数据库 AISWare AIDB

开源一夏 | 使用 JavaScript 将文本转换为文件

海拥(haiyong.site)

JavaScript GitHub 开源 前端 8月月更

从入门到高手,数据从业者成长一般经过哪些阶段?

雨果

数据工程师必备技能

设备管理|风机的日常运行与维护

PreMaint

企业设备管理 预测性维护 设备健康管理 风机的日常运维

GitHub标星139K的:“嵌入式Linux系统开发教程”

收到请回复

Java Linux 程序员 嵌入式 #运维

  • 扫码添加小助手
    领取最新资料包
兼顾实时性、准确度和隐私:腾讯联合港中文提出新型神经网络压缩方法_语言 & 开发_腾讯AI Lab_InfoQ精选文章