GCN过平滑问题
Posted 周先森爱吃素
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GCN过平滑问题相关的知识,希望对你有一定的参考价值。
简介
尽管GCN为图数据的学习带来了一种全新的方式,然而Li Q等人在Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning中、Xu K等人在Representation Learning on Graphs with Jumping Knowledge Networks中都明确指出了GCN模型无法像视觉任务中的CNN模型一样深度堆叠,一旦使用多层GCN,相关任务的效果会急剧下降,这使得某些任务中,GCN的能力非常有限。
实验测试
我在上次的节点分类任务基础上,不断增加GCN,实验结果如下图所示(从左至右、从上至下GCN层数逐渐增加)。可以看到,2-3层的GCN区分效果最好,5-6层的GCN,7种节点已经逐渐混合在一起,很难区分了。
上面这个例子,可以发现,在使用多层GCN之后,节点的区分性越来越差,节点的表示向量趋于一致,这就使得以GCN为基础的后续学习任务难以进行。这个现象称为多层GCN的过平滑(Over-smooth)问题。
理论解释
众所周知,GCN可以看作是一个低通滤波器(具体论证见Revisiting Graph Neural Networks: All We Have is Low-Pass Filters这篇文章),这种特性会造成信号变得更加平滑,这是GCN的内在优势,然而,过犹不及,多次进行这种信号平滑操作会使得信号趋于一致,这就丧失了节点特征的多样性。过平滑问题的理解可以从频域和空域两个角度出发,下面分别展开。
频域角度
从GCN的频率响应函数 p ( λ ) = 1 − λ ~ i p(\\lambda)=1-\\tilde\\lambda_i p(λ)=1−λ~i中能看得明白些。
lim k → + ∞ L ~ s y m k = lim k → + ∞ ( I − L ~ s ) k = lim k → + ∞ ( V ( 1 − Λ ~ ) V T ) k = lim k → + ∞ V [ ( 1 − λ ~ 1 ) k ( 1 − λ ~ 2 ) k ⋱ ( 1 − λ ~ N ) k ] V T \\beginaligned \\lim _k \\rightarrow+\\infty \\tildeL_\\mathrmsym^k &=\\lim _k \\rightarrow+\\infty\\left(I-\\tildeL_s\\right)^k \\\\ &=\\lim _k \\rightarrow+\\infty\\left(V(1-\\tilde\\Lambda) V^\\mathrmT\\right)^k \\\\ &=\\lim _k \\rightarrow+\\infty V\\left[\\beginarraylll \\left(1-\\tilde\\lambda_1\\right)^k \\\\ & \\left(1-\\tilde\\lambda_2\\right)^k \\\\ & & \\ddots \\\\ & & & \\left(1-\\tilde\\lambda_N\\right)^k \\endarray\\right] V^T \\endaligned k→+∞limL~symk=k→+∞lim(I−L~s)k=k→+∞lim(V(1−Λ~)VT)k=k→+∞limV⎣⎢⎢⎢⎢⎢⎢⎡(1−λ~1)k(1−λ~2)k⋱(1−λ~N)k⎦⎥⎥⎥⎥⎥⎥⎤VT
由于 ( 1 − λ ~ i ) ∈ ( − 1 , 1 ] \\left(1-\\tilde\\lambda_i\\right) \\in(-1,1] (1−λ~i)∈(−1,1],当且仅当 i = 1 i=1 i=1时, 1 − λ ~ 1 = 1 1-\\tilde\\lambda_1 = 1 1−λ~1=1,,由于其他的特征值都大于0(假设全连通图,仅存在一个特征值为0),因此上式取极限之后的结果如下式。
lim k → + ∞ L ~ sym k = V [ 1 0 ⋱ 0 ] V T \\lim _k \\rightarrow+\\infty \\tildeL_\\text sym ^k=V\\left[\\beginarrayllll 1 & & & \\\\ & 0 & & \\\\ & & \\ddots & \\\\ & & & 0 \\endarray\\right] V^\\mathrmT k→+∞limL~sym k=V⎣⎢⎢⎡10⋱0⎦⎥⎥⎤VT
若设图信号为 x \\boldsymbolx x,则有下面的结果,其中 v 1 \\boldsymbolv_1 v1是 L ~ s \\tildeL_s L~s的最小频率 λ ~ 1 = 0 \\tilde\\lambda_1 = 0 λ~1=0对应的特征向量, x ~ 1 \\tildex_1 x~1表示信号 x \\boldsymbolx x在对应频率 λ ~ 1 \\tilde\\lambda_1 λ~1的傅里叶系数。
lim k → + ∞ L ~ sym k x = V [ 1 0 ⋱ 0 ] V T x = ⟨ x ⋅ v 1 ⟩ v 1 = x ~ 1 v 1 \\lim _k \\rightarrow+\\infty \\tildeL_\\text sym ^k x=V\\left[\\beginarrayllll 1 & & & \\\\ & 0 & & \\\\ & & \\ddots & \\\\ & & & 0 \\endarray\\right] V^\\mathrmT \\boldsymbolx=\\left\\langle\\boldsymbolx \\cdot \\boldsymbolv_1\\right\\rangle \\boldsymbolv_1=\\tildex_1 \\boldsymbolv_1 k→+∞limL~以上是关于GCN过平滑问题的主要内容,如果未能解决你的问题,请参考以下文章