Probabilistic Knowledge Transfer for Deep Representation Learning(2018)----论文笔记

2023-11-01

写在前面

建议直接看代码,不要过多浪费时间看论文

Abstract

1.蒸馏的知识:学习表示和label的互信息量 (mutual information between learned representation and a set of (possible unknown) labels )
2.从手工制作的特征提取器 到 跨模式的知识转移—> 跨模态知识转移 ( 将文本模态转换为从数据的视觉模态中提取的表示 )

1. Introduction

KT技术允许学习更准确和更一般化的学生网络,因为教师模型的输出隐式编码了有关训练样本及其分布之间相似性的更多信息(当使用训练集的硬二进制标签时,通常在训练期间忽略). 通过这种方式,KT充当正则化器,提高学生模型的性能[44]。

[44] Recurrent neural network training with dark knowledge transfer

后续存在问题:

a) 是否有可能将现有的KT技术用于表征学习任务,而不仅仅是分类任务?

  • 近年来可以说已经百花齐放了,比如检测类任务。

b) 有没有办法让学生直接回归教师特征空间的几何图形而不是其输出?

  • 可以的,现在各种注意力蒸馏,关系蒸馏

c) 是否有可能从手工制作的功能中转移知识,例如。G将[29]和HoG[11]筛选成一个神经网络,然后根据手头的任务进行微调?这可以提供一种方法来利用大量可用的未标记训练样本,并在训练深度神经网络的过程中有效地使用它们,从而克服深度学习模型的一个显著缺点,即。成功培训他们所需的大量标记数据。

  • 半监督的蒸馏

d)最后,为解决其他任务(如目标检测[36])而训练的网络知识能否有效地转移到其他较小的网络中?

  • 这点其他的一些蒸馏已经做的非常好了。

本文提出的方法:

在这里插入图片描述

本文提出了一种概率知识转移方法。首先,教师的知识是使用信息论的度量,即互信息(MI)[10]来建模的。然后,对学生网络进行训练,以在提取的数据表示和一组(可能未知)标签之间保持相同数量的MI。

回归教师表示的概率分布而不是网络的实际输出的教师模型来执行KT

优点:

首先,它允许直接传输知识,即使网络的输出维度不匹配。
此外,即使当网络的输出维度匹配时,直接回归其输出也可能不是最有效的策略,因为教师网络预期不如学生网络强大。使用一种能够放松此约束的方法,例如通过允许旋转和稍微变换特征空间,有望更好地促进知识转移过程。
最后,请注意,还可以使用任何其他信息源来估计或增强概率分布,例如神经网络集成、手工制作的特征提取器、监督信息或甚至来自领域专家或用户的定性信息,增加建议方法的灵活性,并允许使用几个新的KT场景。

贡献

本文的主要贡献是提出了一种概率KT(PKT)技术,该技术通过匹配特征空间中数据的概率分布而不是其实际表示,克服了现有KT方法的一些局限性,如图1所示。据我们所知,所提出的技术是第一种能够
a)执行跨模式知识转移,
b)将知识从手工制作的特征提取程序转移到神经网络,
c)转移知识而不考虑手头的任务(例如,目标检测),
d)将领域知识纳入知识转移程序,提供对知识转移的新见解。
该方法的动机是匹配教师和学生模型的概率密度函数,在数据样本的特征表示和一组(可能未知)标签注释之间保持教师的二次互信息(QMI)[45]

2 Related Work

摘取部分
求解流程**(FSP)矩阵在剩余网络的一些中间层之间传递知识。然而,与基于提示的传输方法相比,基于FSP的方法要求网络的中间层具有相同的大小和数量的滤波器**,这使得当两个网络之间的层的维数不同时,该方法不适合表示学习(学习较小的网络时,预计会出现这种情况).据我们所知,本文提出的方法是第一种概率KT表示学习方法,其工作原理是直接匹配教师和学生特征空间之间的数据概率分布。所提出的方法简单明了,不需要仔细的domain任何超参数的特定调谐,如softmax温度[17].

3 Probabilistic Knowledge Transfer

首先,本节简要介绍MI及其二次变量。然后,通过学习一个教师模型,该模型在提取的表示和一组标签之间保持与教师模型相同的互信息****量,从而导出所提出的方法。本节详细介绍了所提出的方法,并讨论了几种设计选择。
在这里插入图片描述
T={t1,t2,…,tN} : 表示用于在两个模型之间传递知识的N个对象的集合
x=f(t):表示教师模型的输出表示
y=g(t,W):表示学生模型的输出表示,其中W表示学生模型的参数。

在知识转移过程中**,函数g(·)的参数W被学习来“模仿”f(·)的行为**。
注意,只要T和g(·)的每个元素的f(·)的输出是已知的,并且g(·)是一个可微函数,那么函数f(·)和g(·)实际上是什么就没有约束。

教师和学生网络的分布分别使用两个连续随机变量X和Y建模,其中X描述从教师模型中提取的表示,Y描述从学生模型中提取的表示。

MI是随机变量之间相关性的度量[10]。设C为描述样本属性的离散随机变量(比如他们的标签)。对于从 x 绘制的每个特征向量 X,都有一个关联的标签 c。互信息测量观察特征向量后,类标签的不确定性降低了多少[45]。p(c)是观察类标签c的概率。同样,让p(x,c)表示相应联合分布的概率密度函数。

在这里插入图片描述
X 样本 C lebel 的互信息量 , x 特征向量 , c lebel ,p(c)是观察类标签c的概率。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
假设存在不同(和可能未知)的类,且每个类由Jp样本组成,则Cp类的类先验概率计算为P(cp)=Jp N,其中N是用于估计QMI的样本总数。
在这里插入图片描述
是一个对称核,宽度 σ 和符号xpj用于表示第p类的第j个样本。X的概率密度类似地估计为:
在这里插入图片描述
这些概率导出教师模型的更新信息势
在这里插入图片描述
VIN表示类内交互,
VALL表示所有样本之间的交互,
VBTW表示每个类与所有其他样本之间的交互。
在这里插入图片描述
教师和学生模型必须使用不同(并适当调整)的带宽σ和σ。然后,给定一组类标签C,通过保持两个随机变量X和Y与类标签i之间的MI量相同,知识可以从教师模型转移到学生模型。例如I(X,C)=I(Y,C)。如果二次MI要在模型之间传递,则这意味着两个模型之间的各自信息势必须相等。请注意,可能还有其他具有相同MI的配置,但是使用其中一个就足够了。
为了在两个模型之间具有相等的信息势,所使用的核函数所描述的每对数据样本之间的相似性必须相等,
即 K(xi− xj,2σ2t)= K(xi− xj,2σ2s)∀i、 j。与直接匹配这些核值不同,教师模型P(t)和学生模型P(s)的相应联合密度概率估计之间的差异可以最小化。联合密度概率函数定义为:
在这里插入图片描述
在高维数据分布建模的降维技术中,如t-SNE算法[30]。教师模型的条件概率分布定义为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 Experimental Evaluation

在这里插入图片描述
在这里插入图片描述

代码贴出来(并没有论文中那么那样看起来复杂)

from __future__ import print_function

import torch
import torch.nn as nn


class PKT(nn.Module):
    """Probabilistic Knowledge Transfer for deep representation learning
    Code from author: https://github.com/passalis/probabilistic_kt"""

    def __init__(self):
        super(PKT, self).__init__()

    def forward(self, f_s, f_t):
        return self.cosine_similarity_loss(f_s, f_t)

    @staticmethod
    def cosine_similarity_loss(output_net, target_net, eps=0.0000001):
        # Normalize each vector by its norm
        output_net_norm = torch.sqrt(torch.sum(output_net ** 2, dim=1, keepdim=True))
        output_net = output_net / (output_net_norm + eps)
        # 归一化
        output_net[output_net != output_net] = 0

        target_net_norm = torch.sqrt(torch.sum(target_net ** 2, dim=1, keepdim=True))
        target_net = target_net / (target_net_norm + eps)
        target_net[target_net != target_net] = 0

        # Calculate the cosine similarity
        model_similarity = torch.mm(output_net, output_net.transpose(0, 1))
        target_similarity = torch.mm(target_net, target_net.transpose(0, 1))

        # Scale cosine similarity to 0..1
        model_similarity = (model_similarity + 1.0) / 2.0
        target_similarity = (target_similarity + 1.0) / 2.0

        # Transform them into probabilities
        model_similarity = model_similarity / torch.sum(model_similarity, dim=1, keepdim=True)
        target_similarity = target_similarity / torch.sum(target_similarity, dim=1, keepdim=True)

        # Calculate the KL-divergence
        loss = torch.mean(target_similarity * torch.log((target_similarity + eps) / (model_similarity + eps)))

        return loss


import torch
import numpy as np

# 这里看原来的代码就知道,这里的feature经过了fc 连接层了,源代码有两层全连接层,第二层预测10分类了,第一层在这之前

f_t = np.arange(0, 30000)
# print(a)
f_t = torch.from_numpy(f_t).view(3, 1000, 10).float()
# print(a)
f_s = torch.ones([3, 1000, 10]).float()


PKT = PKT()
loss = PKT.forward(f_t[0], f_s[0])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Probabilistic Knowledge Transfer for Deep Representation Learning(2018)----论文笔记 的相关文章

  • 【转载】如何使用VSCode编译IAR

    参考原址 https blog csdn net lczdk article details 114639094 总结 安装IAR For Visual Studio Code插件 使用VSCode打开IAR prj 当前发现最方便的方法是
  • JVM第三讲 JVM从底层原理分析类加载过程

    类加载运行全过程 其中loadClass的类加载过程有如下几步 加载 gt gt 验证 gt gt 准备 gt gt 解析 gt gt 初始化 gt gt 使用 gt gt 卸载 加载 在硬盘上查找并通过IO读入字节码文件 使用到类时才会加
  • # Maven系列 - 覆盖父级pom文件某jar包版本

    Maven系列 覆盖父级pom文件某jar包版本 一般公司都会有统一的父级pom文件 指定一些通用的jar版本 比如fastjson 假如出现漏洞 最近fastjson就出现了漏洞 需要升级fastjson包 具体有哪些方式呢 具体方式 1
  • Centos7:yum安装MySQL5.7后如何设置root密码

    Centos下安装软件的方式很简单 只需要通过yum install xxx命令即可 第一步当然检查是否有mysql的yum源 命令 yum list grep mysql community 主要还是安装开源的社区版 如果没有如图所示的和
  • Subgraph Retrieval Enhanced Model for Multi-hop Knowledge Base Question Answering

    本文是LLM系列的文章 针对 Subgraph Retrieval Enhanced Model for Multi hop Knowledge Base Question Answering 的翻译 用于多跳知识库问答的子图检索增强模型
  • 共享内存在每个进程里的映射地址是不同的

    共享内存可以说是最有用的进程间通信方式 也是最快的IPC形式 两个不同进程A B共享内存的意思是 同一块物理内存被映射到进程A B各自的进程地址空间 进程A可以即时看到进程B对共享内存中数据的更新 反之亦然 由于多个进程共享同一块内存区域
  • Q格式代码配置

    最近准备自己搞实现一遍电机的foc代码 Q格式 TI的dsp的IQmath学习 自己实现的基本的Q格式的配置 brief Q format Conversion date 2020 11 7 author wangchongwei Q fo

随机推荐

  • python环境与模块日常:Anaconda搭配SublimeText3配置环境,安装Anaconda插件自动补全,conda、pip基础指令与镜像代理

    最近重装SublimeText3和Anaconda 然后安装了pyquery包 跑代码 from pyquery import PyQuery as pq 在cmd gt python Anaconda Prompt gt python A
  • Java开发案例:使用JDBC技术来实现QQ登录

    在实际开发中 用户信息是存放在数据库中的 登录时的账号和密码信息也需要去数据库中查询 本节将使用JDBC技术来完善QQ登录案例 1 创建数据表 并添加用户数据 在jdbc数据库中创建数据表tb qquser 并在表中插入3条数据 其执行的S
  • git 的 Debug分支

    Debug分支 在项目的正常开发过程中 之前发布过的版本可能很会出bug 这时就需要停下来现在的开发任务 先去修改bug 完成后再回来继续开发任务 git中stash提供了保存现场的功能 可以把当前工作区 暂存区中的内容不需要提交而保存下来
  • 上架发布应用市场资料准备iOS和Androd

    一 应用市场 App Store 网站 https itunesconnect apple com login 帐号 密码 360手机助手 网站 http open app 360 cn 帐号 密码 安智市场 网站 http dev anz
  • Linux中的叹号命令

    http blog sina com cn s blog 531bb76301013ulf html 整天在shell环境下操作 不积累点快捷输入的小技巧是不行的 最常用的技巧恐怕就是Tab自动补全以及上方向键来回退上几条历史命令了 这些对
  • linux默认系统进程

    http blog chinaunix net uid 7553302 id 64864 html linux启动后 默认有以下系统进程 Init 1 Linux的第一个进程 也是其它所有进程的父进程 events 0 5 处理内核事件守护
  • Python生成器推导式创建元组

    从形式上看 生成器推导式与列表推导式类似 只是生成器推导式使用小括号 列表推 导式直接生成列表对象 生成器推导式生成的不是列表也不是元组 而是一个生成器对象 我们可以通过生成器对象 转化成列表或者元组 也可以使用生成器对象的 next 方法
  • mysql存储引擎性能比较

    前言 今天看到有人面滴滴被问到知不知道mysql的引擎然后说不会被直接告知面试结束 然后想想自己mysql引擎也只是知道那么一两个还说不全 就想说在这里做个总结 凌晨三点半了 在数据库中存的就是一张张有着千丝万缕关系的表 所以表设计的好坏
  • git 合并多个commit(goland)

    用命令合并 commit 多多少少有点麻烦 发现一个更快速的方法 如何利用 goland 快速 合并多个commit 点击 goland 左下角 git 按钮 会显示你的 gitlog 下图是你的 gitlog 按住 ctrl 然后点击你想
  • Linux安装tomcat8详细步骤

    1 下载tomcat http tomcat apache org 我下载的是 apache tomcat 8 0 50 tar gz 2 用root用户登陆Linux 在usr local 下创建tomcat文件夹 mkdir usr l
  • Hill密码的加密与解密

    Hill密码原理 首先随机生成或选取一个密钥矩阵 该矩阵必须是可逆的 过程如下图所示 在加密过程中 先将明文分为三个字母一组 不足的用 X 代替 然后将其转化成数字 如0 A 得到每个字母所对应的数字 再与密钥矩阵相乘 得到的数字转成字母
  • BUCK/BOOST电路原理分析

    Buck变换器 也称降压式变换器 是一种输出电压小于输入电压的单管不隔离直流变换器 图中 Q为开关管 其驱动电压一般为PWM Pulse width modulaTIon脉宽调制 信号 信号周期为Ts 则信号频率为f 1 Ts 导通时间为T
  • python自动化写入word文件

    工具包使用python docx Github页面 https github com python openxml python docx 官网教程 https python docx readthedocs io en latest in
  • K8S的架构及工作原理

    1 Master和Node 1 Master K8S中的Master是集群控制节点 负责整个集群的管理和控制 在Master上运行着以下关键进程 kube apiserver 提供了HTTP Rest接口的关键服务进程 是K8S里所有资源的
  • unix 时间戳 c语言,C语言实现字符转unix时间戳

    在PHP中把字符串转成Unix时间戳是多么的方便 一个strtotime 函数就搞定了 而C语言实现就麻烦很多了 需要先转成tm类型 再得到它的Unix时间戳 附上实现代码 include include int strtotime cha
  • libcurl库的下载和安装

    目录 1 下载 2 解压 3 查看README 查看curl 1 4 查看INSTALL md 查看 configure help 5 配置configure 6 编译 拿下载安装libcurl库为例 1 下载 下载网址 单击一下这个文件
  • 算法入门篇:排序算法(一)

    引子 笔者刚刚学习自己的的一门编程语言 C语言 的时候 正在runoob上面刷经典一百道题 第一次见到排序问题 我内心是不屑的 这 不是张口就来 然后我就贡献了一整个下午的时间在一个简单的排序上面 初学者不知到排序的时候可以有交换两个值这样
  • js逆向_知识小结

    目录 一 Chrome之调试小结 chrome查看资源文件 chrome关联本地文件夹 chrome重写js文件并替换 chrome新建js文件并执行 Console打印输出勾选 断点 DOM 事件 xhr debugger 调用栈Call
  • Apex List

    请访问https trailhead salesforce com en users strailhead trailmixes prepare for your salesforce platform developer i creden
  • Probabilistic Knowledge Transfer for Deep Representation Learning(2018)----论文笔记

    Probabilistic Knowledge Transfer for Deep Representation Learning 写在前面 Abstract 1 Introduction 后续存在问题 本文提出的方法 优点 贡献 2 Re