其他分享
首页 > 其他分享> > 知识蒸馏综述: 知识的类型

知识蒸馏综述: 知识的类型

作者:互联网

知识蒸馏综述: 知识的类型

【GiantPandCV引言】简单总结一篇综述《Knowledge Distillation A Survey》中的内容,提取关键部分以及感兴趣部分进行汇总。这篇是知识蒸馏综述的第一篇,主要内容为知识蒸馏中知识的分类,包括基于响应的知识、基于特征的知识和基于关系的知识。

知识蒸馏简介

定义:知识蒸馏代表将知识从大模型向小模型传输的过程。

作用:可以用于模型压缩和训练加速 手段。

综述梳理思路:

典型的知识蒸馏KD是Hinton于15年发表的paper,明确了知识蒸馏的想法是让学生模型通过模仿教师模型来取得具有竞争性的性能,甚至可以取得超越教师网络的性能。

知识蒸馏的核心研究:如何将知识从大模型传递给小模型。

知识蒸馏系统的三个核心组件:

知识蒸馏相关的扩展方向:

在知识蒸馏中,我们主要关心:知识种类、蒸馏策略、教师学生架构

最原始的蒸馏方法是使用大模型的logits层作为教师网络的知识进行蒸馏,但知识的形式还可以是:激活、神经元、中间层特征、教师网络参数等。可以将其归类为下图中三种类型。

基于响应的知识(Response-Based Knowledge)

基于响应的知识一般指的是神经元的响应,即教师模型的最后一层逻辑输出。

响应知识的loss:

\[L_{R e s D}\left(z_{t}, z_{s}\right)=\mathcal{L}_{R}\left(z_{t}, z_{s}\right) \]

其核心想法是让学生模型模仿教师网络的输出,这是最经典、最简单、也最有效的处理方法

Hinton提出的KD是将teacher的logits层作为soft label.

\[p\left(z_{i}, T\right)=\frac{\exp \left(z_{i} / T\right)}{\sum_{j} \exp \left(z_{j} / T\right)} \]

T是用于控制soft target重要程度的超参数。

那么整体蒸馏loss可以写作:

\[L_{\operatorname{Res} D}\left(p\left(z_{t}, T\right), p\left(z_{s}, T\right)\right)=\mathcal{L}_{R}\left(p\left(z_{t}, T\right), p\left(z_{s}, T\right)\right) \]

一般来讲使用KL散度来衡量两者分布差异,通过优化以上loss可以使得学生网络的logits输出尽可能和教师网络的logits输出相似,从而达到学习的目的。

KD中除了蒸馏的一项通常还会使用交叉熵损失函数令学生网络学习真实标签(也称hard label),两项联合起来进行训练。

KD通常的解释是学生网络可以从教师网络中学习到额外的隐形知识(dark knowledge), 而这种知识要比通过标签学习的知识更容易理解。

KD其他角度的解释还包括:KD可以生成类似label smooth的soft target;KD可以视为一种正则化方法;

基于响应的知识只用到了模型最后一层logits中包含的知识,而并没有用到中间层的监督,而中间层的监督信息在表征学习中非常有用。

基于特征的知识(Feature-Based Knowledge)

在深度卷积神经网络中,网络学习到的知识是分层的,从浅到深层对应的知识抽象程度越来越高。因此中间层的特征也可以作为知识的载体,供学生网络进行学习。

基于特征的知识可以视为基于响应的知识的一个扩展。

FitNets是第一个引入中间层表征的,教师网络的中间层可以作为学生网络对应层的提示(Hints层)从而提升学生网络模型的性能。其核心是期望学生能够直接模仿教师网络的特征激活值。

以FitNets为基础扩展出几篇工作:

基于特征的知识迁移可以建模为:

\[L_{F e a D}\left(f_{t}(x), f_{s}(x)\right)=\mathcal{L}_{F}\left(\Phi_{t}\left(f_{t}(x)\right), \Phi_{s}\left(f_{s}(x)\right)\right) \]

其中$\Phi \(表示一个转换函数,因为教师网络和学生网络的特征层可能出现尺寸不匹配的情况,所以需要转换。\)\mathcal{L}_F$表示用于匹配教师网络和学生网络的相似度计算函数。

下图总结了各个基于特征的知识的匹配类型:

一般而言,在基于特征的知识迁移中,研究的对象包括了:

基于关系的知识(Relation-Based Knowledge)

基于关系的知识进一步扩展了基于响应的知识以及基于特征的知识,更全面深入的探索了不同层、不同数据样本之间的关系。

不同层之间的关系建模

基于关系的知识通常可以建模为:

\[L_{\operatorname{RelD}}\left(f_{t}, f_{s}\right)=\mathcal{L}_{R^{1}}\left(\Psi_{t}\left(\hat{f}_{t}, \check{f}_{t}\right), \Psi_{s}\left(\hat{f}_{s}, \check{f}_{s}\right)\right) \]

\(\Psi_{s}\left(\hat{f}_{s}, \check{f}_{s}\right)\)表示学生网络内成对的特征图,\(\Psi_{s},\Psi_{t}\)代表相似度函数,\(\mathcal{L}_{R^{1}}\)代表教师网络与学生网络的关联函数。

不同样本之间的关系建模

传统的知识迁移通常只关心个体知识蒸馏,但是通常知识不仅包括特征的信息,还包括数据样本之间的互作用关系。

instance relation的建模如下:

\[L_{R e l D}\left(F_{t}, F_{s}\right)=\mathcal{L}_{R^{2}}\left(\psi_{t}\left(t_{i}, t_{j}\right), \psi_{s}\left(s_{i}, s_{j}\right)\right) \]

与不同层之间建模不同的是,上边的公式衡量的对象是层与层的关系即:\(\Psi_{s}\left(\hat{f}_{s}, \check{f}_{s}\right)\), 而此处衡量的是样本与样本之间的关系(如上图所示),即\(\psi_{t}\left(t_{i}, t_{j}\right)\)

下表对蒸馏知识从不同角度进行分类,比如数据的结构化知识、输入特征的专有知识等。

参考

Gou, J., Yu, B., Maybank, S.J., & Tao, D. (2021). Knowledge Distillation: A Survey. ArXiv, abs/2006.05525.

https://arxiv.org/pdf/2006.05525.pdf

标签:教师,right,蒸馏,综述,知识,网络,left
来源: https://www.cnblogs.com/pprp/p/15614344.html