原文:Distilling the Knowledge in a Neural Network

Distilling the Knowledge

1、四个问题

  1. 要解决什么问题?

    • 神经网络压缩。

    • 我们都知道,要提高模型的性能,我们可以使用ensemble的方法,即训练多个不同的模型,最后将他们的结果进行融合。像这样使用ensemble,是最简单的能提高模型性能的方法,像kaggle之类的比赛中大家也都是这么做的。但是使用多个深度网络模型进行ensemble常常会有十分巨大的计算开销,而且算起来整个算法中的模型也会非常大。

    • 这篇文章就是为了解决这个问题,提出一套方法,将一个ensemble中的知识信息压缩到一个小模型中,让最终的模型更易于部署,节约算力。

  2. 用了什么方法解决?

    • 提出一种 **知识蒸馏(Knowledge Distillation)**方法,从大模型所学习到的知识中学习有用信息来训练小模型,在保证性能差不多的情况下进行模型压缩。

      • 知识蒸馏:

        • 将一个训练好的大模型的知识通过迁移学习手段迁移给小模型。
        • 换成大白话说就是:先训练一个复杂的网络,然后再使用这个网络来辅助训练一个小网络;相当于大网络是老师,小网络是学生。
    • 提出一种新的**集成模型(Ensembles of Models)**方法,包括一个通用模型(Generalist Model)和多个专用模型(Specialist Models),其中,专用模型用来对那些通用模型无法区分的细粒度(Fine-grained)类别的图像进行区分。
  3. 效果如何?

    • 文中给了一些语音识别等领域的实验,通过知识蒸馏训练得到的小模型的准确率虽不及大模型,但能比较接近了,效果也比较不错。
  4. 还存在什么问题?

    • 虽然思想很简单,实际使用时还需要较多的trick,很难保证每次训练都能取得很好的效果。

2、论文概述

2.1、知识蒸馏(Knowledge Distillation)

  • 对于多分类任务的大模型来说,我们通常都是希望最大化输出概率的log值,来获取准确的预测结果。然而,这么做会有一个副作用,就是会赋予所有的非正确答案一定的概率,即使这些概率值都很小。
  • 这些非正确答案的相对概率,隐含了大模型在训练中倾向于如何泛化的信息。
  • 为此,Hinton等人在论文中提出了soft target的概念。
    • **soft target **指的是大模型最后输出的概率预测值,即softmax层的输出。
    • 相对的,就有hard target,指的是数据集的标签了。
  • 给softmax加入蒸馏的概念:

  • 公式中的TTT表示“温度”。使用它的目的就是,让输出的softmax更平滑,分布更均匀,同时保证各项之间的大小相对关系不变。
  • T=1T = 1T=1时,上式就是平常使用的softmax函数。

  • 上图摘自知乎,根据图很方便理解。
  • 当我们不知道数据集的label时,可以直接使用大模型的soft target来训练小模型。训练的损失函数是cross-entropy。
  • 当我们已知数据集的label时,可以将soft target和小模型预测值的cross-entropy与hard target和小模型预测值得cross-entropy进行加权求合,权重参数为λ\lambdaλ。这种方法得到的效果会更好。
  • 实现流程:

2.2、distillation在特殊情况下相当于匹配logits(Matching logits is a special case of distillation )

  • 再重复一遍,知识蒸馏(Knowledge Distillation)在特殊情况下相当于logits。
  • 下式是cross-entropy到logit的梯度计算公式:
    • viv_ivi​是大模型(cumbersome model)产生的logits,ziz_izi​是小模型(distillation model)的logits。

  • 如果温度很高,即TTT很大,那么:

  • 假设logits的均值均为0,即:∑jzj/T=∑jvj/T=0\sum_j{z_j / T} = \sum_j{v_j / T} = 0∑j​zj​/T=∑j​vj​/T=0。则有:

  • 所以,在TTT很大且logit均值为0时,知识蒸馏就相当于标签匹配:12(zi−vi)2\frac{1}{2} (z_i - v_i)^221​(zi​−vi​)2。
  • 当T较小时,蒸馏更加关注负标签,在训练复杂网络的时候,这些负标签是几乎没有约束的,这使得产生的负标签概率是噪声比较大的,所以采用更大的T值(上面的简化方法)是有优势的。而另一方面,这些负标签概率也是包含一定的有用信息的,能够用于帮助简单网络的学习。这两种效应哪种占据主导,是一个实践问题。(注:我也不是很理解论文中的这段,简单点说,T就是个超参数,需要你自己调。

2.3、在大数据集上训练专家模型(Training ensembles of specialists on very big datasets )

  • 当数据集非常巨大以及模型非常复杂时,训练多个模型所需要的资源是难以想象的,因此作者提出了一种新的集成模型(ensemble)方法:

    1. 一个generalist model:使用全部数据训练。
    2. 多个specialist model(专家模型):对某些容易混淆的类别进行训练。
  • specialist model的训练集中,一半是由训练集中包含某些特定类别的子集(special subset)组成,剩下一半是从剩余数据集中随机选取的。
  • 这个ensemble的方法中,只有generalist model是使用完整数据集训练的,时间较长,而剩余的所有specialist model由于训练数据相对较少,且相互独立,可以并行训练,因此训练模型的总时间可以节约很多。
  • specialist model由于只使用特定类别的数据进行训练,因此模型对别的类别的判断能力几乎为0,导致非常容易过拟合
    • 解决办法:当 specialist model 通过 hard targets 训练完成后,再使用由 generalist model 生成的 soft targets 进行微调。这样做是因为 soft targets 保留了一些对于其他类别数据的信息,因此模型可以在原来基础上学到更多知识,有效避免了过拟合。
  • 实现流程:

3、参考资料

  1. Distilling the Knowledge in a Neural Network 论文笔记(注:个人觉得这篇博客总结得很不错)
  2. https://blog.csdn.net/qq_22749699/article/details/79460817
  3. 如何理解soft target这一做法?

论文笔记:Distilling the Knowledge相关推荐

  1. 论文笔记Improving Multi-hop Knowledge Base Question Answering by Learning Intermediate Supervision Signa

    Improving Multi-hop Knowledge Base Question Answering by Learning Intermediate Supervision Signals 引 ...

  2. 论文笔记:Sequence-to-Sequence Knowledge Graph Completion and QuestionAnswering

    Sequence-to-Sequence Knowledge Graph Completion and Question 备注:ACL 2022 Main Conference 链接:https:// ...

  3. 【论文笔记】Commonsense Knowledge Aware Conversation Generation with Graph Attention

    Commonsense Knowledge Aware Conversation Generation with Graph Attention 文章目录 Commonsense Knowledge ...

  4. 【论文笔记】ERNIE-VIL: KNOWLEDGE ENHANCED VISION-LANGUAGE REPRESENTATIONS THROUGH SCENE GRAPH

    本文强调的点是语义对齐(semantics alignment),并且将VL任务划分为了三个部分,即识别图中的对象.属性.关系. 本文利用了ERNIE的知识掩蔽策略,即每次掩蔽整个短语或实体而不是子词 ...

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

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

  6. 【论文笔记】Exploring and Distilling Posterior and Prior Knowledge for Radiology Report ... (CVPR 2021)

    论文原文:https://arxiv.org/pdf/2106.06963.pdf 参考:https://blog.csdn.net/qq_45645521/article/details/12349 ...

  7. 【论文笔记】An End-to-End Model for QA over KBs with Cross-Attention Combining Global Knowledge

    一.概要   该文章发于ACL 2017,在Knowledge base-based question answering (KB-QA)上,作者针对于前人工作中存在没有充分考虑候选答案的相关信息来训 ...

  8. 论文笔记【A Comprehensive Study of Deep Video Action Recognition】

    论文链接:A Comprehensive Study of Deep Video Action Recognition 目录 A Comprehensive Study of Deep Video A ...

  9. 【论文笔记】—低照度图像增强—ZeroShot—RUAS网络—2021-CVPR

    论文介绍 ​题目:Retinex-Inspired Unrolling With Cooperative Prior Architecture Search for Low-Light Image E ...

最新文章

  1. 360脱口秀:‘未来属于虚拟’开播啦!
  2. 使用 spring 的 IOC 解决程序耦合——获取spring的Ioc核心容器,并根据id获取对象、核心容器的两个接口(ApplicationContext、BeanFactory)引发出的问题
  3. C/C++/VC++ 变量命名规则
  4. 科大星云诗社动态20210509
  5. 微信小程序------MD5加密(支持中文和不支持中文)和网络请求(get和post)
  6. LeetCode 1051. 高度检查器
  7. Spark案例:Python版统计单词个数
  8. java nio 多路复用_8分钟深入浅出搞懂BIO、NIO、AIO
  9. NSThread 在主线操作的三个方法
  10. 吴恩达教授机器学习课程笔记【六】- Part 6 学习理论
  11. [Android实例] 【eoeAndroid社区索引】android开发基础之定位篇
  12. LabelImg使用方法
  13. ps2硬盘接linux,PS2加装硬盘详细指导
  14. XRD格式转换 神器
  15. php万年历月份处理_使用 PHP 写的万年历接口
  16. 国家级专精特新小巨人企业是什么?
  17. 古有穷书生街中弄笔,今有弄潮儿网上卖字
  18. 22/04/30本周总结
  19. IOS端向下滑动骤停
  20. 天使玩偶(CDQ分治+最小曼哈顿距离)

热门文章

  1. 跳转路径时资源路径加/和不加/的区别
  2. 七大排序算法的个人总结(二)
  3. 简化软件集成:一个Apache Camel教程
  4. Tomcat原理详解和各种集群的实现
  5. Java 多线程:synchronized 关键字用法(修饰类,方法,静态方法,代码块)
  6. 自己整理的计算机视觉领域稍微容易中的期刊(第一版)
  7. 3分钟学会Mysql查询之表连接,左连接,右连接,内连接…
  8. ADB设置连接android真机
  9. 基于PAM认证方式详解
  10. crypto-js RC4和hash_hmac运用