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

news/2025/2/22 1:23:21/

目录

一 方法

1 常规知识蒸馏

2 关系知识蒸馏

2.1 Distance-wise distillation loss

2.2 Angle-wise distillation loss

RKD-toc" name="tableOfContents" style="margin-left:80px">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):

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

RKD" name="2.3%20Training%20with%20RKD" style="text-align:left">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框架为具有高阶关系的有效知识转移领域打开了一扇大门。

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


http://www.ppmy.cn/news/1574021.html

相关文章

【tips】el-select没有赋值但是初始化回显了

页面初始化&#xff0c;下拉框的list是异步的&#xff0c;且没有默认选中值。别的都正常&#xff0c;就是有一个下拉框竟然回显了。。。 原来是这样写的。 <div>serverID-{{form.serverID}}</div> <el-select class"filter-item" v-model"form.…

​44页PDF | 天津大学深度解读DeepSeek:原理与效应(附下载)

一、前言 这份报告深入解读了DeepSeek大语言模型的技术原理、发展效应及未来展望。报告首先回顾了生成式AI的发展历程&#xff0c;从2014年的Attention机制到2024年的o1/R1技术&#xff0c;展示了AI从统计方法到Transformer架构、再到强化学习与推理能力的演进。接着&#xff…

Spring MVC 的核心以及执行流程

Spring MVC的核心 Spring MVC是Spring框架中的一个重要模块&#xff0c;它采用了经典的MVC&#xff08;Model-View-Controller&#xff09;设计模式。 MVC是一种软件架构的思想&#xff0c;它将软件按照模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;…

手机控制电脑远程关机

远程看看软件兼容iOS和Android设备&#xff0c;该软件除了能通过电脑远程关闭另一台电脑外&#xff0c;您还可以通过它在手机上远程关闭公司的电脑。您可以按照以下步骤进行操作以实现电脑远程关机&#xff1a; 步骤1.在手机应用商店搜索“远程看看”进行软件安装&#xff0c;…

SpringSecurity基于配置方法控制访问权限:MVC匹配器、Ant匹配器

Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。在 Spring Security 中&#xff0c;可以通过配置方法来控制访问权限。认证是实现授权的前提和基础&#xff0c;在执行授权操作前需要明确目标用户&#xff0c;只有明确目标用户才能明确它所具备的角色和权…

JavaScript 前端面试 3(等于、全等、instanceof、typeof 、原型、原型链)

五、和的区别&#xff0c;分别在什么时候使用&#xff1f; 等于操作符&#xff0c;全等操作符 1&#xff1a;等于操作符 如果操作数相等 返回true JavaScript存在隐式转换&#xff0c;会先进行类型转换&#xff0c;再确定操作数是否相等&#xff0c;如果有一个是bool值&am…

板块一 Servlet编程:第十节 监听器全解 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程&#xff1a;第十节 监听器全解 一、什么是监听器实现一个监听器的简单流程 二、各对象的监听器使用方法&#xff08;1&#xff09;Request域的监听器&#xff08;2&#xff09;Session域的监听器&#xff08;3&#xff09;Application域的监听器 三、实例&a…

MySQL多表连接查询高阶技巧和高阶函数

MySQL多表连接查询高阶技巧和高阶函数 以下是 MySQL 中多表连接查询的高阶技巧和高阶函数的详细介绍&#xff1a; 一、多表连接查询高阶技巧 1. 减少连接次数 技巧&#xff1a;通过子查询或临时表预先处理部分数据&#xff0c;减少多表连接的复杂度和次数&#xff0c;从而提…