【补充】图神经网络前传——Node2vec

Node2Vec【图神经网络论文精读】_哔哩哔哩_bilibili

解决的问题:图嵌入

把每一个节点编码成一个d维的低维、稠密(不是one-hot)、连续(不是离散的,是实数->有助于保存更多的信息)向量,并且,这个向量应该包含原来节点的一些信息,特别是语义信息,同时还有结构信息、社群信息、邻域信息。

embedding之后,就可以正常ML了。 

不仅仅节点可以做embedding。这里的node2vec是对节点做embedding。

手工构造的特征有很好的可解释性,但是不一定是很好的特征。node2vec和deepwalk都是基于随机游走的方法。

deepwalk只能把相邻或者相近的点聚在一起,但是其他的不可以,比如苏伊士运河和巴拿马运河的功能类似,但是离得远,就没办法放在一起。

而对于node2vec,这里的随机游走就不再是完全的随机游走了,而是有偏随机游走。上图中,我们是从节点t走到了节点v,现在,我们要决定下一步向哪里走,这个时候我们有三个选择,返回(t节点),绕圈,走出去(离t更远了)。通过调整p q参数,来影响下一步往哪儿走。

(弹幕:这个功能相似性直观上好像是有偏游走的概率分布的相似性体现的)

不同的搜索策略会捕捉节点的不同特征。

这里的随机游走时2阶随机游走,而不是deepwalk中的1阶。在deepwalk中,下一个节点的采样仅取决于当前点的位置,而在node2vec中下一个节点不仅取决于当前节点,还要取决于上一个节点。->二阶随机游走/二阶马尔可夫

deepwalk可以看作是node2vec在p=1,q=1情况下的特例->可以通过调整p q值

优缺点

第二个优点纠正:节点分类->embedding

Node2Vec论文逐句精读_哔哩哔哩_bilibili

(这里并不是完全的笔记,仅包含自己翻译的部分和视频中觉得有必要记下来的部分)

可扩展的图嵌入表示学习算法->可扩展:可以用在整个互联网规模的图上,并且可以用有限的时间、空间的成本。

解决的是图嵌入问题,是把图中的节点编码、映射成一个低维、连续、稠密的向量,而这个向量反应了这个节点在原图中的连接、社群、结构、角色等语义特征。

表示学习:用ML方法(数据驱动的方法)做的映射,而非人工构造特征,也不是矩阵分解的方法。

abstract

对于网络中的节点和边来做预测,首先需要做特征工程,把他们变成向量,有了这些向量之后才能输入到后续的机器学习算法当中,继续做下游的预测、分类任务。但是当时表示学习(ML)在图中的应用(如deepwalk、line)的表示能力不够高->无法反应出节点更丰富的特征和更丰富的连接属性。

提出node2vec,一个更好的做node embedding的方法。

node2vec是使用极大似然估计来实现训练。定义了一个非常灵活的,有偏随机游走方法,可以有效的探索多样的属性(邻居?),得到更丰富的表示。

introduction

任何监督ML都需要内涵丰富语义、有分类区分行、相互独立的特征。对于网络(图)而言,我们需要先把节点和边表示成特征向量(用特征向量表示节点和边)。 

有监督的,针对特定任务的->找到针对下游任务的特征

无监督->通用的,与下游任务无关的特征

同一社群&同一功能角色的点应该具有相近的embedding

node2vec—>一种对于网络中可扩展的特征的半监督学习方法

二阶随机游走 

feature learning framework

给定网络G=(V, E),我们的目标是学习一个映射f: \ V \rightarrow \mathbb{R}^d,把每一个节点映射成一个d维的实数向量f是一个大小为|V| \times d的矩阵(就是一张表格,每个节点对应的d维的嵌入)。

对于每一个节点u \in V,我们定义N_s(u) \subset V为节点u通过邻居采样策略(neighborhood sampling strategy)S产生的网络邻居(network neighborhood)

(讲人话就是这个N表示的是通过策略S得到的邻居)

 

同样采用skip-gram方法,用中间节点去预测周围节点,让红框中的值最大化

为了简化问题,这里做了两个基本假设:

  1. 条件独立。假设观察到一个邻居节点与观察到任意其他邻居节点之间是独立的(周围节点互不影响)

    因此上面的红框可以简化成连乘的形式
    softmax计算方法⬆️
  2. 特征空间对称性。一个节点与其邻居节点对彼此的印象是对称的(两个节点之间相互影响的程度是一样的)。

怎么知道谁是邻居:

idea1:搜索

真实的图是两种策略的mix

BFS提供的是一种微观视角,采样出来方差小,而DFS是宏观视角,采样出来方差大(就难以表达局部特征)

(弹幕:其实按照up主举的皇帝和运河的例子可以看出,确实DFS是找宏观的同质性。而BFS只关注微观邻近的结构。)

->设计一个灵活的邻域采样策略,让我们能够平滑的在BFS和DFS之间插值(私以为就是类似通过调整参数控制l1, l2)

首先定义随机游走:

起始节点为u,上一个节点为t,当前节点为v,下一个节点为x

现在我们已经在v节点了,在此情况下,我们要去下一个节点x。若v和x之间没有连接,就是0,如果是有连接的话,就按照某个概率给每个连接赋予权重。上图中\pi是权重,下面的Z是归一化常量。

接下来就是确定p q。

idea:用连接的权重作为游走的概率->如果是带权重的图,那么就可以直接用权重作为概率,即:\pi_{vx} = w_{vx},如果是无权图,那就是w_{vx} = 1

这样久和deepwalk一样没办法调节游走策略

idea:直接用BFS或者DFS->太极端了  

->提出一个二阶随机游走策略

使用两个参数p,q来引导游走。

假设我们刚刚穿过边(t,v),现在驻足在节点v上,现在我们需要决定下一步。->边(v,x)的转移概率,我们将未归一化的转移概率定义为\pi_{vx} = \alpha_{pq}(t,x)\cdot w_{vx},其中:

\alpha_{pq}(t,x) = \left\{\begin{matrix} \frac{1}{p} & if \ d_{tx} = 0\\ 1 & if \ d_{tx} = 1\\ \frac{1}{q} & if \ d_{tx} = 2 \end{matrix}\right.

这里d_{tx}表示的是节点t和x之间的最短路径长度,且d_{tx}只能在\left \{ 0, 1, 2 \right \}中选一个。

p:return parameter->如果p很大,就不太可能在接下来的两步中再次采样已经经过的节点,如果p小,就会返回

q:in-out parameter->如果q很大,就会困在原地,如果q很小,就更倾向于远走高飞

注意:这里和起始节点无关,仅仅由当前节点和上一个节点决定下一个节点去哪儿。

node-embedding->link-embedding

判断两个点之间是否会存在连接

论文链接:

https://cs.stanford.edu/people/jure/pubs/node2vec-kdd16.pdf

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony标准设备应用开发(二)——布局、动画与音乐

本章是 OpenHarmony 标准设备应用开发的第二篇文章。我们通过知识体系新开发的几个基于 OpenHarmony3.1 Beta 标准系统的样例:分布式音乐播放、传炸弹、购物车等样例,分别介绍下音乐播放、显示动画、动画转场(页面间转场)三个进阶…

我与C++的爱恋:string类的常见接口函数

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 朋友们大家好啊,本节我们来到STL内容的第一部分:string类接口函数的介绍 ​ ​ 1.string类的认识 给大家分享一个c文档 https://legacy.cplusplus.…

【C语言每日题解】用函数来模拟实现strlen()、strcpy()、strcmp()、strcat()

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 学习了函数后,老师让我们用函数来实现上面这四个字符串函数。 我们首先来了解一下这四个字符串函数: 1.strlen函数 用于获取字符串长度(不包括末尾…

【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解

我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序,都是在应用层。 前面写的套接字接口都是传输层经过对 UDP 和 TCP 数据发送能力的包装,以文件的形式呈现给我们,让我们可以进行应用层编程。换而言之&#xff0c…

测试之路 - 精准而优雅

引子 这几年业内一直在做精准测试,大都使用工具 diff 代码改动、分析代码覆盖率这些平台集成的能力。 业务测试中,我们在技术设计和代码实现的基础上也做了一些精减和精准的测试实践,通过深入测试有针对的设计 case,发现隐藏问题…

RALL-E: Robust Codec Language Modeling with Chain-of-Thought Prompting for TTS

demo pageDetai Xin, tanxu微软 & 东大 & 浙大 abstract 使用CoT的思路,和Valle的框架,先实现LLM预测音素级别pitch/duration,然后预测speech token。 methods Prosody tokens as chain-of-thought prompts 和Valle一…

uac驱动之const修饰的变量和const修饰的指针

const int*p // p所指向的空间是常量 不可修改 ,但p可以修改 int*const p // p所指向的空间是可以修改 ,p不可以修改 #include <stdio.h> #include <string.h>struct usb_string {char id;const char *s; };enum {STR_ASSOC,STR_AC_IF,STR_USB_OUT_IT,STR_USB_O…

20232803 2023-2024-2 《网络攻防实践》实践九报告

目录 1.实践内容2.实践过程2.1 手工修改可执行文件&#xff0c;改变程序执行流程&#xff0c;直接跳转到getShell函数2.2 利用foo函数的Bof漏洞&#xff0c;构造一个攻击输入字符串&#xff0c;覆盖返回地址&#xff0c;触发getShell函数2.3 注入一个自己制作的shellcode并运行…

优秀博士学位论文分享:复杂场景下高精度有向目标检测的研究

优秀博士学位论文代表了各学科领域博士研究生研究成果的最高水平&#xff0c;本公众号近期将推出“优秀博士学位论文分享”系列文章&#xff0c;对人工智能领域2023年优秀博士学位论文进行介绍和分享&#xff0c;方便广大读者了解人工智能领域最前沿的研究进展。 “博士学位论…

VMware17虚拟机安装Kali Linux2024详解

目录 简介 一、环境搭建 二、下载ISO镜像 三、新建虚拟机 为虚拟机选择合适的操作系统类型和版本 分配适当的内存、硬盘空间和其他虚拟机配置选项 四、硬件配置 编辑虚拟机设置 选择安装介质 五、界面化安装配置 简介 Kali Linux是一个基于Debian的Linux发行版&#…

PopupMenuButton 颜色设置

前言&#xff1a; 今天在使用 flutter PopupMenuItem 的时候想设置它的选中颜色 和 点击颜色的时候&#xff0c;发现并没有相应的属性设置&#xff0c;后才测试才发现是需要 通过 Theme属性 来设置的 正确姿势&#xff1a; 是要通过 Theme 属性来设置&#xff0c;我这只是临时…

基于CentOS-7搭建hadoop3.3.6大数据集群(保姆级教程)

目录 安装虚拟机 为hadoop用户添加权限 关闭防火墙 修改主机名以及ip地址映射 配置ip 连接xshell &#xff0c;以hadoop用户登录 创建目录并将该文件夹权限赋予hadoop用户 安装配置jdk 关闭虚拟机&#xff0c;克隆其他两个节点 修改主机名和ip地址 配置免密登录 安装…