码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 从零开始学GNN


    动手学学GNN

    • 1.什么是Graph
      • 1.1 图结构的表示
      • 1.2 特殊数据的图表示
      • 1.3 GNN常用的输入数据
    • 2.Why GNN?
    • 3.GNN解决的问题及对应的任务
      • 3.1 例1
      • 3.2 例2
    • 4.GNN模型
      • 4.1 各任务对应的GNN简图
      • 4.2 GNN 分类
        • 4.2.1 GCN
        • 4.2.2 GAT
        • 4.2.3 GIN
    • 参考文献

    此blog和本人另一篇博客图神经网络GNN简介有部分内容重合,相对来说介绍的更清晰、更全面。

    另,若无特殊提示,博客设计的均是无向图。

    1.什么是Graph

    在人们的日常生活中,Graph结构的实例形形色色,无所不在。
    在这里插入图片描述
    甚至我们遇到的比较标准的数据,也可以看成是一种比较规则的graph结构。
    在这里插入图片描述

    1.1 图结构的表示

    在计算机中,图是怎样表示的呢?

    一个图结构是由它的vertex(node)、edge(边)以及一些特征(如node的属性/feature)组成。
    在这里插入图片描述

    为了表示图node之间的邻接关系,常常将图存储为一个其邻接矩阵 A A A的形式,该矩阵通常是一个对称的稀疏矩阵。

    在这里插入图片描述
    度矩阵 D D D的计算:

    D i i = ∑ j A i j \qquad\qquad D_{ii}=\sum_jA_{ij} Dii​=∑j​Aij​

    另外,在有些GNN模型中还要用到拉普拉斯矩阵 L L L(normalized graph Laplacian matrix):

    L = I n − D − 1 2 A D − 1 2 \qquad\qquad L=I_n-D^{-\frac{1}{2}} A D^{-\frac{1}{2}} L=In​−D−21​AD−21​

    需要进一步了解谱方法image/graph表征及重建,可以参考图片的谱表征。

    1.2 特殊数据的图表示

    常用CNN/RNN表示的数据,如图片、文本、语音等也可以表示为图结构的形式。

    在这里插入图片描述
    在这里插入图片描述
    文本这里使用的是有向图表示。

    1.3 GNN常用的输入数据

    GNN中最常用的输入数据是以下两种:一是邻接矩阵 A A A,另一个是特征(如节点特征 X X X):
    在这里插入图片描述

    2.Why GNN?

    在这里插入图片描述

    在这里插入图片描述
    CNN与GNN通常的数据计算范式如下:
    在这里插入图片描述

    3.GNN解决的问题及对应的任务

    在这里插入图片描述

    3.1 例1

    在这里插入图片描述

    3.2 例2

    在这里插入图片描述

    4.GNN模型

    4.1 各任务对应的GNN简图

    在这里插入图片描述

    在这里插入图片描述

    4.2 GNN 分类

    从算子角度,主要分为谱方法和空间方法。
    在这里插入图片描述

    4.2.1 GCN

    在这里插入图片描述

    从谱方法到GCN的演变过程,简单总结如下:
    在这里插入图片描述

    4.2.2 GAT

    在这里插入图片描述

    4.2.3 GIN

    GIN主要改进有两点:

    • 加入了一个小的学习参数 ϵ \epsilon ϵ;
    • concatenate/aggragate 所有layer的输出结果。

    在这里插入图片描述
    为了介绍更详细,本文使用了不少来自参考文献的图片,在此感谢。

    若有侵犯,请联系删除。

    参考文献

    [1] https://distill.pub/2021/gnn-intro/#other-types-of-graphs-multigraphs-hypergraphs-hypernodes
    [2] https://dsgiitr.com/blogs/gcn/
    [3] https://distill.pub/2021/understanding-gnns/
    [4] https://web.njit.edu/~ym329/dlg_book/dlg_book.pdf
    [5] Graph neural networks: A review of methods and applications
    [6] GIN: How to Design the Most Powerful Graph Neural Network
    [7] A Comprehensive Survey on Graph Neural Networks

  • 相关阅读:
    CVPR2023 RIFormer, 无需TokenMixer也能达成SOTA性能的极简ViT架构
    【Linux】Linux系统编程(入门与系统编程)(三)(深入理解操作系统、进程、环境变量、内存分布)
    Pikachu靶场-SQL注入-搜索型注入过关步骤
    2023.9.26 IO 文件操作详解
    Mysql的JDBC知识点
    模糊控制器实现对某个对象追踪输入
    第十一周任务总结
    zabbix被动模式和主动模式的区别
    练习7-在Verilog中使用任务task
    【智能优化算法-海马优化器】基于海马优化器求解单目标优化问题附matlab代码
  • 原文地址:https://blog.csdn.net/WANGWUSHAN/article/details/127395173
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号