【论文阅读笔记】浅谈深度学习中的知识蒸馏 | 关系知识蒸馏 | CVPR 2019 | RKD

发布于:2025-02-21 ⋅ 阅读:(22) ⋅ 点赞:(0)

目录

一 方法

1 常规知识蒸馏

2 关系知识蒸馏

2.1 Distance-wise distillation loss

2.2 Angle-wise distillation loss

2.3 Training with RKD

2.4 Distillation target layer

3 实验



论文题目:Relational Knowledge Distillation

论文地址:http://arxiv.org/pdf/1904.05068v2

KD ZOO:Knowledge-Distillation-Zoo/kd_losses at master · AberHu/Knowledge-Distillation-Zoo · GitHub

【摘要】知识蒸馏的目的将在一个模型(教师)中获得的知识转移到另一个模型(学生)中,而这个模型(学生)通常较小以往的方法可以表示为训练学生模仿教师所代表的个别数据实例的输出激活的一种形式。我们介绍了一种新的方法,称为关系知识蒸馏( RKD )它代替了传递数据样本之间的相互关系。对于RKD的具体实现,我们提出了基于距离和角度的蒸馏损失来惩罚关系中的结构差异。在不同任务上进行的实验表明,所提出的方法对受过教育的学生模型有显著的提升。特别是对于度量学习,它允许学生的表现优于教师的表现,在标准的基准数据集上达到了先进的水平。

图1:关系型知识蒸馏。传统的KD方法逐点地将教师模型中的个体输出迁移到学生模型中,而我们的方法从结构上迁移了输出之间的关系。它可以看作是传统KD的推广。

一 方法

在这一部分首先回顾传统的KD并介绍了RKD的一般形式。然后,提出两个简单而有效的蒸馏损失作为RKD的实例。

给定教师模型T和学生模型S,令fT和fS分别为教师和学生的函数。这些模型通常是深度神经网络,并且原则上函数f可以使用网络(例如,一个隐藏层或softmax层)的任意层的输出来定义。

1 常规知识蒸馏

一般而言,传统的KD方法通常可以表示为最小化目标函数,如公式(1)

其中, l是惩罚教师和学生之间差异的损失函数.

例如,Hinton等[ 11 ]的流行工作对fT和fS使用pre-softmax输出,并将softmax (温度为τ)和库尔贝克-莱布勒散度为l,见公式(2):

通过设置fT和fS为隐藏层的输出,l为平方欧氏距离来传播隐藏激活的知识。学生的隐含层输出通常比教师的隐含层输出具有更小的维度,引入一个线性映射β来桥接不同的维度,见公式(3):

类似地,许多其他方法也可以写成等式的形式。传统的KD本质上是将教师的个别输出传递给学生。因此,我们将这类KD方法称为个体KD ( IKD )。

2 关系知识蒸馏

RKD旨在利用教师输出展示中数据示例的相互关系来传递结构化知识。与传统的方法不同,它为每个n元组的数据实例计算一个关系潜能(relational potential)ψ,并通过潜能从教师向学生传递信息。

RKD的目标函数见公式(4)

RKD训练学生模型,使其与教师在所使用的关系势函数上形成相同的关系结构。由于这种潜力,它能够传递高阶属性的知识,而这种高阶属性对低阶属性是不变的,即使教师和学生的输出维度不同。图2说明了IKD和RKD的比较。

正如预期的那样,关系势函数ψ在RKD中起着至关重要的作用;RKD的有效性和效率取决于势函数的选择。例如,更高阶的势函数在捕获更高层次的结构方面可能是强大的,但在计算上更昂贵。在本工作中,我们提出了两个简单而有效的RKD势函数和相应的损失,它们分别利用了实例的两两关系和三元关系:距离损失角度损失

2.1 Distance-wise distillation loss

给定一对训练样本,距离势函数ψ D衡量了两个样本在输出表示空间中的欧氏距离,见公式(5)和公式(6):

由于蒸馏试图匹配教师和学生之间的距离潜能,这种小批量的距离归一化特别有用,特别是当教师距离和学生距离之间的尺度存在显著差异时,例如,由于输出维度的差异。在我们的实验中,我们观察到归一化在训练中提供了更稳定和更快的收敛。

利用在教师和学生中测量的距离势,定义距离蒸馏损失见公式(7)和公式(8)

距离蒸馏损失通过惩罚输出表示空间之间的距离差异来传递示例之间的关系。与传统的KD不同,它不强制学生直接匹配教师的输出,而是鼓励学生关注输出的距离结构

2.2 Angle-wise distillation loss

给定一个三元组的例子,一个角度关系势度量了三个例子在输出表示空间中形成的角度:

利用在教师和学生中测量的角度势,定义角度蒸馏损失见公式(10):

角度蒸馏损失通过惩罚角度差异来传递训练样本嵌入的关系。由于角度是比距离更高阶的属性,它可能能够更有效地传递关系信息,使训练学生更多的灵活性。在我们的实验中,我们观察到角度损失通常允许更快的收敛和更好的性能。

2.3 Training with RKD

在训练过程中,多个蒸馏损失函数,包括提出的RKD损失,可以单独使用,也可以与特定任务的损失函数(例如交叉熵)一起使用。因此,总体目标具有形式如公式(11):

其中,L task为特定任务损失,LKD为知识蒸馏损失,λ KD为可调超参数以平衡损失项。当训练过程中使用多个KD损失时,每个损失用相应的平衡因子加权。在对所提出的蒸馏损失的示例元组进行采样时,我们简单地使用了给定小批量的示例中所有可能的元组(即对或三元组)。

2.4 Distillation target layer

对于RKD,蒸馏目标函数f原则上可以选择为任意一层教师/学生网络的输出。然而,由于距离/角度损失并不转移教师的个别输出,因此单独使用它们不足以使个别输出值本身是至关重要的,例如用于分类的softmax层。在这种情况下,它需要与IKD损失或任务特定损失一起使用。在其他大多数情况下,RKD在我们的经验中是适用和有效的。

3 实验

我们用于实验的代码在线可用:Relational Knowledge Distillation

【结论】我们在不同的任务和基准上证明了所提出的RKD利用数据实例的相互关系有效地传递知识。特别是对于度量学习,RKD使较小的学生甚至超过较大的教师。虽然本工作中使用的距离和角度蒸馏损失简单有效,但RKD框架允许我们探索两种情况之外的多种具有高阶势的任务特定的RKD损失。我们认为,RKD框架为具有高阶关系的有效知识转移领域打开了一扇大门。

至此,本文分享的内容就结束啦。