前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯优图 | 分布式知识蒸馏损失改善困难样本

腾讯优图 | 分布式知识蒸馏损失改善困难样本

作者头像
计算机视觉研究院
发布2020-08-12 15:52:39
1K0
发布2020-08-12 15:52:39
举报

作者:Edison_G

ECCV 2020即将要开始,很多互联网络公司都有技术论文中标,腾讯优图就8篇入选,涵盖了目标跟踪、行人重识别、人脸识别等领域。 今天我们先预告下人脸识别相关的技术,我们会详细分析优图的“分布式知识蒸馏损失”应用在人脸识别领域,去较大程度改善了困难样本的技术,希望持续关注我们“计算机视觉研究院”!

1、背景

今天我们“计算机视觉研究院”先给大家讲讲什么是“知识蒸馏”,下一期我们再来深入解读优图的“分布式知识蒸馏损失改善人脸识别困难样本”技术。

知识蒸馏被广泛的用于模型压缩和迁移学习当中。开山之作应该是”Distilling the Knowledge in a Neural Network“。这篇文章中,作者的动机是找到一种方法,把多个模型的知识提炼给单个模型。

文章的标题是Distilling the Knowledge in a Neural Network,那么说明是神经网络的知识呢?

一般认为模型的参数保留了模型反复训练学习到的记忆或知识,因此最常见的迁移学习的方式就是在一个大的数据集上先做预训练,然后使用预训练得到的参数在一个小的数据集上做微调(两个数据集往往领域不同或者任务不同)。

小结:

知识蒸馏,可以将一个网络的知识转移到另一个网络,两个网络可以是同构或者异构。做法是先训练一个teacher网络,然后使用这个teacher网络的输出和数据的真实标签去训练student网络。知识蒸馏,可以用来将网络从大网络转化成一个小网络,并保留接近于大网络的性能;也可以将多个网络的学到的知识转移到一个网络中,使得单个网络的性能接近emsemble的结果。

2、知识蒸馏背景

我先从模型压缩开始!各种模型算法,最终目的都是要为某个应用服务。类似地,在工业应用中,除了要求模型要有好的预测以外,往往还希望它的消耗要足够小。具体来说,我们一般希望部署到应用中的模型使用较少的计算资源(存储空间、计算单元等),产生较低的时延。

在深度学习的背景下,为了达到更好的预测,常常会有两种方案:

1.)使用过参数化的深度神经网络,这类网络学习能力非常强,因此往往加上一定的正则化策略(如dropout);

2. )集成模型(ensemble),将许多弱的模型集成起来,往往可以实现较好的预测。

这两种方案无疑都有较大的「支出」,需要的计算量和计算资源很大,对部署非常不利。这也就是模型压缩的动机:我们希望有一个规模较小的模型,能达到和大模型一样或相当的结果。当然,从头训练一个小模型,从经验上看是很难达到上述效果的,也许我们能先训练一个大而强的模型,然后将其包含的知识转移给小的模型呢?如何做到呢?

3、为什么叫「蒸馏」?

4、与直接优化logits差异相比

5、实验与结论

Hinton等人做了三组实验,其中两组都验证了知识蒸馏方法的有效性。在MNIST数据集上的实验表明,即便有部分类别的样本缺失,小模型也可以表现得很不错,只需要修改相应的偏置项,就可以与原模型表现相当。

在语音任务的实验也表明,蒸馏得到的模型比从头训练的模型捕捉了更多数据集中的有效信息,表现仅比集成模型低了0.3个百分点。总体来说知识蒸馏是一个简单而有效的模型压缩/训练方法。这大体上是因为原模型的softmax提供了比onehot标签更多的监督信号[Kevin Clark et al., BAM! Born-Again Multi-Task Networks for Natural Language Understanding]。

知识蒸馏在后续也有很多延伸工作。在NLP方面比较有名的有Yoon Kim等人的Sequence-Level Knowledge Distillation 等。总的来说,对一些比较臃肿、不便部署的模型,可以将其「知识」转移到小的模型上。比如,在机器翻译中,一般的模型需要有较大的容量(capacity)才可能获得较好的结果;现在非常流行的BERT及其变种,规模都非常大;更不用提,一些情形下我们需要将这些本身就很大的深度模型集成为一个ensemble,这时候,可以用知识蒸馏压缩出一个较小的、「便宜」的模型。

另外,在多任务的情境下,使用一般的策略训练一个多任务模型,可能达不到比单任务更好的效果,文献[Kevin Clark et al., BAM! Born-Again Multi-Task Networks for Natural Language Understanding]探索了使用知识蒸馏,利用单任务的模型来指导训练多任务模型的方法,很值得参考。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机视觉战队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 我先从模型压缩开始!各种模型算法,最终目的都是要为某个应用服务。类似地,在工业应用中,除了要求模型要有好的预测以外,往往还希望它的消耗要足够小。具体来说,我们一般希望部署到应用中的模型使用较少的计算资源(存储空间、计算单元等),产生较低的时延。
  • 3、为什么叫「蒸馏」?
  • 4、与直接优化logits差异相比
  • 5、实验与结论
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档