[学习笔记]Node2Vec图神经网络论文精读

news2025/1/25 9:07:08

参考资料:https://www.bilibili.com/video/BV1BS4y1E7tf/?p=12&spm_id_from=pageDriver

Node2vec简述

DeepWalk的缺点

用完全随机游走,训练节点嵌入向量,仅能反应相邻节点的社群相似信息,无法反映节点的功能角色相似信息。

Node2vec

在这里插入图片描述
通过调节p和q的参数,可以调节权重。

p值很小,更愿意返回,则类似BFS,反映的是微观视角。
q值很小,更愿意返回,则类似DFS,反映宏观视角。
DFS捕捉的是homophily同质社群(社交网络)的特征
BFS捕捉的是Structural equivalence节点功能角色(中枢、桥接、边缘)的特征。

伪代码

在这里插入图片描述
在这里插入图片描述

一些技术细节

Alias Sampling:用空间换时间,时间复杂度O(1)的采样算法。

Node2vec论文精读

任何监督学习算法要求有内含丰富语义,有分类区分性以及相互独立的特征。
图嵌入的方法:
1.手动构造特征
2.基于矩阵分解的图嵌入
3.基于随机游走的图嵌入
4.基于神经网络

同一个社群的节点、同一个功能角色的节点,应该被编码成相近的embedding

使用二阶随机游走方法来产生节点的邻域。

一阶随机游走(一阶马尔科夫性):下一个节点仅与当前节点有关(deepwalk,pagerank)
二阶随机游走(二阶马尔科夫性):下一个节点不仅与当前节点有关,还与上一个节点有关

p,q的不同对应不同的探索策略,具有可解释性。
最优的p,q可以通过调惨得到。

贡献

1.提出node2vec,可以通过调节p、q来探索网络的不同特性,使用SGD来优化
2.node2vec符合网络科学的准则,提供了灵活的表示
3.node2vec将节点嵌入推广到了连接嵌入
4.在多类别分类任务和连接预测任务上进行了实验。

3.Node2vec算法

图: G = ( V , E ) G=(V,E) G=(V,E)
采样策略: S S S
节点 u u u的领域节点 N S ( u ) ⊂ V N_S(u) \subset V NS(u)V
任务:学习映射 f : V → R d f: V \rightarrow \mathbb{R}^d f:VRd:d是词嵌入后的维度
目标函数:
max ⁡ f ∑ u ∈ V log ⁡ Pr ⁡ ( N S ( u ) ∣ f ( u ) ) \max _f \sum_{u \in V} \log \operatorname{Pr}\left(N_S(u) \mid f(u)\right) fmaxuVlogPr(NS(u)f(u))
为了简化问题,做出两个假设:

  • 条件独立性假设:周围节点互相不影响:
    Pr ⁡ ( N S ( u ) ∣ f ( u ) ) = ∏ n i ∈ N S ( u ) Pr ⁡ ( n i ∣ f ( u ) ) \operatorname{Pr}\left(N_S(u) \mid f(u)\right)=\prod_{n_i \in N_S(u)} \operatorname{Pr}\left(n_i \mid f(u)\right) Pr(NS(u)f(u))=niNS(u)Pr(nif(u))
  • 特征空间的对称性:两个节点之间相互影响的程度是一样的,因此可以用特征的点乘来表示概率
    Pr ⁡ ( n i ∣ f ( u ) ) = exp ⁡ ( f ( n i ) ⋅ f ( u ) ) ∑ v ∈ V exp ⁡ ( f ( v ) ⋅ f ( u ) ) \operatorname{Pr}\left(n_i | f(u)\right)=\frac{\exp \left(f\left(n_i\right) \cdot f(u)\right)}{\sum_{v \in V} \exp (f(v) \cdot f(u))} Pr(nif(u))=vVexp(f(v)f(u))exp(f(ni)f(u))

Z u = ∑ v ∈ V exp ⁡ ( f ( u ) ⋅ f ( v ) ) Z_u=\sum_{v \in V} \exp (f(u) \cdot f(v)) Zu=vVexp(f(u)f(v)),称为配分函数,则目标函数可化为
Pr ⁡ ( n i ∣ f ( u ) ) = exp ⁡ ( f ( n i ) ⋅ f ( u ) ) ∑ v ∈ V exp ⁡ ( f ( v ) ⋅ f ( u ) ) \operatorname{Pr}\left(n_i \mid f(u)\right)=\frac{\exp \left(f\left(n_i\right) \cdot f(u)\right)}{\sum_{v \in V} \exp (f(v) \cdot f(u))} Pr(nif(u))=vVexp(f(v)f(u))exp(f(ni)f(u))

3.1 传统搜索策略

如何定义领域 N S ( u ) N_S(u) NS(u)依赖于策略 S S S。不同策略下,邻域是不一样的。
在这里插入图片描述
BFS:只探索近邻。
DFS:渐行渐远,探索离原节点较远的节点。

在homophily(同质性)假设下(对应BFS),同一个社区的节点,词嵌入后会比较相似。如s1和u
在structural equivalence假设下(对应DFS),有相同结构角色功能的节点,词嵌入后会比较相似。如u和s6
在真实图里,这两种不是互斥的,一个图可能既有homophily特质,也有structural equivalence特质。
BFS采样结果比较稳定,方差较小。
DFS采样结果比较不稳定,方差较大。

3.2 node2vec

3.2.1 随机游走

u u u:起始点
t t t:上一节点
v v v:当前节点
x x x:下一节点
N s ( t ) N_s(t) Ns(t):上一节点的邻居节点
k k k:当前节点v的邻居节点个数
l l l:随机游走序列节点个数

下一个节点的生成概率公式:
P ( c i = x ∣ c i − 1 = v ) = { π v x Z  if  ( v , x ) ∈ E 0  otherwise  P\left(c_i=x \mid c_{i-1}=v\right)= \begin{cases}\frac{\pi_{v x}}{Z} & \text { if }(v, x) \in E \\ 0 & \text { otherwise }\end{cases} P(ci=xci1=v)={Zπvx0 if (v,x)E otherwise 
其中, π v x \pi_{v x} πvx是未归一化的转移概率。

3.2.2 搜索的偏向 α \alpha α

直接用权重作为游走概率,则无法调节搜索策略。直接用BFS或者DFS则太极端,无法平滑调节。
于是考虑带参数p和q的二阶随机游走:
α p q ( t , x ) = { 1 p  if  d t x = 0 1  if  d t x = 1 1 q  if  d t x = 2 \alpha_{p q}(t, x)= \begin{cases}\frac{1}{p} & \text { if } d_{t x}=0 \\ 1 & \text { if } d_{t x}=1 \\ \frac{1}{q} & \text { if } d_{t x}=2\end{cases} αpq(t,x)= p11q1 if dtx=0 if dtx=1 if dtx=2
π v x = α p q ( t , x ) ⋅ w v x \pi_{v x}=\alpha_{p q}(t, x) \cdot w_{v x} πvx=αpq(t,x)wvx

因为既要下一个节点x考虑当前节点v可达,也要考虑x与上一个节点t的距离,所以是二阶的随机游走
在这里插入图片描述
空间复杂度:随机游走需要存邻接表 O ( ∣ E ∣ ) O(|E|) O(E)。为了方便,二阶随机游走需要存 O ( a 2 ∣ V ∣ ) O(a^2|V|) O(a2V)来记录距离,其中 a a a是图中每个点的平均连接数。
时间复杂度: O ( l k ( l − k ) ) O\left(\frac{l}{k(l-k)}\right) O(k(lk)l),k是领域的节点个数
随着硬件的发展,空间复杂度没有时间复杂度重要

3.2.3 伪代码

在这里插入图片描述
总共分为三个阶段:

  1. 已知p,q和图权重,生成随机游走的采样策略,存入表中
  2. 每个节点生成r个随机游走序列,其中node2vecWalk函数用于生成起始点为u,长为l的随机游走序列。
    在这里插入图片描述
  3. 用生成的随机游走序列,通过skip-gram模型训练得到节点嵌入表示

AliasSampling是用空间(预处理)换时间的方法,它的时间复杂度是O(1),特别适用于大量反复抽样情况下,优势很突出。它将离散分布抽样转换为均匀分布抽样。
随机游走过程中,会有隐式的偏差。所以每个节点都采样r次,尽可能减少偏差。
每个阶段都可以并行,并且可以异步训练,可扩展性非常好

3.3 学习连接的特征

将node embedding扩展到link embedding
给定两个节点,定义一个二元操作符 ∘ \circ 来生成连接的表示:
在这里插入图片描述

4.实验

4.1:悲惨世界人物关系图的图嵌入

4.2 实验设置

与其他算法对比
严格控制各对比实验的条件

4.3 多标签分类

4.4 参数敏感度

在这里插入图片描述

随机剔除一些连接,性能会缓慢下降

4.5 扰动分析

缺失连接:保证连通域不变的情况下,进行剪枝,不会造成新的孤岛。
噪声增加连接:随机增加连接,在传感器网络中更常见。

4.6 可扩展性

构建E-R随机图,节点数从100到100万,来做node2vec算法,来看时间。可以看到时间复杂度近似为线性。

4.7 连接预测

构建正负样本的二分类问题。
采集测试集:从网络中取50%的边,同时确保不改变剩下的网络的连通性。再从网络中随机选取一些不相邻的节点对,作为负样本。然后可以训练二分类模型了。

5.讨论和结论

node2vec展示了一定的可解释性,p、q参数是灵活可调的,在复杂任务上的性能不错,特别是在扰动数据集上。
节点嵌入可以拓展到连接嵌入上。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从 LinkedHashMap 源码到手撕 LRU 缓存

大家好,我是 方圆。最近在刷 LeetCode 上LRU缓存的题目,发现答案中有 LinkedHashMap 和自己定义双向链表的两种解法,但是我对 LinkedHashMap 相关源码并不清楚,所以准备学习和记录一下。如果大家想要找刷题路线的话,可…

Windows如何体验使用Linux

一、背景 因早上刷抖音时,刷到一博主介绍WSL这个东东,因已很少在本地电脑操作Linux环境,咱们来看下这个和传统的vmware workstation 、virtualbox虚拟机有啥不同,WSL如何安装和使用;另提前声明,WSL不推荐用…

超实用!五种常用的多离散化小技巧

一、引言 「离散化」在数据分析中扮演着重要的角色。通过将连续型变量转化为离散型变量,我们可以更好地理解和分析数据,从而揭示出潜在的模式和关系。本文的目的是介绍五种常用的多离散化小技巧,它们可以帮助数据分析人员有效地处理连续变量。…

企业架构LNMP学习笔记34

LVS-DR模式: 老师分析: 1、首先用户用CIP请求VIP 2、根据上图可以看到,不管是Director Server还是Real Server上都需要配置VIP,那么当用户请求到达我们的集群网络的前端路由器的时候,请求数据包的源地址为CIP目标地址…

02. Kubeadm部署Kubernetes集群

目录 1、前言 2、Kubernetes部署方式 3、kubeadmin部署 3.1、关闭防火墙 3.2、配置阿里云Kubernetes源 3.3、安装kubeadm,kubelet,kubectl 3.4、初始化master节点 3.5、master节点配置kubectl命令行工具 3.6、master节点下载flannel网络配置文件…

Java 抽象类能不能实例化

短回答就是:不能 这里有 2 个概念,什么是抽象类和什么是实例化。 实例化 实例化简单来说就是为 Java 中使用的对象分配存储空间。 抽象类 从代码上来说,抽象类就是一个用 abstract 关键字来修饰的类。 这个类除了不能被实例化以外&#x…

第16章_瑞萨MCU零基础入门系列教程之CAN 协议

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…

喜报 | 实力亮相2023服贸会,擎创科技斩获领军人物奖创新案例奖

近日,由中华人民共和国商务部、北京市人民政府共同主办的中国(北京)国际服务贸易交易会(简称服贸会)已圆满落幕。 本次会议中,发布了2023年度“数智影响力”征集活动获奖名单,擎创科技创始人兼CEO杨辰获企…

Jetsonnano B01 笔记5:IIC通信

今日继续我的Jetsonnano学习之路,今日学习的是IIC通信,并尝试使用Jetson读取MPU6050陀螺仪数据。文章提供源码。文章主要是搬运的官方PDF说明,这里结合自己实际操作作笔记。 目录 IIC通信: IIC硬件连线: 安装IIC库文…

【技能树笔记】网络篇——练习题解析(二)

目录 前言 一. 数据链路层的作用 1.1 数据链路层作用 1.2 数据链路层封装 1.3 数据链路层功能 1.4 数据帧格式 二. MAC地址及分类 2.1 MAC地址 2.2 MAC地址分类 三. 交换机的作用 3.1 交换机的作用 3.2 交换机作用 四.交换机的工作原理 4.1 交换机的工作原理 4.…

spring---第七篇

系列文章目录 文章目录 系列文章目录一、什么是bean的自动装配,有哪些方式?一、什么是bean的自动装配,有哪些方式? 开启自动装配,只需要在xml配置文件中定义“autowire”属性。 <bean id="cutomer" class="com.xxx.xxx.Customer" autowire="…

【侯捷C++面向对象 】(上)

1.C 编程简介 & 目标 培养代码正规编范class 分为 带pointer 和 不带pointer的 学习C &#xff1a; 语言 标准库 2.C vs C C语言 &#xff1a; &#xff08;type&#xff09;数据 函数 —create—》 数据sC &#xff1a; (class ) 数据 成员 —create—》 对象不带指…

AI伦理:科技发展中的人性之声

文章目录 AI伦理的关键问题1. 隐私问题2. 公平性问题3. 自主性问题4. 伦理教育问题 隐私问题的拓展分析数据收集和滥用隐私泄露和数据安全 公平性问题的拓展分析历史偏见和算法模型可解释性 自主性问题的拓展分析自主AI决策伦理框架 伦理教育的拓展分析伦理培训 结论 &#x1f…

【LeetCode-中等题】34. 在排序数组中查找元素的第一个和最后一个位置

文章目录 题目方法一&#xff1a;二分查找&#xff08;先找到mid&#xff0c;在根据mid确定左右区间&#xff09;方法二&#xff1a;分两次二分查找&#xff0c;一次用于找左区间&#xff0c;一次用于找右区间 题目 方法一&#xff1a;二分查找&#xff08;先找到mid&#xff0…

第六讲:如何构建类的事件(上)

【分享成果&#xff0c;随喜正能量】世界上凡是人聚集的地方&#xff0c;讨论的话题无外乎三个&#xff1a;拐弯抹角的炫耀自己、添油加醋的贬低别人、相互窥探的搬弄是非。人性的丑陋就是&#xff1a;在无权无势、善良的人身上挑毛病&#xff1b;在有权有势的人身上找优点。。…

【硬件设计】硬件学习笔记二--电源电路设计

硬件学习笔记二--电源电路设计 一、LDO设计1.1 LDO原理1.2 LDO参数1.3 应用 二、DC-DC设计2.1 DC-DC原理2.2 DC-DC参数介绍2.4 DC-DC设计要点2.5 DC-DC设计注意事项 写在前面&#xff1a;本篇笔记来自王工的硬件工程师培训课程&#xff0c;想要学硬件的同学可以去腾讯课堂直接搜…

【LeetCode-中等题】69. x 的平方根

文章目录 题目方法一&#xff1a;二分查找 题目 方法一&#xff1a;二分查找 假设求8的平方根&#xff0c;那就设置left 0 &#xff0c;right 8&#xff1b; 每次取最中间的元素的平方和8对比&#xff0c;如果大于8&#xff0c;则right mid-1&#xff0c;如果小于8 left mi…

第二节 极限 (一)

一、极限的定义(了解) 二、求极限的方法 (重点 大题8分 选择4分 填空4分) (1) 直接代入 (只要有意义) (2) 洛必达法则&#xff08;80%解题法&#xff09; (3) 无穷小和无穷大的性质 (4) 三种特例 (5) 两个重要极限 (6) 等价无穷小的替换 三、真题 方法一&#xff…

蓝桥杯官网填空题(振兴中华)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明参加了学校的趣味运动会&#xff0c;其中的一个项目是&#xff1a;跳格子。 地上画着一些格子&#xff0c;每个格子里写一个字&#xff0c;如下所示&#xff1…

字符编码(idea)

File----------settings-------------Editor------------File Encodings