Graph—随机游走

news2024/11/17 13:29:14

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/497025.html

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

相关文章

《计算机网络—自顶向下方法》 第二章Wireshark实验:HTTP协议分析

HTTP 协议工作于客户端-服务端架构上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。 WEB 服务器有:Apache服务器,IIS服务器(Internet Information Services)等。URL:即统一资源定位符(…

手写自己的Springboot-1-整合tomcat

文章目录 创建自己的Springboot创建项目注册、启动Spring容器启动tomcat 引用测试 创建自己的Springboot 首先明确本文章想要达到的目的,就是引入我们自己写的Springboot项目的依赖,无需配置,就可以达到处理普通请求的效果. 这里有一个非常简单的Springboot项目,项目里面就只…

将 Segment Anything 扩展到医学图像领域

文章目录 前言技术交流SAM 拆解分析从医学角度理解 SAM 的效用MedSAM实验总结 前言 SAM 是一种在自然图像分割方面取得成功的模型,但在医学图像分割方面表现不佳。MedSAM 首次尝试将 SAM 的成功扩展到医学图像,并成为用于分割各种医学图像的通用工具。为…

22.网络爬虫—APP数据抓取详讲

网络爬虫—APP数据抓取详讲 Fiddler工作原理安装完成Fiddler后的配置前提条件工具配置 手机数据抓取Fiddler手机端配置手机端操作 实战演示后记 前言: 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新…

springboot+mybatis搭建maven多模块工程

最近看了一篇博客,选定springbootmybatis作为框架,在idea中搭建maven的多模块工程,下面也再温习一下,并将搭建过程分享出来,供小伙伴们参考。 1、开发工具及系统环境 Idea 2020.3系统环境为win10mysql5.7springboot2.…

GNN学习/GCN学习/GNN环境配置cuda安装/GCN代码展示

参考: A Gentle Introduction to Graph Neural Networks https://distill.pub/2021/gnn-intro/Understanding Convolutions on Graphs https://distill.pub/2021/understanding-gnns/Graph neural networks: A review of methods and applications https://arxiv.org/pdf/1812…

【Java】认识异常

目录 1.异常概念和分类 2.异常的抛出 3.异常的捕获 3.1异常声明throws 3.2异常捕获try-catch 3.3finally 3.4.异常的处理流程 4.自定义异常类 1.异常概念和分类 public class Test {public static void test() {test();}public static void main(String[] args) {Sy…

详解数据集safety-pilot-model-deployment-data

safety-pilot-model-deployment-data这个数据集是由美国交通部的联邦航空管理局(FAA)和交通运输部(DOT)主导的“安全试点”(Safety Pilot Model Deployment)项目所提供的。该项目旨在研究汽车与飞机之间的通…

Vue电商项目--开发Search模块与mockjs模拟数据

Search模块中商品分类与过度动画 现在完成了在/home路由下实现三级导航组件的显示隐藏 通过this.$route.path!/home在搜索页面显示,通过方法鼠标移入移出从而又控制在search路由下的显示隐藏 过渡动画:前提组件|元素必要又v-if| v-show指令才可以进行…

Linux进程状态及优先级

本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 进程状态及优先级 前言正文进程状态就绪运行状态R阻塞睡眠状态 S休眠状态D挂起 暂停状态T前台与后台进程待追踪暂停状态t 死亡状态 X僵尸状态 Z 孤儿进程进程优先级查…

nginx(七十三)nginx与Location响应头细节探讨

一 nginx与Location响应头细节探讨 ① 重定向和Location回顾 多种重定向跳转方式的差异 nginx之absolute_redirect、server_name_in_redirect、port_in_redirect 共同控制Location响应头 ② STS响应头导致307重定向 "第一次访问 http://www.baidu.com" 观察…

基于Qt、C++的毕业设计课设数学绘图工具(平面图、图表、立体图绘制-附下载链接)

基于Qt、C的毕业设计课设数学绘图工具(平面图、图表、立体图绘制) 介绍 这是我的毕业设计,基于Qt Creator 4.11.1,c语言。 效果图如下 点我下载项目源码(含打包软件) 使用说明 1. 二维函数绘制 开始界面…

python 系列 07 - 基于easyocr的ocr识别

OCR,光学文字识别,对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。本示例通过easyocr库来演示。easyocr是一个比较流行的库,支持超过80种语言。安装的时候注意会附带安装torch库(一个深度学…

将ROS1和ROS2安装到同一个ubuntu系统中,ROS2安装??????????????

1. 本文测试环境: ubuntu:20.04,虚拟机 ROS1:noetic ROS2:foxy 2. 先说结论 ROS1 与 ROS2 共存,需要考虑三个问题: 1) 不同Ubuntu版本,有不同版本的ROS1和ROS2推荐,尽量不要任性地乱装; 2)ROS1和ROS2安装过程中,是否会出现文件“删改”的问题?目前使用下来,并…

拓扑排序详解(包含算法原理图解、算法实现过程详解、算法例题变式全面讲解等)

前置知识 有向无环图 在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。 如图所示。 入度 对于一个有向图,若x点指向y点,则称x点为y点的入度。 出度…

Redis --- 多级缓存

一、什么是多级缓存 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈Redis缓存失效时&#xff…

python每日一练:硬币划分(多方法详解)

文章目录 前言0、题目一、暴力总是不能解决问题的二、还能更暴力一点三、减少暴力思想四、引入先进思想总结 前言 这题挺有意思的,典型的背包组合问题,虽然没有要求各种组合方式,不过我们可以试试给出组合方式。当然这题不太可能用一行代码解…

STM32 从入门到精通系列讲解 - 总目录

👦 作者介绍:Bazinga bingo,专注C语言应用硬核干货分享,潜心修炼,虚心学习,立志做嵌入式相关赛道的Top。 📕 本文收录于《STM32开发》专栏,包含STM32内部模块介绍、片内资源开发、不…

如何使用bingChat(使用方法+遇到的问题+感受)

文章目录 前言一、如何使用Bing Chat1. 下载new Bing2.重新注册一个microsoft(此步骤可略过,如有问题再操作此步骤)3. 使用 Bing Chat 二、常见问题1.Chat mode is only available when you have access to the new Bing.2. 网页上没有“聊天…

leetcode 104——二叉树的最大深度

文章目录 题目详情方法一 万能的递归方法二 通过使用层序遍历的方式Java完整代码递归实现非递归实现——借助队列 题目详情 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 l…