图神经网络_图嵌入_SDNE

0 提出背景

SDNE:Structural Deep Network Embedding

之前的DeepWalk、LINE、node2vec、struc2vec都使用了浅层结构,浅层模型往往不能捕获高度非线性的网络结构。

SDNE方法使用了多个非线性层来捕获节点的embedding。

1 预备知识

1阶相似度衡量的是:相邻的两个顶点对之间相似性。

2阶相似度衡量的是:两个顶点他们的邻居集合的相似程度。

2 主要思想

在这里插入图片描述
解释: V e r t e x i 和 V e r t e x i 分别表示图 i , j 的邻接矩阵; x i 表示 V e r t e x i 第  i 行邻接矩阵值(节点 i 的连接关系),经过多层 e n c o d e r 编码 y i ( 1 ) . . . y i ( K − 1 ) ,得到压缩表示 y i ( K ) , 经过多层 d e n c o d e r 解码 y i ^ ( K − 1 ) . . . y i ^ ( 1 ) ,得到最终预测输出 x ^ i \begin{aligned} & 解释:\\ & Vertex \ i和Vertex \ i分别表示图i,j的邻接矩阵;\\ & x_i 表示Vertex \ i \ 第\ i\ 行邻接矩阵值(节点i的连接关系),经过多层encoder编码y_i^{(1)}...y_i^{(K-1)},得到压缩表示y_i^{(K)},经过多层dencoder解码\hat{y_i}^{(K-1)}...\hat{y_i}^{(1)},得到最终预测输出\hat{x}_i \end{aligned} 解释:Vertex iVertex i分别表示图ij的邻接矩阵;xi表示Vertex i  i 行邻接矩阵值(节点i的连接关系),经过多层encoder编码yi(1)...yi(K1),得到压缩表示yi(K),经过多层dencoder解码yi^(K1)...yi^(1),得到最终预测输出x^i

3 结构误差

3.1 1阶相似度

1阶相似度,可以让图中相邻两个结点之间对应的embedding vector在隐藏空间更接近。定义如下:
L 1 s t = ∑ i , j = 1 n s i , j ∣ ∣ y i ( K ) − y j ( K ) ∣ ∣ 2 2 = ∑ i , j = 1 n s i , j ∣ ∣ y i − y j ∣ ∣ 2 2 L_{1st} = \sum_{i,j=1}^n s_{i,j}||y_i^{(K)} - y_j^{(K)}||_2^2 = \sum_{i,j=1}^n s_{i,j}||y_i-y_j||_2^2 L1st=i,j=1nsi,j∣∣yi(K)yj(K)22=i,j=1nsi,j∣∣yiyj22

3.2 2阶相似度

二阶相似度,可以让结构相似的节点的embedding vector在隐藏空间更接近。定义如下:
L 2 n d = ∑ i = 1 n ∣ ∣ x ^ i − x i ∣ ∣ 2 2 L_{2nd} = \sum_{i=1}^n ||\hat{x}_i-x_i||_2^2 L2nd=i=1n∣∣x^ixi22
上述定义存在的问题是:由于图的稀疏性(邻接矩阵中的0元素远多于非0元素),所以神经网络全部输出0也能取得一个不错的效果,但这不是我们想要的。

改进方法:带权损失函数,对非0元素具有更高的乘法系数(提高对非0元素的关注度)。修正后的损失函数为:
L 2 n d = ∑ i = 1 n ∣ ∣ ( x ^ i − x i ) ⊙ b i ∣ ∣ 2 2 = ∣ ∣ ( X ^ − X ) ⊙ B ∣ ∣ F 2 L_{2nd} = \sum_{i=1}^n||(\hat{x}_i-x_i)\odot b_i||_2^2 = ||(\hat{X}-X)\odot B||_F^2 L2nd=i=1n∣∣(x^ixi)bi22=∣∣(X^X)BF2
其中:
⊙ 表示逐元素积, b i = { b i , j } j = 1 n ,若 s i , j = 0 , 则 b i , j = 1 ,否则 b i , j = β > 1 \odot表示逐元素积,b_i=\{b_{i,j}\}_{j=1}^n,若s_{i,j}=0,则b_{i,j}=1,否则b_{i,j}=\beta>1 表示逐元素积,bi={bi,j}j=1n,若si,j=0,bi,j=1,否则bi,j=β>1

3.3 整体优化目标

联合优化损失函数为:
L m i x = L 2 n d + α L 1 s t + μ L r e g L r e g = 1 2 ∑ ( ∣ ∣ W ( k ) ∣ ∣ F 2 + ∣ ∣ W ^ ( k ) ∣ ∣ F 2 ) \begin{aligned} & L_{mix} = L_{2nd} + \alpha L_{1st} + \mu L_{reg} \\ & L_{reg} = \frac{1}{2} \sum(||W^{(k)}||_F^2+||\hat{W}^{(k)}||_F^2) \end{aligned} Lmix=L2nd+αL1st+μLregLreg=21(∣∣W(k)F2+∣∣W^(k)F2)

L m i x 是联合损失,其中: α 为控制 1 阶损失的参数, μ 为控制正则化项的参数; L r e g 是正则化项,是对 k 层 e n c o d e r 和 d e c o d e r 的 L 2 正则化。 \begin{aligned} & L_{mix}是联合损失,其中:\alpha为控制1阶损失的参数,\mu为控制正则化项的参数;\\ & L_{reg}是正则化项,是对k层encoder和decoder的L_2正则化。\\ \end{aligned} Lmix是联合损失,其中:α为控制1阶损失的参数,μ为控制正则化项的参数;Lreg是正则化项,是对kencoderdecoderL2正则化。

模型通过反向传播,不断减小L_mix,优化模型参数,求得节点的embedding。

4. 图嵌入算法小结

  • DeepWalk:采用随机游走形成序列,采用skip-gram方式生成节点embedding;
  • node2vec:不同的随机游走策略形成序列,类似skip-gram方式生成节点embedding;
  • LINE:捕获节点的一阶、二阶相似度分别求解、拼接,作为节点embedding;
  • struc2vec:对图的结构信息进行捕获,在结构标识大于邻居标识时效果好;
  • SDNE:采用多个非线性层捕获节点一阶、二阶相似性。

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

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

相关文章

redis——岁月云实战

单线程序,基于IO多路复用,基于内存和c语言编写,性能高。redis官方命令 1 数据结构 1.1 key的层级 redis的key可以通过冒号(:)来划分层级,如下图mms:company:order,但系统中可以看到有不少没有…

参数名在不同的SpringBoot版本中,处理方案不同

参数名在不同的SpringBoot版本中,处理方案还不同: 在springBoot的2.x版本(保证参数名一致) springBoot的父工程对compiler编译插件进行了默认的参数parameters配置,使得在编译时,会在生成的字节码文件中…

五、Swagger 介绍(Flask+Flasgger的应用)

Swagger 介绍 0. 引言1. Swagger 介绍2. Flasgger 介绍3. Flasgger效果3.1 原始flask代码3.2 转化成Flasgger形式3.3 使用Try it out调试3.4 多个url接口自动生成和调试 4. 使用教程4.1 使用 docstrings 作为规范4.2 使用外部 YAML 文件4.3 使用 Python 字典作为原始规范 5. 和…

LSTM-SVM时序预测 | Matlab基于LSTM-SVM基于长短期记忆神经网络-支持向量机时间序列预测

LSTM-SVM时序预测 | Matlab基于LSTM-SVM基于长短期记忆神经网络-支持向量机时间序列预测 目录 LSTM-SVM时序预测 | Matlab基于LSTM-SVM基于长短期记忆神经网络-支持向量机时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.LSTM-SVM时序预测 | Matlab基于LSTM…

【MySQL】十三,关于MySQL的全文索引

MySQL的全文索引用于搜索文本中的关键字,类似于like查询。 演示 建表 CREATE TABLE demo (id INT(11) NOT NULL,name CHAR(30) NOT NULL,age INT(11) NOT NULL,info VARCHAR(255),primary key(id),fulltext index futxt_idx_info(info) );此表的默认存储引擎为In…

数据可视化echarts学习笔记

目录,介绍 知识储备 一端操作,多端联动的效果(开启了多个网页,操作一端,多个网页的效果会跟着改变) cmd命令控制面板返回上一级或上上级 在当前目录打开文件: cd 文件名 在Windows命令提示符&am…

NS3学习——tcpVegas算法代码详解(2)

NS3学习——tcpVegas算法代码详解(1)-CSDN博客 目录 4.TcpVegas类中成员函数 (5) CongestionStateSet函数 (6) IncreaseWindow函数 1.检查是否启用 Vgas 2.判断是否完成了一个“Vegas 周期” 2.1--if:判断RTT样本数量是否足够 2.2--e…

在 CentOS 8 系统上安装 Jenkins 的全过程

一、前言 我是一个前端开发,需要频繁将编写的前端系统打包更新到公司的linux服务器,觉得这种工作纯体力活,有时候太浪费时间,以前用过别人搭建的Jenkins可以很好的解决这个问题。 Jenkins 是一款流行的开源持续集成和持续交付&a…

Mac上Stable Diffusion的环境搭建(还算比较简单)

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Installation-on-Apple-Silicon AI兴起的速度是真的快,感觉不了解点相关的东西都要与时代脱节了,吓得我赶紧找个AIGC看看能不能实现我艺术家的人梦想(绷不住了) 我…

瑞吉外卖项目学习笔记(九)套餐列表分页查询、新增套餐、图片上传和下载

瑞吉外卖项目学习笔记(一)准备工作、员工登录功能实现 瑞吉外卖项目学习笔记(二)Swagger、logback、表单校验和参数打印功能的实现 瑞吉外卖项目学习笔记(三)过滤器实现登录校验、添加员工、分页查询员工信息 瑞吉外卖项目学习笔记(四)TableField(fill FieldFill.INSERT)公共字…

VMware Workstation虚拟机网络模式

做虚拟机和宿主机互ping实验时,除了要提前配置好网段、ip等信息,还要把宿主机、虚拟机的防火墙关闭! 首先说一下VMware的几种虚拟交换机。 VMnet0:用于虚拟桥接网络下的虚拟交换机。 VMnet1:用于虚拟Host-Only网络下…

UDP传输层通信协议详解

引言 在计算机网络通信的广阔天地中,传输层协议扮演着至关重要的角色。它们负责在网络中的两个终端之间建立、管理和终止数据传输。在众多传输层协议中,UDP(User Datagram Protocol,用户数据报协议)以其独特的特性和应…

Node.js 工具:在 Windows 11 中配置 Node.js 的详细步骤

一、概述 记录时间 [2024-12-25] 本文讲述如何在 Windows 11 中进行 Node.js 工具的安装和配置。 以下是详细的步骤和说明。 二、安装 Node.js 1. 官网下载 通过官网,下载 Node.js,上面有好几种下载方式,文中下载的是 zip 压缩包。 如图&…

Chrome被360导航篡改了怎么改回来?

一、Chrome被360导航篡改了怎么改回来? 查看是否被360主页锁定,地址栏输入chrome://version,看命令行end后面(蓝色部分),是否有https://hao.360.com/?srclm&lsn31c42a959f 修改步骤 第一步&#xff1a…

Mysql 查询性能调优总结

一、查询分析性能的相关配置 1.1 配置显示查询性能的参数 在 MySQL 中,SHOW PROFILES 命令用于显示最近的查询性能概况,帮助你分析哪些查询比较耗时。 show profiles; 需要启用参数 profiling,才能使用上述功能,其相关参数设置…

python中使用selenium执行组合快捷键ctrl+v不生效问题

在执行ctrlv进行粘贴时,绑定一个页面上的元素对象(无论元素对象是否是引用过期或者是粘贴的目标文本区,但前提需要粘贴的目标文本区获取焦点)执行ctrlv后可以生效。执行粘贴组合快捷键(ctrlv)的示例代码 se…

C++模板:编译时模拟Duck Typing

C泛型与多态(4): Duck Typing - 简书 James Whitcomb Riley在描述这种is-a的哲学时,使用了所谓的鸭子测试(Duck Test): 当我看到一只鸟走路像鸭子,游泳像鸭子,叫声像鸭子,那我就把它…

【求职面试】驾照的种类

大型客车 A1 大型载客汽车 A3、B1、B2、C1、C2、C3、C4、M 牵引车 A2 重型、中型全挂、半挂汽车列车 B1、B2、C1、C2、C3、C4、M 城市公交车 A3 核载10人以上的城市公共汽车 C1、C2、C3、C4 中型客车 B1 中型载客汽车(10人以上、19人以下) C1、C2、C3…

PyQt实战——使用python提取JSON数据(十)

系类往期文章: PyQt5实战——多脚本集合包,前言与环境配置(一) PyQt5实战——多脚本集合包,UI以及工程布局(二) PyQt5实战——多脚本集合包,程序入口QMainWindow(三&…

RAG实战:构建基于本地大模型的智能问答系统

RAG实战:构建基于本地大模型的智能问答系统 引言 在当今AI快速发展的时代,如何构建一个既智能又可靠的问答系统是一个重要课题。本文将介绍如何使用RAG(检索增强生成)技术,结合本地大模型,构建一个高效的智…