图卷积(3)——谱域图卷积(2)
图傅里叶变换
将图中的nnn个节点表示为x=[x1,x2,⋯ ,xn]T∈Rnx=\left[x_{1}, x_{2}, \cdots, x_{n}\right]^{T} \in \mathbb{R}^{n}x=[x1,x2,⋯,xn]T∈Rn,每一个节点上有一个信号值,类似于图像的像素,所以x(i)=xix(i)=x_{i}x(i)=xi,每个节点也可以是个向量。
在傅里叶变换中,不同频率的余弦函数可以当做基函数。经典傅里叶变换的本质是求一个线性组合的系数,傅里叶反变换的本质是把任意一个函数表示成若干个正交基函数的线性组合。那么在图上的信号xxx,如果要进行傅里叶变换,那自然而然也需要找到一组正交基,通过这组正交基的线性组合来表示xxx。
所以这里采用拉普拉斯矩阵的特征向量来作为图傅里叶变换的基函数。
U=(u⃗1,u⃗2,⋯ ,u⃗n)
U=\left(\vec{u}_{1}, \vec{u}_{2}, \cdots, \vec{u}_{n}\right)
U=(u1,u2,⋯,un)
所以图傅里叶反变换可以表示为:
x=x^(λ1)u⃗1+x^(λ2)u⃗2+⋯+x^(λn)u⃗nx(i)=∑l=1nx^(λl)ul(i)x=Ux^
\begin{aligned}
x&=\hat{x}\left(\lambda_{1}\right) \vec{u}_{1}+\hat{x}\left(\lambda_{2}\right) \vec{u}_{2}+\cdots+\hat{x}\left(\lambda_{n}\right) \vec{u}_{n} \\
x(i)&=\sum_{l=1}^{n} \hat{x}\left(\lambda_{l}\right) u_{l}(i) \\
x&=U \hat{x}
\end{aligned}
xx(i)x=x^(λ1)u1+x^(λ2)u2+⋯+x^(λn)un=l=1∑nx^(λl)ul(i)=Ux^
图傅里叶正变换为:
x^(λl)=⟨x,u⃗l⟩=∑i=1nx(i)ul(i)x^=UTx
\begin{aligned}
\hat{x}\left(\lambda_{l}\right)&=\left\langle x, \vec{u}_{l}\right\rangle=\sum_{i=1}^{n} x(i) u_{l}(i) \\
\hat{x}&=U^{T} x
\end{aligned}
x^(λl)x^=⟨x,ul⟩=i=1∑nx(i)ul(i)=UTx
可以看出经典傅里叶变换的基函数是有共轭的,而图傅里叶函数的基函数是没有的。
这是因为实数拉普拉斯矩阵的特征向量为实向量(前面提到过),共轭之后还是自身。
在图傅里叶变换中,拉普拉斯矩阵的特征值担任着经典傅里叶变换中频率的作用(其特征值均非负,且最小值为0,类似于经典傅里叶变换中的常数项),它的特征向量相对于基函数(低特征值对应的特征向量比较平滑,高特征值对应的特征向量变换比较剧烈,类似于经典傅里叶变换中的低频和高频函数)。
P.S. 定义信号的平滑程度
简单的方法有zero-crossing函数:遍历每一条边,若这条边连接的两个节点乘积为负,则此函数加1,所以这个函数值越高,信号越不平滑。
或者通过定义图拉普拉斯二次型来定义信号的平滑程度:
xTLx=1/2∑i,j=1mWi,j(x(i)−x(j))2
x^{T} L x=1 / 2 \sum_{i, j=1}^{m} W_{i, j}(x(i)-x(j))^{2}
xTLx=1/2i,j=1∑mWi,j(x(i)−x(j))2
其表示有边相连的两个节点的信号值的平方差乘以边权重后再求和,和zero-crossing函数一样,值越小,信号越平滑。而且,将特征向量代入进去后,u⃗lTLu⃗l=λl\vec{u}_{l}^{T} L \vec{u}_{l}=\lambda_{l}ulTLul=λl,值为特征值,这符合经典傅里叶变换的设定,频率越高,基函数(余弦函数)变化越陡峭。
图卷积
根据图傅里叶变换,图卷积的定义为:
x⋆Gg=F−1(F(x)⊙F(g))=U(UTx⊙UTg)
x \star_{\text {G}}g=\mathcal{F}^{-1}(\mathcal{F}(x) \odot \mathcal{F}(g))=U\left(U^{T} x \odot U^{T} g\right)
x⋆Gg=F−1(F(x)⊙F(g))=U(UTx⊙UTg)
其中(又是一大波式子介绍),⋆G\star_{\text {G}}⋆G表示图卷积,xxx是输入信号,ggg是卷积核,且x^=F(x)=UTx\hat{x}=\mathcal{F}(x)=U^{T} xx^=F(x)=UTx,g^=F(g)=UTg\hat{g}=\mathcal{F}(g)=U^{T} gg^=F(g)=UTg。令gθ=diag(UTg)g_{\theta}=\operatorname{diag}\left(U^{T} g\right)gθ=diag(UTg),将上述式子写成矩阵相乘的形式:
x⋆Ggθ=UgθUTx=U(g^(λ1)⋱g^(λn))(x^(λ1)x^(λ2)⋮x^(λn))=U(g^(λ1)⋱g^(λn))UTx
x \star_{G} g_{\theta}=U g_{\theta} U^{T} x=U\left(\begin{array}{ccc}
\hat{g}\left(\lambda_{1}\right) & & \\
& \ddots & \\
& & \hat{g}\left(\lambda_{n}\right)
\end{array}\right)\left(\begin{array}{c}
\hat{x}\left(\lambda_{1}\right) \\
\hat{x}\left(\lambda_{2}\right) \\
\vdots \\
\hat{x}\left(\lambda_{n}\right)
\end{array}\right)=U\left(\begin{array}{ccc}
\hat{g}\left(\lambda_{1}\right) & & \\
& \ddots & \\
& & \hat{g}\left(\lambda_{n}\right)
\end{array}\right) U^{T} x
x⋆Ggθ=UgθUTx=U⎝⎛g^(λ1)⋱g^(λn)⎠⎞⎝⎜⎜⎜⎛x^(λ1)x^(λ2)⋮x^(λn)⎠⎟⎟⎟⎞=U⎝⎛g^(λ1)⋱g^(λn)⎠⎞UTx