Relational Knowledge Distillation------论文阅读笔记(CVPR2019)

RKD (Abstract+introduction)

在这里插入图片描述
在这里插入图片描述
关系知识提取(RKD),它传递输出的结构关系,而不是单个输出本身(图1)。
在这里插入图片描述
两种RKD损失:距离方向(二阶)和角度方向(三阶)

2. Related Work

比较感兴趣的:
在这里插入图片描述
训练浅层神经网络来模拟深层神经网络,并惩罚两个网络之间的逻辑差异,从而提高了浅层神经网络的精度。
在这里插入图片描述
LXu等人[43]提出了一种条件对抗网络来学习KD的损失函数。
Crowley等人[8]通过对模型的卷积通道进行分组并使用注意力转移对其进行训练来压缩模型。

Moonshine:Distilling with Cheap Convolutions

在这里插入图片描述

RKD的通用框架,并证明了其适用于各种任务。

3. Our Approach

在这里插入图片描述
FT和FS分别是教师和学生的函数,
函数f可以使用网络任何层(例如,隐藏层或softmax层)的输出来定义。
我们用不同数据示例的N元组的XN集表示, X2, X3

3.1 IKD(Individual KD)

这里针对的都是不同层的输出作KD。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
β 是为了弥补学生网络维度较小的一个线性映射(简单来说线性扩维)

3.2 RKD(Relational knowledge distillation)

在这里插入图片描述

φ 代表一种关系趋势函数
x1----xn是输入, XN则代表N个输入样本的
ti和si表示 老师和学生对应输入的输出

RKD训练学生和教师模型使用的相同关系势函数。由于这种潜力,它能够传递高阶属性的知识,即使教师和学生之间的输出维度不同,高阶属性对低阶属性也是不变的。
在这里插入图片描述

3.2.1 Distance-wise distillation loss (距离蒸馏损失)

**ψD**测量在输出表示空间中两个示例之间的欧氏距离
µ设置为小批量中X2对之间的平均距离
在这里插入图片描述

尤其是当 教师距离 和 学生距离 由于输出尺寸的差异 存在显著差异时,小批量距离标准化非常有用。
在这里插入图片描述
RKD,它并不不是强迫学生直接匹配教师的输出,而是鼓励学生关注输出的距离结构。

3.2.2 Angle-wise distillation loss

在这里插入图片描述

我们观察到角度损失通常允许更快的收敛和更好的性能。

3.2.3 Training with RKD

在这里插入图片描述

超参数 用来平衡loss的

In sampling tuples of examples for the proposed distillation losses, we simply use all possible tuples (i.e., pairs or triplets) from examples in a given mini-batch.
在mini-batch中抽取pairs 或者 tripets.

3.2.4 Distillation target layer

4. Experiments

在这里插入图片描述
我们在三个不同的任务上评估RKD:度量学习、分类和少量镜头学习。
为了公平比较,我们使用网格搜索调整竞争方法的超参数。

4.1. Metric learning

在这里插入图片描述

4.2. Image classification

在这里插入图片描述

4.3 Few-shot learning

在这里插入图片描述

代码实现

这里我有个idea,注释去掉了,有问题可以看下草稿纸截图帮助理解,有问题私聊评论区都ok

from __future__ import print_function

import torch
import torch.nn as nn
import torch.nn.functional as F


class RKDLoss(nn.Module):
    """Relational Knowledge Disitllation, CVPR2019"""
    def __init__(self, w_d=25, w_a=50):
        super(RKDLoss, self).__init__()
        self.w_d = w_d
        self.w_a = w_a

    def forward(self, f_s, f_t):
        student = f_s.view(f_s.shape[0], -1)
        teacher = f_t.view(f_t.shape[0], -1)

        # RKD distance loss
        with torch.no_grad():
            t_d = self.pdist(teacher, squared=False)
            mean_td = t_d[t_d > 0].mean()
            t_d = t_d / mean_td

        d = self.pdist(student, squared=False)
        mean_d = d[d > 0].mean()
        d = d / mean_d

        loss_d = F.smooth_l1_loss(d, t_d)

        # RKD Angle loss
        with torch.no_grad():
            td = (teacher.unsqueeze(0) - teacher.unsqueeze(1))
            norm_td = F.normalize(td, p=2, dim=2)
            t_angle = torch.bmm(norm_td, norm_td.transpose(1, 2)).view(-1)

        sd = (student.unsqueeze(0) - student.unsqueeze(1))
        norm_sd = F.normalize(sd, p=2, dim=2)
        s_angle = torch.bmm(norm_sd, norm_sd.transpose(1, 2)).view(-1)

        loss_a = F.smooth_l1_loss(s_angle, t_angle)

        loss = self.w_d * loss_d + self.w_a * loss_a

        return loss

    @staticmethod
    def pdist(e, squared=False, eps=1e-12):
        e_square = e.pow(2).sum(dim=1)
        prod = e @ e.t()
        res = (e_square.unsqueeze(1) + e_square.unsqueeze(0) - 2 * prod).clamp(min=eps)

        if not squared:
            res = res.sqrt()

        res = res.clone()
        res[range(len(e)), range(len(e))] = 0
        return res

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大型动态社交网络(如电信网络和Internet)上的数据无处不在。 但是,以有利于有效的大规模分析的方式表示这些网络通常是一个挑战。 在本文中,我们专注于重新识别的分析任务。 动态网络环境中的重新标识本质上是一个匹配问题,涉及比较两个时间段内网络实体的行为。 实体的社交网络行为可以表示为“签名”。 可以将衡量签名重叠程度的相似性评分分配给在指定时间段内观察到的成对实体。 然后可以将分数用作预测模型中的属性,以将实体对分类为匹配或不匹配。 先前的研究已经报道了在电子邮件别名检测,作者归因和识别电信行业中欺诈用户方面的成功。 在这项工作中,我们解决了“为什么我们能够在现实世界中动态网络上重新标识实体?”的问题。 我们的贡献是双重的。 首先,我们通过匹配框架解决了规模挑战,该框架不需要成对比较来确定相似性得分。 我们采用随机网络结构来估计性能,并表明我们的估计值可以很好地预测具有不同特征(包括聚类系数,平均度,大小和不同网络类型,例如随机,小世界和无标度)的模拟网络。 其次,我们证明了我们的方法在第二个时间段内对丢失链接的鲁棒性强,但是对噪声的容忍度却较低,这是通过从第一个时间段到第二个时间段的行为变化进行建模的。 使用我们的框架,我们仅根据网络的度分布和动态性就可以对网络进行预测时提供性能评估。 这项工作对重新识别问题具有重大意义,在重新识别问题中,规模是一个挑战,而且在无法观察到假阴性的情况下(例如,当欺诈性消费者没有被标记为欺诈性消费者时)。
越来越明显的是,我们正处于几种新技术的边缘,这些新技术将以可承受的价格提供几乎无限的二级存储。 可以预期数据库应用程序将利用这种扩展的存储容量,在这方面特别有希望的领域是使用所谓的“非删除”或“历史”数据库。因此,有必要开始探索这些历史数据库的形式化模型。 -在一段时间内固有地面向数据存储的模型,并为时间与其他存储的数据项之间的交互提供形式语义。我们提出了这样的模型,即历史数据库模型(HDBM),并定义了其模型根据基本逻辑模型的语义。 为此,我们使用语言IL-s及其模型理论,这是理查德·蒙塔古(Richard Montague)的具有内涵的高阶lambda微积分的简化版本。 HDBM被定义为关系数据库模型的扩展,并结合了“时间戳记”数据库中记录的事实的杰出STATE属性。 直觉上,可以将这种数据库视为一组通常意义上的三维关系。 形式语义是根据对象(键的值)定义的,这些对象由不变或不变的实体标识,而这些对象的属性(非键的属性的值)则在各个概念中被标识为内涵模型。 提出并讨论了将数据库编码为逻辑模型的两种可能方式。广泛接受的观点是,一阶逻辑提供了关系数据库模型语义的形式化,这有助于阐明关系数据库理论中的许多问题。 我们认为,更丰富的逻辑IL-s带有“相对于某一时刻的表示法”的内置概念,并具有命名高阶对象的能力,是提供类似形式形式的合适工具。最后,我们简要讨论使用IL-s作为目标语言来解释自然语言查询片段(定义为Montague语法)的工作,并指出一些有趣的主题,以供进一步研究。时间和数据库的一般区域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值