《图机器学习》-GNN 《A Single Layer of a GNN》

news2024/11/25 23:19:07

这里写目录标题

  • 一、A Single Layer of a GNN
  • 二、Classical GNN Layer
    • 1、GCN
    • 2、GraphSAGE
    • 3、GAT
  • 三、GNN Layer in Practice

一、A Single Layer of a GNN

单层的神经网络包括两个部分:

  1. 消息转换(Message)
  2. 信息聚合(Aggregation)

G N N   L a y e r = M e s s a g e + A g g r e g a t i o n GNN\ Layer = Message + Aggregation GNN Layer=Message+Aggregation

在这里插入图片描述

GNN Layer做的事情就是:
将一组向量压缩成一个向量,即根据一组邻居向量生成本节点的embedding。如下图;

在这里插入图片描述


Message computation

Message是消息在图的边上传递信息时进行的操作,即计算位置位于边上。

在这里插入图片描述

Message function表示为:
在这里插入图片描述

直觉:
每个节点将创建一条消息,该消息稍后将发送给其他节点。

最简单的消息转换函数可以是一个线性变换,如下图:
在这里插入图片描述


Aggregation

消息聚合一般位于消息传递之后,作用是将转换后的消息聚合成一个向量。

在这里插入图片描述

直观:
每个节点将聚集来自节点v的邻居的消息,以生成本节点的embedding。

Aggregation表示为:
在这里插入图片描述

常用的消息聚合函数如下:
在这里插入图片描述

  • m u ( l ) m^{(l)}_{u} mu(l):表示上一层embedding转换后的消息
    h v ( l ) h^{(l)}_v hv(l):表示v的邻居节点消息 m u ( l ) m^{(l)}_{u} mu(l)聚合后产生的本层v的embedding

上述的Aggregation存在的问题是:
没有使用节点本身的信息,所以节点本身的信息会丢失。(即不会记忆之前对该节点所了解到的信息)

解决方案:

  1. 在进行消息转换时,节点本身也进行转换

    • 通常情况下,邻居节点和节点本身将执行不同的消息计算。
    • 如邻居节点会通过 W W W矩阵进行消息转换,而节点本身会通过另一矩阵 B B B进行消息转换
      在这里插入图片描述
  2. 在消息聚合时,加入本节点的 m v ( l ) m^{(l)}_{v} mv(l)

    • 在从邻居聚合之后,可以聚合来自节点v本身的消息
    • 常用的操作有:concatenation、 summation
      在这里插入图片描述

此外,可以引入非线性的激活函数,来增强GNN的表达能力。既可以在message处,也可以在aggregation处添加。


二、Classical GNN Layer

1、GCN

介绍一个经典的图卷积网络:GCN

其embedding公式如下:
在这里插入图片描述

W W W矩阵移入到求和函数里,如下图;

  • 红色虚线的部分时消息转换操作,进行了一个线性转换和归一化操作
  • 黄色部分时消息聚合,进行的是sum操作
    在这里插入图片描述

2、GraphSAGE

GraphSAGE建于GCN之上,但做了扩展。

其embedding公式如下:
在这里插入图片描述

该公式可以理解成两步聚合:
第一步:聚合邻居节点信息
第二步:在节点本身上进一步聚合
在这里插入图片描述

第一步的聚合函数AGG可以是:

  • Mean:取邻居的加权平均值
    在这里插入图片描述

  • Pool:变换相邻向量并应用对称向量函数Mean(⋅)或Max(⋅)
    在这里插入图片描述

  • LSTM:应用LSTM来重新打乱邻居
    在这里插入图片描述

个人理解:
这里的AGG其实是包含两个部分的,先转换再聚合。
如Pool:MLP就是转换,Mean是聚合。

在GraphSAGE的每一层 h v ( l ) h^{(l)}_v hv(l)上都可以应用L2 Normalization。

在这里插入图片描述

  • 没有L2归一化,嵌入向量对向量有不同的尺度(L2范数)
  • 在某些情况下(并非总是如此),嵌入的规范化会导致性能的提高
  • L2归一化后,所有向量都有相同的L2范数

3、GAT

该模型在GCN的基础上引入了注意力机制,其公式如下:
在这里插入图片描述

这里的 α v u α_{vu} αvu表示 u u u节点提供的信息对本节点 v v v的重要性

在GCN和GraphSAGE就有注意力的概念了:

  • 在GCN和GraphSAGE中, α v u = 1 ∣ N ( v ) ∣ α_{vu}=\frac{1}{|N(v)|} αvu=N(v)1
  • α v u α_{vu} αvu取决于 v v v,而非 u u u;即所有的邻居节点的都同等重要,所以它的作用非常有限。

但在实际情况中,并非所有的邻居节点都同等重要的;所有将注意力机制引入GNN,以量化不同节点对本节点信息的重要性。

α v u α_{vu} αvu的计算公式记为 a a a,可以基于节点的信息来计算注意力参数 e v u e_{vu} evu
在这里插入图片描述

e v u e_{vu} evu表示 u u u的消息对节点 v v v的重要性。

之后将 e v u e_{vu} evu进行归一化得到 α v u α_{vu} αvu;可以使用softmax函数进行归一化将重要性置为区间0~1的数字。

在这里插入图片描述

得到 α v u α_{vu} αvu后,基于注意力权重 α v u α_{vu} αvu计算节点的embedding:
在这里插入图片描述

例子:
在这里插入图片描述

当然也可以通过其他形式得到 α v u α_{vu} αvu;如将节点A和B的信息串联起来,当作输入通过一个简单的单层神经网络,最后输出 e v u e_{vu} evu;如下图:
在这里插入图片描述

a a a中的参数可以通过端到端的方式学习。


Multi-head attention

多头注意力机制能够稳定注意机制的学习过程。

通过构造多个注意力得分(每个副本都有不同的参数集,即下面的每个初始化时都会赋予不同的参数),如下图:
在这里插入图片描述

最后,再将上面的三个输出进行聚合:

在这里插入图片描述


注意力机制的好处:

  • 允许(隐式地)为不同的邻居指定不同的重要性值【关键优点】
  • 计算效率:
    • 注意系数的计算可以在图的所有边缘上并行进行
    • 聚合可以在所有节点上并行化
  • 存储效率:
    • 稀疏矩阵操作不需要存储超过O(V + E)个条目
    • 固定数量的参数,与图的大小无关
  • 只关注于本地网络社区
  • 归纳能力:
    • 这是一种共享的边缘机制
    • 它不依赖于全局图结构

三、GNN Layer in Practice

许多现代深度学习模块可以合并到GNN层中:

  • Batch Normalization:
    • 作用:稳定神经网络训练
  • Dropout:
    • 防止过度拟合。迫使GNN对损坏的数据更加健壮
  • Attention:
    • 控制信息的重要性
  • 激活函数 :

在这里插入图片描述

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

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

相关文章

物联网的新应用--触摸物联网

摘要:本文介绍一下触摸物联网的新进展--电子皮肤的物联网应用。还以为物联网的作用领域单单是从现场采集数据或者传输命令到执行设备吗?不,物联网的应用范围远比控制一盏灯大的多。据网上报道,香港城市大学(城大&#…

【软件测试面试题】大厂头条:如何定位bug?实际案例拿offer还不简单......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 问题: 用…

【数据结构】二叉树的四种遍历方式——必做题

写在前面学完上一篇文章的二叉树的遍历之后,来尝试下面的习题吧开始做题144. 二叉树的前序遍历 - 力扣(LeetCode)94. 二叉树的中序遍历 - 力扣(LeetCode)145. 二叉树的后序遍历 - 力扣(LeetCode&#xff09…

Git使用笔记

分支branch切换到另一个分支git checkout 你要切换到的分支的名字git checkout master将本地的这个分支branch1和gitee上的branch1进行合并(本地的branch1有的,gitee上branch1没有的增加上去)git merge branch1git merge 分支的名字查看本地是…

图解LeetCode——剑指 Offer 25. 合并两个排序的链表

一、题目 输入两个递增排序的链表&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 二、示例 2.1> 示例1&#xff1a; 【输入】1->2->4, 1->3->4 【输出】1->1->2->3->4->4 限制&#xff1a; 0 < 链表长度 < 1000 三、…

1、RocketMQ概述

文章目录1 MQ概述1.1 MQ简介1.2 MQ用途1.3 常见MQ产品1.4 MQ常见协议2 RocketMQ概述2.1 RocketMQ简介2.2 RocketMQ发展历程尚硅谷RocketMQ教程-讲师&#xff1a;Reythor雷&#xff08;老雷&#xff09; 我们缺乏的不是知识&#xff0c;而是学而不厌的态度 1 MQ概述 1.1 MQ简介…

实例9:四足机器人运动学正解平面RR单腿可视化

实例9&#xff1a;四足机器人正向运动学单腿可视化 实验目的 通过动手实践&#xff0c;搭建mini pupper四足机器人的腿部&#xff0c;掌握机器人单腿结构。通过理论学习&#xff0c;熟悉几何法、旋转矩阵法在运动学正解&#xff08;FK&#xff09;中的用处。通过编程实践&…

一个好的python文件可以有几种用途?

大家好鸭&#xff01;我是小熊猫~ 这次来带大家浅浅回顾一点python小知识~ 源码资料电子书:点击此处跳转文末名片获取 python文件总共有两种用途&#xff1a; 一种是执行文件另一种是被当做模块导入 编写好的一个python文件可以有两种用途&#xff1a; 1. 脚本&#xff0c;…

Laravel框架02:路由与控制器

Laravel框架02&#xff1a;路由与控制器一、路由配置文件二、路由参数三、路由别名四、路由群组五、控制器概述六、控制器路由七、接收用户输入一、路由配置文件 以web网页路由文件为例&#xff1a; 默认根路由 路由定义格式Route::请求方式(请求的URL, 匿名函数或控制响应的方…

【MongoDB】一、MongoDB的安装与部署

【MongoDB】一、MongoDB的安装与部署实验目的实验内容实验步骤一、下载MongoDB安装包二、创建文件夹data及子文件夹db和log三、启动MongDB服务1. 在命令行窗口执行启动MongoDB服务命令2. 打开mongodb.log3. 打开浏览器进行启动验证四、登录MongoDB五、配置环境变量六、将MongDB…

yii-shopwind商城多数页面报错,修改mysql一个配置就解决!

解决办法打开mysql配置文件&#xff0c;在[mysqld]下添加如下一行&#xff1a;sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES成功解决!还以为是网站的代码问题, 惊讶到我了. 开源网站下载下来就报错 多不可思议. 终于是配置的问题!加油报错信息如下是其中一个界面的&…

银行数字化转型导师坚鹏:招商银行数字化转型战略研究

招商银行数字化转型战略研究课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不清楚如何制定银行数字化转型战略&#xff1f; 不知道其它银行的数字化转型战略是如何演变的&#xff1f; 课程特色&#xff1a; 用实战案例解读招商银行数字化转型战略。 用独特视角解…

【自然语言处理】基于句子嵌入的文本摘要算法实现

基于句子嵌入的文本摘要算法实现人们在理解了文本的含义后&#xff0c;很容易用自己的话对文本进行总结。但在数据过多、缺乏人力和时间的情况下&#xff0c;自动文本摘要则显得至关重要。一般使用自动文本摘要的原因包括&#xff1a; 减少阅读时间根据摘要&#xff0c;选择自…

Widget中的State-学习笔记

Widget 有 StatelessWidget 和 StatefulWidget 两种类型。StatefulWidget 应对有交互、需要动态变化视觉效果的场景&#xff0c;而 StatelessWidget 则用于处理静态的、无状态的视图展示。StatefulWidget 的场景已经完全覆盖了 StatelessWidget&#xff0c;因此我们在构建界面时…

如何把Windows自带壁纸、锁屏壁纸取出作为自己的桌面壁纸?(附:批量更改文件后缀名的方法)

这是一个目录0.0Windows桌面自带壁纸&#xff08;个性化中的壁纸&#xff09;Windows聚焦的锁屏壁纸批量更改后缀名的办法最近开机时&#xff0c;发现Windows聚焦的锁屏壁纸都很好看&#xff0c;特别想留下来当桌面壁纸&#xff0c;寻找了一下之后&#xff0c;终于找到了储存路…

第一节 变量、数据类型、关键字标识符

变量 什么是变量&#xff1a;就是用来存储一个数据的内存区域&#xff0c;而且里面存储的数据可以变化。 double money 10.0&#xff1b; 变量使用的注意事项&#xff1a; 1.先声明再使用。 2.变量声明后&#xff0c;就不能存储其他数据。 3.变量的有效范围是从定义开始到“}…

Dubbo源码解析-——SPI机制

文章目录一、什么是SPI机制二、Java原生的SPI机制2.1、javaSPI示例2.1.1、编写接口和实现类2.1.2、编写配置文件2.1.3、通过SPI机制加载实现类2.1.4、JAVA SPI 源码解析2.1.4.1、ServiceLoader#load2.1.4.2、ServiceLoader构造方法2.1.4.3、ServiceLoader#reload2.1.4.4、LazyI…

IoT项目系统架构案例2

项目背景 1.这个项目是对之前的案例的升级改造参考&#xff1a;IoT项目系统架构案例_iot案例_wxgnolux的博客-CSDN博客2.基于方案1的项目实施过程中碰到的问题,对硬件设备标准化的理念及新的功能需求(如根据天气预报温度调水温,APP界面可操作性优化等)•采用目前IoT主流厂商的架…

java的一些冷知识

接口并没有继承Object类首先接口是一种特殊的类&#xff0c;理由就是将其编译后是一个class文件大家都知道java类都继承自Object&#xff0c;但是接口其实是并没有继承Object类的 可以自己写代码测试: 获取接口类的class对象后遍历它的methods&#xff0c;可以发现是不存在Obje…

Java EE|TCP/IP协议栈之网络层IP协议详解

文章目录一、IP协议感性认知简介特点二、IP协议报头结构4位版本4位首部长度8位服务类型16位总长度16位标识8位生存时间&#xff08;TTL&#xff09;8位协议16位首部长度32位源ip&32位目的地址三、网络地址管理网段划分路由选择参考一、IP协议感性认知 简介 P是整个TCP/IP…