迈向更好的动态图学习:新架构和统一库阅读笔记

news/2025/3/3 5:21:51/

动态图通过节点表示实体,通过带时间戳的链接表示实体之间的交互,被广泛用于建模现实世界中的各种场景,如社交网络、用户-项目交互系统、交通网络和物理系统。尽管动态图学习方法发展迅速,但现有方法仍面临两个主要限制:

  1. 缺乏节点关联和长期依赖建模:大多数现有方法独立计算节点的时间表示,未利用节点之间的关联,这些关联通常预示着未来的交互。此外,由于计算限制和梯度问题,这些方法难以建模长期时间依赖。

  2. 缺乏统一的动态图模型库:不同方法的训练流程和实现不一致,导致可重复性差,研究人员的学习成本高。

DyGFormer 是一种基于 Transformer 的动态图学习架构,主要由以下两个关键模块组成:

邻居共现编码方案(Neighbor Co-occurrence Encoding Scheme)

原理

邻居共现编码方案旨在显式地探索节点之间的关联。在动态图中,节点之间的交互通常具有很强的关联性,这些关联性可以提供重要的信息来预测未来的交互。该方案通过分析节点的历史交互序列,记录每个邻居节点在源节点和目标节点序列中的出现频率,从而捕捉节点之间的相关性。

具体实现
  1. 邻居共现矩阵的构建

    • 对于每次交互,模型会记录源节点和目标节点的邻居节点在历史序列中的出现次数。

    • 这些出现频率被编码为向量,作为节点之间关联的表示。

    • 通过这种方式,模型可以捕捉到节点之间的潜在关系,从而更好地理解动态图的结构。

  2. 编码过程

    • 假设节点 u 和节点 v 在时间 t 发生交互,模型会记录节点 u 的邻居节点在节点 v 的历史交互序列中的出现次数,以及节点 v 的邻居节点在节点 u 的历史交互序列中的出现次数。

    • 这些出现次数被编码为向量,作为节点 u 和节点 v 之间的共现特征。

例子

假设我们有一个简单的动态图,其中节点 A 和节点 B 在时间 t1​ 和 t2​ 发生交互,节点 B 和节点 C 在时间 t3​ 发生交互。我们可以构建邻居共现矩阵来记录这些交互:

  • 在时间 t1​,节点 A 和节点 B 交互,节点 A 的邻居节点是 B,节点 B 的邻居节点是 A。

  • 在时间 t2​,节点 A 和节点 B 再次交互,节点 A 的邻居节点仍然是 B,节点 B 的邻居节点仍然是 A。

  • 在时间 t3​,节点 B 和节点 C 交互,节点 B 的邻居节点是 C,节点 C 的邻居节点是 B。

通过记录这些交互,我们可以构建邻居共现矩阵,如下所示:

ABC
A020
B201
C010

在这个矩阵中,值表示节点之间的共现次数。例如,节点 A 和节点 B 的共现次数为 2,表示它们在历史交互中共同出现的次数为 2 次。

补丁技术(Patching Technique)

原理

Patching Technique旨在解决动态图中长期时间依赖的问题。在动态图中,节点的交互历史可能非常长,直接处理整个序列会导致计算复杂度高和梯度消失等问题。补丁技术通过将每个节点的序列划分为多个补丁,使模型能够从更长的历史中受益,同时保留局部时间邻近性,并降低计算复杂度。

具体实现
  1. 序列划分

    • 将每个节点的交互序列划分为固定大小的Patching 。

    • 每个Patching 包含一定数量的历史交互。

  2. 补丁输入

    • 这些Patching 被输入到 Transformer 模型中,模型可以并行处理这些Patching ,从而提高计算效率。

例子

假设我们有一个节点 A 的交互序列,长度为 10,我们将其划分为大小为 3 的Patching :

  • 序列:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  • 补丁:[[1, 4, 7], [2, 5, 8], [3, 6, 9], [10]]

通过这种方式,模型可以并行处理这些Patching ,从而提高计算效率。


http://www.ppmy.cn/news/1575930.html

相关文章

Spring Boot 3.X:Unable to connect to Redis错误记录

一.背景 最近在搭建一个新项目,本着有新用新的原则,项目选择到了jdk17SpringBoot3.4。但是在测试Redis连接的时候却遇到了以下问题: redis连不上了。于是我先去检查了配置文件的连接信息,发现没问题;再去检查配置类&a…

Spring Boot管理用户数据

目录 学习目标前言Thymeleaf 模板JSON 数据 步骤 1: 创建 Spring Boot 项目 使用 Spring Initializr 创建项目使用 IDE 创建项目 步骤 2: 添加依赖步骤 3: 创建 Controller步骤 4: 新建index页面步骤 5: 运行应用程序 表单提交 步骤 1: 添加 Thymeleaf 依赖 在 Maven 中添加依…

【R语言】Kmeans算法

使用R语言实现kmeans算法底层代码&#xff0c;并对HighDensity_Scatter_Data数据进行聚类分析&#xff08;不直接使用kmeans函数&#xff09; # 导包library(ggplot2)library(RColorBrewer) # 加载数据mydata <- read.table("D:/RWorkPlace/K-means聚类分析/K-means聚…

low rank decomposition如何用于矩阵的分解

1. 什么是矩阵分解和低秩分解 矩阵分解是将一个矩阵表示为若干结构更简单或具有特定性质的矩阵的组合或乘积的过程。低秩分解&#xff08;Low Rank Decomposition&#xff09;是其中一种方法&#xff0c;旨在将原矩阵近似为两个或多个秩较低的矩阵的乘积&#xff0c;从而降低复…

2024年第十五届蓝桥杯大赛软件赛省赛Python大学A组真题解析

文章目录 试题A: 拼正方形(本题总分:5 分)解析答案试题B: 召唤数学精灵(本题总分:5 分)解析答案试题C: 数字诗意解析答案试题A: 拼正方形(本题总分:5 分) 【问题描述】 小蓝正在玩拼图游戏,他有7385137888721 个2 2 的方块和10470245 个1 1 的方块,他需要从中挑出一些…

上位机知识篇---HTTPHTTPS等各种通信协议

文章目录 前言1. HTTP&#xff08;HyperText Transfer Protocol&#xff09;功能传输超文本无状态协议支持多种方法 特点明文传输基于TCP简单灵活 使用场景示例请求响应 2. HTTPS&#xff08;HTTP Secure&#xff09;功能加密传输身份验证特点基于SSL/TLS默认端口需要证书 使用…

用Deepseek直接在word中完成论文的润色(中-中,中-英, 英-中)

最近&#xff0c;各行各业仿佛掀起了一场“Deepseek接入大赛”——从大公司到小微企业&#xff0c;从手机助手到扫地机器人&#xff0c;似乎不接入Deepseek都不好意思说自己是“智能体”了。就连我家楼下的自动售货机都开始“思考”该给我推荐什么零食了&#xff08;虽然它最后…

【iptables 命令深度解析:Linux 防火墙的核心工具】

一、iptables 概述 iptables 是 Linux 系统中基于 Netfilter 框架实现的用户态防火墙工具,用于配置内核级数据包过滤规则。它通过定义表(Tables)、链(Chains)和规则(Rules)控制网络流量,实现防火墙、NAT、流量整形等功能,是网络安全管理的核心工具。 二、核心概念解析…