首页 > 其他分享 >GNN学习 GNN Layer(持续更新中)

GNN学习 GNN Layer(持续更新中)

时间:2023-07-23 19:11:07浏览次数:57  
标签:Layer 聚合 AGG 更新 信息 Message GNN 节点

GNN学习 GNN Layer

GNN的通用框架

  • 1.对GNN的一个网络层进行信息转换和信息聚合两个操作
  • 2.连接GNN的网络层
  • 3.图增强,分为图特征增强和图结构增强
  • 4.学习目标,有监督学习还是无监督学习,节点/边/图级别

1.信息转换和信息聚合

GNN Layer=Message+Aggregation

pCqj0fK.png

不同的实例有不同的信息转换和增强的方法

GNN单层网络的目标是将一系列向量压缩到一个向量中

Message computation

\(m_u^l=MSG^l(h^{l-1}_u)\)

每个节点都会产生信息,这些信息将会被传递到其它节点

MSG可以是一个矩阵W

Message Aggregation

\(h_v^l=AGG^l({m_u^l,u\in N(v)})\)

每个节点都要聚合从其它的邻居节点处获得的信息

AGG可以是Sum,Mean或者Max

存在的问题:

会导致节点自身的信息丢失,因为在计算时不会包含节点本身,解决方法就是在计算\(h_v^l\)时包含\(h_v^{l-1}\)

  • 在信息传递时,对节点本身和邻居应用不同的权重矩阵
  • 在信息聚合时,将邻居节点与自身信息进行聚合

\(m_u^l=W^lh^{l-1}_u\)

\(m_v^l=B^lh^{l-1}_v\)

\(h_v^l=CONCAT(AGG({m_u^l,u\in N(v)}),m_v^l)\)

所以一个单层的神经网络就是将这些东西结合在一起

  • Message:\(m_u^l=MSG^l(h^{l-1}_u),u\in {N(v)\cup v}\)
  • Aggregation:\(h_v^l=AGG^l(\{m_u^l,u\in N(v)\}),m_v^l)\)

在做完前面的步骤之后,我们可以将其经过一个非线性激活函数\(\sigma\),例如ReLU或者Sigmoid

经典案例分析

1.GCN

前面讲到的GCN的传递函数

\(h_v^l=\sigma(\sum_{u\in N(v)}W^l\frac{h_u^{l-1}}{\left | N(v) \right | })\)

累加号就是聚合的过程

累加号后面的就是信息传递的过程

详细来说:

Message:

\(m_u^l=\frac{1}{|N(v)|}W^lh^{l-1}_u\)

Aggregation:

\(h^l_v=\sigma(Sum(\{m_u^l,u\in N(v)\}))\)

2.GraphSAGE

这个方法包含了节点本身的一些信息

\(h_v^l=\sigma(W^l\cdot CONCAT(h_v^{l-1},AGG(\{h_u^{l-1},\forall u\in N(v)\})))\)

Message过程在AGG里进行计算了

先聚合邻居节点,再聚合自身节点

AGG可以是Sum,Mean甚至是LSTM

之后要进行归一化,我们这里采用L2 Normalization

对每层都进行L2归一化,也就是

\(h_v^l\leftarrow \frac{h_v^l}{||h_v^l||} \forall v\in V\)

并且\(||u||_2=\sqrt{\sum_iu_i^2}\)所以被称为L2-norm

标签:Layer,聚合,AGG,更新,信息,Message,GNN,节点
From: https://www.cnblogs.com/anewpro-techshare/p/17575739.html

相关文章

  • android页面突然闪一下更新
    Android页面闪烁更新问题解析与解决方案1.简介在Android开发中,我们经常会遇到页面展示闪烁的情况,即页面在更新数据后会短暂地闪烁一下。这种现象通常是由于页面数据刷新的频率过高或者刷新机制不合理所引起的。本文将从原因分析、解决方案和代码示例三个方面来介绍如何解决An......
  • android 热更新手写框架
    Android热更新手写框架实现流程热更新是指在不修改已安装应用程序的情况下,通过下载差异化的资源文件,实现应用程序的更新。在Android开发中,我们可以手动实现一个热更新框架,使得应用程序能够在不重新安装的情况下更新。下面是实现Android热更新框架的步骤:步骤描述1从服......
  • GNN学习 GNN Model
    GNN学习GNNModel这部分主要讲如何使用图神经网络GNN来进行节点嵌入我们首先会想到,将邻接矩阵和特征合并到一起应用到深度神经网络上,问题在于:需要O(|V|)的参数不适用于不同大小的图对节点顺序敏感我们可以将卷积神经网络泛化到图上,并应用的节点特征数据但是图没有固定的......
  • mongodb更新字段的值
    MongoDB更新字段的值作为一名经验丰富的开发者,你需要教会一位刚入行的小白如何在MongoDB中更新字段的值。在本文中,我将向你展示整个更新字段的流程,并提供每一步所需的代码和注释。更新字段的流程下面是更新字段的流程。你可以使用表格来展示这些步骤。步骤描述步骤......
  • 【持续更新】C 和 C++ 区别很大!
    一些容易被忽略的C与C++的重要区别头文件C标准库头文件名在C++中通常去除扩展名,并加上c前缀,如:stdio.h->cstdiostdlib.h->cstdlib其中一个重要的区别是后者保证与C库兼容的各个函数名可以在std命名空间中找到,但并不保证它们不存在于根命名空间中,这可能会引......
  • INFINI Labs 产品更新 | Easysearch 新增分词插件、Gateway 支持邮件发送等功能
    INFINILabs产品又更新啦~,本次更新概要如下:Easysearch新增了分词插件、优化了生命周期管理功能等;Gateway新增smtp过滤器来支持邮件的发送,支持自动跳过因为异常关闭而损坏的磁盘队列文件等;Console新增熔断器监控指标、新增矩形树图(Treemap)、优化了探针Agent指标采集和集......
  • android 线程更新ui
    Android线程更新UI的实现简介在Android开发中,我们常常会遇到需要在后台线程中进行耗时操作,然后在UI线程中更新界面的情况。本文将介绍如何实现在Android中使用线程更新UI,并提供相应的代码示例和解释。实现流程下面是实现"Android线程更新UI"的整个流程:步骤描述步骤1......
  • Uncaught AssertionError: Assertion failed. See https://openlayers.org/en/v6.15.1
    openlayers点击具体错误Cannotfitemptyextentprovidedas geometry.这个错误信息意味着OpenLayers在尝试使用一个空的范围作为几何图形时出现了问题。范围(extent)表示几何图形覆盖的边界框或区域,它由四个坐标值组成:最小经度、最小纬度、最大经度和最大纬度。当范围没有......
  • vuex中的state更新了,但是页面不更新
    问题:我有两个页面,都是用了同一个变量,我在A页面更改了变量,然后我切到B页面,B页面上的变量没有刷新 原因:是因为我这两个页面的路由在配置的时候都是用了keep-alive,所以导致在两个keep-alive之间的页面切换时,页面不会主动刷新,只会展示第一次加载的内容router.config.js 解......
  • 流媒体视频融合平台EasyCVR更新版本后,首页无法打开的原因排查与解决
    EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,包括:NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。平台具有强大的数据接入、处理及分发能力,可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理。有用户反馈......