前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WSDM23 | 学习蒸馏图神经网络

WSDM23 | 学习蒸馏图神经网络

作者头像
Houye
发布于 2023-09-04 05:28:22
发布于 2023-09-04 05:28:22
4430
举报
文章被收录于专栏:图与推荐图与推荐

今天介绍的是由北京邮电大学、昆士兰大学等高校机构共同发表在WSDM 2023会议上的一篇论文:

Learning to Distill Graph Neural Networks

01 前言

图神经网络(GNNs)可以有效地获取图的拓扑和属性信息,在许多领域得到了广泛的研究。近年来,为了提高GNN的效率和有效性,将GNN与知识蒸馏相结合成为一种新趋势。然而,现有的应用于GNN的知识蒸馏方法都采用了预定义的蒸馏过程,这些过程由几个超参数控制,而不受蒸馏模型性能的监督。蒸馏和评价之间的这种隔离会导致次优结果。在这项工作中,作者提出一个通用的知识蒸馏框架,可以应用于任何预训练的GNN模型,以进一步提高它们的性能。为了解决分离问题,作者提出了参数化和学习适合GNN蒸馏的蒸馏过程。具体地说,本文不像以前的大多数工作那样引入统一的温度超参数,本文通过学习节点的特定蒸馏温度来获得更好的蒸馏模型性能。作者首先通过其邻域的编码和预测函数来参数化每个节点的温度,然后设计了一种新的迭代学习过程用于模型蒸馏和温度学习。作者还引入了一种可扩展的方法来加速模型训练。在5个基准数据集上的实验结果表明,本文提出的框架可以应用于5个流行的GNN模型,并持续提高其预测精度,平均相对增强3.12%。此外,可扩展的变体模型以1%的预测精度为代价,使训练速度提高8倍。

图神经网络(GNNs)已经成为在图上进行半监督学习的最先进的技术,在过去的五年中受到了广泛的关注。数百个GNN模型已经被提出并成功应用于各个领域,例如计算机视觉自然语言处理数据挖掘。近年来,为GNN配置知识蒸馏来加速模型推理,并利用无标记数据从而提高其效率或有效性是一种新兴趋势。具体来说,在典型的知识蒸馏中,轻量级模型(即学生模型)通过训练来模仿已训练模型(即教师模型)的软预测来学习知识。从效率的角度来看,可以利用知识蒸馏将一个较深的GCN模型压缩为较浅的模型,从而更快地推理。从有效性的角度来看,知识蒸馏可以提取GNN模型(教师模型)的知识,并将其注入到非GNN模型(学生模型)中,以便使用更多的先验知识和未标记的数据进行更精确的预测。

除了教师和学生的选择外,决定教师和学生模型的软预测在损失函数中如何匹配的蒸馏过程对蒸馏学生在下游任务上的预测性能也至关重要。例如,全局超参数“温度”在知识蒸馏中被广泛采用,它软化了教师模型和学生模型的预测,以促进知识的迁移。然而,现有的GNN模型上应用的知识蒸馏方法均采用预定义的蒸馏过程,即只有超参数但没有任何可学习参数。换句话说,蒸馏过程是启发式或经验式设计的,没有任何来自蒸馏学生表现的监督,这将蒸馏过程与结果评估隔离,从而导致次优结果。

在这项工作中,作者的目标是提出一个通用的知识蒸馏框架,可以应用于任何预训练的GNN模型,以进一步提高它们的性能。请注意,本文关注的是蒸馏过程,而不是学生模型的选择,因此简单地让学生模型具有与BAN所建议的老师相同的神经结构。为了克服蒸馏和评估之间的隔离问题,作者没有将全局温度作为超参数引入,而是创新地提出了由蒸馏GNN学生的性能监督的节点特定温度。具体来说,通过其邻域编码和预测的函数来参数化每个节点的温度。由于传统知识蒸馏框架中存在隔离问题,蒸馏学生的成绩对节点温度的偏导数不存在,使得在温度参数化中学习参数变得非平凡。因此,本文设计了一种新的迭代学习过程,交替执行准备、蒸馏和学习步骤来进行参数训练。

在准备步骤中,作者将利用当前参数计算每个节点的温度,并建立基于节点特定温度的知识蒸馏损失;在蒸馏步骤中,学生模型的参数将根据蒸馏损失进行更新;在学习步骤中,温度建模中的参数将更新,以提高蒸馏GNN学生的分类精度。此外,作者引入了一种可扩展的方法,通过启发式地更新节点特定的温度。

02 预备知识

2.1 节点分类

节点分类是在给定有标记节点和图结构的情况下,对图中未标记节点进行分类的一种典型的图上半监督学习任务,被广泛应用于许多GNN模型的评估中。

形式上,给定一个连通图 , 是顶点集, 是边集,节点分类的任务是基于图结构 有标签的节点集 和节点特征 来预测没有标签的节点集 中每个节点 的标签。其中矩阵 的每一行 示节点 的 维特征。设 为节点标签的集合,则每个节点的真实标签可以表示为一个 维的独热向量 。

2.2 图神经网络

图神经网络可以通过迭代聚合邻居信息,即消息传递机制,将每个节点 编码为 维logit向量 。在本文中,作者提出的算法不是针对特定的图神经网络模型设计的,而是可以应用于任何图神经网络。因此,简单地将图神经网络编码器以黑盒形式描述化为:

其中 是图神经网络中的可学习参数, 是在softmax函数归一化之后的预测标签分布。然后图神经网络会对每个有标签的节点最小化该节点的真实标签与预测标签之间的距离,通常采用交叉熵损失来训练参数 :

2.3 知识蒸馏

在本工作中,本文关注的是蒸馏过程的研究,而不是学生模型的选择。因此,只需让教师模型和学生模型具有相同的神经结构,并分别表示为GNNTGNNS参数分别为 和 。给定教师模型的预训练参数,通过对GNNT GNNS之间的软预测进行对齐,训练学生模型的参数。从形式上讲,知识蒸馏框架旨在优化: 其中第一项是学生预测和教师预测之间的交叉熵,第二项是 中节点的学生预测与真实标签的交叉熵。许多知识蒸馏方法会引入额外的温度超参数来软化教师和学生的预测:

其中是温度超参数。温度等于1时对应原始的softmax操作。温度越高,预测就越软(趋向均匀分布),而温度越低,预测就越硬(趋向独热分布)。在最流行的蒸馏框架[中,所有的温度都被设置为相同的超参数,即为每个节点𝑣设置。通过调整全局温度超参数,然后对经过蒸馏的学生模型进行评估,并期望其性能优于教师。

03 方法

图1 (a)用于蒸馏GNN的典型框架;(b)本文提出的蒸馏框架

3.1 参数化温度

直接为每个节点指定一个自由参数作为节点特定温度将导致严重的过拟合问题。因此,假设具有相似编码和邻域预测的节点应该具有相似的蒸馏温度。在实际应用中,每个节点 的温度可以通过一个函数来参数化,该函数需要用到以下特征:(1)学生的logit向量,它直接表征了学生模型当前的预测状态;(2) Logits向量的L2范数,由于softmax函数中的指数算子,较大的范数通常表示较硬的预测分布;(3)中心节点邻居的预测熵,描述了节点邻居的标签多样性。直观上,上述所有特性都会影响模型预测的置信度,因此在温度参数化中都应考虑。形式上,作者将所有学生模型的温度设置为1,以实现更精确的预测,并将教师温度参数化:

作者使用教师而不是学生来建模邻居的预测熵,以获得更好的数值稳定性。在实验部分将研究每个连接组件的影响,并讨论学习的温度。此外,为了避免梯度爆炸或消失的问题,作者还通过一个基于sigmoid操作的函数 ,将温度限制在 范围内。注意,用来建模温度的其他特征也可能存在,作者发现使用的三个特征足以提高性能,并且这三个特征都是有用的。

3.2 迭代学习过程

作者将标记的节点集划分为两个不相交的节点集 和 。 在损失函数的第二项中用于蒸馏, 于评估蒸馏的学生模型和学习节点温度。蒸馏部分的损失可以写成:

评估蒸馏的学生和监督温度的损失是:

由于蒸馏和评估之间的差距,评估损失只与学生模型的参数有关,评估损失对温度参数的偏导数不存在,这使它不可能通过反向传播来学习温度。为了解决这个问题,作者提出了一个新的迭代学习过程,交替执行以下准备、提炼和学习步骤: 准备步骤:首先计算每个节点 的温度,然后设定好蒸馏损失。蒸馏步骤:对于模型蒸馏,作者通过单步反向传播来更新学生模型参数:

其中 是蒸馏过程的学习率。学习步骤:作者用更新之后的学生参数计算评估损失,然后通过链式规则在温度参数上进行反向传播:

其中 是蒸馏过程的学习率。这里作者将评估损失对温度参数的偏导分解为评估损失对学生参数的偏导和学生参数对温度参数的偏导的乘积,这两项都可以分别由上述式子的偏导计算得到。通过迭代执行准备、蒸馏和学习步骤,可以训练参数化的节点特定温度,从而提高蒸馏学生的预测性能。整个算法的伪代码如下:

表1 DPK整体伪代码

04 实验

作者在图像分类和目标检测方面进行了广泛的实验。此外,还对所提出的方法进行了各种消融实验和数据分析。此外作者的训练数据与代码是公开提供的以供再现。

3.1 图像分类

作者在CIFAR-100和ImageNet数据集上评估DPK方法进行图像分类的性能。作者通过将DPK与其他多种基线模型对比,证明了模型的有效性,实验结果如表2,3所示:

表2 CIFAR-100验证集上的结果

表3 ImageNet验证集上的结果

表2显示了CIFAR-100验证集上,同构师生对方法的top-1准确率。用粗体突出显示最佳模型结果。同时表3在大规模的图像数据集ImageNet进行了实验,显示了由ResNet-34指导的ResNet-18的top-1和top-5的准确率。结果表明,DPK在性能上优于其他基线。

3.2 更好的老师,更好的学生

上述实验表明,DPK在普遍的学生老师模型对中表现良好。在此,作者展示了DPK可以进一步改进与更好的教师。如图2所示:

图2 更好的老师,更好的学生

如图2所示:通过逐步替换较大的教师模型,DPK训练的学生模型的准确性不断提高,而其他算法训练的模型性能不断波动。同时,DPK在每个阶段都超过了它对应的方法,并逐步扩大了性能差距。需要注意的是,给定学生的表现逐渐饱和是一个合理的现象,但表现的波动会在实际应用中造成许多困难。

3.3 消融实验

在本节中,作者提供了广泛的消融研究来分析DPK的每个成分的影响。实验在ImageNet上进行分类任务,采用ResNet34和ResNet18作为教师和学生。

掩码比:特征掩码是DPK的一个关键组成部分,表4报告了不同掩码比下不同DPK变体的结果:

表4 不同掩码比例消融实验

实验结果表明从15%到95%的广泛的掩码比可以为学生实现性能的提高。这意味着教师提供的先验知识非常有利于学生的网络学习。此外不同师生对下的最优掩模比并不一致,例如55%的ResNet-18和ResNet-34表现最好,而ResNet-18和ResNet-101的最优掩模比为75%。表4还显示了学生使用所提出的动态掩码策略获得了最好的准确性,这表明了所提出的动态掩码策略对于自动选择掩码比例的必要性和有效性。

先验知识:表5阐述了整合教师先验知识在构建混合学生特征中的重要性:

表5 先验知识的消融实验

具体来说,使用零填充和可学习的掩码来发挥教师的特征在掩码位置上的作用。结果表明,没有教师提供的先验知识会导致较差的表现,因为这加重了从学生到教师的特征模仿的负担。这有力地证明了通过特征掩码来证明提供来自教师的先验知识的有效性。

05 结论

在本文中,作者提出了一种新的知识蒸馏框架LTD,可以应用于任何预训练的GNN模型,以进一步提高其预测性能。作者没有像以前的大多数工作那样引入一个全局温度超参数,而是创新地提出通过蒸馏学生的表现来学习节点特定的蒸馏温度。具体而言,作者通过邻域编码和预测情况的函数来参数化每个节点的温度,并设计了一种新的迭代学习过程,用于模型提取和参数学习。作为一种成本有效的选择,LTD的可扩展变体提出了启发式更新节点特定温度。作者在五个基准数据集上进行了实验,并表明本文提出的框架可以成功地应用于五个流行的GNN模型。大量的研究进一步证明了该方法的有效性。

论文链接:

https://dl.acm.org/doi/abs/10.1145/3539597.3570480

代码链接:

https://github.com/BUPT-GAMMA/LTD

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图神经网络与推荐系统 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
archlinux安装教程2020(archlinux更换国内源)
(本次使用archlinux-2020.01.01-x86_64.iso) 截图未更新!最新的arch打包发生了变化,在pacstrap那一步以前只要pacstrap -i /mnt base base-devel就可以了,现在arch将基础包的众多组件分离了,还按照之前的命令安装,会发现最后内核都没装,更不用说系统引导了。 下载地址:https://www.archlinux.org/download/
全栈程序员站长
2022/08/01
11.6K0
archlinux安装教程2020(archlinux更换国内源)
Manjaro安装配置
0. 安装 # 启动时选择第二项boot(non-free),Manjaro自带的驱动精灵会帮你安装好所需驱动,笔记本双显卡则会帮你安装bumblebee driver boot(non-free)
斯武丶风晴
2018/03/29
3.6K0
Manjaro安装配置
Arch Linux (Manjaro) 配置与常用软件安装指南
以前就有听说Manjaro大大简化了Arch繁琐的安装,而且排名也相当不错,但一直没有尝试。正好@某昨在群里提到,于是我就心血来潮的装了个试试。Manjaro是我第三次尝试(之前是Ubuntu和短暂的Deepin)将Linux作为一个独立系统(而非WSL、虚拟机)用于日常使用。经过一段时间的使用体验后,我深刻体验到了Arch系软件包之全的好处,其社区之完善与软件包质量之高是我之前未曾想到的。不过,其实Manjaro诸多软件的安装、配置还是有一些需要注意的地方,于是在这篇文章中我会记录我在系统配置、安装软件时遇到的坑,与一些解决方法。 文中使用的桌面环境为KDE。文章将会持续更新。如有问题或希望贡献你自己的经验,欢迎留言或发邮件至admin@kaaass.net。
KAAAsS
2022/01/14
9.2K0
Archlinux安装之后应该......
打开 System Settings > Regional Settings > Language -> Add languages 中选择中文加入,再拖拽到第一位,Apply。
vivi
2021/12/09
1.7K0
install wireless firmware on archlinux
编者按:这篇文章介绍了笔者解决archlinux+kde plasma环境无法链接无线网的问题。笔者通过查阅archlinux wiki与Google定位问题,重新安装Linux无线网卡固件解决了问题。
陆道峰
2020/06/17
1.6K0
Manjaro安装配置美化字体模糊发虚解决记录
或者google拼音:第一行改成sudo pacman -S fcitx-googlepinyin,谷歌拼音的话,如果全部安装了依赖,可以在包管理卸载qt5那几个无用的软件。
爱写bug
2019/04/03
7.2K0
Manjaro安装配置美化记录
记录自己Manjaro18安装的一些坑,避免下次满互联网找解决方法。在此之前试过Manjaro、Ubuntu、Fedora、linux Mint系统的pac、yum、apt都用过了,所以果断选择Manjaro的包管理方式。Xfce4、Gnome、Cinnamon 和Mate桌面环境都试过了,KDE没试过,因为KDE 被抛弃了。其中呢我觉得xfce4最好,比较轻,资源占用低,但是我还是选择了Gnome,因为这个比较符合我的审美,而且现在(2019.3.31)gnome3.32已经没那么多问题了,资源占用也没那么夸张,cpu一般不会超过5%,还是在用了很多插件情况下,有两个插件一用就会超过7%: 如果是新手,安装完之后建议不要急着还原u 盘,因为后面重装的路还长,不知道一个不注意就卸载了不该卸的,然后…..
爱写bug
2019/08/01
7.2K0
Manjaro安装配置美化记录
Arch Linux安装与初体验
Arch Linux 是一个 x86-64 通用发行版,它流行于那些喜欢 DIY Linux 系统的用户和 Linux铁杆粉丝当中。其默认的安装文件只含有一个最基本的系统,它希望使用者自己配置并使用 Arch 系统。其基于 KISS 原则(使它保持简单、傻瓜Keep It Simple, Stupid!),Arch Linux 是一个专注于优雅、代码正确,精简而简洁的系统。
yuanfan2012
2021/02/25
2.8K0
Arch Linux安装与初体验
虚拟机安装archlinux的简单步骤
这篇文章是我在虚拟机安装archlinux之后的一点心得,参考了archwiki关于安装arch的一些内容https://wiki.archlinux.org/index.php/Beginners%27_guide 。
乐百川
2022/05/05
2.2K0
安装Arch Linux之后要做的几件事情
Arch Linux是一个简洁优美的Linux发行版,但是相对应的配置起来就略显麻烦了,所有的配置都需要自己管理。 这里是一些安装之后的配置,大家可以根据需求进行配置。另外,这里是按照分类写的,实际配置的时候不一定非要按顺序配置。比如可以先配置桌面,然后在浏览器中直接复制粘贴命令,就会方便的多。
乐百川
2022/05/05
1.3K0
安装Arch Linux之后要做的几件事情
Arch Linux的正确使用方法
谈起我的 Linux 学习之路,时间其实并不长。但是我却花了相对很少的时间,已经能达到把 Linux 当作自己的桌面系统的程度了。 Ubuntu 的体验令我有点沮丧,再者它也不适合我机子。后来我又知道了 Debian ,这个发行版据称稳定健壮。我这次怀着犹豫的心情去安装了,安装过程不像 Ubuntu 那样顺利,记得应该遇到过一点问题,但还是解决了。这次的 Debian 安装让我很满意,我的电脑像复活了一样,再也不会卡顿了。然而面对 Debian 我能干什么?我后来发现我什么也没干,我不了解任何东西,我也
小小科
2018/05/04
5.8K0
Arch Linux的正确使用方法
配置和美化Arch Linux
如果使用无线网络的话,使用wifi-menu命令连接网络。如果在使用wifi-menu命令连接网络的时候选择保存配置,那么就可以下次让其自动连接。要让其自动连接,使用以下命令:
乐百川
2022/05/05
3K0
【技术教程】怎样安装Arch Linux以及Deepin桌面环境
Arch Linux 是一个轻量级的Linux发行版本,实际上,Arch Linux提供给用户很多选择,用户可以自定义自己的安装过程,不x像其他很多的Linux发行版本,安装过程甚至是一个只有“下一步”的傻瓜式操作,因此我觉得Arch Linux是我见过安装过程最有技术含量的Linux发行版本。不过我们可以从中学到很多东西,因为很多东西是我们亲手构造出来的。Arch Linux的软件包管理工具是pacman,接下来我们基于Arch Linux镜像自带的Linux工具包以及pacman,从零构建属于自己的Arch Linux。
极客开发者
2022/01/18
5.5K0
【技术教程】怎样安装Arch Linux以及Deepin桌面环境
ArchLinux KDE使用蓝牙音频设备
刚安装的ArchLinux系统蓝牙服务并没有开机自启,此时需要自己开启蓝牙服务,同时需要安装pulseaudio以后才能使用音频设备,若遇到其他问题请点击文章底部arch-wiki超链接查阅吧,最后请愉快的听歌吧。
雨落凋殇
2020/11/13
5.2K0
ArchLinux KDE使用蓝牙音频设备
玩转 Linux 最受欢迎发行版 Manjora:配置及软件安装
安装好 manjora 后,基础配置往往不够我们日常需求,然后我们就需要对其进行一些改造,让其成为我们称手的工具。先介绍下常用软件命令,后边的过程中将会频繁使用它们。
村雨遥
2020/05/25
1.4K0
[更新]manjaro之kde折腾记录
  前段时间我又把Gnome桌面版的manjaro更新崩溃了,自己修复完了以后发现还是有不少小问题。鉴于博主强迫症比较严重无法忍受,于是换了各种桌面版的manjaro最终决定用回第一次用过的kde桌面版本。由于每一次更新都要配置一堆东西,比较麻烦,记录一下初始使用的过程,以便于后续自己重装系统不用再继续百度了emmmm。更新时间2019-11-24
雨落凋殇
2019/12/25
3.8K0
manjaro 安装分区以及配置方案
使用iso模式做成启动盘后能直接存储文件,传统bios推荐用这种方式,分区方案选择MBR 使用dd模式做成启动盘后,需要自己划分分区才能存储文件,uefi推荐用这种方式,分区方案选择GPT
全栈程序员站长
2022/06/26
7.8K0
manjaro 安装分区以及配置方案
MANJARO KDE安装配置(已换Arch Linux,此贴可能废弃)
安装后阿可能有打不开steam的情况,记得安装libGL相关的包,一般是缺失例如lib32-nvidia-440xx-utils的包,记得选择和自己安装的相关的包哦
impressionyang
2020/08/27
4.2K0
MANJARO KDE安装配置(已换Arch Linux,此贴可能废弃)
Arch Linux 安装指南
如果想要学习Linux,Arch Linux是个很好的选择。Arch Linux提供了非常详细并且更新及时的Wiki(帮助文档),使用系统的过程中遇到的问题基本上都空余从上面找到。
小陈运维
2021/10/13
2.6K0
ArchLinux安装与配置小结
最近无意间发现一个基于ArchLinux的发行版——BlackArch,主题十分炫酷(中二)。当然渗透类的Linux发行版已经有BackTrack和Kali了,不过都是源于Debian的,使用者众多,随波逐流无法突显我们的逼格,要论小众,ArchLinux算是个中翘楚。呵呵开个玩笑,其实ArchLinux的亮点在于“小”,不同于其他发行版的“最小化安装”,ArchLinux的安装过程需要手动分区,手动配置bootloader,然后从网络源下载必要的包安装到指定的分区中。
evilpan
2023/02/12
1.8K0
ArchLinux安装与配置小结
相关推荐
archlinux安装教程2020(archlinux更换国内源)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档