这篇论文是2016 NIPS上的一篇论文。从标题就可以看出这篇论文的特点所在:Fast Localized Spectral Filtering。这篇论文的主要贡献在于:
作者总结了将卷积推广到图上的三步骤:
之前的 spectral networks,并不具备局部连接的特性,并且在图卷积层运算时,傅里叶变换的矩阵乘法的时间复杂度较高。
针对这两个问题,作者借助泰勒展开去近似任意函数,从而将卷积核展开为:
g θ ( Λ ) = ∑ k = 0 K − 1 θ k Λ k g_\theta(\Lambda) = \sum_{k=0}^{K-1}{\theta_k \Lambda^k} gθ(Λ)=k=0∑K−1θkΛk
其中 θ ∈ R K \theta \in \mathbb{R}^K θ∈RK为可训练的多项式系数。如果将上式代入到 y = U g θ ( Λ ) U T x y=Ug_\theta(\Lambda)U^Tx y=Ugθ(Λ)UTx 可得到
y = ∑ k = 0 K θ k L k x y=\sum_{k=0}^{K}{\theta_kL^kx} y=k=0∑KθkLkx
设定 x ( k ) = L k x = L x ( k − 1 ) x^{(k)}=L^kx=Lx^{(k-1)} x(k)=Lkx=Lx(k−1),可得到:
y = ∑ k = 0 K θ k x ( k ) y=\sum_{k=0}^K{\theta_kx^{(k)}} y=k=0∑Kθkx(k)
由于 L L L 是一个图位移算子,从 x ( k − 1 ) x^{(k-1)} x(k−1) 到 x ( k ) x^{(k)} x(k) 的变换只需要所有节点的一阶邻居参与,总的来看, x ( k ) x^{(k)} x(k) 的计算只需要所有节点的 k阶邻居参与,这时 filter 便具备了局部性。从另外一方面看,由 [1] 中的定理:
Let G G G be a weighted graph, L \mathcal{L} L the graph Laplacian (normalized or non-normalized) and s s s > 0 an integer. For any two vertices m and n, if d G ( m , n ) > s d_{G}(m,n)>s dG(m,n)>s then ( L s ) m , n = 0 (\mathcal{L}^s)_{m,n}=0 (Ls)m,n=0.
这个定理的语言描述为两个距离大于 K K K 的节点i, j,其在拉普拉斯矩阵 K 次幂所对应位置的元素值为0。它的证明思路为用反证法,假设 ( L s ) m , n ≠ 0 (\mathcal{L}^s)_{m,n} \neq0 (Ls)m,n=0。矩阵的幂运算可以表达成矩阵幂上的某个元素等于一系列矩阵上元素相乘并求和的形式:
( L k ) m , n = ∑ L m , k 1 L k 1 , k 2 . . . L k s − 1 , n (\mathcal{L}^k)_{m,n}=\sum{\mathcal{L}_{m,k_1}\mathcal{L}_{k_1,k_2}...\mathcal{L}_{k_s-1,n}} (Lk)m,n=∑Lm,k1Lk1,k2...Lks−1,n
而满足 ( L s ) m , n ≠ 0 (\mathcal{L}^s)_{m,n} \neq0 (Ls)m,n=0 的条件是求和项中至少有一项不为0,那么就可以得出 L m , k 1 ≠ 0 , L k 1 , k 2 ≠ 0 , . . . L k s − 1 , n ≠ 0 \mathcal{L}_{m,k_1} \neq 0, \mathcal{L}_{k_1,k_2} \neq 0,...\mathcal{L}_{k_{s-1},n} \neq 0 Lm,k1=0,Lk1,k2=0,...Lks−1,n=0。在除去可能存在的重复路径,两节点m, n之间的最短路径小于等于s,而这与前面的条件相矛盾。
由这个定理也可以看出上式的卷积运算,只有所有节点的k阶邻居参与。这个地方,就可以将 K 看作是图卷积核的感受野。
针对另外一个问题,作者借助 Chebyshev expansion 做快速迭代计算上述的多项式计算。
g θ ( Λ ) = ∑ k = 0 K − 1 θ k T k ( Λ ~ ) g_\theta(\Lambda) = \sum_{k=0}^{K-1}{\theta_{k}T_{k}(\tilde{\Lambda})} gθ(Λ)=k=0∑K−1θkTk(Λ~)
基于图坍缩(Graph Coarsening)的池化机制是一种层次化池化的思路。图塌缩将图划分为不同的子图,然后将子图视为超级节点,从而形成一个塌缩的图。作者是借助之前的工作 Graclus multilevel clustering algorithm(还没具体看这个算法)去实现 graph Coarsening。
对于 pooling 层,作者提出了一种 fast pooling 的策略,其思路是经过 graph coarsening 操作后,将节点重排成1d序列,以构建二叉树的形式构建下一层节点,即下一层节点为当前层节点的父节点,必有两个孩子节点(对于不足两个孩子节点的节点,插入fake nodes),pooling操作就能形成一棵二叉树。最下一层即为pooling 后的输出。
上图中,输入图为 G 0 \mathcal{G}_0 G0,输入信号为 x ∈ R 12 x \in \mathbb{R}^{12} x∈R12,其中序号2, 3, 7, 11为 fake nodes;在经过 pooling 操作后得到 z ∈ [ max ( x 0 , x 1 ) , max ( x 4 , x 5 , x 6 ) , m a x ( x 8 , x 9 , x 10 ) ] ∈ R 3 z \in [\max(x_0,x_1),\max(x_4,x_5,x_6),max(x_8,x_9,x_{10})] \in \mathbb{R}^3 z∈[max(x0,x1),max(x4,x5,x6),max(x8,x9,x10)]∈R3。
这篇论文也是一篇图卷积必读的文章。
其中,有一个疑问,对于作者提出的 fast pooling 策略,它的优势在于哪里,为什么通过重排,编号,将节点排成一维序列,构造成二叉树结构做pooling(近似做1d的pooling操作)会比其他 pooling 操作更为有效?
能想到的是,也正如上所说,这种方式,它其实就是节点展成1d的序列,那么pooling就变成了在1d序列上做pooling,这个是很容易实现的,而在序列中插入fake nodes,其实就类似于对序列做padding。这是目前的一个想法,具体等研究过该篇论文的源码实现再做更正。
[1] Hammond D K, Vandergheynst P, Gribonval R. Wavelets on graphs via spectral graph theory[J]. Applied and Computational Harmonic Analysis, 2011, 30(2): 129-150.