视频链接:零基础多图详解图神经网络(GNN/GCN)【论文精读】 - 哔哩哔哩 (bilibili.com)

博客链接:A Gentle Introduction to Graph Neural Networks (distill.pub)

1前言

选文原因:

1、图片数据结构、相对于文本序列更复杂
                上一次关注图还是十几年前,社交网络,计算难,转而关注别的地方。
                图神经网络 popular,同学用 ML 处理图结构数据不熟(感谢老师),基础梳理
        2、博客写作非常好,值的精读

标题:A gentle introduction to graph neural networks

技术博客不用复杂词,受众比论文广。

副标题:

Neural networks have been adapted to elverage the stucture and properties of graphs. NN 已经被用来处理 图结构和图性质。
                We explore the components needed for bulding a graph neural network - and motivate the design choices behind them. 探索了构建 图神经网络的模块 + 背后的思想。
                4 层 5个节点的 交互 图:可以显示每一个节点它是由上面一层哪一些节点计算而来的。

只要足够深的话,很有可能一个节点是能够处理到整个 比较大范围的图里面的节点信息 ==== GNN怎么利用图的结构化信息来处理信息的。

作者:Google Research

发表在 distill 网站,博客相比论文写作更自由。

写作建议:有一个 table content 知道每章讲的内容,方便读者阅读时进行跳读 or 选择从头读到尾。

Remark:distill 文章质量比较高、尽量用图说话;可从头到尾读。

distill 2篇关于 GNN 文章,另外一篇是 图上的卷积。(斜体非正文)

第一段

Graphs are all around us 我们身边都是图,图是一个一般化的架构。

十几年前,学者提出 GNN;最近 GNN 被应用到 药物发现、物理模拟、虚假新闻的检测、流量预测 & 推荐系统。

starting to 说明 GNN 新、应用还不多;GNN应用有挑战,解决效果如何快 + 好。还有很多 GNN 相关可以研究。

第二段:本文做什么?

什么数据可以表示成图?
        图和别的数据的区别?Why use GNN?
        GNN 的构建模块长什么样?
        playground 一定要玩一玩,作者很用心

2什么是图


07:05


Q1:图是什么?

实体(顶点 node)之间的关系(边 edge)。A graph represents the relations (edges) between a colelction of entities(nodes).

V 顶点

E 边

U 全局信息,整个图

Q2: attributes in V E U 重要吗?

!关心图的整个架构

!更关心 每个顶点、每条边、和 整个图表示的信息

Q3: attribute 如何表示呢?

embedding 表示 V E U 的 attributes

Q3:GNN 重点是什么?图表示学习

这些向量是否能通过学习数据,从而表示我们想要的信息?

图的分类:无向图(微信朋友) + 有向图(B站up主和粉丝)

Q4:数据如何表示成图?

图片如何表示成图?

244 * 244 * 3通道,3维度的tensor

把图片看作一张图,一个像素是一个点;一个像素跟我是连接关系的话,像素之间连一条边。

把图片上的像素 映射到 图上的每一个点

0-0 2-2

边信息:

2-2的八邻居

蓝色点 表示 adjacent matrix,白色点表示无连接;通常是很大的sparse matrix

text as graphs?

文本的顺序:图的有向路

distill 博客 文本可更改,欢迎大家玩~

Q5:除了图片、文本,还有什么数据可以表示成图?

香料分子图、咖啡因的分子图、社交网络图、引用图(directed)

奥赛德人物图

实际图的大小

wikipedia 巨大知识图,1200w结点,1M个边,可能是索引页。

What types of problems have graph structured data? 把数据表示成图之后,我们可以解决什么问题呢?

graph-level U, node-level V, edge-level E

graph-level task 图分类:图中是否有环

node-level task

顶点分类:跟老师A 还是 B 蓝还是红

选举预测

edge-level task

图中顶点和边的关系

watching fighting

The challenges of using graphs in machine learning

图在NN 的挑战:如何使 图 和 NN 兼容?

图有几类信息需要表示?

nodes V, edges E, global-context U and connectivity

V E U 可以用 vector 表示,问题是 connectivity 如何表示?by adjacent matrix?

Q6:n * n 的 0-1 元素矩阵 表示 connectivity 可以吗?

矩阵很大,i.e., wikipedia数据集,12M nodes,矩阵会有12M行、12M列,无法存储。
边通常是稀疏的,存储 sparse matrix ✔;但稀疏矩阵在GPU上的高效运算,难❌
邻接矩阵的 行、列顺序交换,不会影响图

左图和有图是 permutation 的关系,放进 NN 应得到相同的结果。

异构图的特别详细的例子

4个顶点,4条边,24种不同的排序,24个邻接矩阵

Q7: 如何高效存储、顺序无关的图呢?

8个顶点、7条边。

图中点和边的属性、全局信息用标量示例,也可以用向量表示。

非常推荐去 distill 博客玩,可以更改图中的数值。

Adjacency List

长度 = 边数

第 i 项表示第 i 条边连接的 2 个顶点。

存储效率怎么样?

只存边 adjacency list、V E U 的 attributes

Permutation 的效果如何?

Adjacency List 中的元素会相应变化。

Q8:Nodes, Edges, Adjacency List, Global 的存储方式怎么样?

存储高效,顺序无关

3图神经网络


23:18


输入一个高效存储、顺序无关的 Nodes, Edges, Adjacency List, Global 信息,如何用 NN 处理呢?---- Graph Neural Networks

GNN定义:

A GNN is  an optimizable transformation on all attributes of the graph (nodes, edges, global-contex ) that preserves graph symmetries (permuation invariance).

图上属性的 可以优化的变化,且保持图的对称信息。

Q9: how to build GNNs?

message passing NN in this distill paper, GNN 也可以用别的信息来描述。

graph-in(nodes, edges, adjacency list, global information), graph-out

GNN 对 attributes 向量进行变化,不改变原图的连接性。

transform these embeddings, without changing the connectivity of the input graphs.

The simplest GNN


24:58


对 attributes 进行变换时,图的结构不变化

Un 全局向量, Vn 顶点向量, En 边向量 分别构造一个MLP, MLP的输入输出的大小一致。

3个MLP f_Un, f_Vn, f_En 组成一个 GNN 的层。

graph-in, graph out

MLP f_Un, f_Vn, f_En  分别对输入的 Un 全局向量, Vn 顶点向量, En 边向量 计算,得到更新 Un+1 全局向量, Vn+1 顶点向量, En+1 边向量 。

Permutation invariance

MLP 是对每一个向量独自作用,MLP 不会考虑所有的连接信息,所以不管排序如何变化,都不会改变 MLP 的输出结果。

simplest GNN 层的叠加,构造一个比较深的 GNN

GNN predictions by pooling information

最后一层的输出,怎么得到预测值?


26:37


simplest: nodes prediction 顶点预测

分类预测: i.e., 空手道俱乐部喜欢 A 老师还是 B 老师

和 NN 类似,node embeddings 向量 接入 输出维度为 2 or n 的全连接层 + 一个 softmax,得到分类结果;输出维度为 1,得到回归结果。

最后一层的顶点进入 图中的 C_V_{i,n} classification 全连接网络,得到顶点的分类。

Note: 所有顶点共享一个全连接层 C_V_{i,n} 的参数。

GNN 之前的层,不论图有多大,一层里面只有 3 个MLP

所有顶点共享一个 MLP
所有边共享一个 MLP
所有的全局 U(哈哈哈,全局只有一个)不用共享。

complex: node predictions without node embeddings

对某个顶点分类预测,但是没有这个顶点的向量。

pooling 汇聚 (似 CNN 的 pooling)

与缺失点连接的边的向量 4个 + 全局向量 1 个 == 代表这个缺失点的向量,再做一个全连接层的预测输出。

假设:所有顶点、边、全局向量的维度一致;不一致,需要做投影。

别的缺失点,连接关系不一样,最后的向量也不一样。

缺失点预测的示意图

V_n 是只有边、没有顶点的向量

E_n 是边的向量

Rho_{E_n --> V_n} 通过 pooling 汇聚从 边 +全局 到 顶点的信息, 进入顶点共享的分类层 C_V_n 之前,每个顶点都有自己的向量 embedding

Q: 只有 node embeddings 没有 边的向量,怎么办?

Rho_{V_n --> E_n} 把 node embeddings 汇聚到 vertex 边上。

一条边,连接两个顶点,2个顶点向量相加 (+ 全局向量)== 得到 边的向量,然后进入边共享的一个 MLP 预测分类网络,得到边的预测输出。

Q: 没有全局向量 U, 有 node embeddings, 对整个图做预测?

把所有的 node embeddings 加起来,得到一个全局的向量,进入全局的MLP,得到一个全局的预测输出。

总结:不论缺少哪一类 V E U attributes,pooling 汇聚得到缺失值 embeddings,进入MLP,得到预测值。

最简单的 GNN 示意图


30:50


input graph 经过 GNN blocks (每一个 block 里面有 3个 MLP对 V顶点 E边 U全局 attributes 更新)得到 一个同结构的 transformed graph, 但 V E U 属性值已被更新。

(if 某类 embeddings 缺失,通过其它 embeddings pooling 汇聚而来)

最后根据 V E U 某类属性做预测,接一个 MLP classification layer 输出预测信息。

Q: simplest GNN 有什么问题?

GNN blocks 没有使用图结构信息:使用 MLP 更新属性值时,没有看到 V 顶点 E 边 的交互信息,只是 V 进 MLP_V, E 进 MLP_E, U 进 MLP_U,忽略了点边之间的连接信息。

overlook information: 一个顶点与哪些边相连,一个顶点与哪些顶点相连;一条边与哪些顶点相连,一条边与哪些边相连

GNN blocks 没有合理的将整个图的信息更新到属性值里,最后的结果不能 leverage 图的信息。

Q: 如何改进 GNN blocks 以考虑图的结构信息?

Passing messages between parts of the graph


32:21


类似 pooling 汇聚

对图中顶点进行更新,

接下来我们来看一下怎么样对它改进,使得在这一块能够把图的信息及早地放入进去。我们将用到的技术是之前提到过的信息传递。假设你理解过之前我们的汇聚是怎么工作的话,那么它其实是一个很简单的东西,我们就直接跳到我们下面这张图,用图来解释一下它是怎么工作的。

4实验

GNN 对超参数比较敏感:

多少层、attribute的embedding的维度、汇聚使用什么操作max average、怎样传递消息

5相关技术


50:14


除 GNN 外,还有别的图吗?

Multigraph

一张图中的多种边:有向边、无向边;分层图,一些顶点是子图的

不同的图结构 影响 message passing 的操作

Sampling graphs and batching in GNNs

Why sample graphs?

i.e., 一个有很多层、很大的图

最后一层的顶点,即使只看每一层的一阶邻居,根据消息传递,最后一层的顶点能看到一个很大的图,甚至是全图的信息(如果图的connectivity可以的话)

计算梯度需要 forward 过程中全部的中间变量。因为最后一层的顶点要看整个图的话,对最后一层的顶点计算梯度,需要把整个图的计算中间结果都保存下来,--> 计算难 /(ㄒoㄒ)/~~

--> sample graph

从大图中每次 sample 一个小图,在采样的小图上做信息汇聚,保存记录这个小图上的中间计算结果。

sample graph 的方法有哪些呢?

1 random node sampling

采样 4 个黄色nodes,得到 1-degree neighbor 红色点
只在 sample 出来的子图上做计算,避免图特别大、内存存不了
2 random walk sampling

随机游走
从某一个顶点开始,随机找一条边,然后沿着这条边走到下一个节点
规定最多随机走多少步,得到一个sample子图

3 1 + 2

随机走三步,走到的节点的邻居也考虑进来
4 BFS

取一个点及其一阶、二阶邻居,然后再往前走 k 步,得到子图


4 种 sample graphs 的方法取决于数据集的形式

零基础多图详解图神经网络(GNN/GCN)【论文精读】相关推荐

  1. 图神经网络GNN GCN AlphaFold2 虚拟药物筛选和新药设计

    文章目录 图神经网络 1. Geometric Deep Learning Representation learning 表征学习 机器学习的数据类型:序列.网格.图 引出GNN 2. Graph ...

  2. 零基础入门深度学习(3) - 神经网络和反向传播算法

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

  3. AQS基础——多图详解CLH锁的原理与实现

    1 什么是自旋锁和互斥锁? 由于CLH锁是一种自旋锁,那么我们先来看看自旋锁是什么? 自旋锁说白了也是一种互斥锁,只不过没有抢到锁的线程会一直自旋等待锁的释放,处于busy-waiting的状态,此时 ...

  4. android widget零基础,Android Widget详解(一)

    前言 实习需要最近在研究Android的Widget,看了很多帖子个人觉得比较零散,特地在此总结一下,写的不好大家见谅哈^_^ 本博客全套源码稍后会提供下载 什么是Widget widget是安卓较苹 ...

  5. Java 中的一维数组以及二维数组(8千字零基础超全详解)

    文章目录 前言 一.一维数组 1. 数组的初始化 1.1 动态初始化一 1.2 动态初始化二 1.3 静态初始化 2. 数组使用的注意事项和细节 3. 经典例题 4. 数组赋值机制(重难点!) 5. ...

  6. 图神经网络入门 (GNN, GCN)

    目录 Graphs and where to find them Attributes of graphs Images as graphs Text as graphs Graph-valued d ...

  7. 零基础入门深度学习(5) - 循环神经网络

    往期回顾 在前面的文章系列文章中,我们介绍了全连接神经网络和卷积神经网络,以及它们的训练和使用.他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的.但是,某些任务需要能够更好的 ...

  8. 零基础入门深度学习(4) - 卷积神经网络

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

  9. 零基础入门深度学习(5) - 循环神经网络【转】

    本文转载自:https://zybuluo.com/hanbingtao/note/541458 在前面的文章系列文章中,我们介绍了全连接神经网络和卷积神经网络,以及它们的训练和使用.他们都只能单独的 ...

最新文章

  1. HDU6141(最小树形图)
  2. 判断三角形java代码_小猿圈Java循环嵌套语法的使用介绍
  3. c语言课程描述英文版,c语言学生选课系统(国外英文资料).doc
  4. 认识学习网络布线与数制转换
  5. php.ini 中文详解
  6. 对于超平面的理解[转载]
  7. 渲染已保存的几何图形
  8. linux zip命令收藏
  9. 微信小程序上传图片使用canvas添加水印
  10. 每日一记之数据库事务
  11. CentOS 7系统语言修改成英文
  12. notepad++安装(kali 64位)
  13. 关于Win10。。。我是来吃螃蟹的。。。
  14. 数据库应用(mysql)数据库编程
  15. 【阅读笔记】SiamMask
  16. Detecting Unseen Visual Relations Using Analogies阅读笔记
  17. 20230414英语学习
  18. 联想V450笔记本连接手机蓝牙问题
  19. JS002-JS数据类型判断
  20. 运营数据分析模型—漏斗分析

热门文章

  1. 树莓派读取usb摄像头
  2. python软件下载安装百度网盘-Python3.8.0
  3. Hook技术在APP测试中的应用
  4. 英特尔NUC迷你电脑套件安装windows10+ubuntu18.04双系统
  5. Android 垃圾分类APP(五)垃圾分类新闻展示
  6. 微信小程序之Data当前日期坑 安卓 ios日期不对
  7. 北邮矩阵论- 第1章 1.1线性空间
  8. 【最全下载合集】最新Office 2021微软官方原版离线安装下载地址合集
  9. Dart语言检测变量类型
  10. 斯坦福大学新课CS224W-图网络机器学习算法-视频及ppt资源分享