当前位置: 首页 > news >正文

论文《Tree Decomposed Graph Neural Network》笔记

【TDGNN】本文提出了一种树分解方法来解决不同层邻域之间的特征平滑问题,增加了网络层配置的灵活性。通过图扩散过程表征了多跳依赖性(multi-hop dependency),构建了TDGNN模型,该模型可以灵活地结合大感受场的信息,并利用多跳依赖性进行信息聚合。

本文发表在2021年CIKM会议上,作者学校:Vanderbilt University,引用量:59。

CIKM会议简介:全称Conference on Information and Knowledge Management(信息与知识管理国际会议),信息检索和数据挖掘的顶级国际学术会议之一,由美国计算机协会(ACM)主办,CCF B。

查询会议:

  • 会伴:https://www.myhuiban.com/

  • CCF deadline:https://ccfddl.github.io/

原文和开源代码链接:

  • paper原文:https://arxiv.org/abs/2108.11022
  • 开源代码:https://github.com/YuWVandy/TDGNN

0、核心内容

问题背景:传统的GNNs通过迭代地进行特征传播和转换来学习更好的表示,但这种迭代传播限制了高层邻域信息与低层邻域信息的融合,导致不同层之间特征平滑,尤其在异配性网络上影响性能。

主要贡献:

  • 提出了一种树分解方法来解决不同层邻域之间的特征平滑问题,增加了网络层配置的灵活性。
  • 通过图扩散过程表征了多跳依赖性(multi-hop dependency),构建了TDGNN模型,该模型可以灵活地结合大感受场的信息,并利用多跳依赖性进行信息聚合。
  • 在同配性和异配性网络的多种节点分类设置下,通过广泛的实验验证了TDGNN的优越性能。
  • 进行了参数分析,强调了TDGNN防止过平滑和结合浅层特征与深层多跳依赖性的能力。

方法介绍:

  • 树分解(Tree Decomposition):通过分解计算图来避免不同层邻域之间的特征平滑。
  • 多跳依赖性(Multi-hop Dependency):利用图扩散过程来模拟节点间的多跳依赖性。
  • TDGNN框架:结合树分解和图扩散,提出了TDGNN模型,该模型有两种变体:TDGNN-s(直接将各层表示相加)和TDGNN-w(为每层分配可学习的权重并自适应地组合节点表示)。

实验:在多个真实世界的数据集上进行了广泛的节点分类实验,包括半监督和全监督设置,证明了TDGNN模型相比现有方法的优越性。

参数分析:通过改变使用的邻域层数和多跳依赖性的长度,分析了这些参数对TDGNN性能的影响。

相关工作:讨论了与TDGNN相关的其他工作,包括解决GNNs中过平滑问题的方法和应用于异配图的方法。

结论与未来工作:论文总结了TDGNN的主要贡献,并提出了未来的研究方向,包括开发节点自适应层聚合机制和利用自监督学习来预训练模型。

1、先验知识
① 什么是多跳依赖性(multi-hop dependency)?

多跳依赖性是图神经网络中的一个概念,指的是网络中两个节点通过至少一条长度为特定跳数的简单路径相互连接的关系。在图数据结构中,节点间的直接连接通常表示为一跳依赖(即两个节点通过一条边直接相连)。而多跳依赖则涉及通过多个节点和边间接连接的节点对。

  • 一跳依赖:如果两个节点通过一条边直接相连,它们之间存在一跳依赖。
  • **多跳依赖:如果两个节点通过至少一条长度大于1的路径相连,它们之间存在多跳依赖。**例如,节点A通过至少一条长度为2的路径(即经过至少一个中间节点)到达节点B,那么它们之间存在二跳依赖。

在本文提到的TDGNN模型中,多跳依赖性是通过图扩散过程来建模的。这个过程考虑了从某个节点到其他所有节点的路径,不仅仅是直接相连的邻居节点,还包括通过更长路径可达的节点。这样做的目的是捕捉节点间的间接关系,这些关系对于理解图中的结构和进行有效的节点表示学习是非常重要的。

在TDGNN中,多跳依赖性通过以下方式形式化:

  • 使用图扩散矩阵 A k A_k Ak来表示第 k k k跳的依赖性,其中矩阵的每个元素 A k i j A_{k_{ij}} Akij衡量了长度为 k k k的路径在从节点 i i i到节点 j j j传播特征时的强度。
  • 通过将所有 A k A_k Ak矩阵相加,可以计算出从节点 i i i到节点 j j j通过不同长度路径的总依赖性。

通过这种方式,TDGNN能够更全面地利用图中的局部和全局信息,从而提高节点分类等任务的性能。

② 什么是图扩散(Graph Diffusion)?

**图扩散是一种在图结构数据上进行信息传播的机制,它模拟了在图中从一个节点到另一个节点的信息流动过程。**这种机制在图神经网络中非常重要,因为它允许节点通过边来接收来自其邻居节点的信息,并且可以扩展到更远的邻居。

在图扩散的过程中,每个节点会收集来自其邻居的信息,并将这些信息与其自身的信息结合起来更新自己的状态。这个过程可以迭代地进行,每经过一轮迭代,节点的状态就会更新一次,从而逐渐融合来自更远邻居的信息。图扩散通常包括以下几个关键步骤:

  • 初始化:每个节点通常以其特征向量开始,这些特征向量可以是节点的初始属性或者从数据集中获得。
  • 信息传播:在每一轮扩散中,节点收集来自其直接邻居的信息。这可以通过多种方式实现,例如通过加权求和、平均或者应用特定的聚合函数。
  • 更新规则:节点根据收集到的信息更新自己的状态。这通常涉及到一个可学习的转换函数,如神经网络层。
  • 迭代过程:这个过程可以迭代进行,直到满足一定的停止条件,例如达到预定的迭代次数或状态更新不再显著。
  • 多跳依赖性建模:图扩散可以捕捉多跳依赖性,即节点间的间接连接。通过考虑更长的路径,图扩散可以模拟节点间的间接影响。

在TDGNN中,图扩散用于计算多跳依赖性,这是通过构建一个图扩散矩阵来实现的,该矩阵的每个元素表示在特定跳数下从一个节点到另一个节点的路径的强度。通过这种方式,TDGNN能够模拟和利用节点间的间接关系,从而提高学习到的节点表示的质量。

图扩散的过程可以形式化为一个矩阵乘法过程,其中邻接矩阵 A A A表示图中的边,节点特征矩阵 X X X表示节点的特征,通过连续乘以 A A A的幂来模拟不同跳数的信息传播。这种方法允许GNNs捕捉到图中的长距离依赖性,这对于理解和预测图中的复杂模式是非常有用的。

2、TDGNN框架&原理

整个框架如图3所示,它有三个主要组成部分:树分解来处理不同邻域层之间的特征平滑,图扩散来建模多跳依赖关系,以及聚合来组合不同层的表示。

在这里插入图片描述

① Tree Decomposition

在图1中,我们展示了Cora和Texas数据集中不同邻域层的同质性水平。

在这里插入图片描述

图1观察:在Cora数据集中,较低层的同配性较高,这意味着在这些层中传播节点特征可以融合同一类别的节点嵌入,从而使得不同类别的节点嵌入更容易区分。然而,随着层数的增加,同配性水平逐渐降低,这可能导致在更高层的邻域中传播特征时发生特征平滑,影响模型性能。相反,在Texas数据集中,由于其强烈的异配性,低层邻域中的节点特征传播可能会导致不同类别的节点嵌入混合,使得节点难以区分,从而导致学习到的节点表示性能较差。

这些观察结果为TDGNN的设计提供了动机,即通过树分解方法解耦不同层的邻域信息,并通过图扩散过程来模拟多跳依赖性,以提高GNNs在异配网络和同配网络上的性能。(老生常谈了……)

图2:展示了树分解的可视化例子,其中中心节点的邻域被分解成不同层级的子图,并直接与中心节点相连。这样,高层邻域的特征可以直接传播到中心节点,而不受底层邻域的干扰。(想法不错,我就知道CIKM不会让我失望。)

在这里插入图片描述

② Multi-hop dependency

这一部分讨论了图神经网络中的多跳依赖问题,并提出了一种通过图扩散过程来建模多跳依赖性的方法。

多跳依赖性的定义:首先定义了多跳依赖性,如果网络中的两个节点通过至少一条长度为某个跳数的简单路径相连,则它们之间存在多跳依赖性。例如,两个节点之间存在2跳依赖性,如果它们通过至少一条长度为2的路径相连。

特征平滑问题:本文指出,尽管树分解方法可以避免不同层之间特征平滑的问题,但同时也可能丢失了原始迭代传播中捕获的多跳依赖性,这可能导致过平滑。例如在图2中,节点 v 2 v_2 v2的特征可以沿着 v 2 − > v 1 v_2->v_1 v2>v1传播,也可以沿着 v 2 − > v 5 − > v 6 − > v 3 − > v 1 v_2->v_5->v_6->v_3->v_1 v2>v5>v6>v3>v1传播到 v 1 v_1 v1。而在树分解后,节点 v 2 v_2 v2的特征沿着 v 2 − > v 1 v_2->v_1 v2>v1传播成为了唯一方法。

图扩散模型:为了解决这个问题,作者提出了使用图扩散来模拟多跳依赖性。图扩散是一种考虑节点间不同长度路径影响的过程,可以捕捉节点间的间接关系。

图扩散矩阵:论文引入了图扩散矩阵 A k A_k Ak来表示第 k k k跳的依赖性,其中 A k A_k Ak的每个元素 A k i j A_{k_{ij}} Akij衡量了长度为 k k k的路径在从节点 i i i到节点 j j j传播特征时的强度。

多跳依赖性聚合:通过将所有的 A k A_k Ak矩阵相加,可以计算出从节点 i i i到节点 j j j通过不同长度路径的总依赖性,这可以作为分解后子图中传播特征的边权重。

灵活性和适应性:通过图扩散建模多跳依赖性,TDGNN模型能够灵活地选择有效的感受野(receptive field),并根据特定网络生成自适应的节点表示。

与现有工作的关联:论文还讨论了多跳依赖性与现有工作的关系,特别是与注意力机制和图卷积网络中的混合传播规则的关联。

这一部分强调了在GNNs中考虑多跳依赖性的重要性,并提出了一种新的图扩散方法来建模这种依赖性,从而提高了模型对节点间复杂关系的捕捉能力,并有助于解决过平滑问题。

③ Tree Decomposed Graph Neural Network(TDGNN)

结合树分解和图扩散的概念,作者提出了TDGNN模型。这个模型旨在解决GNNs中的两个主要挑战:不同层邻域之间的特征平滑问题和多跳依赖的缺失。

TDGNN的组件:TDGNN主要由三个主要部分组成——

  • 树分解:用于处理不同邻域层之间的特征平滑问题。
  • 图扩散:用于模拟多跳依赖性。
  • 聚合机制:用于组合不同层的节点表示。

数学公式:

在这里插入图片描述

其中,初始节点表示 H 0 H^0 H0的计算,通过在原始特征矩阵 X X X上应用多层感知机(MLP);通过树分解计算每层的邻接矩阵 T k T^k Tk;利用图扩散计算多跳依赖性 E k , K E^{k,K} Ek,K;传播初始节点表示 H 0 H^0 H0以获得每层的表示 H k H^k Hk

聚合机制:

  • TDGNN-s:直接将所有层的表示相加。
  • TDGNN-w:为每层分配可学习的权重,并自适应地组合每层的节点表示。

最终表示:通过聚合机制得到的最终节点表示 Z Z Z,用于计算所有标记节点的交叉熵损失。

3、实验
① 数据集

在这里插入图片描述

② 同配图上半监督节点分类任务的分类精度

在这里插入图片描述

③ 8个数据集上全监督节点分类任务的分类精度

在这里插入图片描述

4、启发&心得
① 异配图神经网络的挑战

异配图神经网络的挑战在于:过平滑问题和多跳依赖问题之间的平衡。

  • 过平滑问题:GCN层数过多,学习到了更远距离的节点信息,但是会导致过平滑问题,使所有节点聚合后的特征相似,以至于无法区分。
  • 多跳依赖问题:GCN层数过少,只适合同配图,丢失了远距离的节点信息,在异配图上性能较差。

现在大部分工作其实在解决的就是这两个挑战,提出平衡这两个问题的解决办法。

② 如何理解树分解和多跳依赖性?

简单地理解,树分解就是将中心节点的每一层邻域解耦,而多跳依赖则是对每一层邻域赋予权重,防止对每一层邻域的重视程度一样导致的过平滑问题。

在考虑异配图的对抗攻击方法的时候,我们也想过这样一个思路,先找出中心节点的每一层邻域中那一层邻域对中心节点的预测结果影响最大,然后再找到这一层中对中心节点的预测结果影响最大的前几个节点。

③ 本文值得参考的地方

论文思路很清晰,写的不错,包装的很好,哈哈哈。

本文从消息传递的角度来解耦每一层邻域的信息,角度很新。

5、参考资料
  • kimi:https://kimi.moonshot.cn/

相关文章:

论文《Tree Decomposed Graph Neural Network》笔记

【TDGNN】本文提出了一种树分解方法来解决不同层邻域之间的特征平滑问题,增加了网络层配置的灵活性。通过图扩散过程表征了多跳依赖性(multi-hop dependency),构建了TDGNN模型,该模型可以灵活地结合大感受场的信息&…...

控制下属很简单,用好这3大管人绝招,再跳的刺头也不敢造次

控制下属很简单,用好这3大管人绝招,再跳的刺头也不敢造次 第一招:给压力 很多团队中的员工都是自己不带脑子工作,遇事就喜欢请示领导,让领导拿方案、拿决策。 还有一些人,推一下,他才动一下&a…...

2.APP测试-安卓adb抓取日志

1.打开手机的开发者模式,打开USB调试 (1)小米手机打开开发者模式: 【设置】-【我的设备】-【全部参数信息】-快速多次点击【OS版本】-进入开发者模式 (2)连接手机和电脑,手机打开USB调试 【设置…...

高考填报志愿选专业,要善于发掘自身优势

每年的高考季,如何填报志愿又再成为困扰家长以及学生的难题,可能在面对大量的专业时,无论是考生还是家长都不知道应该如何选择,好的专业孩子不一定有优势,感兴趣的冷门专业又担心日后找工作难。 实际上,专业…...

如何在 Ubuntu 14.04 上使用 HAProxy 实现 SSL 终止

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 HAProxy,全称高可用代理,是一款流行的开源软件 TCP/HTTP 负载均衡器和代理解决方案,可在 Linu…...

dockercompose

安装dockerconpose #上传docker-compose安装包 chmod x docker-compose mv docker-compose /usr/bin/ [rootlocalhost ~]# docker-compose --version docker-compose version 1.24.1, build 4667896b文件格式以及编写注意事项 YAML 是一种标记语言,它可以很直观的…...

「51媒体」活动会议,展览展会,直播曝光的一种方法

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 我们在做活动会议,或者参加展览展会,需要进行直播的时候,可以通过一键同步多个媒体平台的方法,来扩大曝光,比如一场直播我们可…...

Go WebSocket入门+千万级别弹幕系统架构设计

Go实现WebSocket(千万级别弹幕系统架构设计) 1 websocket简介(基于HTTP协议的长连接) 使用WebSocket可以轻松的维持服务器端长连接,其次WebSocket是架构在HTTP协议之上的,并且也可以使用HTTPS方式,因此WebSocket是可靠…...

uniapp使用伪元素实现气泡

uniapp使用伪元素实现气泡 背景实现思路代码实现尾巴 背景 气泡效果在开发中使用是非常常见的,使用场景有提示框,对话框等等,今天我们使用css来实现气泡效果。老规矩,先看下效果图: 实现思路 其实实现这个气泡框的…...

字节跳动:从梦想之芽到参天大树

字节跳动掌舵人:张一鸣 2012年:梦想的起点:在一个阳光明媚的早晨,北京的一座普通公寓里,一位名叫张一鸣的年轻人坐在电脑前,眼中闪烁着坚定的光芒。他的心中有一个梦想——通过技术改变世界,让…...

组合数学、圆排列、离散数学多重集合笔记

自用 如果能帮到您,那也值得高兴 知识点 离散数学经典题目 多重集合组合 补充容斥原理公式 隔板法题目 全排列题目:...

网络技术原理需要解决的5个问题

解决世界上任意两台设备时如何通讯的?? 第一个问题,pc1和pc3是怎么通讯的? 这俩属于同一个网段,那么同网段的是怎么通讯的? pc1和pc2属于不同的网段,第二个问题,不同网段的设备是…...

【数据结构】链表的大概认识及单链表的实现

目录 一、链表的概念及结构 二、链表的分类 三、单链表的实现 建立链表的节点: 尾插——尾删: 头插——头删: 查找: 指定位置之后删除——插入: 指定位置之前插入——删除指定位置: 销毁链表&am…...

国企:2024年6月中国移动相关招聘信息 二

在线营销服务中心-中国移动通信有限公司在线营销服务中心 硬件工程师 工作地点:河南省-郑州市 发布时间 :2024-06-18 截至时间: 2024-06-30 学历要求:本科及以上 招聘人数:1人 工作经验:3年 岗位描述 1.负责公司拾音器等音视频智能硬件产品全过程管理,包括但…...

Elasticsearch:智能 RAG,获取周围分块(二)

在之前的文章 “Elasticsearch:智能 RAG,获取周围分块(一) ” 里,它介绍了如何实现智能 RAG,获取周围分块。在那个文章里有一个 notebook。为了方便在本地部署的开发者能够顺利的运行那里的 notebook。在本…...

华为---RIP路由协议的汇总

8.3 RIP路由协议的汇总 8.3.1 原理概述 当网络中路由器的路由条目非常多时,可以通过路由汇总(又称路由汇聚或路由聚合)来减少路由条目数,加快路由收敛时间和增强网络稳定性。路由汇总的原理是,同一个自然网段内的不同子网的路由在向外(其他…...

Python基础——字符串常见用法:切片、去空格、替换、拼接

文章目录 专栏导读1、拼接字符串2、获取字符串长度3、字符串切片4、字符串替换:5、字符串分割6、字符串查找7、字符串大小写转换8、字符串去除空白9、字符串格式化:10、字符串编码与解码:11、字符串判断12、字符串填充与对齐总结 专栏导读 &a…...

LeetCode.51N皇后详解

问题描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案…...

计算机网络之奇偶校验码和CRC冗余校验码

今天我们来看看有关于计算机网络的知识——奇偶校验码和CRC冗余校验码,这两种检测编码的方式相信大家在计算机组成原理当中也有所耳闻,所以今天我就来跟大家分享有关他们的知识。 奇偶校验码 奇偶校验码是通过增加冗余位使得码字中1的个数恒为奇数或偶数…...

二叉树经典OJ练习

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 二叉树经典OJ练习 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 前置说…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...