【论文阅读】TransGNN

server/2024/12/22 1:06:32/

标题

一、摘要

本文主要是在推荐系统中对GNN的改进。在协同过滤中,主要是对用户-项目交互图进行建模。但是基于GNN的方法遇到了有限的接受域和嘈杂的“兴趣无关”连接的挑战。相比之下,基于Transformer的方法擅长于自适应地和全局地聚合信息但是在大规模交互图中的应用由于捕获复杂的纠缠结构信息的固有复杂性和挑战而受到阻碍。在本文中,我们提出了一种新的TransGNN模型,它交替地集成了Transformer层和GNN层,以相互增强它们的能力:TransGNN利用Transformer层来拓宽接受域,并从边缘分离出信息聚合,从而聚合来自更相关节点的信息,从而增强GNN的消息传递。此外,为了有效地捕获图结构信息,并集成到GNN层中,将结构知识编码到节点属性中,从而提高了变压器在图上的性能。通过提出对Transformer最相关节点的采样,以及两种有效的样本更新策略来降低复杂性,也减轻了效率的考虑。

二、现有问题:

1、消息传递机制依赖于边来融合图的结构和节点属性,导致强偏差和潜在的噪声。
2、由于对流行项目的过度推荐,用户可能会与他们不感兴趣的产品进行交互,从而导致在用户-项目交互图中形成“与兴趣无关的连接”
3、嵌入沿着边缘的传播可能会加剧噪声效应,潜在地扭曲了基于gnn的模型中潜在用户兴趣的编码。
4、GNN的最佳层数是3层,对于长期序列消息捕获效果不好
由于自注意机制,每个项目都可以从用户-项目交互序列中聚合所有项目的信息。因此,Transformer可以捕获序列数据中的长期依赖关系,并取代了卷积和递归神经网络。但是它们有效利用图结构信息的能力受到了限制,因为它的聚合过程不依赖于边缘,这导致了对关键的历史相互作用的低估。

三、模型结构

三个重要的组成部分:
(1)注意采样模块:通过考虑注意采样模块中的语义相似度和图结构信息,对每个中心节点最相关的节点进行采样
(2)位置编码模块:计算位置编码,以帮助Transformer获取图的拓扑信息
(3) TransGNN模块:(i)Transformer层(扩展接受域),(ii)GNN层(有助于上一层感知图的结构信息),(iii)样本更新子模块(更新了注意样本)

3.1 注意采样模块

用于降级复杂度,从中选取最相关的节点作为注意样本

3.2 位置编码模块

引入了三种针对推荐场景的不同位置编码:
(i)基于最短路径跳的位置编码。
(ii)基于学位的位置编码。
(iii)基于page排名的位置编码。
前两种编码表示用户和项目之间的接近性,强调用户交互的多样性和频率或项目的流行程度。同时,最后一个编码表示由图的拓扑结构所决定的显著性。

3.2.1 最短路径跳

对于每个用户,到不同项目的距离(反之亦然)可能有不同的含义。将最短路径跳矩阵表示为P,对于每个节点𝑣𝑖∈V及其注意样本节点𝑣𝑗∈Smp(𝑣𝑖),最短路径跳为𝑃(𝑖,𝑗),计算每个注意样本节点𝑣𝑗的基于最短路径跳的位置编码(SPE)为:
公式1

3.2.2 基于学位的位置编码

用户的交互频率,或一个项目的流行程度,在推荐中起着关键的作用。
一个项目的受欢迎程度或用户的不同品味可以利用他们在图中的节点度。因此,使用度deg𝑖来计算位置编码。
公式2

3.2.3 基于page排名的位置编码

某些用户或项目由于其在交互图中的位置而产生更大的影响,因此基于每个节点的页面秩值来计算位置编码。对于节点𝑣𝑖,我们将其页面排名值表示为Pr(𝑣𝑖),并计算基于页面排名的位置编码(PRE)为:
公式3
将编码与原始节点属性进行聚合,对于中心节点𝑣𝑖及其注意样本Smp(𝑣𝑖),下列公式用于对位置编码进行聚合:
公式3
其中,x为节点原始属性,AGG为聚合函数,COMB是组合函数

3.3 TransGNN模块

  1. Transformer层(扩展接受域)
  2. GNN层(有助于上一层感知图的结构信息)
  3. 样本更新子模块(更新了注意样本)

3.3.1 Transformer层

为了降低复杂度并过滤掉不相关的信息,只考虑每个中心节点的最相关的样本。
以中心节点𝑣𝑖及其注意样本Smp(𝑣𝑖)为例,作为一个例子来说明Transformer层,对于其他节点,这个过程是相同的
输入表示为H,中心节点𝑣𝑖的表示为ℎ𝑖。注意样本Smp(𝑣𝑖)的表示为矩阵H𝑖Smp。使用三个矩阵W𝑞、W𝑘、W𝑣分别将相应的表示投影到Q、K和V中,并根据注意力分布将信息汇总为
公式5
其中Q是查询的表示,K,V是键和值的表示。这个过程可以扩展到多头的注意
公式6
其中,m为头数,Concat是串联函数

3.3.2 GNN层

给定节点𝑣𝑖,GNN层的消息传递过程可以描述为:
公式7
其中,N(𝑣𝑖)为𝑣𝑖的邻居节点集。ℎ𝑖,ℎ𝑘分别是𝑣𝑖,𝑣𝑘的表示。Message(·)和Combine(·)是GNN定义的消息传递函数和聚合函数

3.3.3 样本更新

有两种方法。

论文后续分析了复杂度以及对数据集和实验,但是对我的实验没有很大参考价值。


http://www.ppmy.cn/server/1701.html

相关文章

RUST语言之引用与借用

1.通过参数形式使用引用 调用函数并传入引用 //String::from会分配内存来存储RUST语言参考与借用//然后将s指针指向这块内存地址let mut sString::from("RUST语言参考与借用");println!("{}",s);//调用自定义函数并传入引用let x reftest(&mut s);//…

pnpm 报错: ERR_PNPM_META_FETCH_FAIL

今天突然遇到一个报错,pnpm 报错: ERR_PNPM_META_FETCH_FAIL  GET https://registry.npm.taobao.org/vue%2Fcli-service: request to https://registry.npm.taobao.org/vue%2Fcli-service failed, reason: certificate has expired问题原因:…

爬虫 | 垃圾处理设施数据的获取与保存

Hi,大家好,我是半亩花海。本项目通过发送网络请求(requests),从指定的 URL 获取垃圾处理设施的相关数据,并将数据保存到 CSV 文件中,以供后续分析和利用。 目录 一、项目结构 二、详细说明 三…

【Linux】进程的优先级环境变量

个人主页 : zxctscl 如有转载请先通知 文章目录 1. 前言2. 进程的优先级2.1 什么是优先级2.2 为什么要有优先级2.3 优先级的查看方式2.4 对优先级调整 3. 命令行参数4. 环境变量4.1 环境变量与配置文件4.1.1 环境变量初步介绍4.1.2 配置文件 4.2 更多环境变量4.3 整…

C++力扣Leetcode算法4--排序算法

目录 快速排序--递归 归并排序--递归 插入排序 冒泡排序 选择排序 215 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 347. 前 K 个高频元素 快速排序--递归 void quick_sort(vector<int> &nums, int l, int r) {if (l 1 > r) …

代码随想录图论

1. 所有可能的路径 class Solution:def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:def dfs(graph, result, path, root): #result 返回结果, path记录路径, root记录遍历到了第几个节点if root len(graph) - 1: #如果遍历到最后…

.NET Framework安装失败的原因及解决方法

.NET Framework安装失败的原因及解决方法 大家好我是艾西&#xff0c;一个做服务器租用的游戏爱好者兼网络架构系统环境问题网络工具人。在我们平时使用PC安装某些程序会出现.NET Framework缺失的提示&#xff0c;那么也会有很多的小伙伴搞不懂什么原因导致的&#xff0c;这个问…

【YUNBEE云贝-进阶课】MySQL8.0性能优化实战培训

众多已经学习过MySQL 8.0 OCP认证专家的课程的同学们对 MySQL 8.0 的安装部署、体系结构、配置监控、用户管理、主从复制、系统运维、MGR等基础操作和动手实验有了一定的学习基础.很多学员反馈希望更进一步提升技术能力、解决工作中碰到的性能问题。 针对MySQL8.0的数据库性能优…