Graph Embeddings—随机游走基本概念

news2024/11/17 7:20:28

Random Walk Approaches for Node Embeddings

一、随机游走基本概念

请添加图片描述
想象一个醉汉在图中随机的行走,其中走过的节点路径就是一个随机游走序列

随机行走可以采取不同的策略,如行走的方向、每次行走的长度等。

二、图机器学习与NLP的关系

请添加图片描述

从图与NLP的类比关系可以看出,图机器学习和NLP相似度很高,了解两者的类比关系可以加深对图机器学习的理解。

随机游走的根本目标是对图中的各个节点进行编码,将图中的各个节点编码成可供下游任务使用的向量,即编码器。因此,随机游走是一个无监督/自监督算法,没有使用任何标签。

三、概念定义(可以先看后面,用到时再看概念)

请添加图片描述

  1. z u \mathbf{z} _u zu:期望获得的节点 u u u的嵌入向量,是算法的目标

  2. P ( v ∣ z u ) P(v|\mathbf{z} _u) P(vzu):从 u u u节点出发的随机游走序列经过 v v v节点的概率。

    如果 u u u节点和 v v v节点出现在同一个随机游走序列,那么 P P P值应该高;如果 u u u节点和 v v v节点没有出现在同一个随机游走序列,那么期望 P P P应该低,这也是之后优化算法的根本思路。

  3. P ( v ∣ z u ) P(v|\mathbf{z} _u) P(vzu)的计算:本文使用softmax计算 P P P值,具体计算方法在“五、优化算法”中,这里只介绍两个非线性函数

    • softmax:将k维的向量的值通过softmax改为k维的概率值,其中:
      σ ( z ) [ i ] = e z [ i ] ∑ j = 1 K e z [ j ] \sigma(z)[i]=\frac{e^{z[i]}}{\sum_{j=1}^K e^{z[j]}} σ(z)[i]=j=1Kez[j]ez[i]

    • sigmoid:将k维嵌入向量的值映射到0-1,其中:
      S ( x ) = 1 1 + e − x S(x)=\frac{1}{1 + e^{-x}} S(x)=1+ex1

  4. 相似度similarity:数量积(余弦相似度)

    因为嵌入向量 z z z在最后都通过计算使其度量(向量长度)相同,所以可以直接求向量积来代表其相似度。
    s i m i l a r i t y = z u T z v similarity=\mathbf{z} _u ^T \mathbf{z} _v similarity=zuTzv

  5. N R ( u ) N_R(u) NR(u):选定游走策略为R,在 u u u节点为起点的条件下,访问得到的节点的集合。

四、随机游走算法

1、特征学习优化策略:

请添加图片描述

优化算法总目标:对于给定的图 G G G,随机游走的目标是找到一个函数 f f f,其可以将节点 u u u映射为 d d d维的向量 z u \mathbf{z} _u zu

似然目标函数:如图,在确定出发节点 u u u的条件下(即向量 z u \mathbf{z} _u zu),与 u u u节点同一序列的节点集合 N R ( u ) N_R(u) NR(u)中的节点出现的概率最大。可以看出其本质是极大似然估计。

2、随机游走优化策略:

请添加图片描述

  1. 选定游走策略R,对每个节点 u u u进行固定长度的随机游走。
  2. 对每个节点 u u u,收集 N R ( u ) N_R(u) NR(u)
  3. 对于给定的节点 u u u N R ( u ) N_R(u) NR(u),更新 z u \mathbf{z} _u zu,使优化目标函数最大。最终得到的 z u \mathbf{z} _u zu即维节点 u u u的嵌入向量。

其中,优化目标函数在随机游走算法中等同于:

请添加图片描述

其中,第一个求和符号 u ∈ V u \in V uV代表遍历图 G G G的所有节点,第二个求和符号 v ∈ N R ( u ) v \in N_R(u) vNR(u)代表遍历所有 N R ( u ) N_R(u) NR(u)中的节点, l o g log log加负号使求最大变为求最小,这样,优化目标函数变为了损失函数。

P ( v ∣ z u ) P(v|\mathbf{z} _u) P(vzu)使用softmax进行求解。

进一步解释如图:

请添加图片描述

3、随机游走算法的优化—负样本:

请添加图片描述

从图中可以看出,在计算softmax时,需要遍历图 G G G的顶点两次,时间复杂度为 O ( ∣ V ∣ 2 ) O(|V|^2) O(V2),这是不可接受的。

在此使用负采样解决softmax难算问题:

请添加图片描述

如图,在计算softmax时,对于分母,不用计算图中所有的节点,而是采样 k k k个负节点进行计算。注意:图 G G G中每个节点的采样概率是不同的,在Node2Vec中采用类似于Word2Vec中词频的方法。

此方法原理解释如下:

请添加图片描述

关于K的取值是一个超参数:

请添加图片描述

更高的K意味着采样更多的点,这回增加模型的健壮性。但是相同的更多的会引入更多的负样本,这回导致正负样本失衡,影响训练,因此一般来说K的取值在5到20之间。理论上,同一个随机游走序列中的节点不应被采样为负样本。

4、优化过程—随机梯度下降

因这里是机器学习的基础,故在此不做赘述:

请添加图片描述
请添加图片描述

五、总结

请添加图片描述

  1. 选定游走策略R,对每个节点 u u u进行固定长度的随机游走。
  2. 对每个节点 u u u,收集 N R ( u ) N_R(u) NR(u)
  3. 利用损失函数,采用随机梯度方法对 z u \mathbf{z} _u zu进行优化。损失函数可以采用负样本算法简化计算。

本文只是将游走策略抽象为R,那么具体什么样的策略是真正有效的呢,Node2Vec提供了一个解决思路,下文将会其具体讨论。

图片截选自——斯坦福CS224W: Machine Learning with Graphs

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

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

相关文章

【计算机网络】总结篇

【C语言部分】总结篇 【操作系统】总结篇 【数据库(SQL)】总结篇 本文目录 1. 简述网络七层参考模型及每一层的作用2. 简述静态路由和动态路由3. 说说有哪些路由协议,都是如何更新的4. 简述域名解析过程,本机如何干预域名解析5. 简…

智能算法系列之粒子群优化算法

本博客封面由ChatGPT DALLE 2共同创作而成。 文章目录 前言1. 算法思想2. 细节梳理2.1 超参数的选择2.2 一些trick 3. 算法实现3.1 问题场景3.2 python实现 代码仓库:IALib[GitHub] 前言 本篇是智能算法(Python复现)专栏的第三篇文章,主要介绍粒子群优化…

2023年的深度学习入门指南(9) - SIMD和通用GPU编程

2023年的深度学习入门指南(9) - SIMD和通用GPU编程 深度学习从一开始就跟GPU有不解之缘,因为算力是深度学习不可或缺的一部分。 时至今日,虽然多任务编程早已经深入人心,但是很多同学还没有接触过CPU上的SIMD指令,更不用说GPGPU…

【Segment Anything Model】论文+代码实战调用SAM模型预训练权重+相关论文

上篇文章已经全局初步介绍了SAM和其功能,本篇作为进阶使用。 文章目录 0.前言1.SAM原论文 1️⃣名词:提示分割,分割一切模型,数据标注,零样本,分割一切模型的数据集 2️⃣Introduction 3️⃣Task: prompta…

【五一创作】系统集成项目管理工程师-【11 人力资源】

持续更新。。。。。。。。。。。。。。。 【第十一章】人力资源 3分11.1 项目人力资源管理的定义及有关概念11.1.1 项日人力资源管理及其过程的定义2. 人力资源管理过程【掌握】11.1.2 人力资源管理相关概念11.2 编制项目人力资源管理计划11.2.1制定人力资源管理计划的技术和工…

IDEA编译报错:Error:java: 无效的源发行版: 17,一次搞定

出现这种错误的原因可能是: 1.本机默认使用(编译)的jdk与该项目所使用的jdk版本不同。 2.jdk版本不适用于这个Idea,很典型的一个例子就是使用的Idea是2020的,而你用到的jdk是17,jdk17是2021年推出的&#…

【K8S系列】深入解析Job

序言 你只管努力,其他交给时间,时间会证明一切。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点 Kubernetes (k8s) 是一个容器编排平台&#x…

UDP的报文结构

UDP 报文结构 基本上所有的教科书上都是这样画的图, 但实际上 UDP 报文结构不是这样的, 这样显示应该是容易排版. 正确应该如下图 : 端口号 : 每个端口号在 UDP 报文里占两个字节, 取值范围就是: 0 ~ 65535 源 ip 和源端口描述了数据从哪里来, 目的 ip 和目的端口描述了数据去哪…

操作系统基础知识介绍之指令集体系结构:RISC-V寄存器(掺杂与ARM和X86部分比对)

ra : 返回地址寄存器,用来保存函数或宏的返回地址 。 sp : 栈指针寄存器,用来指向栈顶的内存地址 。 gp : 全局指针寄存器,用来指向全局变量的内存地址 。 tp : 线程指针寄存器,用来指向线程局部变量的内存地址 。 t0 - t6 : 临时…

OpenGL加载模型 之网格

基础知识点 我们的工作就是去解析这些导出的模型文件,并将其中的模型数据存储为OpenGL能够使用的数据。一个常见的问题是,导出的模型文件通常有几十种格式,不同的工具会根据不同的文件协议把模型数据导出到不同格式的模型文件中。有的模型文…

【镜像取证篇】仿真碎片-记一次镜像仿真失败的复盘过程

【镜像取证篇】仿真碎片-记一次镜像仿真失败的复盘过程 这个是很久以前的一个镜像实验,当时仿真可以看到Windows的启动界面,但却一直无法正常进入系统,不断的尝试修复,都是显示错误,最后把类型改为IDE后,成…

ESP32-设备驱动TMP102数字温度传感器驱动

TMP102数字温度传感器驱动 文章目录 TMP102数字温度传感器驱动1、TMP102介绍2、硬件准备3、软件准备4、驱动实现1、TMP102介绍 TMP102 器件是一款数字温度传感器,非常适合需要高精度的 NTC/PTC 热敏电阻更换。 该器件提供 0.5C 的精度,无需校准或外部组件信号调理。 器件温度…

Spring Task

1.1介绍 Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。 定位:定时任务框架 作用:定时自动执行某段Java代码 为什么要在Java程序中使用Spring Task? 应用场景: 1).信用卡每…

C learning_11 (数组和在内存存储的理解、数组越界、数组作为形参)

目录 数组的理解 数组越界 数组作为函数参数 数组的理解 数组的含义 在C语言中,用于存储多个相同类型的元素。它可以被简单地定义为包含多个元素的容器。数组中每个元素都可以通过索引来访问,索引从零开始递增。 C语言中的数组可以包含任何基本数据类…

力扣---LeetCode141/142. 环形链表 (I)和(II) (代码详解+流程图+数学逻辑拓展)

文章目录 前言141. 环形链表 I1.1 链接:1.2 思路:1.3 代码:快慢指针1.4 流程图: 142. 环形链表 II2.1 链接:2.2 思路:2.3 代码:2.4 流程图: 拓展问题及证明(面试常问):3.…

【雅特力】单片机AT32F421系列入门资料

1. 命名规则 AT32 全系列MCU选型手册.PDF AT32F421F8P7 AT32F421C8T7 (雅特力厂商送样的两个芯片版本) 2. 数据手册 【 数据手册】AT32F421系列引脚定义、电气特性与封装特性.PDF 3. 技术手册 【技术手册】AT32F421系列各外设(Peripheral)完整说明与各寄存器(Register)定…

[架构之路-190]-《软考-系统分析师》-4-据通信与计算机网络-5-图解CRC计算方法与步骤

目录 一、概述: 二、实战演示 假设: 第1步:把多项多项式转化为除数 第2步:把发送数据转换为被除数:在信息序列后加0 第3步:信息序列除以多项式序列 第4步:获得余数(CRC校验值…

OpenCV4.x图像处理实例-搭建身份识别系统

搭建身份识别系统 文章目录 搭建身份识别系统1、人脸识别系统介绍2、人脸特征数据提取3、人脸识别模型训练4、从静态图像进行身份识别5、从视频流识别身份在本文中,将介绍如何使用 OpenCV 搭建一个人脸检测与身份识别系统。 为了构建我们的人脸识别系统,我们将首先执行人脸检…

对称加密与非对称加密、证书、SSL/TLS握手过程

文章目录 对称加密(Symmetrical Encryption):非对称加密(Asymmetric Encryption):区别:SSL证书TLS1.2握手过程 对称加密(Symmetrical Encryption): 对称加密,是一种既简单速度又快的加密方式,加密与解密使用…

大数据之PySpark的RDD介绍

文章目录 前言一、RDD简介二、RDD的特性三、RDD的特点总结 前言 #博学谷IT学习技术支持# 之前的文章主要介绍Spark基础知识,例如集群角色、Spark集群运行流程等,接下来会进一步讨论Spark相对核心的知识,让我们拭目以待,同时也期待…