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

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

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

  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 ,从而提高计算效率。

相关文章:

  • 获取 ubuntu 系统相关信息
  • C++效率掌握之STL库:string函数全解
  • 由 Mybatis 源码畅谈软件设计(三):简单查询 SQL 执行流程
  • ESP32移植Openharmony外设篇(9)NB-IOT
  • AI岗位面试指南:高频文档问题解析与应答策略
  • 【Java项目】基于Spring Boot的校园博客系统
  • 秒杀系统的常用架构是什么?怎么设计?
  • 理解 Rust 中的共享状态并发
  • 简明systemd服务管理指南:从入门到实战
  • 腾讯云扩容记录
  • 【每日八股】MySQL篇(五):锁
  • vue写一个登录页面
  • [已解决] ModuleNotFoundError: No module named ‘langgraph.checkpoint.sqlite‘
  • 让Word插上AI的翅膀:如何把DeepSeek装进Word
  • 【Groovy】变量和基本数据类型
  • 奖励模型 Reward Models介绍
  • PLC(电力载波通信)网络机制介绍
  • 浅谈人工智能与深度学习的应用案例研究
  • Element Plus中el-tree点击的节点字体变色加粗
  • SLAM算法工程师的技术图谱和学习路径
  • 电商网站如何做优化/网站自助搭建
  • 合肥网站设计goz/百度产品
  • 一分钟建设网站/seo最新优化技术
  • 吉林省吉林市地图/seo云优化方法
  • 国内医疗美容网站建设/手机上制作网页
  • 推广自己的店铺推广语/搜索引擎优化的内容包括