图嵌入表示学习—Graph Embeddings

news2024/10/7 0:27:37

Embedding Entire Graphs

一、图嵌入向量基本概念

请添加图片描述

与Node Embeddings不同,Graph Embeddings是对整个图或子图进行编码而忽略其中的节点。应用场景包括异常检测或分子有毒检测。

二、对Node Embeddings求和或求和后平均

请添加图片描述

如图,首先对图/子图中的节点进行图嵌入向量表示( z u \mathbb{z}_u zu),之后将嵌入向量求和(或对求和向量再平均)得到图/子图的嵌入向量。

注意:该方法虽然很简单,但是效果很好。

三、创建超节点

请添加图片描述

如图,在原图的基础上对图/子图增加一个超节点,该超节点与图/子图的所有节点均建立连接。之后利用Node Embeddings的方法求得该节点的嵌入向量,该嵌入向量就是图/子图的嵌入向量。

四、匿名随机游走

1、匿名随机游走方法:

请添加图片描述

匿名随机游走,只记忆节点出现的时间而不关心具体的节点。

如图,在A、B、C、D、E和F节点组成的子图中:

第一次游走的节点次序为:A、B、C、B、C。A是第一个访问的节点标记为1,B是第二个访问的节点标记为2,C是第三个访问的节点标记为3,除此之外没有其他节点。此时,匿名随机游走路径为:1、2、3、2、3;

第二次游走的节点次序为:C、D、B、D、B。C是第一个访问的节点标记为1,D是第二个访问的节点标记为2,B是第三个访问的节点标记为3,除此之外没有其他节点。此时,匿名随机游走路径为:1、2、3、2、3;

从两次行走中可以看出,虽然两次行走的路径不同,但是其匿名行走路径是相同的。只记忆节点出现的时间而不关心具体的节点。

请添加图片描述

从图中可以看出,对于不同长度的匿名随机游走序列,其行走路径数量呈指数级爆炸增长。

其中,长度为3的路径次数计算如图:

请添加图片描述

2、使用匿名随机游走进行图嵌入编码

请添加图片描述

对于图/子图,进行固定长度的匿名随机游走,并记录每个行走序列的次数(或出现概率),将其记录为向量,该向量即为图的嵌入向量。如图:

请添加图片描述

随机游走的长度 l l l是一个超参数,对于选定的 l l l,应该对图/子图采样多少次是一个值得思考的问题,如图:

请添加图片描述

为了保证采样的健壮性,使采样的分布误差保持在 [ ε , δ ] [\varepsilon,\delta ] [ε,δ]之间,对于选定长度 l l l,计算得到随机游走序列的个数为$\eta (查表或自己计算),得到采样次数 (查表或自己计算),得到采样次数 (查表或自己计算),得到采样次数m$为:
m = ⌈ 2 ε 2 ( l o g ( 2 η − 2 ) − l o g ( δ ) ) ⌉ m=\left \lceil \frac{2}{\varepsilon ^2} \left ( log \left ( 2^\eta - 2 \right ) - log(\delta ) \right ) \right \rceil m=ε22(log(2η2)log(δ))
例如:对于长度 l l l的随意游走序列,游走序列 η \eta η有877种,定义分布误差为 [ ε = 0.1 , δ = 0.01 ] [\varepsilon=0.1,\delta=0.01 ] [ε=0.1,δ=0.01],计算得到 m m m为122500次。

五、Learn Walk Embeddings

请添加图片描述

该方法与匿名随机游走的区别是:匿名随机游走只产生一个嵌入向量来计算不同游走序列的次数(概率)而本方法对每种匿名游走序列单独嵌入编码,同时加上一个图/子图的嵌入向量。

其中,图/子图的嵌入向量为 z G \mathbb{z}_G zG,匿名随机游走序列嵌入向量 Z = { z i : 1... η } Z=\{z_i:1...\eta\} Z={zi:1...η} η \eta η为固定游走长度后的游走序列总个数。

请添加图片描述

具体步骤为:

  1. 建立一个上下文管理器, N R ( u ) N_R(u) NR(u)记录以 u u u为游走起点的游走路径,总数为 T T T个。
  2. 上下文自监督:对于前 Δ \Delta Δ次已经出现的游走序列,预测第 Δ + 1 \Delta+1 Δ+1次出现的序列(类似于NLP中transformer-decoder的算法)。优化函数如上图。

上下文自监督的具体步骤为:

请添加图片描述

首先将前 Δ \Delta Δ次出现的游走序列向量 { z t − Δ , . . . z t − 1 } \{ \mathbb{z}_{t-\Delta},...\mathbb{z}_{t-1} \} {ztΔ,...zt1}求和并取平均,再与全图嵌入向量 z G \mathbb{z}_G zG堆叠。之后通过线性变化和softmax计算第 Δ + 1 \Delta+1 Δ+1次出现的游走序列。重复以上过程反复更新所有 z \mathbb{z} z向量。注意采用负样本来优化计算。

六、总结

请添加图片描述

图片截选自——斯坦福CS224W: Machine Learning with Graphs

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

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

相关文章

shell与shell script 学习总结

文章目录 shell与shell script 学习总结vivim可视化区块多文件编辑多窗口功能vim环境设置与记录中文编码问题语系编码转换 Shell的变量功能变量的使用与设置echo(变量的使用)变量设置的规则 环境变量的功能env(观察环境变量)set(观察所有变量)unset(取消变量) locale(语系变量)…

【Hello Network】TCP协议相关理解

作者:小萌新 专栏:网络 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:补充下对于TCP协议的各种理解 TCP协议相关实验 TCP相关试验理解CLOSE_WAIT状态理解TIME_WAIT状态解决TIME_WAIT状态引起的bind失败的方法理解listen的…

分布式 03 富文本处理插件和图片文件上传

01.使用富文本编辑器来上传图片文件。 02.最开始在html文件中去使用相关富文本的插件。 引入相关文件 <link href"/js/kindeditor-4.1.10/themes/default/default.css" type"text/css" rel"stylesheet"> <script type"text/java…

Redis面试题(上)

1.什么是 Redis&#xff1f; Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 Strin…

Python机器学习入门 -- 支持向量机学习笔记

文章目录 前言一、支持向量机简介二、支持向量机的数学原理1. 距离解算2. 目标函数3. 约束下的优化求解4. 软间隔优化5. 核函数变换 三、Python实现支持向量机1. 惩罚力度对比2. 高斯核函数3. 非线性SVM 总结 前言 大部分传统的机器学习算法都可以实现分类任务&#xff0c;但这…

干货丨你真的了解反应持续时间吗?

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐~ 在今天的推文里&#xff0c;要给大家分享的是一种灵活、免费的心理科学工具——反应持续时间&#xff0c;快来一起看看哦~ 01 导读 简单按键的反应持续时间是一种容易获得但未被充分利用…

C++相比于C语言增加的8个小特性(详解)

C相比于C语言增加的8个小特性&#xff08;详解&#xff09; 文章目录 C相比于C语言增加的8个小特性&#xff08;详解&#xff09;一、命名空间二、C输入和输出三、缺省参数四、函数重载五、引用六、内联函数七、auto关键字八、指针空值nullptr总结 一、命名空间 c的命名空间是…

从一到无穷大 #8 Arrow,Parquet and ORC

文章目录 引言ArrowParquetNested EncodingRepetition LevelsDefinition Levels 列化压缩 ORC 引言 以我的机器为例来做一个简单的计算&#xff1a; 执行cat /proc/cpuinfo |grep MHz|uniq可以看到目前机器中CPU频率&#xff0c;得到值 2494.140MHZ&#xff5e;2494140000HZ&…

【算法】——全排列算法讲解

前言&#xff1a; 今天&#xff0c;我给大家讲解的是关于全排列算。我会从三个方面去进行展开&#xff1a; 首先&#xff0c;我会给大家分析关于全排列算法的思想和定义&#xff1b;紧接着通过手动实现出一个全排列代码来带大家见见是怎么实现的&#xff1b;最后我会给出两道题…

ESP32单片机入门篇

目录 一、ESP32单片机的基本概念 1.双核架构 2. Wi-Fi和蓝牙功能 3. 集成多种外设 4. 支持多种操作系统 二、开发环境 1. Arduino IDE 2. ESP-IDF 三、开发语言 四、注意事项 五、代码例程 &#xff08;1&#xff09;点亮LED灯 1. 电路图 2. 代码 3. 代码注释 …

【精品】Java-Stream流详解

Java-Stream流详解 如何学会JDK8中的Stream流&#xff0c;用它来提高开发效率&#xff1f;创建不可变的集合&#xff08;Immutable 不可变的&#xff09;场景方法 初试 Stream 流Stream 流的思想Stream 流的作用Stream 流的使用步骤Stream 流的中间方法Stream 流的终结方法 如何…

STM32:利用PWM波控制飞盈电调过程和注意事项

STM32&#xff1a;利用PWM波控制电调过程和注意事项 在进行模型控制的过程中&#xff0c;如四旋翼无人机等&#xff0c;需要用到电机&#xff0c;这些电机需要通过电调来控制电机的转速。在电调模块中带有的说明书一般都是利用遥控器进行控制&#xff0c;有些情况需要自己通过…

【自然语言处理】【大模型】CodeGeeX:用于代码生成的多语言预训练模型

CodeGeeX&#xff1a;用于代码生成的多语言预训练模型 《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址&#xff1a;https://arxiv.org/pdf/2303.17568.pdf 相关博客 【自然语言处理】【大模型】CodeGeeX&#…

二叉排序树

二叉排序树 文章目录 二叉排序树创建遍历删除完整代码 假如给你一个数列 (7, 3, 10, 12, 5, 1, 9)&#xff0c;要求能够高效的完成对数据的查询和添加。 使用数组 数组未排序&#xff1a; 优点&#xff1a;直接在数组尾添加&#xff0c;速度快。 缺点&#xff1a;查找速度慢. 数…

[图形学] 射线和线段之间的最小距离

1 说在前面 本文的主要内容来自于Unity引擎中Spline功能的一个函数&#xff0c;一开始我难以理解这几个向量运算的作用和几何意义&#xff0c;经过一番思考后总结如下&#xff1a; 该段代码实际上更像是两个直线之间寻找最短距离&#xff0c;然后判断该距离对应的点在其中一条…

STM32利用USB的HID与QT上位机通信

之前使用kingst的逻辑分析仪&#xff0c;打开上位机软件&#xff0c;插上带usb的硬件就可以通信&#xff0c;也不需要打开串口什么的&#xff0c;感觉很方便&#xff0c;于是借用一个周末研究下这个技术。本文主要是用于记录自己学习的过程&#xff0c;顺便分享下学习感悟。 首…

大数据周会-本周学习内容总结012

开会时间&#xff1a;2023.05.07 16:00 线下会议 目录 01【es数据同步至mysql】 1.1【在es中插入数据后能够同步到mysql中】 1.2【修改与删除es中的数据】 02【nifi】 2.1【Nifi的单机及分布式集群部署】 2.2【nifi集群&#xff0c;getFile简单使用nifi】 2.3【nifi使用…

如何利用Requestly提升前端开发与测试的效率,让你事半功倍?

痛点 前端测试 在进行前端页面开发或者测试的时候&#xff0c;我们会遇到这一类场景&#xff1a; 在开发阶段&#xff0c;前端想通过调用真实的接口返回响应在开发或者生产阶段需要验证前端页面的一些 异常场景 或者 临界值 时在测试阶段&#xff0c;想直接通过修改接口响应来…

Nuvoton NK-980IOT开发板 u-boot 编译

前言 最近搭建了 Nuvoton NK-980IOT开发板 的开发编译环境&#xff0c;记录一下 u-boot 的 编译流程 Nuvoton NK-980IOT开发板 资源还是比较的丰富的&#xff0c;可以用于 嵌入式Linux 或者 RT-Thread 的学习开发 开发板上电比较的容易&#xff0c;两根 USB 线即可&#xff0…

进程与线程(二)

进程同步、进程互斥 同步亦称直接制约关系&#xff0c;是指为完成某种任务而建立的两个或多个进程&#xff0c;这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于他们之间的相互合作。 操作系统要提供“进程同步机制”来解决异…