图神经网络之Node2Vec详解

article/2025/11/6 21:38:24

目录

  • 背景
    • 传统算法存在的问题
    • 算法背景
    • 动机
  • 算法
    • 随机序列的生成
    • Node2Vec算法
      • 算法的具体流程:
  • 总结
  • 相关资料

背景

传统算法存在的问题

  1. 一些方法中所提出的特征需要依赖人手工定义,这需要特定领域内专业人士来完成,而且依靠人手工定义特征的有效性无法保证。
  2. 利用一些非监督学习中的降维方法计算效率低,准确度也不够,而且还不能反应出网络的结构特征。

算法背景

  1. Node2Vec继承于随机游走模型DeepWalk算法模型,也是属于图神经网络种随机游走模型一类。
  2. 作者提出网络结构中存在以下两种现象:
    1)同质性:社区关系结构,即同一社区节点表示相似。其中,社区指节点内部结构信息远大于节点外部结构信息的多个节点组成的网络结构,如图中S1、S2、S3、S4、S5、u组成一个社区。
    2)结构相似性:拥有类似结构特征的节点表示相似。如下图中u和S6两个节点存在结构相似性。
     网络结构

动机

设计一个既能保持节点邻居信息而且又容易训练的模型。

算法

随机序列的生成

  1. 为了使得损失函数更加方便计算,引入skip-gram模型的两个假设:
    ①条件独立:即采样的每个邻居都是相互独立的;
    ②特征空间的对称性:两个节点之间的连边表示两者互相之间的影响是等价的。
  2. 节点转移概率计算:如图所示,作者定义了一个概率分布,对于一个随机游走,如果已经采样了,也就是说现在停留在节点v上,且u的上一序列节点为t;
     节点转移概率示意图
  3. 那么下一个要采样的节点的转移概率计算方式为:
    在这里插入图片描述
  4. 其中,参数p、q分别代表了不同含义:
    ① 返回概率p:如果 p>max(q,1) ,那么采样会尽量不往回走,对应上图的情况,就是下一个节点不太可能是上一个访问的节点t。如果 p>max(q,1),那么采样会更倾向于返回上一个节点,这样就会一直在起始点周围某些节点来回转来转去。
    ② 出入参数q:如果 q >1 ,那么游走会倾向于在起始点周围的节点之间跑,可以反映出一个节点的BFS特性。如果 q<1 ,那么游走会倾向于往远处跑,反映出DFS特性。
    ③ 特殊的,当 p=1,q=1时,游走方式就等同于DeepWalk中的随机游走。

Node2Vec算法

Node2Vec算法

算法的具体流程:

1. 根据p、q和之前的公式计算一个节点到它的邻居的转移概率;
2. 将这个转移概率加到图G中形成G';
3. walks用来存储随机游走,先初始化为空;
4. 外循环r次表示每个节点作为初始节点要生成r个随机游走;
5. 其中,对图中每个节点生成一条随机游走walk的流程:a. 将初始节点u添加进去;b. walk的长度为l,因此还要再循环添加l-1个节点;c. 当前节点设为walk最后添加的节点;d. 找出当前节点的所有邻居节点;e. 根据转移概率采样选择某个邻居s;f. 将该邻居添加到walk中;
6. 将walk添加到walks中保存;
7. 然后用SGD的方法对walks进行训练。

总结

Node2Vec的思想跟DeepWalk类似,不过改进了DeepWalk中随机游走的生成方式,使得生成的随机游走可以反映深度优先和广度优先两种采样的特性,从而增加单词嵌入的准确性,提高网络嵌入的效果。

相关资料

论文:node2vec: Scalable Feature Learning for Networks


http://chatgpt.dhexx.cn/article/8iYZSabR.shtml

相关文章

node2vec算法

图嵌入算法 一、背景1.提出2.应用3.特点 二、DeepWalkRandomWalk 三、node2vec引言node2walkskip-gram(用中心词预测周围词) 一、背景 1.提出 ①使用邻接矩阵表示网络时&#xff0c;由于矩阵中大多数元素是0&#xff0c;难以体现节点间关系&#xff0c;同时数据的稀疏性使得计…

node2vec代码实现及详细解析

目录 前言1.数据导入2.node2vecWalk2.1 归一化转移概率2.1.1 原理解析2.1.2 Alias采样2.1.3 代码实现 2.2 node2vecWalk的实现 3.LearnFeatures4.参数选择5.完整代码 前言 在KDD 2016 | node2vec&#xff1a;Scalable Feature Learning for Networks 中我们详细讨论了node2vec…

Node2vec原理剖析,代码实现

DeepWalk原理介绍 与词嵌入类似&#xff0c;图嵌入基本理念是基于相邻顶点的关系&#xff0c;将目的顶点映射为稠密向量&#xff0c;以数值化的方式表达图中的信息&#xff0c;以便在下游任务中运用。 Word2Vec根据词与词的共现关系学习向量的表示&#xff0c;DeepWalk受其启…

Python(Pycharm)常用快捷键

1. Pycharm一键给所有代码加# CtrlA或者Ctrl/ 2. Pycharm格式化代码快捷键&#xff08;即标准化&#xff09; CtrlAltL 【注】qq也可能有此快捷键&#xff0c;把qq删掉就行 其实改掉Pycharm的里面的设置也可以&#xff08;这样就不会冲突了&#xff09; add keyboard shor…

python 中常见的快捷方式

相信大家在写代码的时候经常会用到快捷键&#xff0c;这不仅使编写代码的效率提高不少&#xff0c;还能装 X...下面整理了部分常见快捷键&#xff0c;后期会接着更新。废话不多说&#xff1a; 1.ctrlshiftA:万能命令行 可以新建一个python文件 2. shift两次:查看资源文件 3…

python的快捷键总结

电脑是解决众多问题的工具&#xff0c;尤其对于程序员而言&#xff0c;拥有一套快捷方式&#xff0c;在编程时&#xff0c;可以事半功倍&#xff0c;从而高效地完成工作任务&#xff0c;今天就带来一套快捷方式&#xff0c;仅供大家参考&#xff1a; 常见快捷方式&#xff1a; …

Python快捷键

1.注释(添加/消除)(Ctrl /) 这里说下Python的单行注释是 # , 多行注释是 注释内容 , java的单行注释是 // , 多行注释 /* 注释内容 */, 文档注释 /** 注释内容 */ 这里说的注释快捷键主要用于多行注释, 当你想把一段代码暂时注释掉的时候, 可以直接选中这段代码, 利用此快…

python 常用快捷键和设置

pycharm常用快捷键 转载自 大哥 1、编辑&#xff08;Editing&#xff09; Ctrl Space 基本的代码完成&#xff08;类、方法、属性&#xff09; Ctrl Alt Space 快速导入任意类 Ctrl Shift Enter 语句完成 Ctrl P 参数信息&#xff08;在方法中调用参数&#…

Python常用快捷键整理

Python常用快捷键整理 文章目录 Python常用快捷键整理一、注释二、删除三、格式四、 查看其它1. 代码自动整理 本文列举了常用的快捷键&#xff0c;暂时刚入门&#xff0c;还没有写太多&#xff0c;如有不足之处还请多多指教。 一、注释 行注释/取消行注释: Ctrl / 多行注释&…

python常用快捷键

一、编辑&#xff08;Editing&#xff09; Ctrl Space 基本的代码完成&#xff08;类、方法、属性&#xff09; Ctrl Alt Space 快速导入任意类 Ctrl Shift Enter 语句完成 Ctrl P 参数信息&#xff08;在方法中调用参数&#xff09; Ctrl Q 快速查看文档 F1 外部文档 S…

python常用快捷键,写代码事半功倍

今天就为大家带来一篇Python常用快捷键。觉得挺不错的&#xff0c;现在就分享给大家&#xff0c;也给大家做个参考。 最重要的快捷键 ctrlshiftA:万能命令行shift两次:查看资源文件 新建工程第一步操作 module设置把空包分层去掉,compact empty middle package设置当前的工…

OSGB数据的纹理压缩

运行环境 OSG3.4.1 VS2017 对osgb数据的压缩关键在于纹理的压缩&#xff0c;即可在writeNodeFIie方法中进行操作。 osgDB::writeNodeFile(*rootNode, f_path, new osgDB::Options("WriteImageHintIncludeFile"));osg老版本中的 writeImageHintIncludeFile 有缺陷(…

unity 加载倾斜摄影-C#解析osgb(一)

下载 https://download.csdn.net/download/WantFK/87009338https://download.csdn.net/download/WantFK/87009338 1.提取osgb的图片信息\mesh顶点 \UV\ 三角序列\下一级name\bounds\视距 和保存 &#xff08;提取 目的 解析osgb的流程过于麻烦 真正用地到的就这几个数据 2.un…

osg加载osgb数据_PCM点云数据处理软件功能使用第十六弹

好久不见!今日为大家带来PCM点云数据处理软件功能使用第十六弹——建筑物应用,快跟小编一起学习吧! 该菜单包含两个建筑物应用模块:建筑点云提取、建筑简易模型一 建筑点云提取 建筑物点云提取输入数据为原始点云文件和地面文件,利用法向量对非地面点进行建筑物墙面点云检…

UE加载osgb倾斜摄影数据

1.支持加载大疆智图和CC导出的osgb格式倾斜摄影数据 2.支持编辑器模式&#xff08;不运行&#xff09;加载预览特定精度级别的osgb数据 3.运行时多线程加载osgb文件&#xff0c;分页LOD算法动态加载卸载&#xff0c;内存占用稳定 4.支持海量的osgb数据量加载&#xff0c;支持…

Osgb转3DTiles工具

三维倾斜摄影生产主要格式为Osgb&#xff0c;目前三维模型主要展示场景为web&#xff0c;大部分使用框架都是Cesium库&#xff0c;格式为 3DTiles&#xff0c;目前市面上osgb转3DTiles的软件已经有好几个&#xff0c;付费免费都有。 先说免费软件&#xff1a; 1、CesiumLab …

osgb倾斜模型顶层合并

经过多年的发展&#xff0c;倾斜摄影模型技术已经成熟&#xff0c;在智慧城市、社区管理&#xff0c;安防演练模拟等应用场合非常多&#xff0c;效果也非常好。 倾斜模型顶层合并是一个比较复杂的问题&#xff0c;常规上倾斜模型制作软件&#xff0c;倾斜模型24级别合并到12级…

Threejs加载倾斜摄影OSGB数据

个人主页&#xff1a; 左本Web3D&#xff0c;更多案例预览请点击》 在线案例 个人简介&#xff1a;专注Web3D使用ThreeJS实现3D效果技巧和学习案例 &#x1f495; &#x1f495;积跬步以至千里&#xff0c;致敬每个爱学习的你。获取模型或源码请点赞收藏加留言&#xff0c;有问…

数据处理-倾斜摄影OSGB合并根节点

数据处理-倾斜摄影OSGB合并根节点 背景介绍 web三维地图引擎我们使用的是cesium&#xff0c;因此我们使用的倾斜摄影数据(OSGB)会转换成3DTiles(.b3dm)进行加载。如果倾斜摄影的范围很大或者数据量大&#xff0c;有不少的建筑物什么的&#xff0c;默认转换的3Dtiles数据在前台…

UE5加载osgb倾斜摄影数据

1.支持加载大疆智图和CC导出的osgb格式倾斜摄影数据 2.支持编辑器模式&#xff08;不运行&#xff09;加载预览特定精度级别的osgb数据 3.运行时多线程加载osgb文件&#xff0c;分页LOD算法动态加载卸载&#xff0c;内存占用稳定 4.支持海量的osgb数据量加载&#xff0c;支持…