Neo-GNNs: Neighborhood Overlap-aware Graph Neural Networks for Link Prediction

news/2024/11/15 7:19:03/文章来源:https://www.cnblogs.com/MTandHJ/p/18378977

目录
  • 符号说明
  • Motivation
  • Neo-GNN
  • 代码

Neo-GNNs: Neighborhood overlap-aware graph neural networks for link prediction. NeurIPS, 2021.

一种计算上相对高效的, 同时利用结构信息和特征信息的链接预测模型.

符号说明

  • \(\mathcal{G} = (\mathcal{V}, \mathcal{E})\), graph;
  • \(\mathcal{V} = \{v_1, v_2, \ldots, v_N\}\), \(N\) nodes;
  • \(\mathcal{E} = \{e_{ij} | v_i, v_j \in \mathcal{V}\}\), edges;
  • \(A \in \mathbb{R}^{N \times N}\), adjacency matrix;
  • \(D \in \mathbb{R}^{N \times N}\), diagonal matrix \(D_{ii} = \sum_{j} A_{ij}\);
  • \(X \in \mathbb{R}^{N \times F}\), node features

Motivation

  • link prediction 有很多启发式的方法, 比如利用

    \[S_{CN}(u, v) = |\mathcal{N}(u) \cap \mathcal{N}(v) | = \sum_{k \in \mathcal{N}(u) \cap \mathcal{N}(v)} 1, \\ S_{RA}(u, v) = \sum_{k \in \mathcal{N}(u) \cap \mathcal{N}(v)} \frac{1}{d_k}, \\ S_{AA}(u, v) = \sum_{k \in \mathcal{N}(u) \cap \mathcal{N}(v)} \frac{1}{\log d_k}. \]

  • 作者的做法是将它一般化, 即

    \[S(u, v) = \sum_{k \in \mathcal{N}(u) \cap \mathcal{N}(v)} x_k. \]

Neo-GNN

  • \(x_k\) 是这般设计的:

    \[x_i^{struct} = \mathcal{F}_{\theta}(A_i) = f_{\theta_{node}} \bigg(\sum_{j \in \mathcal{N}_i} f_{\theta_{edge}} (A_{ij}) \bigg), \]

    通过可学习的参数从邻接矩阵 \(A\) 中获得有用的结构信息.

  • 有更一般的计算方式. 我们令

    \[X^{struct} = \text{diag}(x^{struct}) \in \mathbb{R}^{N \times N}, \]

    则当 \(f_{\theta_{edge}}(x) = x\)\(f_{\theta_{edge}}(x) = 1 / \sqrt{\log x}\) 的时候,

    \[S(u, v) = z_u^T z_v, \: Z = AX^{struct}. \]

  • 更为一般的, 为了利用更高阶的信息, 作者实际上采用如下的形式:

    \[Z = g_{\Phi} (\sum_{l=1}^L \beta^{l-1} A^l X^{struct}), \]

    其中 \(\beta\) 是用来控制高阶信息的一个超参数.

  • 除此之外, 通过一个普通的 GNN 得到传统的 (smoothed) 节点特征:

    \[H = \text{GNN}(X, \tilde{A}_{GNN}; W) \in \mathbb{R}^{N \times d'}. \]

  • 最后两个结点存在边的概率通过如下的方式得到:

    \[\hat{y}_{ij} = \alpha \cdot \sigma (z_i^T z_j) + (1 - \alpha) \cdot \sigma (s(h_i, h_j)), \]

    其中 \(\alpha\) 是可训练的参数.

  • 训练的时候, 两个分支也要单独参与训练:

    \[\mathcal{L} = \sum_{(i, j) \in D} (\lambda_1 BCE(\hat{y}_{ij}, y_{ij})) + \lambda_2 BCE(\sigma(z_i^T z_j), y_{ij}) + \lambda_3 BCE(\sigma(s(h_i, h_j)), y_{ij}). \]

代码

[official]

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Thanos HA

ThanosHA组件HA组件Sidercar Receiver其它组件Querier Store Compactor RulerSidecar & Receiver工作方式Sidecar 为实现高可用,Sidecar组件与Prometheus运行在一个Pod中,双副本的Prometheus独立运行采集数据(scrape metrics),默认情况部署在Kubernetesk的Prometheus使…

063、Vue3+TypeScript基础,作用域插槽的使用

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue// 引入emitter用于全局事件总线 // import emitter from @/utils/emitterconst app = createApp(App);// App.vue的根元素id为app app.mou…

使用AI识别语音和B站视频并通过GPT生成思维导图

AI脑图除了对文本、网页链接和文件生成思维导图外,现在也支持了对语音和B站视频的内容识别,并自动生成思维导图。AI脑图除了对文本、网页链接和文件生成思维导图外,现在也支持了对语音和B站视频的内容识别,并自动生成思维导图。 语音生成思维导图 直接发送语音:对AI脑图公…

C++函数调用栈从何而来

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生~个人主页:rainInSunny | 个人专栏:C++那些事儿、Qt那些事儿目录写在前面原理综述x86架构函数调用栈分析如何获取rbp寄存器的值总结 写在前面程序员对函数调用栈是再熟悉不过了,无论是使用IDE调试还是GDB等工具进行调试,都离不开函数…

[COCI2017-2018#5] Planinarenje

这道题目是二分图博弈的板子 介绍一下二分图博弈:设两部的节点分别为\(x_1,x_2,...,x_n\)和\(y_1,y_2,...,y_m\),先手选择了\(x_i\)这个节点,则先手必胜当且仅当\(x_i\)是最大匹配的必须点(也就是说少了\(x_i\)的话最大匹配数会减少) 证明: 任选一个最大匹配,则\(x_i\)为…

C# StartsWith 字符串的实例方法解析

原文链接:https://www.jb51.net/program/317525q14.htm 在 C# 中,StartsWith 是一个字符串的实例方法,用于检查字符串是否以指定的前缀开头。它返回一个布尔值,指示字符串是否以指定的前缀开始。

062、Vue3+TypeScript基础,插槽中使用具名插槽

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue// 引入emitter用于全局事件总线 // import emitter from @/utils/emitterconst app = createApp(App);// App.vue的根元素id为app app.mou…

ZBlog的数据库表是可以设置前缀-修改ZBlog数据库前缀

ZBlog的数据库表是可以设置前缀,程序安装的时候默认是 zbp_,所以很多同学也就默认用了 zbp_,但是因为某些原因需要修改ZBlog数据的前缀。 例如烽烟前几天搭建了几个演示站,多个演示站都使用的是一个数据库,但是由于之前的演示站数据表也是默认的zbp_,这样的话就与现在存在…

ZBlog后台密码忘记该如何找回

应 网友留言‘ZBlog后台密码忘记该如何找回?’ 每个人都会健忘,而且会忘记某些重要的东西,例如老婆的生日(很严重),银行卡密码(着急),当然也会忘记ZBlog管理员账号的密码。。。那么当我们忘记了后台的登录密码要怎么办呢?不要着急,接下来烽烟就来说下ZBlog找回管理员…

导入数据库提示unknown character set utf8mb4的原因及解决方案

今天尝试往阿里云的一个虚拟机当中导入数据库,然而却出现了“unknown character set utf8mb4”这样的提示。 之所以会产生这个错误,原因在于阿里虚拟机所使用的数据库版本为 5.1 版,此版本并不支持 utf8mb4 字符集。要知道,utf8mb4 字符集是从 5.5 版本开始被采用的,正因如…

061、Vue3+TypeScript基础,插槽中增加图片和控制视频

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vue// 引入emitter用于全局事件总线 // import emitter from @/utils/emitterconst app = createApp(App);// App.vue的根元素id为app app.mou…

如何快速将经纬度坐标解析为地址文本?

GIS数据转换器的"坐标转地址"功能,可以帮助用户将经纬度坐标快速转换为对应的地址文本,广泛用于地图导航、地籍管理、物流追踪、紧急救援等多个领域,提高地理位置信息的实用性和可访问性。下面是详细的使用步骤:方法/步骤1. 数据要求(1)数据格式:软件支持DWG、…