解读:Distilling the Knowledge in a Neural Network

一、背景

    昆虫的幼虫适应从环境中提取能量和营养,而成虫更适应迁徙和繁殖。这个比喻和机器学习中的大小模型很相似,大模型通常结构复杂,需要从大量的数据中去学习和泛化特征,学习能力通常很强(类似成虫需要迁徙、繁殖等较高的成本来生存);而小模型虽然泛化性不如大模型好,但是部署简单、消耗算力更少(类似幼虫仅在所处的环境中汲取营养即可生存)。

    既然大模型泛化性优越,那么将大模型的学到的知识提炼到小模型那?本文引入的知识蒸馏成功的解决了该问题。

二、知识、模型泛化性

    知识的概念比较抽象,可以将模型学到的参数值视为知识,但是Hindon对知识的阐释似乎更加容易让人接受和理解:知识即模型从输入到输出所学习到的映射关系

    模型的输出能体现出其泛化性。例如,将一张标签为dog的图像丢进CNN模型,Softmax的输出可能如下图所示,dog对应的输出应该较大,其他项的输出应该较小,但也有区别,比如horse的输出项要比car、boat等其他项大的多。模型不是一味的相信输入图像的真实标签,所以输出并不是one-hot形式,这种软化的输出意味着模型有着更好的泛化性

解读:Distilling the Knowledge in a Neural Network_第1张图片

三、何为知识蒸馏

    蒸馏是化学中的一个概念,它是一种热力学的分离工艺,它利用混合液体或液-固体系中各组分沸点不同,使低沸点组分蒸发,再冷凝以分离整个组分的单元操作过程,是蒸发和冷凝两种单元操作的联合。蒸馏-百度百科。

    所以,化学中的蒸馏实际上是将不同的成分进行分离,而知识蒸馏,则是通过一种特殊的训练方式,将大模型(Teacher)中蕴含的知识(或者是映射关系)教给小模型(Student),本质是一种迁移学习。

四、如何进行知识蒸馏

     原文链接:知识蒸馏(Knowledge Distillation)。解读:Distilling the Knowledge in a Neural Network_第2张图片

    如图,教师网络(左侧)的预测输出除以温度(Temperature)之后做Softmax计算,可获得软化的概率分布(软目标或软标签),数值介于0~1之间,分布较为缓和。Temperature越大,分布越缓和;而Temperature减小,容易放大错误分类的概率,引入不必要的噪声。针对较困难的分类或检测任务,Temperature通常取1,确保教师网络中正确预测的贡献。硬目标则是样本的真实标注,可以用One-hot表示。

    Total loss设计为软目标与硬目标所对应的交叉熵的加权平均(表示为KD loss与CE loss),其中软目标交叉熵的加权系数越大,表明迁移诱导越依赖教师网络的贡献,这对训练初期阶段是很有必要的,有助于让学生网络更轻松的鉴别简单样本,但训练后期需要适当减小软目标的比重,让真实标注帮助鉴别困难样本。

    另外,教师网络的预测精度通常要优于学生网络,而模型容量则无具体限制,且教师网络推理精度越高,越有利于学生网络的学习。

五、总结

    Distilling the Knowledge in a Neural Network 是知识蒸馏的开篇之作,有助于理解其本质,后面有很多优秀的工作都是据此展开,有兴趣的可以参考 知识蒸馏(Knowledge Distillation),里面介绍了很多知识蒸馏的方法。

你可能感兴趣的:(神经网络,机器学习,深度学习,神经网络,知识蒸馏)