2、知识蒸馏

原文地址:
https://www.bilibili.com/video/BV1gS4y1k7vj/?spm_id_from=333.337.search-card.all.click&vd_source=f04aa7ffaa2415f3bc572d3d1c617987
https://www.bilibili.com/h5/note-app/view?cvid=15391720&pagefrom=comment

简介

在这里插入图片描述
把左边的马图像喂给分类模型,会有很多类别,每个类别识别出一个概率,训练网络时,我们只会告诉网络,这张图片是马,其余是驴是汽车的概率都是0,这个就是hard targets,用hard targets训练网络,但这就相当于告诉网络,这就是一匹马,不是驴不是车,而且不是驴不是车的概率是相等的,这是不科学的。若是把马的图片喂给已经训练好的网络里面,网络给出soft targets这个结果,是马的概率为0.7,为驴的概率为0.25,为车的概率是0.05,所以soft targets就传递了更多的信息

在这里插入图片描述
所以训练教师网络的时候就可以用hard targets训练,训练出了教师网络之后,教师网络对这张图片的预测结果soft targets能够传递更多的信息,就可以用soft targets去训练学生网络
在这里插入图片描述
与正确类别概率相比,soft target对非正确类别概率较低,因此,非正确类别将的关系还是很模糊

为此,引入蒸馏温度T,把原来比较硬的soft targets变的更软,更软的soft targets去训练学生网络,那些非正确类别概率的信息就暴露的越彻底,相对大小的知识就暴露出来,让学生网络去学
在这里插入图片描述
T为1,就是原softmax函数,softmax本来就是把每个类别的logic强行变成0-1之间的概率,并且求和为1,是有放大差异的功能,如果logic高一点点,经过softmax,都会变的很高。

T越小,非正确类别的概率相对大小的信息就会暴露的更明显;
T越大,曲线就会变得更soft,高的概率给降低,低的概率会变高,贫富差距就没有了。

在这里插入图片描述

知识蒸馏的过程

在这里插入图片描述
首先有一个已经训练好的教师网络(Teacher model),把很多数据(input)喂给教师网络,教师网络会给每个数据都给一个温度为T的时候的softmax(文中soft labels);同时把数据(input)喂给学生网络(student model),也给学生网络一个温度T获得softmax(文中soft predictions),对soft labels和soft predictions做一个损失函数L(distillation loss也叫soft loss),让他们两个越接近越好,解释就是学生在模拟老师的预测结果;学生网络经过一个T=1的普通的softmax(文中的hard prediction)和hard label再做一个损失函数(student loss也叫hard loss),让他们两个越接近越好。所以这个学生网络既要在温度为T的预测结果和教师网络的预测结果尽可能接近,又要在温度为1的预测结果和标准答案更可能接近。

知识蒸馏有一个附带的效果:假如用没有3的minist手写数据集去训练学生网络,但是训练教师网络的时候是用的所有类别去训练的,教师网络也会将3的知识迁移给学生网络,虽然学生网络从来没见过3这个类别样本,但是最终学生网络也能预测3。
在这里插入图片描述

为什么知识蒸馏有用

在这里插入图片描述

绿色是教师网络的求解空间,表达能力拟合能力比较强,蓝色是学生网络,表达能力拟合能力比较差,训练教师网络之后,教师网络收敛到红圈里面,单独训练学生网络,不蒸馏,学生网络会收敛到金黄色的圈子,金黄色的圈子和红圈有一定距离。加上蒸馏(橙黄色的圈)以后,教师网络就会引导黄权,告诉他怎么收敛,最终收敛到橙圈里,与红圈越近,性能越好

知识蒸馏发展趋势

在这里插入图片描述

  1. 教学相长:都是老师帮学生,那学生能不能帮助老师成长
  2. 引入助教,多个老师、多个同学
  3. 刚才的知识只通过soft
    targets来表示,只是网络最后一层的预测结果,网络的中间层是不是也可以解刨出来进行知识蒸馏,例如,如下图所示,让学生网络的第一层模拟教师网络的第五层,让学生网络的第二层模拟教师网络的第十层,这样,老师不仅把最后结果告诉你,也把对这个问题的思考告诉学生网络;还可以对数据集进行蒸馏,对比学习进行蒸馏
  4. 多模态:既有视觉又有文本又有语音怎么蒸馏,对知识图谱进行蒸馏,对预训练大模型进行知识蒸馏
    在这里插入图片描述
    知识蒸馏代码库

模型压缩工具箱MMRazor开源库:

https://github.com/open-mmlab/mmrazor,包括剪枝,蒸馏,神经架构搜索和量化。

模型转换与部署工具箱MMDeploy开源库:

https://github.com/open-mmlab/mmdeploy

12个SOTA知识蒸馏算法的pytorch复现:https://github.com/Hobbitlong/RepDistiller
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值