CS224W—07 Machine Learning with Heterogeneous Graphs

CS224W—07 Machine Learning with Heterogeneous Graphs

本节中,我们将学习如何在异构图中进行图神经网络学习。

Heterogeneous Graphs

图中的节点类型/边类型不同,就会形成一个异构图(Heterogeneous Graph),例如下图中的节点有两种类型:Paper节点/Author节点;第二个图中的边有两种类型:Cite/Like;也可以是多种节点和边的结合,如第三个图。

image-20240826093437463

为了更好的捕捉节点和边的交互,使用relation type来描述一条边:

Relation Type: (node_start, edge, node_end)
image-20240826093628369

异构图定义为
G = ( V , E , τ , ϕ ) G = (V, E, \tau, \phi) G=(V,E,τ,ϕ)

  • 具有节点类型 τ ( v ) \tau(v) τ(v) 的节点 v ∈ V v \in V vV

  • 具有边类型 ϕ ( u , v ) \phi(u, v) ϕ(u,v) 的边 ( u , v ) ∈ E (u, v) \in E (u,v)E

  • e e e 的relation type是一个元组: r ( u , v ) = ( τ ( u ) , ϕ ( u , v ) , τ ( v ) ) r(u, v) = \left(\tau(u), \phi(u, v), \tau(v)\right) r(u,v)=(τ(u),ϕ(u,v),τ(v))

观察:我们也可以将节点和边的类型视为特征 示例:为节点和边添加一位有效指示器

  • 给每个“作者节点”附加特征 [1, 0];
  • 给每个“论文节点”附加特征 [0, 1]
  • 同样,我们可以为不同类型的边分配边特征;然后,异构图简化为标准图

那我们何时需要异构图?

  • 情景1:不同的节点/边类型有不同形状的特征
  • 情景2:不同的relation type代表不同类型的interaction
    • 比如 (English, translate, French) 和 (English, translate, Chinese) 需要不同的模型。

异构图的计算成本是很高的,也有许多方法将异构图转换为同构图来进行计算。

Relational GCN (RGCN)

论文地址:https://arxiv.org/pdf/1703.06103

经典的GCN:

image-20240826094418287

对于只有一种relation的有向图:

image-20240826094623823

对于有多种relation types的图,不同的relation type 使用不同的神经网络参数:

image-20240826094714556 image-20240826094821529

RGCN Definition

h v ( l + 1 ) = σ ( ∑ r ∈ R ∑ u ∈ N v r 1 C ν , r W r ( l ) h u ( l ) + W 0 ( l ) h v ( l ) ) \mathbf{h}_v^{(l+1)}=\sigma\left(\sum_{r\in R}\sum_{u\in N_v^r}\frac{1}{C_{\nu,r}}\mathbf{W}_r^{(l)}\mathbf{h}_u^{(l)}+\mathbf{W}_0^{(l)}\mathbf{h}_v^{(l)}\right) hv(l+1)=σ rRuNvrCν,r1Wr(l)hu(l)+W0(l)hv(l)

Message:

  • 每个给定relation ( r ) 的领居消息:
    m u , r ( l ) = 1 c v , r W r ( l ) h u ( l ) , c v , r = ∣ N v r ∣ \mathbf{m}_{u,r}^{(l)}=\frac1{c_{v,r}}\mathbf{W}_r^{(l)}\mathbf{h}_u^{(l)}, \quad c_{v,r}=|N_v^r| mu,r(l)=cv,r1Wr(l)hu(l),cv,r=Nvr

  • 自身消息:
    m v ( l ) = W 0 ( l ) h v ( l ) \mathbf{m}_v^{(l)}=\mathbf{W}_0^{(l)}\mathbf{h}_v^{(l)} mv(l)=W0(l)hv(l)

Aggregation:

  • 对来自邻居和自身的消息进行求和,然后进行激活:
    h v ( l + 1 ) = σ ( S u m ( { m u , r ( l ) , u ∈ N ( v ) } ∪ { m v ( l ) } ) ) \mathbf{h}_v^{(l+1)}=\sigma\left(\mathrm{Sum}\left(\left\{\mathbf{m}_{u,r}^{(l)},u\in N(v)\right\}\cup\left\{\mathbf{m}_v^{(l)}\right\}\right)\right) hv(l+1)=σ(Sum({mu,r(l),uN(v)}{mv(l)}))

RGCN Scalability

每种关系都有 L L L 个矩阵: W r ( 1 ) , W r ( 2 ) ⋯ W r ( L ) W_r^{(1)}, W_r^{(2)} \cdots W_r^{(L)} Wr(1),Wr(2)Wr(L)。每个 W r ( l ) W_r^{(l)} Wr(l) 的大小是 d ( l + 1 ) × d ( l ) d^{(l+1)} \times d^{(l)} d(l+1)×d(l) d ( l ) d^{(l)} d(l) 是第 l l l 层的隐藏维度。

参数数量相对于关系数量的快速增长!过拟合成为一个问题。

两种方法来正则化权重 W r ( l ) W_r^{(l)} Wr(l)

  1. 使用分块对角矩阵( Block Diagonal Matrices)
  2. 基/字典学习(Basis/Dictionary learning)
Block Diagonal Matrices

关键:使权重变得稀疏!使用分块对角矩阵对 W r W_r Wr 进行稀疏化

image-20240827204151412

限制:只有邻近的神经元/维度可以通过 W W W 进行交互。 如果使用 B B B 个低维矩阵,则参数数量从 d ( l + 1 ) × d ( l ) d^{(l+1)} \times d^{(l)} d(l+1)×d(l) 减少到 B × d ( l + 1 ) B × d ( l ) B B \times \frac{d^{(l+1)}}{B} \times \frac{d^{(l)}}{B} B×Bd(l+1)×Bd(l)

Basis Learning

关键:在不同的relation之间分享权重

将每种关系的矩阵表示为基变换的线性组合:
W r = ∑ b = 1 B a r b ⋅ V b , W_{r} = \sum_{b=1}^{B} a_{r b} \cdot V_{b}, Wr=b=1BarbVb,
其中 V b V_{b} Vb 在所有关系中共享。

  1. V b V_{b} Vb 是基矩阵。

  2. a r b a_{r b} arb 是矩阵 V b V_{b} Vb 的重要性权重。

现在每种关系只需要学习 { a r b } b = 1 B \{a_{r b}\}_{b=1}^{B} {arb}b=1B,这是 B B B 个标量。

Example: Entity/Node Classification

任务:对于给定节点,预测其标签

如果我们从 k k k 个类别中预测节点 A 的类别,取最后一层(预测头): h A ( L ) ∈ R k h_{A}^{(L)} \in \mathbb{R}^{k} hA(L)Rk h A ( L ) h_{A}^{(L)} hA(L) 中的每个项代表该类别的概率。

image-20240827205454842

Link Prediction

在异质图中,将每种关系对应的边都分成 training message edges, training supervision edges, validation edges, test edges 四类。

假设 ( E , r 3 , A ) \left(E, r_{3}, A\right) (E,r3,A)training supervision edge,所有其他边都是training message edges。使用RGCN对 ( E , r 3 , A ) \left(E, r_{3}, A\right) (E,r3,A) 进行评分:

  • E E E A A A 的最后一层: h E ( L ) h_{E}^{(L)} hE(L) h A ( L ) ∈ R d h_{A}^{(L)} \in \mathbb{R}^{d} hA(L)Rd
  • 关系特定的评分函数 f r f_{r} fr R d × R d → R \mathbb{R}^{d} \times \mathbb{R}^{d} \rightarrow \mathbb{R} Rd×RdR
    • 例子: f r 1 ( h E , h A ) = h E T W r 1 h A , W r 1 ∈ R d × d f_{r_1}\left(h_E, h_A\right) = h_E^T W_{r_1} h_A, W_{r_1} \in \mathbb{R}^{d \times d} fr1(hE,hA)=hETWr1hA,Wr1Rd×d

image-20240829092442925

训练阶段:用 training message edges 预测 training supervision edges

  1. 用RGCN给training supervision edge ( E , r 3 , A ) (E,r_3,A) (E,r3,A) 打分
  2. 通过perturb supervision edge 得到negative edge :例如perturb ( E , r 3 , A ) (E,r_3,A) (E,r3,A) 得到 ( E , r 3 , B ) (E,r_3,B) (E,r3,B)
  3. 使用GNN计算 negative edge的分数
  4. 优化交叉熵损失函数,使 training supervision edge 上得分最高,negative edge 上得分最低:
    1. ℓ = − log ⁡ σ ( f r 3 ( h E , h A ) ) − log ⁡ ( 1 − σ ( f r 3 ( h E , h B ) ) ) \ell=-\log\sigma\left(f_{r_3}(h_E,h_A)\right)-\log(1-\sigma\big(f_{r_3}(h_E,h_B))\big) =logσ(fr3(hE,hA))log(1σ(fr3(hE,hB))) σ : S i g m o i d \sigma: Sigmoid σ:Sigmoid

验证阶段:用 training message edges 和 training supervision edges 预测 validation edges: ( E , r 3 , D ) (E,r_3,D) (E,r3,D) ( E , r 3 , D ) (E,r_3,D) (E,r3,D) 的得分应该比所有不在 training message edges 和 training supervision edges 的点得分更高,比如 ( E , r 3 , B ) (E,r_3,B) (E,r3,B)

image-20240829093719538

具体步骤:

  1. 计算 ( E , r 3 , D ) (E,r_3,D) (E,r3,D) 的得分
  2. 计算所有 negetive edges 的得分 { ( E , r 3 , v ) ∣ v ∈ { B , F } } \{(E,r_3,v)|v\in\{B,F\}\} {(E,r3,v)v{B,F}}
  3. 获得 ( E , r 3 , D ) (E,r_3,D) (E,r3,D) 的排名
  4. 计算指标

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

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

相关文章

基于SpringBoot的在线答疑管理系统

基于SpringBootVue的在线答疑管理系统【附源码文档】、前后端分离 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven 系统展示 摘要 基于SpringBoot的在线答疑管理系…

如何使用IDEA搭建Mybatis框架环境(详细教程)

文章目录 ☕前言为什么学习框架技术Mybatis框架简介 🍹一、如何配置Mybatis框架环境1.1下载需要MyBatis的jar文件1.2部署jar文件1.3创建MyBatis核心配置文件configuration.xml1.4.创建持久类(POJO)和SQL映射文件1.5.创建测试类 🧋二、 MyBatis框架的优缺…

Linux下UDP编程

一.概念介绍 1.socket 是什么? socket(套接字)本质上是一个抽象的概念,它是一组用于网络通信的 API,提供了一种统一的接口,使得应用程序可以通过网络进行通信。在不同的操作系统中,socket 的实…

【Python系列】Jinja2 模板引擎

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【软件测试】软件测试生命周期与Bug

目录 📕 前言 🌴软件测试的生命周期 ​编辑🌲BUG 🚩 概念 🚩描述bug的要素 🚩bug的级别 🚩bug的生命周期 🏀先检查自身,是否bug描述不清楚 🏀站在用…

Docker 安装 SqlServer

摘要:我们工作当中经常需要拉取多个数据库实例出来做集群,做测试也好,通过 Docker 拉取 SqlServer 镜像,再通过镜像运行多个容器,几分钟就可以创建多个实例,效率是相当的高。 1. docker 拉取镜像 注意&am…

[mysql]mysql的演示使用

mysql的演示使用 几个常见操作 1:show databases 这里第一个information_schema代表的是数据库的基本系统信息,数据库名称,表的名称,存储权限 第二个是mysql,保存的是我们数据库运行的时候需要的系统信息&#xff0…

数据中台即将消亡,数智基建取而代之?

数据中台即将消亡,数智基建取而代之? 前言数智基建 前言 在当今数字化浪潮汹涌澎湃的时代,企业的发展如同在浩瀚海洋中航行的巨轮,而数据则是推动这艘巨轮前行的强大动力。然而,如何有效地管理和利用数据,…

Kafka3.x 使用 KRaft 模式部署 不依赖 ZooKeeper

前言 Kafka 从 2.8.0 版本开始引入了 Kafka Raft Metadata Mode(KRaft 模式),这个模式允许 Kafka 在不依赖 ZooKeeper 的情况下进行元数据管理。KRaft 模式在 Kafka 3.0.0 中进入了稳定版本,本文部署的 Kafka_2.12-3.6.0 单机模式 环境 Ce…

工厂andon暗灯系统数字化应用案例

在当今数字化浪潮席卷制造业的时代,工厂的高效运作和精益管理离不开先进的技术手段。Andon 暗灯系统作为精益制造执行中的核心工具和 MES 制造执行系统的重要组成部分,正以其强大的功能为工厂带来全新的变革。 某汽车零部件制造工厂,拥有多条…

Java设计模式之策略模式详细讲解和案例示范

Java设计模式之策略模式详细讲解和案例示范 在软件开发中,策略模式是一种常见且非常有用的设计模式。它允许定义一系列算法,将它们一个个封装起来,并且使它们可以互相替换。策略模式让算法可以独立于使用它们的客户端而变化。本篇文章将详细…

[MySql]保姆级上手教程

介绍 通过数据库管理系统, 编写执行SQL语句, 实现对数据库数据的管理 数据库(DataBase): 储存和管理数据的仓库数据库管理系统(DBMS): 操作和管理数据库的软件SQL语言: 操作关系型数据库的通用语言数据库可以分为关系型数据库和非关系型数据库 相关产品 常见的关系型数据库产…

【golang-入门】环境配置、VSCode开发环境配置

golang介绍基础信息 windows环境配置安装包下载安装环境变量设置检查 VSCode开发配置插件配置在 Visual Studio Code 中安装通义灵码go hello word 参考资料 golang介绍 基础信息 golang官网:https://go.dev/golang学习网:https://studygolang.com/使用…

android使用YOLOV8数据返回到JAVA方法(JAVA)

一、下载扩展文件(最耗时,所以放第一步) 1.opencv下载 1)官网:Releases - OpenCV 2)下载最新版本的android包 2.NCNN下载 1)NCNN下载地址(20220420版本):https://github.com/Tencent/ncnn/releases/download/20220420/ncnn-20220420-android-vulkan.zip 3.在你的…

【C++二分查找】2271. 毯子覆盖的最多白色砖块数

本文涉及的基础知识点 C二分查找 LeetCode2271. 毯子覆盖的最多白色砖块数 给你一个二维整数数组 tiles &#xff0c;其中 tiles[i] [li, ri] &#xff0c;表示所有在 li < j < ri 之间的每个瓷砖位置 j 都被涂成了白色。 同时给你一个整数 carpetLen &#xff0c;表…

使用 Jpom 自动化构建并部署项目

1、前言 Jpom 是一款专为开发者设计的轻量级运维工具。它提供了一整套从项目构建到自动部署&#xff0c;再到日常运维和项目监控的解决方案&#xff0c;帮助开发者更好地管理和维护项目。 Jpom 的目标是让开发者不再为复杂的运维流程头疼。它支持多种安装方式&#xff0c;灵活…

RoboCat: A Self-Improving Generalist Agent for Robotic Manipulation

发表时间&#xff1a;22 Dec 2023 论文链接&#xff1a;https://readpaper.com/pdf-annotate/note?pdfId4836882796542689281&noteId2413286807916664832 作者单位&#xff1a;Google DeepMind Motivation&#xff1a;受视觉和语言基础模型的最新进展的启发&#xff0c…

【教程】实测np.fromiter 和 np.array 的性能

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 函数简介 np.fromiter np.array 测试代码 实验结果 结果分析 实验总结 学长想说 函数简介 np.fromiter np.fromiter 是 NumPy 提供的一…

设计模式 -- 装饰者模式(Decorator Pattern)

1 问题引出 1.1 咖啡馆订单项目 咖啡种类/单品咖啡&#xff1a;Espresso(意大利浓咖啡)、ShortBlack、LongBlack(美式咖啡)、Decaf(无因咖啡) 调料&#xff1a;Milk、Soy(豆浆)、Chocolate 要求在扩展新的咖啡种类时&#xff0c;具有良好的扩展性、改动方便、维护方便 使用…

无人机之云台的作用

无人机云台在无人机技术中扮演着至关重要的角色&#xff0c;其作用主要体现在以下几个方面&#xff1a; 一、 确保拍摄稳定性 防抖动&#xff1a;无人机在飞行过程中&#xff0c;尤其是在复杂环境下&#xff0c;如遇到风力干扰或进行高速飞行时&#xff0c;机身容易产生震动和…