上式中 F 代表傅里叶变换 F^{-1} 表示傅里叶逆变换。
回到图网络上,时域的卷积不仅计算难,连定义一个卷积核都难。因此也是依靠卷积定理,在频域来做些骚操作,下图所示:
现在我们目标就是定义好图傅里叶变换和逆变换即可!
类比普通的傅里叶变换就是求信号在 e^{-jwt} 上的投影,那么图傅里叶变换也是求信号 x 在一组正交基 上的投影。 图傅里叶变换如下:
上表来自知乎网友文章截图
那么上图中的这组基 u 从哪里来呢?分析得到的特征值 \lambda 又是什么意思呢?
关于\lambda ,特征值/特征向量听名字就知道很有用是不是,都叫特征了,肯定是能代表信号的属性的。学过线性代数的都很熟悉,就不啰嗦了。直接来说这组傅里叶基 u 怎么求。
先约定下关于图网络的符号表示。对于一个 graph 网络 G,那么可以用节点 V (N 个),和边 E 来表示。对于任意一个网络,可以得到2个矩阵A和D。邻接矩阵 A 的定义是表示如果2个节点有边关联则未1,否则未0. 度矩阵 D 的定义是该节点的度数(对角阵)。
有了 A 和 D,就可以计算出网络 G 的拉普拉斯矩阵:L = D-A。
网络的拉普拉斯矩阵 L 是一个对称的半正定矩阵,可以分解成 L=U\Lambda U^T 的形式。并且这里的 u 就是我们想要的傅里叶变换的基,\lambda 就是信号的特征频率。
到此,我们就可以用利用卷积定理和图傅里叶变换得到图卷积的解法了:
图信号 f 和 g 的图卷积,类比普通信号f 和 g 的普通卷积,形式是一样的。
参考第一小节的图片滤波,那么对于一个图信号 x,也是先做傅里叶变换到频域 U^Tx ,然后在频域进行滤波即和同样傅里叶变换后的滤波器 g_{\theta}=U^Ty 进行乘积得到 g_{\theta}U^Tx ;最后再傅里叶逆变换回去即得到时域得结果 y= Ug_{\theta}U^Tx 。
画成矩阵的形式就是下面这样:
为了更加直观一点,我们进一步变换一下,把前面介绍的拉普拉斯矩阵 L 再引入回来:
所以图卷积计算,相当于就是拿拉普拉斯矩阵 L 的函数来对信号进行一个处理!这个函数的参数也就是我们的卷积核参数,模型需要学习的参数。这个处理会做些啥呢,和低通滤波器又有什么关系呢?
04
—
图卷积有什么问题
复用一个台大课程上具体的例子来说明下拉普拉斯矩阵 L 的函数在图 graph 上操作的过程。
上面定义了一个简单的图网络信号 f,共有4个节点,每个节点就一维数值。那么这个graph f 的度矩阵 D和邻接矩阵A,以及拉普拉斯矩阵 L 和对应的分解结果如上所示(上图矩阵 A 写错了)。
用最简单的拉普拉斯 L 的函数 g_{\theta}(L)=L 来作用到这个图 f 上,得到结果 Lf 是如下:
仔细看上面的计算过程,当计算 Lf 的第一个值 a 时, a=(4-2) + (4-4); 可以从参与计算的数值(黄色框、红色框、军绿色框中数值)看出,第一项(4-2) 中的4代表 v0节点的信号大小4,其中的2代表 v1的信号大小;第二项(4-4)中的第一个4代表 v0节点信号大小,第二个4代表 v2节点信号大小。之所以是有2项是因为 v0节点的度=2,即有2个邻居(v1和 v2)。
有没有总结出规律!当用 L 作用到图 f 上时,某种程度上可以看作是计算节点信号与自己邻边节点信号的差值。这个差值的大小变化程度是不是就类似于第一小节说的图片像素的差距,差距变化越快就是高频,反之则代表低频。
再思考一个问题,上面计算过程发现,当我们计算第一个节点 v0时,只用到了邻居 v1和 v2的值,没有用到 v3,因为 v0和 v3直接没有边。下图矩阵直观的看出当 g_{\theta}(L)=L 时,这个函数作用的 f 上,求 y第一行 的2时,由于 L[0][3]=0,代表和 v3节点没有邻边,所以用不到 v3节点的信息。