1 什么是知识蒸馏,知识迁移
我们有一个训练好的教师网络Teacher Model 和 数据 和一个未训练好的学生网络Student Model。
我们需要学生网络有着与教师网络相似的,相近的能力。实现的方式就是知识蒸馏,知识迁移。
表现如图示:教师把知识传授给学生,学生学会了知识,就有和教师相似的能力。
2 为什么要使用知识蒸馏,知识迁移
项目实施通常会把模型部署到终端,然而终端的算力都是有限的。
教师网络往往是本身模型参数大,使用海量数据训练,算力要求也是巨大的,这是不适合部署到终端的。
我们使用知识蒸馏,知识迁移 可以生成一个轻量型的学生网络,学生网络算力需求不大的同时也具有教师网络相近的能力,这是适合用来部署的。
3新概念:预训练大模型
通过海量数据训练出一个参数庞大且能力强的模型,可以部署到云端,当网络条件不好时,可以使用知识蒸馏获得能力相似的相对小的模型,在把这个小模型部署到移动端。
4移动终端部署方式
移动端部署的四种方式:对应图中红字。
绿字表示移动端部署方方面面的影响因素。
知识的表示与迁移
表示图中分类结果在知识蒸馏中有两种方式:hard targets 和 soft targets。
已图中为例 假如有三种目标要分类:马,驴和车。
有一张图片是马时:
对应的hard targets: 马-1,驴-0,车-0
对应的soft targets: 马-0.7,驴-0..2,车-0.02
可见:
hard targets只能表示出图片中的是一匹马,但是对应其他两种分类数值都是0,在数值上都为0,不能表示这两个非正确类别的区分度。
soft targets:正确的类别是马,在特征上马和驴是相似的,驴的预测数值也是相对与车是高一些的。车和驴是不相似的物品,预测的数值也不是相似的。soft targets包含的信息有驴子与正确类别-马有一定相似性,同时也表示出与非正确类别-车的区分程度。
蒸馏温度T
通常使用softmax计算的结果每个类别在数值上有时是相差较大的,这里引用了一个参数: 蒸馏温度T ,可以达到将各个类别放缩到同一量级表示内。这中方式使每个类别区分在数值上更明确。
T=1 时,是通常的softmax。
如图:T=3 相对于 T=1 时 对各类别预测结果相对大小的表示更明确。
知识蒸馏的过程
已有一个训练好的教师网络,未训练好的学生网络
1 输入大量数据到教师网络 在温度t时预测 得到对应的 soft targets
2 输入相同数据到学生网络 在温度t 时预测 得到对应的soft pred
3 计算 soft targets 与 soft pred 的差距得到distlllation loss 表示学生网络与教师网络 预测在知识上的差距
4 输入相同数据到学生网络 在温度1 时预测 得到对应的hard pred
5 计算hard pred 与 hard targets 的差距得到studentloss 表示预测分类loss
6总loss未两部分loss相加:total loss = soft loss + hard loss
通过反向传播算法不断优化学生网络,最终可以使学生网络学习到教师网络的知识获得与教师网络相似的能力。
实验结果
1 少样本甚至0样本学习:
教师网络训练时 使用的全部类别数据集
当训练学生网络时 数据集中不包含某个类时 训练结束后 。学生网络也可以区分出数据是属于哪个类别的。 也可以区分出是否是数据集中未包含的那一类别。
2 使用soft targets可以预防过拟合
知识蒸馏的应用场景
第3点解释:当手里有已训练好的教师网络是, 可以从网上爬取海量的五标注数据 通过教师网络得到 soft target。再用soft target 对学生网络进行训练。
迁移学习与知识蒸馏无关
本文内容主要来自B站up主:同济子豪兄 视频:【精读AI论文】知识蒸馏 的笔记摘要