[论文笔记] Knowledge Distillation via Instance Relationship Graph

Knowledge Distillation via Instance Relationship Graph

Authors: Yufan Liu, Jiajiong Cao, Bing Li, Chunfeng Yuan, Weiming Hua, Yangxi Lic and Yunqiang Duan

Motivation

这篇文章是基于传统KD的改进版,类似于同样发表在CVPR2019的 Relational Knowledge Distillation。主要想解决的问题是Knowledge Distillation(KD)中knowledge如何定义的问题,传统的做法仅仅使用logits作为知识,将学生和老师的对于单个sample的logits进行逼近(比如阿里AAAI2019的Rocket Launching)。但是知识不应该只局限于约束单个sample的相似性,而应该是考虑多个sample协同的相似性。因此本文提出了要约束学生和老师的Instance Relationship Graph(IRG),如下图所示。本文的图画得是真的高级!

IF and IRG

Method

本文主要定义了两种新的知识,一种是IRG,一种是IRG transformation(IRGt)。

IRG

直观的说,IRG就是将一个batch内的sample两两连接,建成,节点是sample的特征,边是两个sample特征的相似性(距离)。这样看公式就比较清楚:

IRG
最终得到的就是一个邻接矩阵,每个元素代表相似性。
这样做的好处在于:传统的知识只是针对单个sample,现在变成针对一个batch。因此作者在后面也提到batch size是一个很重要的参数,因为衡量了知识的粒度。

IRGt

IRGt代表的是更进一步的知识,即知识的变化。可以想象,信息流(一个向量)在同一个网络不同两层之间的流动也可以代表这个网络的学习情况。因此,作者进一步定义了IRG在层之间的变化:

IRGt
简单的说,就是同一个网络两层的IRG的变化量。

用一句话总结IRG和IRGt就是:IRG把sample建成了图,是同一层里的知识;IRGt则衡量了IRG的层间变化。

LOSS

OK,定义好了知识,再定义两个网络之间知识的相似性度量就可以做KD了。

IRG Loss

IRG Loss
直接看最后一个等号,其中是指这个sample的特征,所以的那一项就是最简单的KD,限制学生和老师每一层的logits,即单个sample的相似度,而这一项就是衡量两个IRG图的相似度。不过后面作者觉得这一项限制太多了不太行,就改成只限制最后一层的logits了,这个公式就变成下面酱紫:
IRG Loss (simplify).png

IRGt Loss

IRGt Loss.png
和IRG类似,IRGt只是把相似度的约束定义在了层与层之间,这个公式可能作者忘记加进行balance了,加号前一项是单一sample的变化(即单个节点),加号后一项是针对整个图的变化(即图的边)。作者后面发现,如果引入了第二项,会大大影响效率。举个栗子,一个batch内如果有个sample,那这里的IRG就有个节点,以及条边,那第二项就会变得超级大,因此作者省去了第二项,变成了酱紫:
IRGt Loss (simplify).png

全部loss加起来

MTK Loss.png

最后就是把上面提到的loss全加起来,叫做Multi Type Knowledge:
:用ground truth作为监督训练的Loss
:学生的最后一层的logits向老师的最后一层logits学习
:学生和老师的IRG的邻接矩阵逼近
:学生和老师的单sample的特征变化(不是特征)逼近

Experiment

实验就不详细搬运了,感兴趣的同学可以看看文章。
其中比较有意思的一点是MTK Loss的公式里面的值设为0.05比较好,说明这个IRG作为辅助作用比较好好。

你可能感兴趣的:([论文笔记] Knowledge Distillation via Instance Relationship Graph)