Graph Learning笔记 - 长尾分布问题

news2025/2/13 2:13:46

Graph Learning笔记 - 长尾分布问题

分享四篇论文入门图神经网络时的学习笔记。

SL-DSGCN

论文:Investigating and Mitigating Degree-Related Biases in Graph Convolutional Networks

来源:2020CIKM

概要

  • GCN在图的半监督学习上能取得良好表现,但训练难度大
  • 当标签数据有限,GCN在low-degree nodes的更新信息不足,预测表现不佳
  • 提出SL-DSGCN(Self-Supervised-Learning Degree-Specific GCN),从模型和数据上减轻关于度的偏差
  • 在数据集中验证了SL-DSGCN提高了自我训练GCN能力和低度节点的准确性。

分析问题

  • 考虑如何捕捉不同层之间节点的复杂关系 / 如何为低度节点提供信息。

  • 使用了 Cora, Citeseer, Pubmed, Reddit 四个数据集,通过可视化分析可以发现预测准确率随着节点度数的变化分布。

  • 度数在数据集中并非独立同分布,而度数越大的点往往容易与带标签邻居相邻,可以频繁参与优化过程,这也是GCN在度数大的点性能好的原因之一。

实现过程

在这里插入图片描述

Degree-Specific GCN Layer
  • SL-DSGCN的核心部分,用来捕捉不同度数节点的差异和相似性
  • 传统GCN使用与相邻节点的加权平均来计算特征,该结构将节点的度考虑在内,使度不同的节点在传递消息和更新特征过程有所不同。(也许是特征拼接之后再进行图卷积操作)
  • 该层参数由RNN生成,大概是因为度不同的节点通过同一个RNN可以获得不同的度的特征信息,从而在性质相似的点中,特征由度来决定。
Self-Supervised-Training with Bayesian Teacher Network
  • Pre-training with the Annotator

teacher-student Network是用一个更宽更复杂,但已经训练好的神经网络(teacher)去训练另一个窄而深的网络(studen)。这篇论文就是使用这种方法生成软标签和不确定分数

论文里提出带Bayesian teacher network的子监督训练,大概步骤:(1)使用图注释器为未标记的节点生成伪标签。

(2)使用生成的伪标签作为额外的监督,在有标签和无标签的数据上训练学生网络。

(3)使用训练好的学生网络,对图中的所有节点进行预测。

(4)在学生网络产生的预测上训练贝叶斯教师网络。

(5)使用训练好的贝叶斯教师网络来完善由图注释器生成的伪标签。

(6)重复步骤2-5,直到收敛。

  • Fine-tuning Student with Uncertainty Scores

训练好的Bayesian teacher network可以计算每个节点的不确定分数,这东西可以给损失函数加权优化收敛,这样可以更好地利用未标记数据来训练。

Training Algorithm

在这里插入图片描述

一些思考

  • RNN部分应该可以用更优秀的结构来代替了?比方说LSTM和Transformer啥的。
  • 在稠密图的表现如何?感觉准度应该差不了多少但是计算会比较慢吧,所以感觉应该要先判断图的性质再考虑是否进入SL-DSGCN结构。

Meta-tail2vec

论文:Towards Locality-Aware Meta-Learning of Tail Node Embeddings on Networks

来源:2020CIKM

GitHub - smufang/meta-tail2vec: Implementation of meta-tail2vec published in CIKM 2020 paper “Towards Locality-Aware Meta-Learning of Tail Node Embeddings on Networks”.

摘要

  • 提出meta-tail2vec 方法来优化尾部节点嵌入问题

    • 对于尾部节点的嵌入问题,采用重建的回归模型来计算。
    • 对于网络的局部感知位置问题,提出删边和元学习的方法局部调整
  • 在公共数据集中进行大量实验,验证了meta-tail2vec的性能提升

背景

  • network embedding
  • GNN

分析问题

  • 对于没有 丰富结构链接/低度数 的节点,嵌入性能较差
  • 一节点的度在网络中变化很大,不是独立同分布
  • 某些网络的节点度的特点为长尾分布,即相当一部分节点处于尾部且度数非常低
  • 如何在有限的结构信息中学习有效的尾部节点的嵌入向量??
问题的难点
  • 尾部节点提供的信息非常少
  • 嵌入时需要考虑每个节点的结构位置,在于无法适应每个节点(链接很少的尾部节点),否则会过拟合。

方法

  • 对于尾部节点信息稀缺的问题,考虑利用头部节点的嵌入(Oracle embeddings)来训练回归模型并且通过自监督学习重建(视为一个few-shot问题)。利用该模型,可以预测尾部节点的嵌入使其逼近Oracle embeddings。同时,通过删边操作模拟尾部节点的有限信息。

    • 在邻居随机选k个(支持集合)断掉,那样尾部节点嵌入学习就可以变成一个few-shot
    • 使支持集合来更新先验知识,再用查询节点更新回归模型
    • 回归模型可以用来预测尾部节点的嵌入向量,由嵌入器和回归其组成
    • 嵌入器将每个节点降维,回归器则将嵌入向量映射到目标值。
  • 针对每个节点结构位置问题,采用元学习范式,采用模型无关的MAML(Model-Agnostic Meta-Learning)元学习框架。

    • 通过在多个任务上进行梯度下降来学习通用初始化参数,使这些参数快速适应新任务
    • 更新后的参数在查询集上预测从而得到嵌入向量。
  • 实验是在3个公共数据集上做节点分类和链路预测任务

一些思考

  • 这篇论文陌生用的方法好像有点多,有点看不过来,像文中提到的SDNE、ARGA、DDGCN等一系列嵌入方法都没来得及细究,不过大致就是元尾部嵌入要比这些都好就是了
  • 关于few-shot的部分有点像直接用了掩码的思想,总之就是把邻居mask掉去训练。虽然文章的方法是把询问节点的k个邻居mask掉,但我觉得直接在整个图上按度数贡献到概率上再随机mask也是可以的。

TNGNN

论文:Tail-GNN:Tail-Node Graph Neural Networks

来源:2021KDD

摘要

  • 针对长尾效应提出Tail-GNN模型
  • 提出transferable neighborhood translation的概念,捕获节点与邻居的传递关系
  • 在五个公共数据集上进行实验,Tail-GNN取得了SOTA成绩

背景

  • 图数据集的普遍特征:长尾分布
  • 最近的GNN模型虽然很好地学习了节点表示,但是不能针对处理尾部节点
  • 尾部节点的结构信息缺失影响节点分类和链路预测等任务

分析问题

  • 如何发现尾节点缺失的邻域信息?
    • 尾部GNN使用可转移邻域转换的新概念来模拟目标节点与其邻居之间的变量联系。这允许它预测尾节点缺失的邻域信息,并补充它们的邻域聚合。
  • 如何在保持节点间通用性的同时,对每个尾节点的缺失信息进行局部定位?
    • 使用一种可转移的邻域转换形式,可以进一步本地化以适应每个节点的本地上下文。这使得Tail-GNN在保持节点间通用性的同时,仍然能够适应局部环境,并为缺失的邻域信息提供准确的预测。

方法

Neighborhood translation
  • contrastive strategy
  • localizing strategy
neighborhood aggregation
  • for head nodes: directly aggregate over the observed neighborhood
  • for tail nodes: h v l + 1 = M ( h v l , { m v l } ∪ h i l : i ∈ N v ; θ l + 1 ) h_v^{l+1}=\mathcal M(h_v^l,\{m_v^l\}\cup {h_i^l : i\in \mathcal{N_v};\theta^{l+1}} ) hvl+1=M(hvl,{mvl}hil:iNv;θl+1)
Overall loss
  • task loss
  • loss for missing information constraint
  • loss for adversarial constraint

O v e r a l l l o s s : M i n Θ ( M a x θ d ( L t + μ L m − η L d ) ) Overall\quad loss:Min_{\Theta}(Max_{\theta_d}(\mathcal L_t +\mu\mathcal L_m -\eta\mathcal L_d))\\ Overallloss:MinΘ(Maxθd(Lt+μLmηLd))

一些问题

  • 消融实验好像没有讨论到超参数对Tail-GNN的影响,在源码里可以继续通过设置一下超参数观察结果去分析。
  • 随机缺失信息应该会导致每一次的准确率不太一样?通过固定随机种子可以做到在相同环境下填充一样的缺失信息,多次运行取平均值和标准差可近似代表准确率。

Cold Brew

论文:Cold Brew:Distilling Graph Node Representations with Incomplete or Missing Neighborhoods

来源:2022 ICLR

摘要

  • 提出Cold Brew方法解决SCS(孤立点Strict Cold Start)节点的噪声邻居问题
  • 提出FCR(特征贡献比 Feature Contribution Ratio)度量GNN中节点特征对预测结果的贡献程度
  • 使用Teacher-Student Distilling提高SCS的泛化能力
  • 在GNN层添加独立的结构嵌入来缓解节点过平滑问题
  • 再公开数据集专有电子商务数据集上表现优异

问题分析/方法

  • 跟前几篇文章类似,度数的幂律分布、传统GNN只能学习已知节点的嵌入表示等通病

    • 经过之前度过的文章,有很多通解,半监督/自监督/元学习之类的,而本文的Cold Brew

      用了Teacher-Student模型,所以大概是用类似半监督学习的思想来解决的。

  • 如何有效地提炼Teacher模型的信息,以便进行SCS泛化

    • SE(Structural Embedding,结构嵌入):在Teacher GNN训练时额外增加一个结构来学习结构信息,可以通过梯度反向传播。因每个阶段嵌入不同而且都参与了特征转换,缓解过度平滑的问题(Oversmoothing)。
  • 如何让Student模型利用这些信息

    • 学习从节点特征到该结构的映射,而不需要知道教师模型所使用的图结构(解决了MLP无法吸收结构信息的弊端),对于SCS来说可以找到一组虚拟邻居。
  • 传统方法SCS只能用MLP映射到标签上缺忽略图的结构信息

    • 教师模型可以学习到图结构信息,并嵌入到低维空间,而学生模型是MLP模型,但可以从教师模型中蒸馏出图结构信息。
  • 使用FCR作为度量指标来衡量节点学习的难度来优化模型架构设计

    • 因为我们的标签信息来自于节点本身特征和邻接结构,然后文章说前者用MLP映射,后者用LP(Label Propagation)来映射(嵌入了邻居信息)。FCR是按照他们有关两者信息的比值的公式来定义的(5a/5b)。

一些思考

  • Cold Brew只对SCS Work吗?对Low-Degree-Node同样很有效,补充与TailGNN的比较:https://openreview.net/forum?id=1ugNpm7W6E
  • FCR是根据直觉定义的,考虑了节点特征和图结构两种因素,在某种程度上也表示了图节点/特征的重要性。不过感觉计算方式有改进空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lora,固定模特+固定衣服,怎么实现?

在电商行业,经常会有一个需求,就是把固定的衣服让模型穿上,然后拍很多的图片,放在商品主图、详情页、买家秀...... 人工智能发展到现在,最近aigc也挺热门的,有没有办法用“人工智能”算法就实现这个功能&a…

逆向汇编反汇编——函数分析

add esp,8就是把esp调整到函数调用之前的状态,用以平衡堆栈 默认采用的是cdcall:外平栈 stdcall:内平栈 什么是堆栈平衡? 》原来的堆栈是什么样的,函数调用之后堆栈还是什么样的(即,esp和ebp的值保持不变)&#xf…

掌握Scala数据结构(2)MAP、TUPLE、SET

一、映射 (Map) (一)不可变映射 1、创建不可变映射 创建不可变映射mp,用键->值的形式 创建不可变映射mp,用(键, 值)的形式 注意:Map是特质(Scala里的trait,相当于Java里的interface&#…

git选择指定分支中的指定目录进行合并

指定路径合并 先进入branch A : git checkout branchA 将dir2中的变更转移至branchA: git checkout branchB dir2 所有变更将出现在branchA中的dir2中,检查后提交即可。 git commit -m "sync branchB dir2 to branchA" 也可以…

读财报丨第二增长曲线渐显,但涂鸦智能的未来还看PaaS业务?

2022年以来,全球物联网行业持续低迷,赛道内不少玩家出现业绩下滑,而且陆续传出巨头企业关停相关业务板块的消息。这背后是消费电子行业库存积压,客户需求难以释放等宏观因素,导致IoT领域面临一定的经营困境。 近日&am…

STM32——07-STM32定时器Timer

定时器介绍 软件定时 缺点:不精确、占用 CPU 资源 void Delay500ms () //11.0592MHz { unsigned char i , j , k ; _nop_ (); i 4 ; j 129 ; k 119 ; do { do { while ( -- k ); } while ( -- j ); } while ( -- i ); } 定时器工…

108-Spring的底层原理(下篇)

这里续写上一章博客(107章博客): Spring 声明式事务的支持: 编程式事务:在业务代码中添加事务控制代码,这样的事务控制机制就叫做编程式事务 声明式事务:通过xml或者注解配置的方式达到事务…

【Linux】进程间通信(管道)

文章目录 进程通信的目的进程间通信发展进程间通信分类管道System V IPCPOSIX IPC 管道什么是管道管道的读写规则管道的特点:匿名管道处理退出问题命名管道创建一个命名管道匿名管道与命名管道的区别命名管道的打开规则 进程通信的目的 数据传输:一个进程…

应用层协议 —— websocket

websocket介绍 websocket是从HTML5开始支持的一种网页端和服务端保持长连接的消息推送机制。 传统的web程序都是属于“一问一答”的形式,即客户端给服务器发送了一个HTTP请求,服务器给客户端返回一个HTTP响应。这种情况下服务器属于被动的一方&#xff…

前端食堂技术周刊第 86 期:Remix 拥抱 RSC、2023 React 生态系统、从 0 实现 RSC、字节跳动 Mobile DevOps 工程实践

美味值:🌟🌟🌟🌟🌟 口味:椰子水 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 本期摘要 Remix 拥抱 RSCWebContainers 原生支持 npm、yarn 和 pnpm2023 React 生态系…

MySQL InnoDB集群部署及管理全教程

MySQL InnoDB 集群提供完整的高可用性 MySQL 的解决方案。通过使用MySQL Shell附带的AdminAPI,您可以轻松 配置和管理至少三个MySQL服务器的组 实例以充当 InnoDB 集群。 InnoDB 集群中的每个 MySQL 服务器实例都运行 MySQL 组复制,提供复制机制 InnoDB…

LoadRunner 2023 下载和安装

下载 LoadRunner目前最新的版本是2023版,需要到Micro Focus公司的官网注册账号然后申请下载,比较麻烦,这里我把大家常用的社区版本,搬运到阿里云盘上,供下载: https://www.aliyundrive.com/s/WtHSzD4MrXw …

面试了十几家软件测试公司谈谈我最近面试的总结

由于互联网裁员,最近在 bosss 上投了些简历,测试开发岗,看看目前市场情况。 虽然都在说大环境不好,失业的人很多,我最近约面试的还是比较多的,说说最近的体会吧,希望能给大家提供价值。 1、20K…

教你制作一个简单的进销存管理软件,值得收藏!

首先要制作进销存软件,要具体了解进销存到底是什么含义,这三个字分别代表什么流程,在整个进销存管理中的组成。再根据不同的流程制作进销存软件相对应的部分—— 01进销存的定义 “进”——采购 采购是进销存管理的重要组成部分&#xff0…

微信开放平台第三方开发,注册试用小程序,一整套流程

大家好,我是小悟 对服务商来说,试用小程序的好处不言而喻,主打一个先创建后认证的流程。只需要提供小程序名称和openid便可快速注册一个试用小程序,在认证之前,有效期14天,大致流程如下。 注册试用小程序 …

HCIA-RS实验-配置DHCP

什么是DHCP DHCP是动态主机配置协议(Dynamic Host Configuration Protocol)的缩写,它是一种网络协议,用于自动分配IP地址、子网掩码、网关以及DNS服务器等网络参数给计算机,从而简化了网络管理和配置。 DHCP服务器的…

robotframework+python接口自动化的点滴记录

在robotframeworkpython框架上写了两三天的接口自动化,做了一些笔记。 1.在断言的时候经常由于数据类型导致较验不通过,值得注意的是,在定义常量或者变量的时候,使用${}代表int类型,例如${2}就代表数字2,另…

Qt学习09:其他基本小控件

文章首发于我的个人博客:欢迎大佬们来逛逛 文章目录 QSpinBoxQDateTimeEditQComboBoxQSliderQRubberBand QSpinBox 微调框,可以通过点击增加减小或者输入来调整数据。 继承自:QAbstractSpinBox 同时这个类还具有Double类型的版本。 常用操…

搭建Scala开发环境

一、Windows上安装Scala 1、到Scala官网下载Scala Scala2.13.10下载网址:https://www.scala-lang.org/download/2.13.10.html 单击【scala-2.13.10.msi】超链接,将scala安装程序下载到本地 2、安装Scala 双击安装程序图标,进入安装向导&…

笔试强训错题总结(二)

笔试强训错题总结(二) 选择题 下列哪一个是析构函数的特征() A. 析构函数定义只能在类体内 B. 一个类中只能定义一个析构函数 C. 析构函数名与类名不同 D. 析构函数可以有一个或多个参数 析构函数可以在类中声明&#xff0c…