图神经网络_图嵌入_Struc2Vec

0 背景

之前的node embedding方式,都是基于近邻关系,但是有些节点没有近邻,也有结构相似性。如图中的u、v节点。
struc2vec算法适用于捕获结构相似性。
在这里插入图片描述

1 相似度(距离)计算

1.1 公式

f k ( u , v ) = f k − 1 ( u , v ) + g ( s ( R k ( u ) , s R k ( v ) ) ) , k ≥ 0   a n d   ∣ R k ( u ) ∣ , ∣ R k ( v ) ∣ > 0 f_k(u,v) = f_{k-1}(u,v)+g(s(R_k(u),sR_k(v))),k\ge 0 \space and \space |R_k(u)|,|R_k(v)|>0 fk(u,v)=fk1(u,v)+g(s(Rk(u),sRk(v))),k0 and Rk(u),Rk(v)>0

f k ( u , v )  表示 u 、 v 节点的 k 跳邻居相似性; R k ( u )  表示节点 u 的 k 跳邻居节点集合; S ( s )  表示集合 s 度的有序集合; g ( D 1 , D 2 )  是度量两个序列的函数,比较常用的有 D T W 算法 \begin{aligned} & f_k(u,v) \ 表示u、v节点的k跳邻居相似性; \\ & R_k(u) \ 表示节点u的k跳邻居节点集合; \\ & S(s) \ 表示集合s度的有序集合;\\ & g(D_1,D_2) \ 是度量两个序列的函数,比较常用的有DTW算法 \end{aligned} fk(u,v) 表示uv节点的k跳邻居相似性;Rk(u) 表示节点uk跳邻居节点集合;S(s) 表示集合s度的有序集合;g(D1,D2) 是度量两个序列的函数,比较常用的有DTW算法

1.2 示例

在这里插入图片描述
在这里插入图片描述
其中距离函数 g 的计算方法为:

2 DTW动态时间规整算法

2.1 应用

DTW最初用于识别语音的相似性。

2.2 举个栗子

我们用数字表示音调高低。例如:某个单词发音的音调为1-3-2-4。现在有两个人说这个单词,一个人在前半部分拖长,其发音为1-1-3-3-2-4;另一个人在后半部分拖长,其发音为1-3-2-2-4-4。

因为两个序列代表同一个单词,so we hope 1-1-3-3-2-4 和 1-3-2-2-4-4 两个序列的距离距离小,相似度高,识别为同一单词的概率大。

2.3 传统算法——欧氏距离

S = |A(1)-B(1)| + |A(2)-B(2)| + |A(3)-B(3)| + |A(4)-B(4)| + |A(5)-B(5)| + |A(6)-B(6)|
= |1-1| + |1-3| + |3-2| + |3-2| + |2-4| + |4-4|
= 6

在这里插入图片描述

2.4 DTW动态时间规整算法

核心思想:允许序列的点与另一序列的多个连续的点相对应

如下图:B(1)与A(1)、A(2)相对应,B(2)与A(3)、A(4)相对应,A(5)与B(3)、B(4)相对应,A(6)与B(5)、B(6)相对应。

在这里插入图片描述

S = |A(1)-B(1)| + |A(2)-B(1)| + |A(3)-B(2)| + |A(4)-B(2)| + |A(5)-B(3)| + |A(5)-B(4)| + |A(6)-B(5)| + |A(6)-B(6)| 
= |1-1| + |1-1| + |3-3| + |3-3| + |2-2| + |2-2| + |4-4| + |4-4|
= 0

2.5 图示

在这里插入图片描述

  • 灰色线表示传统的欧氏距离
  • 红色线表示DTW算法距离

2.6 步骤

  1. 计算两个序列各个点之间的距离矩阵。
  2. 寻找一条从矩阵左上角到右下角的路径,使得路径上的元素和最小。

2.7 特点

  • 非线性对齐:DTW 允许序列在时间轴上进行不同速率的对齐,能够处理局部时间伸缩。
  • 适应性强:DTW 不要求输入序列长度相同,且能够容忍输入序列的平移、缩放和局部错位。
  • 计算复杂度:DTW 的计算复杂度通常为 (O(mn)),其中 (m) 和 (n) 分别是两条序列的长度。

2.8 应用

  • 语音识别:DTW 可以通过对齐不同的发音序列来识别用户的语音。
  • 手写识别:DTW 可用于比较手写笔迹和已知字符模式之间的相似度。
  • 金融分析:DTW 可用于识别股票价格或其他金融数据的时间序列模式。
  • 生物信息学:DTW 可用于比较基因序列的相似性,尤其是在基因组学中用于比较不同个体的基因表达模式。

3 多层带权重图

在这里插入图片描述

其中:w_0(a,b)、w_1(a,b) 分别表示0、1层(跳)a、b两节点权重;w(e_0,e_1)表示跨层(不同跳)节点,计算公式分别为:
w k ( a , b ) = e − f k ( a , b ) w ( u k , u k − 1 ) = 1 w ( u k , u k + 1 ) = l o g ( Γ k ( u ) + e ) 其中 : Γ k ( u ) = ∑ v ∈ V 1 ( w k ( u , v ) > w ˉ k ) 举个栗子 : Γ 0 ( e ) = w 0 ( e , a ) , w 0 ( e , b ) , w 0 ( e , c ) , w 0 ( e , d ) > w ˉ k \begin{aligned} & w_k(a,b) = e^{-f_k(a,b)} \\ & w(u_k,u_{k-1}) = 1 \\ & w(u_k,u_{k+1}) = log(\Gamma_k(u)+e) \\ & 其中: \Gamma_k(u) = \sum_{v∈V}1(w_k(u,v)>\bar w_k) \\ & 举个栗子: \Gamma_0(e) = w_0(e,a),w_0(e,b),w_0(e,c),w_0(e,d)>\bar w_k \end{aligned} wk(a,b)=efk(a,b)w(uk,uk1)=1w(uk,uk+1)=log(Γk(u)+e)其中:Γk(u)=vV1(wk(u,v)>wˉk)举个栗子:Γ0(e)=w0(e,a),w0(e,b),w0(e,c),w0(e,d)>wˉk

4 定点采样序列

在这里插入图片描述

下一次采样时,有p的概率在本层游走,有1-p的概率在上下游切换。

在本层游走
p k ( u , v ) = e − f k ( u , v ) Z k ( u ) p_k(u,v) = \frac{e^{-f_k(u,v)}}{Z_k(u)} pk(u,v)=Zk(u)efk(u,v)
其中,Z_k的计算方式为:
Z k ( u ) = ∑ v ∈ V , v ≠ u e − f k ( u , v ) Z_k(u) = \sum_{v∈V,v≠u}e^{-f_k(u,v)} Zk(u)=vV,v=uefk(u,v)
上下层切换:
p k ( u k , u k + 1 ) = w ( u k , u k + 1 ) w ( u k , u k + 1 ) + w ( u k , u k − 1 ) p k ( u k , u k − 1 ) = 1 − p k ( u k , u k + 1 ) 不难发现前往下一层的概率更大 \begin{aligned} & p_k(u_k,u_{k+1}) = \frac{w(u_k,u_{k+1})}{w(u_k,u_{k+1})+w(u_k,u_{k-1})} \\ & p_k(u_k,u_{k-1}) = 1- p_k(u_k,u_{k+1}) \\ & \text{不难发现前往下一层的概率更大} \end{aligned} pk(uk,uk+1)=w(uk,uk+1)+w(uk,uk1)w(uk,uk+1)pk(uk,uk1)=1pk(uk,uk+1)不难发现前往下一层的概率更大

5 使用skip-gram生成embedding

在采用 4定点采样序列中 游走的方法得到节点序列后,使用skip-gram方法生成embedding。
img

Word2Vec提供了两种模型架构:CBOW 和 Skip-gram。

  • CBOW模型:通过上下文词预测目标词。
  • Skip-gram模型:通过目标词预测上下文词。

Skip-gram模型在处理低频词时表现得更好,因此被广泛应用于各种自然语言处理任务。

6 实验效果

在这里插入图片描述

struc2vec算法在捕获结构相似性上有很好的效果。

适用性分析:适用于节点分类中,结构标识比邻居标识更重要时

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JZ31 栈的压入、弹出序列

题目来源:栈的压入、弹出序列_牛客题霸_牛客网 题目:如下 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序&#xf…

Android 蓝牙开发-传输数据

概述 传统蓝牙是通过建立REFCCOM sockect来进行通信的,类似于socket通信,一台设备需要开放服务器套接字并处于listen状态,而另一台设备使用服务器的MAC地址发起连接。连接建立后,服务器和客户端就都通过对BluetoothSocket进行读写…

Java圣诞树

目录 写在前面 技术需求 程序设计 代码分析 一、代码结构与主要功能概述 二、代码功能分解与分析 1. 类与常量定义 2. 绘制树的主逻辑 3. 彩色球的绘制 4. 动态效果的实现 5. 窗口初始化 三、关键特性与优点 四、总结 写在后面 写在前面 Java语言绘制精美圣诞树…

认识计算机网络

单单看这一个词语,有熟悉又陌生,让我们来重新认识一下这位大角色——计算机网络。 一、是什么 以及 怎么来的 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路和通信设备连接起来,在网络操作…

【再谈设计模式】享元模式~对象共享的优化妙手

一、引言 在软件开发过程中,我们常常面临着创建大量细粒度对象的情况,这可能会导致内存占用过高、性能下降等问题。享元模式(Flyweight Pattern)就像是一位空间管理大师,它能够在不影响功能的前提下,有效地…

用Python写炸金花游戏

文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **打印结果** 完整代码 以下游戏规则: 那么我们要实现的功能,就是…

WebRTC服务质量(07)- 重传机制(04) 接收NACK消息

WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…

Cadence学习笔记 11 PCB中器件放置

基于Cadence 17.4,四层板4路HDMI电路 更多Cadence学习笔记:Cadence学习笔记 1 原理图库绘制Cadence学习笔记 2 PCB封装绘制Cadence学习笔记 3 MCU主控原理图绘制Cadence学习笔记 4 单片机原理图绘制Cadence学习笔记 5 四路HDMI原理图绘制Cadence学习笔记…

Docker 入门:如何使用 Docker 容器化 AI 项目(二)

四、将 AI 项目容器化:示例实践 - 完整的图像分类与 API 服务 让我们通过一个更完整的 AI 项目示例,展示如何将 AI 项目容器化。我们以一个基于 TensorFlow 的图像分类模型为例,演示如何将训练、推理、以及 API 服务过程容器化。 4.1 创建 …

三层交换机配置

一,三层交换 概念:三层交换技术就是:二层交换技术三层转发技术(路由器功能)。它解决了局域网中网段划分之后,网段中子网必须依赖路由器进行管理的局面,解决了传统路由器低速,复杂所造成的网络瓶颈问题。 …

LabVIEW应用在工业车间

LabVIEW作为一种图形化编程语言,以其强大的数据采集和硬件集成功能广泛应用于工业自动化领域。在工业车间中,LabVIEW不仅能够实现快速开发,还能通过灵活的硬件接口和直观的用户界面提升生产效率和设备管理水平。尽管其高成本和初期学习门槛可…

【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…

Qt使用QZipWriter和QZipReader来解压、压缩文件

首先感谢这位博主的无私奉献:Qt - 实现压缩文件、文件夹和解压缩操作 - [BORUTO] - 博客园 多文件和目录压缩时,不改变原始文件和目录的相对位置结构,需要在addFile和addDirectory时,需要带上相对路径,如下&#xff1…

PH热榜 | 2024-12-23

1. Websparks 标语:让你的创意变为现实的AI软件工程师 介绍:现在,构建网页应用从未如此简单快捷!WebSparks是一个基于人工智能的平台,它能让开发者、设计师,甚至不懂编程的人,都能在很短的时间…

Opencv之对图片的处理和运算

Opencv实现对图片的处理和修改 目录 Opencv实现对图片的处理和修改灰度图读取灰度图转换灰度图 RBG图单通道图方法一方法二 单通道图显色合并单通道图 图片截取图片打码图片组合缩放格式1格式2 图像运算图像ma[m:n,x:y]b[m1:n1,x1:y1] add加权运算 灰度图 读取灰度图 imread(‘…

OpenLinkSaas使用手册-Git工具

在OpenLinkSaas的工具箱里面,最基础的一个就是Git仓库管理。Git仓库功能让git使用更加简单和强大,不仅可以使用常规的commit/pull/push/branch等功能外,还连接了Git仓库供应商的能力。 OpenLinkSass支持使用国内主流的Git仓库供应商的账号登录…

WebRTC服务质量(12)- Pacer机制(04) 向Pacer中插入数据

WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…

protobuf学习使用

1、概述 protobuf是Google开发的一种语言中立、平台无关、可扩展的序列化结构数据格式。允许定义一次数据结构,然后可以使用各种支持的语言来生成代码,以轻松地读写这些结构到一个二进制流中,如网络传输或文件,Protobuf支持多种编…

CTFHUB-web进阶-php

我们用蚁剑中的这个插件来做这些关卡 一.LD_PRELOAD 发现这里有一句话木马,并且把ant给了我们,我们直接连接蚁剑 右键 选择模式,都可以试一下,这里第一个就可以 点击开始 我们进入到目录,刷新一下,会有一个…

相机、镜头参数详解以及相关计算公式

一、工业相机参数 1、分辨率 相机每次采集图像的像素点数,也是指这个相机总共有多少个感光晶片。在采集图像时,相机的分辨率对检测精度有很大的影响,在对同样打的视场成像时,分辨率越高,对细节的展示越明显。 相机像素…