从0开始的GNN导学课程笔记
诸神缄默不语-个人CSDN博文目录
VX号“PolarisRisingWar”可直接搜索添加作者好友讨论。
更新日志:
2021.11.16 优化公式排版
课程是校内资源,不对外发布,仅作知识整理。
想上这个课可以来浙大读个电子信息的硕士,读了就能上了……
发布博文是因为感觉以这种形式整理笔记算是强迫自己做一个在形式上比较规整的整理。
本人的GNN基础就像是玻璃板子一样脆,所以写得非常详细,但还是有许多不尽不实之处。以后大概会继续往这方面做研究,以后有机会的话继续写笔记。
文章目录
- 1. 简介
- 2. 数学与数据结构基础
- 2.1 线性代数部分
- 2.2 graph基础部分
- 3. Graph Filtering卷积
- 3.1 Spectral-based Graph Neural Networks (GNN)
- 3.2 Spatial-based GNN
- 3.3 Spectral Methods vs. Spatial Methods
- 4. Graph Pooling池化
- 5. 除本课程外上文未提及的参考资料来源
1. 简介
- 表示学习 / Graph Embedding / 特征学习:把图、节点或边映射(投影)到k维隐空间,用该向量来表示原物。
节点域/空间域
表示向量
表示学习的目标:相似节点的表示向量相似
衡量节点的相似:连通性(离得近)、结构相似性 - Why networks?→因为关系是有用的
- graph上有监督机器学习的流程图
2
- 机器学习在graph上的经典任务:
- node classification节点分类 eg:识别电信诈骗用户
- link prediction eg:打电话预测关系;电商异构网络(购买行为)
- community detection社区发现
以上三种的标签/label在节点和边上 - graph classification eg:预测化学分子毒性
GNN主要要解决node classification和graph classification
node classification和link prediction的模型结构会和graph classification有差异
- graph在深度学习上会遇到问题的原因(相比可以用CNN的image等欧式数据)
- Arbitrary neighbor size
- Complex topological structure
- No fixed node ordering
2. 数学与数据结构基础
本课程仅涉及无向图,且边的权非负
2.1 线性代数部分
- 标量
- 向量/矢量vector
- 线性相关 / 线性无关/线性独立
- 矩阵matrix
- 矩阵与向量相乘/线性变换(这部分可以参考我之前撰写的《线性代数的本质》第3章笔记理解。大致内容是矩阵是一个线性变换)
- 从空间上理解
[a00a01a02a10a11a12a20a21a22][v0v1v2]=v0[a00a10a20]+v1[a01a11a21]+v2[a02a12a22]\begin{bmatrix} a_{00} & a_{01} & a_{02} \\ a_{10} & a_{11} & a_{12} \\ a_{20} & a_{21} & a_{22} \end{bmatrix}\begin{bmatrix} v_{0} \\ v_{1} \\ v_{2} \end{bmatrix} = v_{0}\begin{bmatrix} a_{00} \\ a_{10} \\ a_{20} \end{bmatrix} +v_{1}\begin{bmatrix} a_{01} \\ a_{11} \\ a_{21} \end{bmatrix} +v_{2}\begin{bmatrix} a_{02} \\ a_{12} \\ a_{22} \end{bmatrix}⎣⎡a00a10a20a01a11a21a02a12a22⎦⎤⎣⎡v0v1v2⎦⎤=v0⎣⎡a00a10a20⎦⎤+v1⎣⎡a01a11a21⎦⎤+v2⎣⎡a02a12a22⎦⎤ - 从向量变化的角度理解
- 如果v→\overrightarrow{v}v变化前后仅在长短上发生了缩放,在方向上没有发生变化,则称v→\overrightarrow{v}v是AAA的一个特征向量,缩放幅度λ\lambdaλ是v→\overrightarrow{v}v对应的特征值(特征向量部分直观理解见我之前撰写的《线性代数的本质》第9章笔记)
- 从空间上理解
- eigen:德语本源、固有
eigenvector描述了一些矩阵的特性,其运动方式
多次对向量进行线性变换会使其接近于其最大特征值对应特征向量的方向(Anv→A^{n}\overrightarrow{v}Anv) - Av→=λv→A\overrightarrow{v}=\lambda \overrightarrow{v}Av=λv
当v→\overrightarrow{v}v非零向量时,v→\overrightarrow{v}v是A的特征向量,λλλ是特征值 - 特征分解(上面这个式子看起来就是特征值和特征向量原本意义,下面的式子第一行应该就是上面式子的另一形式,第二行应该也是……我就是这么理解的)
3 - 当B=M−1AMB=M^{-1}AMB=M−1AM时,我们说matrix B is similar to matrix A,且此时A和B有相同的特征值
证明方式:
一种逻辑:如果A和B的特征多项式(即 det(matrix−λI)det(matrix-λI)det(matrix−λI) )相等,那么可以证明它们具有相同的特征值。参考百度知道回答:相似矩阵有相同特征值,如何证明各自的特征值重数一样?
另一种逻辑(解法基本参考上面的链接):按照我的理解来,当det(B−λ2I)=0det(B-\lambda_{2}I)=0det(B−λ2I)=0时λ2λ_{2}λ2是B的特征值,当det(A−λ1I)=0det(A-λ_{1}I)=0det(A−λ1I)=0的时候λ2λ_{2}λ2是A的特征值,由相似的定义可知Bv→=λ2v→=M−1AMv→B\overrightarrow{v}=λ_{2}\overrightarrow{v}=M^{-1}AM\overrightarrow{v}Bv=λ2v=M−1AMv
所以此时det(λ2−M−1AM)=0det(λ_2-M^{-1}AM)=0det(λ2−M−1AM)=0
det(λ2−M−1AM)=det(λ2M‾−1M‾−M‾−1AM‾)=det[M−1(λ2I−A)M]=det(M−1)det(λ2I−A)det(M)=det(M−1)det(M)det(λ2I−A)=det(M−1M)det(λ2I−A)=det(λ2I−A)=0\begin{aligned} det(λ_2-M^{-1}AM) & =det(λ_{2}\underline M^{-1}\underline M-\underline M^{-1}A\underline M) \\ & =det[M^{-1}(λ_{2}I-A)M] \\ & =det(M^{-1})det(λ_{2}I-A)det(M) \\ & =det(M^{-1})det(M)det(λ_2I-A) \\ & =det(M^{-1}M)det(λ_2I-A) \\ & =det(λ_2I-A) \\ & =0 \end{aligned}det(λ2−M−1AM)=det(λ2M−1M−M−1AM)=det[M−1(λ2I−A)M]=det(M−1)det(λ2I−A)det(M)=det(M−1)det(M)det(λ2I−A)=det(M−1M)det(λ2I−A)=det(λ2I−A)=0
所以λ2λ_2λ2也是A的特征值,所以A和B的特征值相同
2.2 graph基础部分
- 图GGG,节点集合VVV,节点数∣V∣|V|∣V∣,边集合EEE
- 节点上面存在信号,用以表示节点信息(可以是标量或向量。特征、表示向量可以当作信号)
- 整个图的信号构成feature matrix
- 邻接矩阵Adjency matrix(01矩阵,或者可以带权):对称的
- 度矩阵Degree Matrix:对角矩阵,DjjD_{jj}Djj是jjj位置节点的度数(边权和)
- 拉普拉斯矩阵Laplacian Matrix:L=D−AL=D-AL=D−A
- Normalized graph Laplacian L=I−D−12AD−12L=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}L=I−D−21AD−21
(对为什么要用正则化的拉普拉斯矩阵的诠释见后文GCN部分,大致来说就是加了个权) - L是描述图中节点信号的差分运算difference operator→对整个图进行一阶导数
(Lf)i=[(D−A)f]i=∑j∈NiAij(fi−fj)\left( Lf\right) _{i}=\left[ \left( D-A\right) f\right] _{i}= \sum _{j\in Ni}A_{ij}\left( f_{i}-f_{j}\right)(Lf)i=[(D−A)f]i=∑j∈NiAij(fi−fj)
(一度邻居)
推导过程:
(Lf)i=[(D−A)f]i=[Df−Af]i=[[d1f1d2f2⋮dnfn]−[a11f1+a12f2+…a21f1+a22f2+…⋮an1f1+an2f2+…]]i=[[∑j=1na1jf1∑j=1na2jf2⋮∑j=1nanjfn]−[a11f1+a12f2+…a21f1+a22f2+…⋮an1f1+an2f2+…]]i=∑j=1naijfi−∑j=1naijfjwhilef=[f1f2⋮fn]\begin{aligned} \left( Lf\right) _{i} & =\left[ \left( D-A\right) f\right] _{i} \\ & =\left[ Df-Af\right] _{i} \\ & =\left[ \begin{bmatrix} d_{1}f_{1} \\ d_{2}f_{2} \\ \vdots \\ d_{n}f_{n} \end{bmatrix}-\begin{bmatrix} a_{11}f_{1}+a_{12}f_{2}+\dots \\ a_{21}f_{1}+a_{22}f_{2}+\dots \\ \vdots \\ a_{n1}f_{1}+a_{n2}f_{2}+\dots \end{bmatrix}\right]_{i} \\ & =\left[ \begin{bmatrix} \sum^{n}_{j=1}a_{1j}f_{1} \\ \sum^{n}_{j=1}a_{2j}f_{2} \\ \vdots \\ \sum^{n}_{j=1}a_{nj}f_{n} \end{bmatrix}-\begin{bmatrix} a_{11}f_{1}+a_{12}f_{2}+\dots \\ a_{21}f_{1}+a_{22}f_{2}+\dots \\ \vdots \\ a_{n1}f_{1}+a_{n2}f_{2}+\dots \end{bmatrix}\right]_{i} \\ & =\sum ^{n}_{j=1}a_{ij}f_{i}-\sum ^{n}_{j=1}a_{ij}f_{j} \\ while \ f=\begin{bmatrix} f_{1} \\ f_{2} \\ \vdots \\ f_{n} \end{bmatrix} \end{aligned}(Lf)iwhilef=⎣⎢⎢⎢⎡f1f2⋮fn⎦⎥⎥⎥⎤=[(D−A)f]i=[Df−Af]i=⎣⎢⎢⎢⎡⎣⎢⎢⎢⎡d1f1d2f2⋮dnfn⎦⎥⎥⎥⎤−⎣⎢⎢⎢⎡a11f1+a12f2+…a21f1+a22f2+…⋮an1f1+an2f2+…⎦⎥⎥⎥⎤⎦⎥⎥⎥⎤i=⎣⎢⎢⎢⎡⎣⎢⎢⎢⎡∑j=1na1jf1∑j=1na2jf2⋮∑j=1nanjfn⎦⎥⎥⎥⎤−⎣⎢⎢⎢⎡a11f1+a12f2+…a21f1+a22f2+…⋮an1f1+an2f2+…⎦⎥⎥⎥⎤⎦⎥⎥⎥⎤i=j=1∑naijfi−j=1∑naijfj - 拉普拉斯矩阵的特性
对称的
半正定的
xTLx=∑i,j=1n12Aij(xi−xj)2≥0x^{T}Lx=\sum^{n}_{i,j=1}\frac{1}{2}A_{ij}(x_i-x_j)^2\geq 0xTLx=∑i,j=1n21Aij(xi−xj)2≥0
证明过程:
xTLx=xTDx−xTAx=∑i=1ndixi2(这由D的对角性质得到)−∑i,j=1nxixjAij(这可以由计算得到)=12(∑i=1ndixi2−2∑i,j=1nxixjAij+∑j=1ndjxj2)(这跟上一行是一样的,就是提出了1/2)=12(∑i=1n(∑j=1nAij)xi2−2∑i,j=1nxixjAij+∑j=1n(∑i=1nAji)xj2)(由度矩阵和邻接矩阵的关系得)=12(∑i,j=1nAijxi2−2∑i,j=1nxixjAij+∑ij,i=1nAjixj2)=12∑i,j=1nAij(xi2−2xixj+xj2)=12∑i,j=1nAij(xi−xj)2≥0\begin{aligned} x^TLx & =x^TDx-x^TAx \\ & =\sum^n_{i=1}d_ix_i^{2}(这由D的对角性质得到)-\sum^n_{i,j=1}x_ix_jA_{ij}(这可以由计算得到) \\ & =\frac{1}{2}(\sum^n_{i=1}d_ix_i^{2}-2\sum^n_{i,j=1}x_ix_jA_{ij}+\sum^n_{j=1}d_jx_j^{2})(这跟上一行是一样的,就是提出了1/2) \\ & =\frac{1}{2}(\sum^{n}_{i=1}(\sum^{n}_{j=1}A_{ij})x_i^2-2\sum^n_{i,j=1}x_ix_jA_{ij}+\sum^{n}_{j=1}(\sum^{n}_{i=1}A_{ji})x_j^2)(由度矩阵和邻接矩阵的关系得) \\ & =\frac{1}{2}(\sum^{n}_{i,j=1}A_{ij}x_i^2-2\sum^n_{i,j=1}x_ix_jA_{ij}+\sum^{n}_{ij,i=1}A_{ji}x_j^2) \\ & =\frac{1}{2}\sum^{n}_{i,j=1}A_{ij}(x_i^2-2x_ix_j+x_j^2) \\ & =\frac{1}{2}\sum^{n}_{i,j=1}A_{ij}(x_i-x_j)^2 \geq 0 \end{aligned}xTLx=xTDx−xTAx=i=1∑ndixi2(这由D的对角性质得到)−i,j=1∑nxixjAij(这可以由计算得到)=21(i=1∑ndixi2−2i,j=1∑nxixjAij+j=1∑ndjxj2)(这跟上一行是一样的,就是提出了1/2)=21(i=1∑n(j=1∑nAij)xi2−2i,j=1∑nxixjAij+j=1∑n(i=1∑nAji)xj2)(由度矩阵和邻接矩阵的关系得)=21(i,j=1∑nAijxi2−2i,j=1∑nxixjAij+ij,i=1∑nAjixj2)=21i,j=1∑nAij(xi2−2xixj+xj2)=21i,j=1∑nAij(xi−xj)2≥0特征值非负
证明半正定矩阵特征值非负:
以下完整的证明链:4证明n阶矩阵一定有n个特征值:det(A−λ1I)=0det(A-λ_{1}I)=0det(A−λ1I)=0左边是个n次多项式,必有n个解
证明实对称矩阵的特征值都是实数(似乎是同济的证法):(共轭是虚数取反)5证明实对称矩阵可对角化(没完全看懂,但是我寻思应该差不多就是这么回事儿):
6另有一个很全面的也是按照这个顺序来的博文实对称矩阵一定可以对角化,另证明了实对称矩阵属于不同特征值的特征向量正交。这篇博文最后证明也用的是数学归纳法,还是有点没看懂。
(以下这些未标明来源的图片都截图自该博文)
证明实对称矩阵属于不同特征值的特征向量正交:
证明实对称矩阵一定可以对角化:
总之可以用数学归纳法证明,具体怎么搞等我学好矩阵论再回来研究吧。参考证明半正定矩阵特征值非负这一百度知道回答:
由于上述证明,可知对于实对称阵A,一定存在可逆阵P,使得P−1LP=[λ1λ2…λn]P^{-1}LP=\begin{bmatrix} λ_1 & & & \\ & λ_2 & & \\ & & \dots & \\ & & & λ_n\end{bmatrix}P−1LP=⎣⎢⎢⎡λ1λ2…λn⎦⎥⎥⎤
令Y=[y1y2⋮yn]Y=\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n\end{bmatrix}Y=⎣⎢⎢⎢⎡y1y2⋮yn⎦⎥⎥⎥⎤
X=PY⇒L的正定性XTLX≥0⇒(PY)TL(PY)≥0⇒YT(PTLP)Y≥0⇒YT[λ1λ2…λn]Y≥0⇒a1∗y12+a2∗y22+...+an∗yn2≥0\begin{aligned} X=PY & \xRightarrow{L的正定性} X^TLX\geq 0 \\ & \Rightarrow (PY)^TL(PY)\geq 0 \\ & \Rightarrow Y^T(P^TLP)Y\geq 0 \\ & \Rightarrow Y^T\begin{bmatrix} λ_1 & & & \\ & λ_2 & & \\ & & \dots & \\ & & & λ_n\end{bmatrix}Y\geq 0 \\ & \Rightarrow a_1*y_1^2+a_2*y_2^2+...+a_n*y_n^2\geq 0 \end{aligned}X=PYL的正定性XTLX≥0⇒(PY)TL(PY)≥0⇒YT(PTLP)Y≥0⇒YT⎣⎢⎢⎡λ1λ2…λn⎦⎥⎥⎤Y≥0⇒a1∗y12+a2∗y22+...+an∗yn2≥0
由于列向量Y的任意性,所以A的特征值a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an必须≥0\geq 0≥0紫色部分为参考拉普拉斯矩阵的性质一文做的补充(本文还有一个L的零特征值的重数等于图连通子图的个数这一特性,此外对归一化拉普拉斯矩阵用途也做了似乎更多的数学证明。未作了解):
①L的行和为0
②L的一个特征值为0
证明:设置一个n维向量e→=[11⋮1]\overrightarrow{e}=\begin{bmatrix} 1 \\ 1 \\ \vdots \\ 1\end{bmatrix}e=⎣⎢⎢⎢⎡11⋮1⎦⎥⎥⎥⎤,方阵乘e→\overrightarrow{e}e即得行和向量。由①知Le→=0→L\overrightarrow{e}=\overrightarrow{0}Le=0,于是Le→=0→e→L\overrightarrow{e}=\overrightarrow{0}\overrightarrow{e}Le=0e,根据特征值和特征向量的定义可知L的一个特征值为0,且该特征值对应的特征向量之一为e→\overrightarrow{e}e 有N个正交特征向量,构成N维空间
可以特征分解
3
3. Graph Filtering卷积
卷积是一个定义在两个函数(如f和g)上的运算
h(t)=(f∗g)(n)=def∫f(τ)g(n−τ)dτh(t)=(f * g)(n) \overset{def}{=} \int{f(\tau)g(n-\tau)d\tau}h(t)=(f∗g)(n)=def∫f(τ)g(n−τ)dτ
nnn是常量,τ\tauτ是自变量,fff和ggg的变量和是常量例子1:(翻转相乘)
3例子2:同时丢2个骰子,求和为4的概率(关于n=4的卷积)
3例子3:image上的卷积——卷积后每个位置的结果是九宫格的加权平均
3卷积核g
原始信号f
卷积在数学上是一个信号处理过程(滤波器、对信号进行平滑的过程)CNN
(1)学到局部patterns(通过局部的卷积操作localized convolution filter进行学习,将卷积结果进行层级堆叠,把学到的信息变成一个层次化的多尺度的信息multi-scale hierarchical patterns)
(2)共享参数欧式数据和非欧数据对比:
- 欧式数据:平移不变性
- 非欧数据无法直接用CNN的原因:
(1) 没有平移不变性(图上节点没有固定的顺序,更改顺序后邻接矩阵也会剧变)
(2) 邻居数不一样导致需要不同的卷积核,不能共享参数,因此没法用CNN
谱方法Spectral Methods:图映射到谱域卷积,再映射回来
空间方法Spatial Methods:在原空间域上定义卷积操作历史发展:谱方法→\rightarrow→空间方法
GNN的本质是对图信号进行处理,尝试作卷积卷积/滤波:学出节点的表示
3General GNN Framework
- For node-level tasks
3
- For graph-level tasks
3
- For node-level tasks
3.1 Spectral-based Graph Neural Networks (GNN)
信号处理领域:将时域信号投影到频域上,方式是傅里叶变换(后续内容仅借鉴其物理意义,所以我还没搞懂这是个什么玩意)
公式:f^(ξ)=∫f(t)e−2πiξtdt\hat{f}(\xi)=\int{f(t)e^{-2\pi i\xi t}dt}f^(ξ)=∫f(t)e−2πiξtdt(不用记,不用理解)
泰勒展开:用多个简单函数的和来近似复杂函数
将一个时空域的信号拆分成若干个正弦函数的线性组合
频域空间是由这些正弦函数构成的基向量,信号投影后的坐标就由这些基向量表示(可参考我之前写的线性代数的本质笔记中 第11章:抽象向量空间 部分理解)
举例来说:f=λ1g1+λ2g2f=\lambda_1g_1+\lambda_2g_2f=λ1g1+λ2g2(2个正弦波)
傅里叶变换的示意图:(大概就是把一个波拆成很多个正弦/余弦波)3时域:自变量是时间
频域:自变量是波动的频率
空间域:自变量是位置、坐标……
节点域:描述图像时,自变量是节点低频信号、高频信号(image上变化大或小的部分)
Discrete Time Fourier Basis
3泰勒展开
在图上定义傅里叶变换Graph Fourier Transform
- 以拉普拉斯矩阵的n个正交特征向量所张成的空间作为投影到的新空间(Spectral Space)。将这些向量组合,按其对应特征值大小排序,得到矩阵UUU。
对原图上的信号f∈Rnf\in R^nf∈Rn,其Graph Fourier Transform是:f^=UTf\pmb{\hat{f}=U^Tf}f^=UTff^=UTff^=UTf。
UTfU^TfUTf是将fff投影到这个空间上(对每个方向的投影都是用该方向向量点积fff)。3 - Graph Fourier inverse transform:f=Uf^\pmb{f=U\hat{f}}f=Uf^f=Uf^f=Uf^
3
(此图中间的UTU^TUT应当为UUU)
- 拉普拉斯矩阵特征值代表了图信号的变化频率。特征值越小,表示信号变化越平缓(频率低)
拉普拉斯矩阵特征向量(基向量)表征了图信号的变化过程
- 以拉普拉斯矩阵的n个正交特征向量所张成的空间作为投影到的新空间(Spectral Space)。将这些向量组合,按其对应特征值大小排序,得到矩阵UUU。
卷积定理:2个信号的卷积等于这2个信号傅里叶变换后的点积
f∗Gg=U((UTf)⊙(UTg))f*_Gg=U\left( \left( U^Tf\right) \odot \left( U^Tg\right) \right)f∗Gg=U((UTf)⊙(UTg))
where UUU is the matrix of the eigenvector of the normalized Laplacian matrixL=I−D−12AD−12L=I-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}L=I−D−21AD−21, forming the Fourier basis.
逻辑就是先投影到谱域,点积,再投影回来ggg:空间域上的卷积核 → 反正卷积也是在谱域上做的,不如直接把(UTg)\left( U^Tg\right)(UTg)整体视作卷积核(谱域上的卷积核)
在图上做卷积:
3(这个对角阵其实直接用一个向量也可以,只是对角阵比较好代)
用GθG_\thetaGθ做谱域上的卷积核:空间域上的卷积核ggg是free的→UTgU^TgUTg也是free的(θ\thetaθ是要学的参数)信号fff本质上是一个以节点为自变量的函数,将节点投影到实数域空间上
f:V→Rdf:V→R^df:V→RdSpectral Graph CNN
3Drawbacks of SCNN
- Requiring eigen-decomposition of Laplacian matrix
Eigenvectors are explictly used in convolution - High computational cost
Multiplication with graph Fourier basis UUU is O(n2)O(n^2)O(n2)(这个UUU大概率不稀疏) - Not localized in vertex domain:因为GθG_\thetaGθ是free的
3如使Gθ(L)=LG_\theta(L)=LGθ(L)=L,则某一点结果不受不直接相连的点的信号影响(L上不直接相连的点就是0)
如使Gθ(L)=L2G_\theta(L)=L^2Gθ(L)=L2,则有影响(不直接相连的点处不再是0了)
如使Gθ(L)=cosLG_\theta(L)=\cos LGθ(L)=cosL,则泰勒展开后一定能得到一个LNL^NLN。如果图是一个连通图,则图中任一节点都会影响别的节点的信号 - 需要学习的参数过多(GGG的 O(N)O(N)O(N) 个参数)
- Requiring eigen-decomposition of Laplacian matrix
邻接矩阵的平方A2A^2A2:Aij2A^2_{ij}Aij2是从一个节点iii出发,通过长度为2的path/walks可以达到的另一个节点jjj的路径/走法的数量(也可以说是ijijij之间长度为2的路径的数量)
对这一知识点的详细介绍见我撰写的cs224w(图机器学习)2021冬季课程学习笔记2,可以通过Ctrl+F搜索“邻接矩阵求幂”关键词跳转到相应位置优化:对GθG_\thetaGθ限制——必须是拉普拉斯矩阵特征值的一个多项式函数。
代入后可以发现UUU都被消掉了(∵\because∵ 拉普拉斯矩阵的特征分解:UΛU=LU\Lambda U=LUΛU=L)→只需要得到图的拉普拉斯矩阵而不需要做特征分解)33ChebyNet
- 只会被K度邻居影响→可以localize
- Computational cost O(N2)→O(∣E∣)O(N^2)→O(|E|)O(N2)→O(∣E∣)(从UUU换成比较稀疏的拉普拉斯矩阵)
- 用切比雪夫级数来做卷积核的近似(这部分还没看)
3.2 Spatial-based GNN
- General Idea: Aggregating neighbor information
- hvl+1=∑u∈ne[v]hulh^{l+1}_v=\sum_{u\in ne[v]}h^l_uhvl+1=∑u∈ne[v]hul
这样聚合后,点本身会失去自己的信息(除非有自环);度数高的节点会获得过高的信号绝对值(会造成梯度爆炸或梯度消失);同时这也没有卷积了 - GCN: Graph Convolution Network(ChebyNet的简化:约束K(0或1))
33renormalization trick: 加自环(否则会节点迷失自我)
用归一化后的拉普拉斯矩阵原因:用拉普拉斯矩阵会变成邻居信号和,用归一化后的拉普拉斯矩阵会变成加权平均 - GCN已经没有卷积了
3
这里面没有卷积核了,WWW是对节点特征用linear function做一个变化(feature transformation),WWW是linear function的一个参数
- GCN的目标函数是cross entropy
3
- 在实验上,GCN比ChebyNet表现更好(尤其在节点分类问题上),原因:
- 卷积也可以视作图的filter,ChebyNet考虑了L的k次方,filter:∑k=1K−1θkLkf\sum^{K-1}_{k=1}\theta_kL^kf∑k=1K−1θkLkf,λ\lambdaλ大时增长的权重就会变大(L=λUU−1L=\lambda UU^{-1}L=λUU−1)。λ\lambdaλ大表示高频信号
- 在 nodeclassification\boxed{node\ classification}nodeclassification 时其实不喜欢高频信号(太远了)(信号处理有时高频信号甚至会是噪音)
- GCN约束K,把高频信号给过滤掉了
- 因为ChebyNet适用于异常检测
- GCN缺点
- GCN只能做transdutive learning(训练时需要看到包括测试集的全部数据)
Inductive learning - GCN不支持mini-batch
- GCN没有卷积了
- GCN只能做transdutive learning(训练时需要看到包括测试集的全部数据)
- 将CNN普适到图上:
3
(第一步受无平移不变性的影响)
3确定一个数,找图上点最像的这么多个点作为邻居(sample一个子图来),这样邻居数量就能确定了。
- GraphSAGE
3
约束这个邻域一定是一度邻居或二度邻居,走random walk采样获得节点作为邻域
3
- GAT Graph Attention Network:主要改进GCN没有卷积的问题(GCN这样的缺点是没权了)
用attention机制来量化点的相似性(用这个来加权)
attention matrix就是卷积核
3
3.3 Spectral Methods vs. Spatial Methods
- 频域方法是空间域方法的一个子集
- 如果显式定义卷积核,就是频域方法(知道投影到了一个什么空间)
4. Graph Pooling池化
- 学出图的表示
3
- Graph Coarsening图粗化
- 节点聚类,聚成一个supernode→卷积→Pooling→直到只剩下1个节点⇒\Rightarrow⇒这就是整个图的表示
- 聚类可以GNN前做,也可以边GNN边做
- DiffPool
3
- Node Selection节点选择
选出一部分有代表性的节点
5. 除本课程外上文未提及的参考资料来源
- 建议学习:线性代数,图谱论,信号处理。课程中提及的模型的原论文
- 矩阵的特征分解
我自己画的 ↩︎
截图自CS224W 01.intro的slides ↩︎
截图自本课程 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
也是我自己画的 ↩︎
唉,这个情况比较尴尬,我忘了我从哪儿复制的这张图了…… ↩︎
图源为什么实对称矩阵一定能对角化? - hkbv Lu的回答 - 知乎(这个问题下其他回答也可作此问题回答的参考) ↩︎
从0开始的GNN导学课程笔记相关推荐
- 课程导学第一章计算机基础,计算机基础实践导学课程教案
计算机基础实践导学课程教案 语音 编辑 锁定 讨论 上传视频 <计算机基础实践导学课程教案>是2011年9月23日清华大学出版社出版的图书,作者是付钪.李红豫. 书 名 计算机基础实 ...
- 计算机网络 本 课程导学,课程导学 - 操作系统原理 - 浙江大学网络教育精品资源共享课...
课程名称:操作系统原理授课时数:32学时 面向对象:计算机科学与技术专业 预修课程要求:C/C++程序设计语言.数据结构 一.课程介绍 操作系统是一门理论与实践并重的专业核心课程.本课程的主要任务是帮 ...
- Spring Security入门(一) 导学与开发环境安装
一.导学 课程目标 深入理解Spring Security及相关框架的原理.功能和代码 可以机遇Spring Security及相关框架独立开发认证授权相关功能 掌握抽象和封装的常见技巧,可以编写可重 ...
- 我在华清的嵌入式课程笔记(至2020.7.5)
必备Linux命令和C语言基础_文件和目录相关命令一_笔记: 嵌入式用linux是因为它是开源的,可以自己裁剪.保留自己想要的,驱动也是. 查命令的帮助内容是用man+命令 命令帮助里所涉及到的英文单 ...
- Python语言程序设计 第0周第1周 Python课程导学、基本语法元素
第0周 Python课程导学 线上线下相结合,手机电脑相结合,长短时间相结合 线上线下 线上看视频/做练习.线下读教材/看资料 手机电脑 视频/作业用手机.编程实践用电脑 长短时间 视频/作业用零碎时 ...
- 视频教程- 1-1 课程导学和Python简介-Python干货!
关于「课程导学和Python简介」的相关基础知识百科介绍: Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品. Py ...
- 课程导学第一章计算机基础,第一章计算机基础讲述.pptx
第一章计算机基础讲述 信息技术基础(计算机基础);我校非计算机专业的公共必修课<计算机基础>和<计算机基础实验>独立设课,前者36学时2学分,后者36学时1学分.1. < ...
- 计算机辅助技术学什么课,《CADCAM》课程导学计划
原标题:<CADCAM>课程导学计划 CADCAM课程导学计划 课程的性质.目的及任务 CAD_CAM在AutoCAD基础上,进一步掌握三维CAD的建方法,并以此为切入点,转而学习并掌握常 ...
- 1.1 haas506 2.0开发教程-导学篇
haas506 2.0开发教程-导学篇 一. 下载并安装驱动 1.1 CH340 driver 1.2 8910 driver 二. 搭建开发环境 2.0 集合开发工具HaaS506PYcom 2.1 ...
最新文章
- rabbitmq 查询版本_Hyperf 发布 v2.0.14 版本 | 企业级的 PHP 微服务云原生协程框架
- [转]删除MSSQL所有的约束及表格
- 向页面中添加音乐或flash
- CUDA学习(九十一)
- POJ 3259 Wormholes
- Git-rebase 小筆記
- 集成Dapr的 Azure 容器应用
- Kubernetes 凭什么成了云原生应用底座?
- mysql高级查询教程_MYSQL高级查询
- python适合自学编程吗-风变编程:Python适合编程初学者学习吗?
- 现代软件工程团队项目贝塔阶段_大规模测试结果_2018.02.08
- matlab gif生成器,Matlab制作视频并转换成gif动态图的两种方法
- 练字和平时写字完全不一样怎么办?
- PHP时间戳和日期转换
- c语言循环语句解鸡兔同笼,JavaScript的for循环语句练习之解决鸡兔同笼问题
- python 拼图验证码
- 安卓Android Studio开发环境,无需连接外网
- linux invalid argument_Linux命令很熟悉,你知道它们的英文全称和中文解释吗?
- 在 linux ubuntu 18.04 上运行QQ音乐
- 八:微服务调用组件Dubbo