一、概述

这篇文章仍然从最简单的分类任务入手,巧妙运用了Knowledge Distill技术来缓解这样的问题。作者的oral。具体地,使用旧模型作为teacher model,对于新任务中的每一个样本。和传统的Finetune比起来,LwF使用了teacher model输出的soften softmax对新任务中的样本进行约束。

二、网络结构详解

对于一个CNN网络,对于shared参数θsθ_sθs,和用于做特殊任务的参数θoθ_oθo。我们的目的就是增加一个新任务的参数θnθ_nθn,并让他学习到的参数能够在新的和旧的任务上都有很好的表现(见图e)。
算法流程大致如下:

训练过程记录如下:
1)记录新的数据在原始的网络上的outputs(defined by θsθ_sθsand θoθ_oθo),对于新增的类,我们增加相应的FC的节点个数,兵随机初始化权重θnθ_nθn
2)我们训练网络并优化其loss在所有的分类上有最小的loss。在训练的时候,我们首先freeze掉θsθ_sθsθoθ_oθo,然后训练θnθ_nθn指导其收敛,然后我们在训练所有的θsθ_sθsθoθ_oθoθnθ_nθn指导其收敛。

三、损失函数


ps:
y_hat: the softmax output of the network;
yn: the one-hot ground truth label vector.
在这个新的网络中,我们希望对于原来的任务其输出能和原来的网络的输出接近,所以我们采用蒸馏loss:


我们采用T=2进行蒸馏。

四、蒸馏的简单解释

神经网络模型在预测最终的分类结果时,往往是通过softmax函数产生概率分布的:

这里将T定义为温度参数,是一个超参数,q_i是i类的概率值大小。

比如一个大规模网络,如ImageNet这样的大网络,能够预测上千种类别,正确类别的概率值能够达到0.9,错误类的概率值可能分布在10-8~10-3这个区间中。虽然每个错误类别的的概率值都很小,但是10-3还是比10-8高了五个数量级,这也反映了数据之间的相似性。

比如一只狗,在猫这个类别下的概率值可能是0.001,而在汽车这个类别下的概率值可能就只有0.0000001不到,这能够反映狗和猫比狗和汽车更为相似,这就是大规模神经网络能够得到的更为丰富的数据结构间的相似信息。
由于大规模神经网络在训练的时候虽然是通过0-1编码来训练的,由于最后一层往往使用softmax层来产生概率分布,所以这个概率分布其实是一个比原来的0-1 编码硬目标(hard target)更软的软目标(soft target)。这个分布是由很多(0,1)之间的数值组成的。

同一个样本,用在大规模神经网络上产生的软目标来训练一个小的网络时,因为并不是直接标注的一个硬目标,学习起来会更快收敛。

更巧妙的是,这个样本我们甚至可以使用无标注的数据来训练小网络,因为大的神经网络将数据结构信息学习保存起来,小网络就可以直接从得到的soft target中来获得知识。

这个做法类似学习了样本空间嵌入(embedding)信息,从而利用空间嵌入信息学习新的网络。

因此:

1、首先用较大的T值来训练模型,这时候复杂的神经网络能够产生更均匀分布的软目标;

2、之后小规模的神经网络用相同的T值来学习由大规模神经产生的软目标,接近这个软目标从而学习到数据的结构分布特征;

3、最后在实际应用中,将T值恢复到1,让类别概率偏向正确类别。

所以,蒸馏神经网络取名为蒸馏(Distill),其实是一个非常形象的过程。

我们把数据结构信息和数据本身当作一个混合物,分布信息通过概率分布被分离出来。首先,T值很大,相当于用很高的温度将关键的分布信息从原有的数据中分离,之后在同样的温度下用新模型融合蒸馏出来的数据分布,最后恢复温度,让两者充分融合。这也可以看成Prof. Hinton将这一个迁移学习过程命名为蒸馏的原因。

文章部分摘自博客。

Learning without Forgetting 详解(LwF)相关推荐

  1. Incremental Learning of Object Detectors without Catastrophic Forgetting详解

    Incremental Learning of Object Detectors without Catastrophic Forgetting详解 最近由于项目的需要在研究incremental l ...

  2. 学习曲线( learning curve)是什么?如何绘制学习( learning curve)曲线?学习曲线( learning curve)详解及实践

    学习曲线( learning curve)是什么?如何绘制学习( learning curve)曲线?学习曲线( learning curve)详解及实践 学习曲线如何帮助你从数据的角度来查看方差和偏 ...

  3. 联邦学习入门(二)-Practical Secure Aggregation for Privacy-Preserving Machine Learning论文算法详解

    本文介绍了一种实用的安全聚合算法(Secure Aggregation Protocol),主要参考了Google的论文Practical Secure Aggregation for Privacy ...

  4. Meta Learning(元学习)详解

    元学习 概述 基本概念 基本分类 基本流程 模型结构 概述 元学习(Meta Learing)的提出是针对传统神经网络 模型的泛化性能不足.对信种类任务适应性较差的特点.主要表现为通过少量的计算和新训 ...

  5. 字典学习(Dictionary Learning, KSVD)详解

    注:字典学习也是一种数据降维的方法,这里我用到SVD的知识,对SVD不太理解的地方,可以看看这篇博客:<SVD(奇异值分解)小结 >. 1.字典学习思想 字典学习的思想应该源来实际生活中的 ...

  6. Learning without Forgetting 论文阅读和对应代码详解

    论文地址点这里 一. 介绍 基于终身学习思想,我们希望新任务可以分享旧任务的参数进行学习,同时不会出现灾难性遗忘.在这种场景下,需要开发一种简单有效的策略来解决各种分类任务.基于这种策略和单纯的想法, ...

  7. 论文笔记:CLIP:Learning Transferable Visual Models From Natural Language Supervision详解

    paper:https://arxiv.org/abs/2103.00020 代码:GitHub - openai/CLIP: Contrastive Language-Image Pretraini ...

  8. Unsupervised Monocular Depth and Ego-motion Learning with Structure and Semantics 之论文详解

    Unsupervised Monocular Depth and Ego-motion Learning with Structure and Semantics 1.论文详解 2.问题 1.如何理解 ...

  9. Dictionary Learning详解(附带K-SVD算法)

    Dictionary Learning详解 第四十五次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习.本文主要对字典学习(Dictionary Learnin ...

最新文章

  1. Rokid webhook 指南 手把手教你做个懒人
  2. Linux怎么查询全部容器时间,docker容器与Linux主机环境获取时间不一致
  3. ITK:Mersenne Twister随机数生成器
  4. 想建一个带分隔条的label 控件;
  5. 多线程并发如何高效实现生产者/消费者?
  6. android strm,Android 关于so文件的随记
  7. bzoj4709 [Jsoi2011]柠檬
  8. python给字母赋值_给字母赋值的更快方法?
  9. 【神经网络】给初学者们讲解人工神经网络(ANN)
  10. HTML 标题h1-h6
  11. 框架详解_Selenium3框架详解
  12. 从零开始教你成为装机大神
  13. 微信小程序map组件拖拽地图获取经纬度,地址,带定位点范围(中心点固定)
  14. linux系统中rpm啥意思,Linux系统中的RPM简说
  15. 计算机发送到桌面快捷方式,win10怎么把计算机放到桌面快捷方式
  16. 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?
  17. MH算法拟合标准柯西分布
  18. Python自动化测试详解
  19. 多设备monkey测试工具_基于Tkinter GUI操作
  20. 正则表达式匹配连续相同字符,如...aaa..bbb...11111...2222...

热门文章

  1. 《部落冲突:皇室战争》——一款不能错过的游戏!
  2. 佟年计算机大赛,佟年的人设是什么?
  3. JSP核心——分页查询
  4. 国内镜像加速 Android 源码下载
  5. fama french-3 模型个人理解
  6. 【机器学习 深度学习】通俗讲解集成学习算法
  7. three.js实现3D室内全景看房
  8. (三)安装seafile服务器
  9. vscode连接寒武纪开发容器
  10. 联想小新pro14 2022款和2021款的区别