上篇文章介绍了剪枝篇,本文以上篇的剪枝模型为学生模型,以剪枝之前的模型为教师模型,进行KD逻辑蒸馏,之后会尝试特征蒸馏和关系蒸馏等。
一、KD逻辑蒸馏
1.1 大致过程
逻辑蒸馏,是基于分类问题设计的,因此非常适用于语义分割。模型最后会有一个softmax层,其输出值对应了相应类别的概率值。在知识蒸馏时,已经有了一个泛化能力较强的Teacher模型,我们在利用Teacher模型来蒸馏训练Student模型时,可以直接让Student模型去学习Teacher模型的泛化能力。一个很直白且高效的迁移泛化能力的方法就是:使用softmax层输出的类别的概率来作为“Soft-target”,对比Student模型的输出逐渐的向Teature模型靠近。
1.2 Softmax
关于分类问题,就会想到softmax(一个向量中的每一个分量先求指数,然后求所有分量指数分和,指数/和得到一个新的分量,组成新的向量,和为1),蒸馏中的softmax也是这样的处理思路,只是加了一个温度指数T,将e的指数再除以T;
1.3 蒸馏过程
step1、首先训练大模型(a),softmax(1),得到一个输出(0.97,0.029,0.001);