Graph Representation Learning Chapter[3]

news/2024/4/29 6:05:05/文章来源:https://blog.csdn.net/qq_43399648/article/details/127183351

本章学习节点嵌入。这些方法的目标是将节点编码为低维向量,以表示它们的图位置和局部图邻域的结构。换句话说,我们希望将节点投影到一个潜在空间中,其中这个潜在空间中的几何关系对应于原始图或网络中的关系。
几篇文章,强烈建议观看

本章讲的简单图,下一章讲多维度图
在这里插入图片描述

3.1 An Encoder-Decoder Perspective

编码器模型将图中的每个节点映射到一个低维向量或嵌入模型中
解码器模型采用低维节点嵌入,并利用它们来重构原始图中每个节点的邻域信息

3.1.1 The Encoder

编码器是一个函数,把节点映射成向量。
大多是浅嵌入方法(shallow embedding),将节点ID作为输入来产生节点嵌入的方法,它只是一个基于节点ID的简单的嵌入查找。
enc(v)=Z[v]enc(v) = Z[v] enc(v)=Z[v]
Z是矩阵,节点v对应的是Z[v]这一行。

编码器使用节点特征或节点周围的局部图结构作为输入来生成嵌入。这些广义的编码器架构——通常被称为图神经网络(GNNs)——将是本书第二部分的主要焦点

3.1.2 The Decoder

解码器是由编码器生成的节点嵌入进行图的重构。例如,给定一个节点u嵌入节点zu,解码器可能会尝试预测u的邻域集N (u)或图邻接矩阵中的行A[u]。
标准做法是定义成对解码器(pairwise decoder),它可以预测节点间的相似性。将其应用于嵌入数据,可以重建节点u和节点v间的关系,并且最小化损失。
我们假设S[u,v]是一种基于图的节点间的相似性度量。例如,预测两个节点是否是邻居,那么在这里插入图片描述

3.1.3 Optimizing an Encoder-Decoder Model

为了实现重建,需要最小化损失,我们定义了损失和损失函数。
在这里插入图片描述
总体目标是训练编码器和解码器,大多数是采用随机梯度下降法,也有其他的方法。

3.1.4 Overview of the Encoder-Decoder Approach

在这里插入图片描述
上表是几种著名的节点嵌入方法,这些方法都使用了浅层的编码方法。
编码器-解码器框架的好处是可以让人从以下3点进行模型比较:

  1. 解码器函数
  2. 基于图的相似性度量
  3. 损失函数

3.2 Factorization-based approaches

从节点嵌入中解码局部邻域结构的挑战,与重构图邻接矩阵中的项密切相关。因此,基于因子分解(矩阵分解)的方法主要思想是:使用矩阵分解来学习节点节点相似度矩阵S的低维近似。
(着实看不懂了,继续往后读)

Laplacian eigenmaps

最早也最具有影响力的因子分解方法–拉普拉斯特征映射,在这种方法中,我们根据节点嵌入之间的l2-距离(欧式距离)来定义解码器:
在这里插入图片描述
损失函数根据节点在图中的相似性对节点对进行加权:
方程(3.6)
当非常相似的节点有相距很远的嵌入时,损失函数会惩罚模型。

如果构造S矩阵,使其满足Laplacian矩阵的性质,那么,如果zu是d维的,最优解就是图拉普拉斯矩阵最小的d个特征值所对应的特征向量(排除最小的那一个v1),即:
在这里插入图片描述

Inner-product methods

内积法,基于内积的解码器(内积一般就是我们所谓的向量点乘 ):

方程3.8

这里假设两个节点之间的相似性——例如,它们的局部邻域之间的重叠——与它们的嵌入的点积成正比。

GF、GraRep和HOPE模型都使用了内积,和均方误差:


在这里插入图片描述

不同点在于如何定义节点相似度或邻域重叠S[u,v]S[u, v]S[u,v]

  • GF方法使用邻接矩阵并且设S[u,v]=S[u, v]=S[u,v]=A[u,v]A[u, v]A[u,v]
  • GraRep:S[u,v]=Ak[u,v]S[u,v]=Ak[u,v]S[u,v]=Ak[u,v]
  • HOPE算法支持一般的邻域重叠度量

以上被称为矩阵-因子分解方法,因为它们的损失函数可以用因子分解算法来最小化,如奇异值分解(SVD)。

这一类方法之所以成为因子分解方法,是因为它们的损失函数都可以使用因子分解(SVD等)算法进行最小化。

到底重构了哪一部分呢?就是重构的邻接矩阵A~=ZZT。

在这里插入图片描述

重构的目标也可以重写为矩阵的形式。

直观地说,这些方法的目标是学习每个节点的嵌入,使得学习到的嵌入向量之间的内积可以模拟某种确定的节点相似性度量。

图神经网络由浅入深:基于随机游走的方法(建议观看)

3.3 Random walk embeddings

上一节讨论的内积法确定了节点的相似性度量,它们通常定义为邻接矩阵的多项式函数。随机游走法使用邻域重叠的随机度量改进内积法。此类方法的关键创新在于优化节点嵌入——如果两个节点倾向于在图上的短随机游动(序列)中同时出现,那么这两个节点应该具有相似的嵌入。

DeepWalk and node2vec

Deepwalk和node2vec 也是浅嵌入和内积解码器。这些方法的关键在于它们如何定义节点相似度和邻域重构。和之前的方法不同,这两种是通过优化节点嵌入,来编码随机游走的统计特性的。

学习嵌入以便大致保持:

DEC(zu,zv)≜ezuτzv∑vk∈ezuτzkDEC(z_u,z_v ) \triangleq \frac {e^{z_u\tau z_v}} {\sum_{v_k \in {e^{z_u \tau z_k}}}}DEC(zu,zv)vkezuτzkezuτzv
在这里插入图片描述

其中,pG,T(v∣u)pG,T(v|u)pGTvu是在从u开始的长度-T随机游动上访问v的概率,T通常被定义为在T∈2,...,10T∈{2,...,10}T2...10的范围内。同样,上式和基于因子分解的方法之间的一个关键区别是,上式中的相似性度量是随机的和不对称的。

在这里插入图片描述

D表示随机游走的训练集,从每个节点开始采样随机游走生成的。

如何优化?

直接计算会很昂贵,我们可以发现,最左侧的求和操作是针对全部的节点进行的,而softmax参数化的分母也是针对全部的节点进行的,那就意味着整个式子的计算是∗O(∣D∣∣V∣)∗*O(|D||V|)*O(D∣∣V)级别的复杂度,这在图规模较大的情况下是不可接受的。能不能优化呢?首先,最左侧的求和是不可或缺的,因为我们至少得对所有的节点更新一次参数,那么softmax参数化的标准化分母可以优化一下吗?

DeepWalk采用分层softmax来近似方程,用二叉树来加速计算。node2vec用了噪声对比,其中归一化因子以以下方法使用负样本来近似:

在这里插入图片描述

加了后面那一串东西,Pn(V)Pn (V)Pn(V)表示节点V集合上的分布,我们假设γ>0γ > 0γ>0是一个超参数。在实践中,Pn(V)Pn (V)Pn(V)通常被定义为均匀分布,并且期望使用蒙特卡罗抽样来近似。

式子3.12解释

先来看看在一个大规模的,比较均匀的图网络中,假设我们随机选定了一个节点u,那么实际上能够跟这个节点产生关联性的节点其实并不多(即正样本不多),这就意味着拟合过程中的负样本数目极其庞大,而在事实上我们也并没有必要去考虑所有的这些无关联节点,因此,我们就可以通过这些节点进行采样,仅使用一部分负样本来达到我们学习目的,即负采样。

在这里插入图片描述
其中,σ\sigmaσ为sigmod函数,nin_ini为从所有节点中采样的随机分布,为什么是所有节点?因为与给定节点实际有关联的节点并不多,所以直接进行随机采样大概率采样到的都是负样本)。至此,我们就通过负采样解决了优化目标的性能问题,能够高效的进行拟合操作了。

node2vec方法区别于早期的DeepWalk算法,更灵活地定义随机行走。当DeepWalk简单地使用均匀随机行走定义pG,T(v∣u)pG,T(v|u)pGTvu,node2vec方法引入了超参数,node2vec方法引入了超参数,允许随机行走的概率更接近于图上bfs或dfs的平滑插值。

Large-scale information network embeddings (LINE)

LINE没有明确地利用随机游走,但是它与deepwalk、node2vec共享概念动机。它是结合两个编码器-解码器目标。第一个是编码一阶邻接信息,并使用以下解码器:

在这里插入图片描述

第二个目标是使用KL散度来编码两跳(二阶)邻接信息,和3.10一样的decoder。LINE在概念上与node2vec、DeepWalk相关。它使用了一个概率解码器和概率损失函数(基于kl散度)。和采样随机游走不同的是,它显示的重构了一阶和二阶邻居信息。

Additional variants of the random-walk idea

随机游走的一个优点是它可以通过偏置(bias)或修改随机游走,来进行扩展和修正。“跳过”节点的随机游走,生成类似GraRep。

3.3.1 Random walk methods and matrix factorization

随机游走方法实际上与矩阵分解方法密切相关。

通过DeepWalk学习到的嵌入实际上与本书第一部分中讨论的光谱聚类嵌入密切相关。关键的区别在于,DeepWalk嵌入通过T控制不同特征值的影响,即随机游走的长度。

3.4 Limitations of Shallow Embeddings

浅嵌入方法以前很火,现在大家发现了一些缺陷:

  1. 浅层嵌入方法在编码器中的节点之间不共享任何参数,导致学习的效率底。缺乏参数共享意味着浅嵌入方法的参数数量必然随着O(|V|)而增加,这在大量图中是难处理。
  2. 没有利用编码器中的节点特性,会缺失掉很多有用的潜在信息。
  3. 浅嵌入方法具有内在传导性,只能对训练时就有的节点编码,之后新生成的不行。

为了减轻这些限制,浅层编码器可以被更复杂的编码器所取代,这些编码器更普遍地依赖于图的结构和属性。

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

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

相关文章

行为树BT设计与实现

行为树BT设计与实现1 介绍2 汇总From McYY整体结构运行逻辑节点共享数据中断的实现From AKaraFrom Luyu HuangFrom 阿高From xiyoo0812参考1 介绍 状态机与行为树BT 2 汇总 From McYY lua行为树设计与实现 LuaBT 项目需要,之前行为树用的是behaviorDesigner&…

数据科学的统计学知识笔记

1.描述统计 1.数字特征(描述统计) 集中趋势 众数中位数四分位数平均数:样本平均数(xˉ\bar{x}xˉ)与总体平均数(μ\muμ) 离中趋势(离散趋势)异众比率:非众…

scratch加法出题器 电子学会图形化编程scratch等级考试三级真题和答案解析2022年9月

目录 scratch加法出题器 一、题目要求 1、准备工作 2、功能实现 二、案例分析 <

『LeetCode|每日一题』---->二叉搜索树中第K小的元素

目录 1.每日一句 2.作者简介 3.二叉搜索树简介 『LeetCode|每日一题』二叉搜索树中第K小的元素 1.每日一题 4.解题思路 4.1 思路分析 4.2 核心代码 4.3 完整代码 4.4 运行结果 1.每日一句 因为时间永远分岔&#xff0c;通往无数的未来 2.作者简介 &#x1f3e1;个人主页&…

如何着手写一篇医学综述?

各位医学研究生&#xff0c;研0的时候是不是导师都已经把综述布置下来作为你的第一份作业呀&#xff1f;对于医学生们来说&#xff0c;不管你是本科就已经开始接触科研还是研究生开始才接触科研&#xff0c;反正在你开始阅读文献的时候开始一篇综述总是逃不过的。鉴于有综述任务…

Sql Server CDC配置

概述 CDC&#xff08;Change Data Capture&#xff09;&#xff0c;即数据变更抓取&#xff0c;通过为源端数据源开启CDC&#xff0c;ROMA Connect可实现数据源的实时数据同步以及数据表的物理删除同步。 本章节主要介绍如何为SQL Server数据库开启CDC功能。 前提条件 SQL S…

算力是新一代的“石油”,我们该如何利用好它?

我们处在一个数字世界&#xff0c;计算能力成为科技进步和经济发展的底座&#xff0c;也正在改变我们的生产方式和生活方式。未来&#xff0c;几万台、几十万台甚至几亿台服务器&#xff0c;如果都能够基于一个操作系统进实时调度&#xff0c;将带来巨大的算力提升。我们这一代…

【Linux高效小trick】快速查看Linux进程的开始和运行时间

写在前面 前面介绍了&#xff0c;怎么杀死Linux的僵尸进程&#xff0c;为GPU释放更多的内存&#xff0c;做想做的事&#xff0c;文章链接如下&#xff1a; 【Linux高效小trick】Linux下杀死僵尸进程&#xff0c;释放GPU内存&#xff0c;让代码全速运行~ 今天再来具体说下&…

Jetpack 之 ViewModel

Jetpack 系列第三篇&#xff0c;这次回顾 ViewModel&#xff0c;ViewModel 作为 MVVM 架构中的 VM 层&#xff0c;具有自己的生命周期&#xff0c;且生命周期贯穿整个 Activity 或 Fragment&#xff0c;相较于之前 MVP 的 Presenter&#xff0c;它的存活时间更长&#xff0c;所…

商用图片素材,高清无水印

今天给大家分享8个免费、商用图片素材网站&#xff0c;全部高清无水印&#xff0c;轻松应对各种场景。1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYwNDUx菜鸟图库是一个综合性素材网站&#xff0c;这里面有很多设计、图片、视频、音频等素材&#xff0c;图片素材全部都…

vscode 提示 vetur can‘t find `tsconfig.json`的解决办法

VSCode&#xff08;全称&#xff1a;Visual Studio Code&#xff09;是一款由微软开发且跨平台的免费源代码编辑器。该软件支持语法高亮、代码自动补全&#xff08;又称 IntelliSense&#xff09;、代码重构、查看定义功能&#xff0c;并且内置了命令行工具和 Git 版本控制系统…

SEO作弊有哪些手段,网站采用SEO作弊会带来哪些惩罚

在做网站SEO优化过程中&#xff0c;有的人为了快速提高网站排名&#xff0c;采用了各种各样的方法。有的甚至采用SEO作弊的手段来优化网站&#xff0c;短期内提升了网站的排名。但是&#xff0c;我们要知道&#xff0c;做SEO优化欲速则不达&#xff0c;SEO作弊会给网站带来一定…

部署CentOS可视化界面GUI-之腾讯云服务器

目录 一、购买云服务器实例 二、配置安全组、设置管理员密码 三、远程登录 四、安装CentOS可视化界面GUI 4.1、系统GUI配置 4.2、系统GUI配置 一、购买云服务器实例 二、配置安全组、设置管理员密码 三、远程登录 用其控制台下webShell&#xff0c;或VNC模式&#xff0…

《MySQL实战45讲》——学习笔记08 “一致性视图、可重复读实现“

这篇文章讲的比较分散&#xff0c;这里做一个梳理&#xff0c;先将简单的概念如"事务的启动时机"、"视图"、"秒级创建快照"拎出来解释&#xff0c;然后通过文章中的几个例子说明"一致性读"和"当前读"&#xff1b; 08 | …

AspectJ in action

Discovering AOP This chapter covers ■ Understanding crosscutting concerns ■ Modularizing crosscutting concerns using AOP ■ Understanding AOP languages Reflect back on your last project, and compare it with a project you worked on a few years back. Wha…

一文带你快速鉴别CookieSession

文章目录会话跟踪技术1、相关基础概念2、Cookie2.1 Cookie的基本使用2.1.1 发送Cookie2.1.2 获取Cookie2.2 Cookie原理2.3 Cookie存活时间2.4 Cookie存储中文3、Session3.1 Session的基本使用3.2 Session原理3.3 Session的钝化和活化3.4 Session的存活时间总结会话跟踪技术 1、…

SSl证书协议作用

SSl证书协议作用 随着移动互联网时代的飞速发展&#xff0c;似乎每周都能看到很多关于数据泄露的新闻&#xff0c;而且报道还在不断涌现。在统计的100款app中&#xff0c;有多达91款app收集了过多的用户个人信息。 为了改善这一现象&#xff0c;网络空间管理局联合发布了《认定…

TRC丨艾美捷TRC 2-氨基-2-甲基丙酰胺说明书

艾美捷TRC 2-氨基-2-甲基丙酰胺化学性质&#xff1a; 目录号A010210 化学名称2-氨基-2-甲基丙酰胺 CAS 编号16252-90-7 分子式C₄H₁₀N2O 外貌白色固体 熔点>250C&#xff08;分解&#xff09; 分子量102.14 溶解度甲醇&#xff08;少量&#xff09; 类别建筑模块…

听说2022金九银十变成铜九铁十了......

往年的金九银十&#xff0c;今年被戏称为“铜九铁十”。知名的大厂HR们都在不断的裁员&#xff0c;能被保住不被裁掉可能就万事大吉了&#xff0c;赛道越来越窄&#xff0c;都在预测未来计算机行业是不是下一个土木工程&#xff1f; 我也算是软件测试岗位的老鸟了&#xff0c;…

计算机网络03之可靠传输

1. 停止等待协议 1.概述 发送方每次只能发送一个数据包&#xff0c;确认方每次只能发送一个确认。发送方收到重复的确认会丢弃&#xff08;接收方已经接收&#xff09;&#xff0c;接收方收到重复的数据&#xff0c;会把数据丢弃&#xff0c;但是会发送确认&#xff08;防止上…