李宏毅 GNN 课堂笔记
2021-01-04 本文已影响0人
音符纸飞机
重要的网站
https://www.dgl.ai/
https://github.com/rusty1s/pytorch_geometric
https://zhuanlan.zhihu.com/p/54505069
https://zhuanlan.zhihu.com/p/112938037
1. GNN应用例子
1.1分类
![](https://img.haomeiwen.com/i11864412/d4fc197bcace4018.png)
![](https://img.haomeiwen.com/i11864412/1efa3362e5983c44.png)
![](https://img.haomeiwen.com/i11864412/ee90c4d4b2d7cf2f.png)
![](https://img.haomeiwen.com/i11864412/e44f82ec53182c55.png)
1.2 Dataset
- CORA
- TU-MUTAG
1.4 Benchmark
2. 常见模型
Spatial-based Convolution
![](https://img.haomeiwen.com/i11864412/ce6e8ab7b191a55c.png)
NN4G
- layer0做的是简单的embedding
![](https://img.haomeiwen.com/i11864412/a13cf9ac39bab3c0.png)
![](https://img.haomeiwen.com/i11864412/5151fa70eae2e38e.png)
DCNN (Diffusion - CNN)
- 第n层看离当前节点距离n的节点信息
![](https://img.haomeiwen.com/i11864412/292af9f527d959cf.png)
![](https://img.haomeiwen.com/i11864412/41aed402bb18031c.png)
![](https://img.haomeiwen.com/i11864412/eecf285ba06549f0.png)
DGC (Diffusion Graph Conv)
和DCNN的区别就是特征层改成相加
![](https://img.haomeiwen.com/i11864412/4bda7320f1fff060.png)
MoNET (Mixture Model Network)
- deg(x) 表示x的出入度数
- u(x,y) 自定义的距离计算方式
![](https://img.haomeiwen.com/i11864412/cd3ab581b9c04d9c.png)
GraphSAGE
![](https://img.haomeiwen.com/i11864412/bd1e685e9850bbd8.png)
![](https://img.haomeiwen.com/i11864412/295d33090ce4f50c.png)
GAT (Graph Attention Network)
- 不同的邻居weight要怎么给
- e → energy
![](https://img.haomeiwen.com/i11864412/91332bc1def5be6c.png)
GIN (Graph Isomorphism Network)
结论:首先把邻居都加起来+自己*系数,不要用maxpooling,也不要用meanpooling
Graph Signal Processing and Spectral-based GNN
![](https://img.haomeiwen.com/i11864412/de2dc47e8a77fc45.png)
向量空间
- 任何信号都是由基础信号的加权和组成
- 单个基础信号的权重可以由信号点乘该基础信号求得
- 基础信号都是正交的
![](https://img.haomeiwen.com/i11864412/bc6642836e0ed021.png)
傅里叶级数
![](https://img.haomeiwen.com/i11864412/0b9df6250b008e66.png)
![](https://img.haomeiwen.com/i11864412/b047eb9f99552ac4.png)
傅里叶变换
![](https://img.haomeiwen.com/i11864412/7fd89b1b1ab06362.png)
Spectral Graph Theory
-
是节点的个数
-
是邻接矩阵
- 只考虑无向图 (
是对称矩阵)
-
邻居数量
-
节点上的signal(具体问题具体含义,如温度等)
![](https://img.haomeiwen.com/i11864412/3afe0e06a14a6f98.png)
- Graph拉普拉斯
, 对称矩阵、半正定矩阵(所有特征值大于等于0)
- 特征分解,
是frequency;
是正交基,且长度为1
示例
![](https://img.haomeiwen.com/i11864412/2210a61531131eed.png)
- 不同频率下的基
![](https://img.haomeiwen.com/i11864412/da28e7aa3dfa097b.png)
- 离散傅里叶基,帮助理解频率的概念
![](https://img.haomeiwen.com/i11864412/05cb57380e712356.png)
- 如果把
作用在
上,如下图,可以发现:
某种程度上表示某个节点与邻居的能量差
可以归纳为如下:
![](https://img.haomeiwen.com/i11864412/748729c46a2e19d3.png)
能量的话要算平方(要去补一下信号处理)
代表了节点之间的能量差异
![](https://img.haomeiwen.com/i11864412/58eaf1706abfe444.png)
如果把替换成特征向量
,可以发现,最终就是特征值
![](https://img.haomeiwen.com/i11864412/5e78286e19ad8137.png)
如何做filtering?
- 时域→频域→与filter相乘→时域
首先是时域转频域,下面的就是上面的
,其实就是分析每个正交基上的投影,在每个频率
下的成分有多大
![](https://img.haomeiwen.com/i11864412/6dbf40438c26130a.png)
那么怎么转回去呢,先看下普通的信号处理,每个时刻把每个频率下成分大小叠加起来
![](https://img.haomeiwen.com/i11864412/3427cb2de3b45848.png)
图傅里叶也是一样的 ,就得到了节点信息
![](https://img.haomeiwen.com/i11864412/a3a83139e3749ce5.png)
filter: 就是filter
![](https://img.haomeiwen.com/i11864412/4d36090755b47f3a.png)
整个过程如下,我们要学习的是
![](https://img.haomeiwen.com/i11864412/2cf3e5ee3e94c065.png)
ChebNet
减少了计算量
结论:先根据递归把转换成
,然后
是要学习的参数,
代表k-localized
![](https://img.haomeiwen.com/i11864412/1cbca0b2d8254ee3.png)
GCN
Chebnet的基础上
节点的特征经过线性变换
,然后所有的邻居求和取平均,加上
,最后经过激活函数
![](https://img.haomeiwen.com/i11864412/59ea32e75f1fd931.png)
Tasks
- 半监督节点分类
![](https://img.haomeiwen.com/i11864412/fc5bea8d9cb0a9f8.png)
-
回归
-
图分类
-
图表示学习(representation learning)
- 连接预测(link prediction)
![](https://img.haomeiwen.com/i11864412/0e17d503d4da4347.png)