文章目录

  • Abstract
  • Introduction
  • Distillation
  • Preliminary experiments on MNIST
  • Experiments on speech recognition
  • 总结

论文地址:https://arxiv.org/abs/1503.02531


Abstract

提高几乎所有机器学习算法性能的一个非常简单的方法是,在相同的数据上训练许多不同的模型,然后平均预测效果。不幸的是,使用整个模型集合进行预测是很麻烦的,而且可能由于计算成本太高而无法部署到大量用户,特别是在单个模型是大型神经网络的情况下。Caruana和他的合作者已经证明,可以将集合中的知识压缩到一个单个的模型中,这更容易部署,我们使用一种不同的压缩技术进一步开发了这种方法。
我们在MNIST上取得了一些令人惊讶的结果,我们表明,通过将模型集合中的知识提取到单个模型中,我们可以显著改善大量使用的商业系统的声学模型。我们还引入了一种新的集成类型,它由一个或多个完整模型和许多专家模型组成,这些专家模型学习区分完整模型混淆的细粒度类。与混合专家不同,这些专家模型可以快速、并行地训练。

Introduction

许多昆虫的幼虫都能从环境中汲取能量和营养,而成虫则完全不同,能满足旅行和繁殖的不同需求。在大规模机器学习中,我们通常在训练阶段和部署阶段使用非常相似的模型,尽管它们的要求非常不同:对于像语音和目标识别这样的任务,训练必须从非常大的、高冗余的数据集中提取结构,但它不需要实时操作,它可以使用大量的计算。但是,部署到大量用户时,对延迟和计算资源的要求要严格得多。与昆虫的类比表明,如果能更容易地从数据中提取结构,我们应该愿意训练非常繁琐的模型。繁琐的模型可以是单独训练的模型的集合,也可以是使用非常强的正则化器(如dropout)训练的单个非常大的模型。一旦训练了繁琐的模型,我们就可以使用另一种训练,我们称之为“蒸馏”,将知识从繁琐的模型转移到更适合部署的小模型上。Rich Caruana和他的合作者已经开创了这种策略的一个版本。在他们的重要论文中,他们令人信服地证明了,由大量模型集合获得的知识可以转移到单个小模型上。
一个可能阻碍对这种非常有前途的方法进行更多研究的概念块是,我们倾向于用学习到的参数值来识别训练模型中的知识,这使得我们很难看到我们如何改变模型的形式,但保持相同的知识。知识的一个更抽象的观点是,它从任何特定的实例化中解放出来,它是一个从输入向量到输出向量的学习映射。对于学习在大量类之间区分的笨重模型,正常的训练目标是最大化正确类别的平均对数概率,但学习的一个副作用是,训练的模型分配给所有错误答案的概率,即使这些概率非常小,其中一些比其他的大得多。错误答案的相对概率告诉我们很多关于这个繁琐的模型是如何一般化的。例如,一辆宝马的图像可能只有很小的几率被误认为是胡萝卜。
一般认为,用于训练的目标函数应尽可能接近地反映使用者的真实目标。尽管如此,当真正的目标是很好地推广到新数据时,通常会训练模型来优化训练数据的性能。训练模型很好地进行归纳显然更好,但这需要关于正确的归纳方法的信息,而这些信息通常是不可获得的。然而,当我们从一个大模型中提取知识到一个小模型时,我们可以训练小模型以与大模型相同的方式进行归纳。如果这个笨重的模型能够很好地泛化,因为,例如,它是一个不同模型的大型集合的平均值,那么用同样的方法训练的一个小模型在测试数据上的泛化效果通常会比用正常的方法训练的小模型在用于训练集合的同一训练集上的效果要好得多。
将累赘模型的泛化能力转移到小模型的一种明显方法是使用累赘模型产生的类概率作为训练小模型的“软目标”。对于这个转移阶段,我们可以使用相同的训练集或单独的“转移”集。当繁琐的模型是简单模型的大集合时,我们可以使用它们各自预测分布的算术或几何平均值作为软目标。当软目标具有较高的熵值时,它们提供的每个训练案例的信息量比硬目标(小模型的ground truth)要大得多,训练案例之间的梯度方差也要小得多,因此小模型通常可以在更少的数据上训练,使用更高的学习率。
对于像MNIST这样的任务,繁琐的模型几乎总是以非常高的置置度产生正确的答案,学习函数的很多信息都存在于软目标中非常小的概率的比率中。例如,一个版本的2可能有10 - 6的概率是3,10 - 9的概率是7,而对于另一个版本,可能是反过来的。这是有价值的信息,它定义了数据上丰富的相似结构(即,它说哪个2看起来像3,哪个看起来像7),但它对传递阶段的交叉熵代价函数影响很小,因为概率如此接近于零。Caruana和他的合作者通过使用logits(最终softmax的输入)而不是softmax产生的概率作为学习小模型的目标来规避这个问题,他们最小化了繁琐模型产生的logits和小模型产生的logits之间的平方差。我们更通用的解决方案,称为“蒸馏”,是提高最终软最大值的温度,直到笨重的模型产生合适的软目标集。然后我们在训练小模型时使用同样的高温来匹配这些软目标。我们稍后将说明,对繁琐模型的对数进行匹配实际上是蒸馏的一种特殊情况。
用于训练小模型的传输集可以完全由未标记的数据[1]组成,或者我们可以使用原始的训练集。我们发现使用原始的训练集效果很好,特别是如果我们在目标函数中加入一个小项,鼓励小模型预测真实目标,同时匹配繁琐的模型提供的软目标。通常情况下,小模型不能完全匹配软目标,在正确答案的方向上出错是有益的。
“蒸馏”,是提高softmax最终值的温度,直到复杂模型产生一个合适的软目标集。当训练小模型来匹配这些软目标时,我们使用同样高的温度。

Distillation

神经网络通常通过使用“softmax”输出层生成类概率,该输出层通过比较zi与其他logit,将为每个类计算的logit, zi转换为概率,qi。
其中T是通常设为1的温度。使用较高的T值在类中产生较软的概率分布。在最简单的蒸馏形式中,知识通过在一个转移集上对其进行训练,并对通过在其softmax中使用高温的繁琐模型产生的转移集中的每个情况使用软目标分布来转移到蒸馏模型。训练蒸馏模型时使用相同的高温,但训练后使用的温度为1。当所有或部分传输集都知道正确的标签时,还可以训练提取的模型生成正确的标签,从而显著改进该方法。一种方法是使用正确的标签来修改软目标,

但我们发现更好的方法是简单地使用两个不同目标函数的加权平均。第一个目标函数是软目标的交叉熵,该交叉熵的计算方法与从繁琐的模型生成软目标时使用的相同,即使用蒸馏模型的softmax中的高温。第二个目标函数是带有正确标签的交叉熵。这是在蒸馏模型的softmax中使用完全相同的对数,但温度为1。我们发现,最好的结果通常是使用一个相当低的权重对第二个目标函数。由于软目标产生的梯度大小为1/ T2,因此在使用硬目标和软目标时,将它们乘以T2是很重要的。这确保了在使用元参数进行实验时,如果改变蒸馏所用的温度,硬靶和软靶的相对贡献大致保持不变。

Preliminary experiments on MNIST

Experiments on speech recognition

总结

知识蒸馏有一定的防止过拟合的作用,能够压缩模型的大小并且保持模型的性能

Distilling the Knowledge in a Neural Network阅读笔记相关推荐

  1. Distilling the Knowledge in a Neural Network 论文笔记蒸馏

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bryant_meng/article/ ...

  2. 【Distilling】《Distilling the Knowledge in a Neural Network》

    arXiv-2015 In NIPS Deep Learning Workshop, 2014 文章目录 1 Background and Motivation 2 Conceptual block ...

  3. Paper:《Distilling the Knowledge in a Neural Network神经网络中的知识蒸馏》翻译与解读

    Paper:<Distilling the Knowledge in a Neural Network神经网络中的知识蒸馏>翻译与解读 目录 <Distilling the Know ...

  4. Reinforcement Learning Enhanced Heterogeneous Graph Neural Network阅读笔记

    强化学习增强异质图神经网络 代码源:https://github.com/zhiqiangzhongddu/RL-HGNN 摘要 异构信息网络(HINs)涉及多种节点类型和关系类型,在许多实际应用中非 ...

  5. 《Distilling the Knowledge in a Neural Network》 论文阅读笔记

    原文链接:https://arxiv.org/abs/1503.02531   第一次接触这篇文章是在做网络结构的时候,对于神经网络加速,知识蒸馏也算是一种方法,当时连同剪纸等都是网络压缩的内容,觉得 ...

  6. GNN金融应用之Classifying and Understanding Financial Data Using Graph Neural Network学习笔记

    Classifying and Understanding Financial Data Using Graph Neural Network 摘要 1. 概述 2. 数据表示-加权图 3. GNN利 ...

  7. A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK文章笔记

    A NEW HYPERSPECTRAL BAND SELECTION APPROACH BASED ON CONVOLUTIONAL NEURAL NETWORK 文章地址:https://ieeex ...

  8. Learning Human-Object Interactions by Graph Parsing Neural Networks阅读笔记

    前言 这是一篇2018年发表在ECCV上得paper,论文原文点这里. 笔记 说实话刚看到这篇文章还是有点唬人的,文中作者提出了一个网络模型叫GPNN,图解析神经网络,我以为是跟GNN有关系,花了一些 ...

  9. 蒸馏神经网络(Distill the Knowledge in a Neural Network)

    本文是阅读Hinton 大神在2014年NIPS上一篇论文:蒸馏神经网络的笔记,特此说明.此文读起来很抽象,大篇的论述,鲜有公式和图表.但是鉴于和我的研究方向:神经网络的压缩十分相关,因此决定花气力好 ...

最新文章

  1. 手工管理和计算机管理,ERP系统管理与传统的手工管理之间的区别
  2. 浅谈JS原型与原型链(一)
  3. struts2配置的ajax参数传递方法
  4. 搭建Android开发环境 以及 ionic 编译安卓app步骤
  5. php坐标轴取整,PHP取整函数:ceil,floor,round,intval的区别详细解析
  6. typescript 方法后面加感叹号_TypeScript编译器SDK版本问题
  7. Android—屏幕适配和卡顿优化
  8. linux安装nagios客户端
  9. 聊聊 归一化和标准化
  10. 在 Mac 上的 Keynote 讲演中如何更改共享演示文稿的设置?
  11. Python心得基础篇【7】面向对象进阶篇
  12. android 原理 组合控件_Android自定义控件之组合控件
  13. linux安装moodle最新版,在linux下安装moodle
  14. MDK与keilC51共存的方法
  15. matlab 音乐 豆腐汤,40岁健康家常菜pdf
  16. android keep倒计时,Android仿Keep运动休息倒计时圆形控件
  17. C#开发工控上位机编程 csdn_5种将死的编程语言
  18. 一分钟了解阿里云产品:云虚拟主机
  19. linux dnf教程视频,DNF的命令使用教学
  20. 入职阿里巴巴的正确姿势

热门文章

  1. vue打包成组件lib
  2. 类似pyinstaller_全网首份Python打包工具Pyinstaller实战指南,如丝滑般体验
  3. HCIE之路-14 华为组播基础思维导图(不定期更新,纯个人理解,欢迎批评指正!!!)
  4. opencv调pc摄像头拍摄图片
  5. 京东一小伙一年输出20篇专利,其实你也可以
  6. 网页中onbeforeunload、onpagehide、onunload、onload、onpageshow的正确执行顺序
  7. 从零开始写C++打怪小游戏(1)
  8. 5G时代,App最重要的竞争力应该是什么?
  9. 方浩树:本科Gap两年,确定了未来的方向,还发表了四篇顶会一作
  10. Windows系统消息机制的详细理解!