teacher student net
顾名思义:就是老师和学生的网络,也就是老师训练好,然后教学生去怎么训练
这里着重介绍两篇论文,
第一篇是hinton的paper:Distilling the Knowledge in a Neural Network
第二篇是阿里的一个paper:Rocket Launching: A Universal and Efficient Framework for Training Well-performing Light Net
首先讲第一篇paper的思路:
这篇文章主要是两个contribution:
1 提出了一个knowledge distilling 的过程,也就是知识蒸馏,具体的思路先训练一个大的精准的网络,然后让这个大的网络去教这个小的网络怎么学习
2提出一种新的集成模型(esemble of models),包括一个通用模型(Generalist Model)和多个专用模型(Specialist Models),其中,专用模型用来对那些通用模型无法区分的细粒度(Fine-grained)类别的图像进行区分
1先介绍几个名词:
hard targets:标签(0,1,0,1,1.......)
soft targets:经过softmax的结果(0.99,0.01,0.02,0.98......),并且这个softmax的结果还可以进一步soft,
1什么是soft targets
soft targets是这里的大网络进行得到的每个类的softmax值,而具体怎么算每一个类的soft targets,取平均值
平均值包括算数平均值和几何平均值
2 如何得到soft targets
2 为什么能进一步soft
流程:
1 先用一个大的网络(cumbersome)也就是复杂的网络去做分类,标签是hard target(1,0,1,0)也就是正常的学习,最后会
得到每个数据的softmax的值(也就是 soft targets)
2再用一个小的网络,标签是上面的softmax值(注:这里不是hard target(1,0,1,0),而是预测生成的最大的softmax值),这里也就是soft targets的值
目标函数:
distilled network输出数据 与hard target进行cross entropy(这里目的是让小模型与真实分布保持一致)拟合真实的数据
distilled network输出数据与soft target 进行cross entropy(这里的目的是让小模型与大模型保持一致)拟合大模型
---------------------------------------------
这篇paper 第二个贡献点是ensemble of modles
也就是所谓的聚合模型,作者认为这种聚合模型可以解决细粒度的问题
1 main model(general model):全部数据进行训练
2 special models:针对于特殊的类进行分类,(需要不需要share models?还是一个类就是一个backbone?)
3 过拟合?怎么解决?