spectral-graph-theory-in-GCN
Published on 2023-04-26 10:31 in 分类: MachineLearning with dutrmp19
分类: MachineLearning

spectral-graph-theory-in-GCN

GCN 中的谱图理论笔记

Datetime: 2023-04-26T09:36+08:00

Categories: MachineLearning

Tags: GNN

写毕设,发现自己没法绕过第一代 GCN 的谱图变换原理

我知道啥是傅里叶变化,但是我感觉不到那种新奇,或许这就是无法感觉到数学的美吧。

本文默认读者知道傅里叶变换,就数学分析/高等数学里的那一章。

参考了 【GNN】万字长文带你入门 GCN - 阿泽的文章 - 知乎,后来发现图神经网络基础二:谱图理论写得也完整。

why sin/cos

要理解 GCN 那一套傅里叶的逻辑,第一个问题是,为什么傅里叶变化选择了三角函数,或者说 sin/cos?

或许有人会说,sin/cos 正交嘛,那为什么正交,是巧合吗?

我认为可以类推到 2 这个变换中,所谓亥姆霍兹方程:

2f=k2f

sin/cos 就是答案之一,而如果把这个方程理解为 Ax=λx,A 是实对称矩阵,那么特征向量本身就是正交的。

总而言之,这样类比很巧,我也不知道为什么这么巧。

那么傅里叶分解就可以立即为输入函数 f,分解到 2 的基上。

input & output

第二个问题就是弄清楚图的变换的输入和输出是什么,
说到底,无权重图的结构就是一个邻接矩阵罢了,图上节点的值,如果考虑每一个节点就是一个标量,那么整个图的节点的值就是一个向量。

假设每个节点的值就是一个标量,这样不把节点的值考虑成向量的好处是,向量无非是多个「通道」,就像 RGB 通道一样。

图可以抽象为一个矩阵(邻接矩阵、度矩阵 whatever),query 图节点的值抽象为一个函数,这个函数的参数是节点,输出是节点的值,也就是一个标量,那么图可以表示为如下二元组:

<L,f>,f{f:vR}

无向结构写成矩阵的形式会强行加上一个 index。如何理解,因为写邻接矩阵的时候,已经给图中的节点编号了,比如矩阵第一列第二行表示第一个节点和第二个节点之间是否有边。所以 f 本身也可以写成一个向量,f[i] 就是取第 i 个节点的值。

node<index>(<value>)
node1(3) -- node2(5)
|
|
node3(8)

那么 f 就是 [3,5,8]

至于为什么选择 L,文章说是考虑变换为「扰动」,f[i]f[j]

类比

第三个问题是理解类比:

把傅里叶变换理解为

函数在 2 基上的变换,那么频域变换就可以理解为

fL 基上的变换。

所以我们去求 L 的特征值 ui,让 fui 做内积,得到变换后的结果。

卷积核

我认为这不是变换的重点,直接参考文章


  1. 【GNN】万字长文带你入门 GCN - 阿泽的文章 - 知乎 ↩︎ ↩︎

如果您有任何关于文章的建议,欢迎评论或在 GitHub 提 PR

作者:dutrmp19
本文为作者原创,转载请在 文章开头 注明出处:https://www.cnblogs.com/dutrmp19/p/17354929.html
遵循 CC 4.0 BY-SA 版权协议


posted @   dutrmp19  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示