图机器学习-节点嵌入(Node Embedding)

news2025/2/28 6:35:52

图机器学习-节点嵌入(Node Embedding)

Node Embedding简单点来说就是将一个node表示为一个 R d R^d Rd的向量。

Encoder+Decoder Framework

我们首先需要设计一个encoder对节点进行编码。既然要比较相似度那么我就需要定义节点的相似度。同时我们还需要定义一个decoder,它是一个从embedding space到相似度得分的映射。最后我们需要优化encoder的参数,使得nodes在embedding space的相似度和在原始图中的相似度尽量相近。

最简单的encoder是一个embedding-lookup

在这里插入图片描述

我们可以观察embedding matrix的结构,它的维度为(节点的维度,节点的个数)。

随机游走

如何定义节点的相似度是一个核心的问题。我们可以使用随机游走来帮助我们定义节点相似度。

在这里插入图片描述

随机游走,这个方法正如其名。假设我们有一个图和一个初始的节点,这个节点上有一个人,我们随机选择一个当前节点的邻居然后将人移动到我们选择的邻居节点然后我们继续从人所在节点的邻居节点随机选择一个,一直持续上述的动作。我们把经过的节点定义为random walk on the graph。(需要注意的是我们可以使用不同的随机游走策略)

假设我们使用了随机游走这个方法我们定义两个节点的相似度为两个节点出现在一个random walk on the graph的概率。

我们定义 N R ( u ) N_R(u) NR(u)为neighbourhood of 𝑢 obtained by some random walk strategy R

我们的目标是学习到一个映射 f ( u ) = z u f(u)=\mathbf{z}_u f(u)=zu,将一个节点映射到一个d维的向量空间。我们要求解如下的优化问题。
max ⁡ f ∑ u ∈ V log ⁡ P ( N R ( u ) ∣ z u ) \max _{f} \sum_{u \in V} \log \mathrm{P}\left(N_{\mathrm{R}}(u) \mid \mathbf{z}_{u}\right) fmaxuVlogP(NR(u)zu)
即我们希望在我们encoding一个节点之后,这个节点到达 N R ( u ) N_R(u) NR(u)的概率最大。

那么我们应该怎么优化呢?

首先我们需要使用某种随机游走策略进行短的定长的随机游走,对于每一个节点收集 N R ( u ) N_R(u) NR(u)。最大化上面这个问题等同于最小化
L = ∑ u ∈ V ∑ v ∈ N R ( u ) − log ⁡ ( P ( v ∣ z u ) ) \mathcal{L}=\sum_{u \in V} \sum_{v \in N_{R}(u)}-\log \left(P\left(v \mid \mathbf{z}_{u}\right)\right) L=uVvNR(u)log(P(vzu))
其中
P ( v ∣ z u ) = exp ⁡ ( z u T z v ) ∑ n ∈ V exp ⁡ ( z u T z n ) P\left(v \mid \mathbf{z}_{u}\right)=\frac{\exp \left(\mathbf{z}_{u}^{\mathrm{T}} \mathbf{z}_{v}\right)}{\sum_{n \in V} \exp \left(\mathbf{z}_{u}^{\mathrm{T}} \mathbf{z}_{n}\right)} P(vzu)=nVexp(zuTzn)exp(zuTzv)
在这里插入图片描述

但是在实际的计算中这样计算复杂度过高,我们可以使用negative sampling来做计算加速。

在这里插入图片描述

其中 n i n_i ni为negative samples。理论上来说 n i n_i ni应该选取为不在节点u的随机游走序列里面的节点,但实际中人们往往使用图中的任意节点。

当我们有了目标函数之后相当于需要求解一个无约束优化问题,所以我们可以使用随机梯度下降等一些优化方法对目标函数进行优化。

那我们可以有哪些随机游走的策略呢?

deep walk

只需要从每个节点开始进行固定长度、无偏倚的随机行走。

node2vec

这个方法希望使用灵活的、有偏差的随机行走,使得其可以在网络的局部和全局视图之间进行权衡。

我们可以使用广度优先搜索(BFS)和深度优先搜索(DFS)两个策略来定义节点的邻居 N R ( u ) N_R(u) NR(u)。node2vec方法中有两个参数需要调节

  • returnparameter p:control probobility return back to the previous node
  • in-out parameter q:Intuitively, 𝑞 is the “ratio” of BFS vs. DFS

在这里插入图片描述

假设有一个人上一步是从S1走到W,那么下一步走到各个节点的概率(没有归一化)如图所示。

对图做embedding

方法一:将(子)图上包含的节点的node embedding相加作为图的embedding

方法二:提出一个虚拟节点来表示子图,接着对这个虚拟节点做embedding

方法三:Anonymous Walk Embeddings, ICML 2018 https://arxiv.org/pdf/1805.11921.pdf

在方法三种Anonymous Walk中的状态为我们在随机行走中第一次访问该节点的索引

在这里插入图片描述

以这张图片为例子,random walk1和random walk2都是相同的anonymous walk。

我们可以先设定一个随机游走的长度l,比如设定l=3,此时只有5种可能,分别为:111, 112, 121, 122, 123。我们可以将图表示为一个5维的向量 z G \mathbf{z}_G zG z G \mathbf{z}_G zG表示出现anonymous walk w i w_i wi的概率

我们需要的随机游走数量可以由下面这个公式算出( η \eta η为随机游走长度为l时的可能总数)

We want the distribution to have error of more than 𝜀 with prob. less than 𝛿:
m = ⌈ 2 ε 2 ( log ⁡ ( 2 η − 2 ) − log ⁡ ( δ ) ) ∣ m=\left\lceil\frac{2}{\varepsilon^{2}}\left(\log \left(2^{\eta}-2\right)-\log (\delta)\right) \mid\right. m=ε22(log(2η2)log(δ))
Reference:

1:Stanford CS224W

2:b站up主同济子豪兄

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

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

相关文章

Java线程的生命周期的五种状态

在java中,任何对象都要有生命周期,线程也不例外,它也有自己的生命周期。当Thread对象创建完成时,线程的生命周期便开始了,当run()方法中代码正常执行完毕或者线程抛出一个未捕获的异常(Exception)或者错误(Error)时&am…

通信原理简明教程 | 数字基带传输

文章目录1数字基带传输系统的基本组成2 数字基带信号及其频域特性2.1 基本码型2.2 常用码型2.3 数字基带信号的功率谱3 码间干扰3.1 码间干扰的概念(ISI)3.2 无码间干扰传输的条件3.3 无码间干扰的典型传输波形4 部分响应和均衡技术(*&#x…

java+ssm网上书店图书销售评价系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 2 第3章 系统分析 4 3.1 需求分析 4 3.2 系统可行性分析 4 3.2.1技术可行性:技术背景 4 3.2.2经…

【蓝桥云课】位运算

一、原码、反码、补码 原码:符号位(正数为0、负数为1)二进制数 反码:正数的反码正数的原码;负数的反码负数的原码除符号位外按位求反 补码:正数的补码正数的反码;负数的补码负数的反码1 整数原…

基于SPN实现的密码学课程设计(附完整代码)

就是如图所示的一个过程! 1.1 初次写SPN 初代SPN 为了方便的使用S盒P盒的那些运算(直接使用数组, 而不使用位运算),所以想起了C语言课上学的

HTML基本常用标签

<!doctype html> <html> <head> <title>HTML的常用标签</title> <meta charset"UTF-8"> <!-- 这行代码是告诉浏览器使用UTF-8字符集打开; 而不是设置当前页面的编码方式 --> </head> <bo…

SSH命令

概念 安全外壳协议&#xff08;Secure Shell Protocol&#xff0c;简称SSH&#xff09;是一种加密的网络传输协议&#xff0c;可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道&#xff08;secure channel&#xff09;来实现SSH客户端与服务器之间…

结构体的内存对齐与位段的实现

本篇文章重点介绍结构体相关知识以及深入介绍的结构体的内存对齐与位段的实现 ———————————— 内存对齐位段——————————————————一.结构体1.结构体类型的声明1.1基础知识1.2声明1.3特殊声明1.4结构体的自引用1.5结构体变量的定义和初始化与访问2.结…

C 语言零基础入门教程(八)

C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 C 语言把任何非零和非空的值假定为 true&#xff0c;把零或 null 假定为 false…

JVM快速入门学习笔记(四)

15.GC &#xff1a;垃圾回收机制 垃圾回收的区域只有在堆里面&#xff08;方法区在堆里面&#xff09; 15.1 垃圾回收 GC JVM 在进行垃圾回收&#xff08;GC&#xff09;时&#xff0c;并不是堆这三个区域统一回收。大部分时候&#xff0c;回收都是新生代~   1.新生代   …

Opencv项目实战:19 手势控制鼠标

目录 0、项目介绍 1、效果展示 2、项目搭建 3、项目代码展示 HandTrackingModule.py VirtualMouse.py 4、项目资源 5、项目总结 0、项目介绍 在Opencv项目实战&#xff1a;15 手势缩放图片中&#xff0c;我们搭建了HandTrackingModule模块&#xff0c;但在这里你还得用…

离散数学与组合数学-04图论上

文章目录离散数学与组合数学-04图论上4.1 图的引入4.1.1 图的示例4.1.2 无序对和无序积4.1.3 图的定义4.2 图的表示4.2.1 集合表示和图形表示4.2.2 矩阵表示法4.2.3 邻接点与邻接边4.3 图的分类4.3.1 按边的方向分类4.3.2 按平行边分类4.3.3 按权值分类4.3.4 综合分类方法4.4 图…

MySQL —— 表操作

目录 一、创建表 二、创建表的案例 三、查看表的结构 四、修改表 五、删除表 一、创建表 语法&#xff1a; CREATE TABLE [IF NOT EXISTS] table_name(field1 datatype1 [COMMENT 注释信息],field2 datatype2 [COMMENT 注释信息],field3 datatype3 [COMMENT 注释信息] )…

通信原理简明教程 | 模拟信号的数字化传输

文章目录1 抽样及抽样定理1.1 抽样1.2 抽样定理2 量化及量化信噪比2.1 均匀量化2.2 量化误差和量化信噪比2.3 非均匀量化3 编 码3.1常用的二进制码组3.2 均匀量化编码方法3.3 A律13折线编码4 脉冲编码调制系统4.1 PCM系统的码元速率4.2 PCM系统的抗噪声性能5 预测编码5.1 差分脉…

【Kotlin】扩展函数 ③ ( 定义扩展文件 | 重命名扩展函数 | Kotlin 标准库扩展函数 )

文章目录一、定义扩展文件二、重命名扩展函数三、Kotlin 标准库扩展函数一、定义扩展文件 如果定义的 扩展函数 需要在 多个 Kotlin 代码文件 中使用 , 则需要在 单独的 Kotlin 文件 中定义 , 该文件被称为 扩展文件 ; 定义 标准库函数 的 Standard.kt 就是 独立的 扩展文件 ;…

IDEA搭建Finchley.SR2版本的SpringCloud父子基础项目-------Feign负载均衡

1.概述 官网&#xff1a;http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口&#xff0c;然后在上面添加注解&#xff0c;同时也支…

[Linux]进程地址空间

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【LINUX】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文…

谁你的财神 谁是你的穷神

送穷神&#xff0c;迎灶神&#xff0c;下午提前准备迎接财神 我们说一个人穷&#xff0c;揭不开锅了&#xff0c;只能喝凉水了&#xff0c;到后来只能喝西北风 谁是我们的财神&#xff0c;信任我们的人&#xff0c;帮助我们的人&#xff0c;感谢过往贵人的资助 但是信任是不对…

【数据结构】算法复杂度

文章目录引入算法复杂度一.时间复杂度定义大O渐进表示法经典例题常量字符串二分查找冒泡排序递归1.阶乘2.斐波切纳数列二.空间复杂度定义经典例题冒泡排序递归1.阶乘2.斐波切纳数列引入 为什么要有算法复杂度&#xff1f; 当我们正在解决一个问题的时候&#xff0c;想出了多种思…

【计算机基础】操作系统

前言&#xff1a;本文适合用于基础了解和背诵&#xff0c;尽可能采用流畅且简短的语言回答操作系统相关问题并且辅以图片帮助记忆&#xff0c;不适合用作详细了解与深入学习 。 总述 操作系统部分主要分为以下几个重点 —— 操作系统基础 、 进程和线程、操作系统的内存管理、…