图傅里叶变换简介
图的基本表示
图的基本表示
图是由节点(也称为顶点)和边组成的数据结构,用于表示实体及其之间的关系。
节点和边
-
节点(Vertices):图中的节点代表了系统中的各个实体。例如,在社交网络图中,每个节点可以表示一个用户。
-
边(Edges):图中的边表示节点之间的关系或连接。边可以是无向的,表示关系是双向的或无方向性的;也可以是有向的,表示关系是单向的。在社交网络图中,边可以表示用户之间的友谊关系。
图的类型
-
无向图:图中的每条边都没有方向,表示节点间关系是双向或无方向的。
-
有向图:图中的边具有方向,表示从一个节点指向另一个节点的关系。
-
加权图:图中的边被赋予权重,表示边的重要性或节点间连接的强度。
-
多图:在一个图中,两个节点之间可以有多条边,这样的图称为多图。
图的表示方法
-
邻接矩阵(Adjacency Matrix):
- 邻接矩阵是一个 N × N N × N N×N的矩阵, 一般用 A A A 表示,其中 $N $ 是图中节点的数量。
- 对于无向图,矩阵是对称的。矩阵中的元素 A i j A_{ij} Aij表示节点 i i i和节点 j j j之间是否有边。对于非加权图, A i j = 1 A_{ij} = 1 Aij=1表示节点之间有连接,而 A i j = 0 A_{ij} = 0 Aij=0 则表示没有。
- 对于加权图, A i j A_{ij} Aij可以表示权重,对于不存在的边,可以用 0 0 0或者正无穷(表示无连接)。
-
度矩阵(Degree ):
- 度矩阵是一个 N × N N × N N×N 的对角矩阵。
- 对角线上的元素 D i j D_{ij} Dij表示节点 i i i 的度,即与节点 i i i 相连的边的数量。对于加权图,度是节点所有连接的权重之和。
-
邻接列表(Adjacency List)
- 邻接列表只用边表示图
- 邻接列表存的是一个二元组,(source, target),其中source表示边的起始结点,target表示边的终止结点
- 例如 [ [ 1 , 3 ] , [ 1 , 2 ] ] [[1, 3],[1, 2]] [[1,3],[1,2]] 表示该图有两条边,一条边是从结点1出发到结点3,另一条边从结点1出发到结点2。
图信号与拉普拉斯矩阵
图信号
给定图 G = ( V , E ) G= (V,E) G=(V,E), V V V表示图中的节点集合,假设其长度为 N N N(有N个结点),图信号是一种描述 V → R V → R V→R的映射,表示成向量的形式: X = [ x 1 , x 2 , ⋯ , x N ] T \mathbf{X}=[x_1, x_2, \cdots, x_N ]^T X=[x1,x2,⋯,xN]T,其中 x i x_i xi, 表示的是节点 v i v_i vi上的信号强度,如图所示,其中竖线长度表示节点上信号值的大小:
拉普拉斯矩阵
定义
拉普拉斯矩阵(Laplacian Matrix)是研究图的结构性质的一个非常核心的研究对象, 拉普拉斯矩阵的定义如下: L = D – A L=D–A L=D–A,其中 D D D是度矩阵, A A A是邻接矩阵。
在元素级别的拉普拉斯矩阵定义是
L
i
j
=
{
deg
(
v
i
)
if
i
=
j
−
1
if
e
i
j
∈
E
0
otherwise
v
L_{ij}=\begin{cases}\:\deg(v_i)&\:\text{if}\:i=j\\[2ex]-1&\:\text{if}\:e_{ij}\in E\\[2ex]0&\:\text{otherwise}\end{cases}v
Lij=⎩
⎨
⎧deg(vi)−10ifi=jifeij∈Eotherwisev
正则化形式
拉普拉斯矩阵还有一种正则化的形式(symmetric normalized laplacian),
L
s
y
m
=
D
−
1
2
D
−
1
2
L_{sym}=D^{-\frac{1}{2}} D^{-\frac{1}{2}}
Lsym=D−21D−21
, 在元素级别上定义为
L
s
y
m
=
[
i
,
j
]
=
{
1
if
i
=
j
−
1
deg
(
ν
i
)
deg
(
ν
j
)
if
e
i
j
∈
E
0
otherwise
L_\mathrm{sym}=[i, j]=\begin{cases}1&\text{if}i=j\\\\\frac{-1}{\sqrt{\deg(\nu_i)\deg(\nu_j)}}&\text{if}\:e_{ij}\in E\\\\0&\text{otherwise}\end{cases}
Lsym=[i,j]=⎩
⎨
⎧1deg(νi)deg(νj)−10ifi=jifeij∈Eotherwise
来源与含义
拉普拉斯矩阵的定义来源于拉普拉斯算子,拉普拉斯算子是n维欧式空间中的一个二 阶微分算子
Δ
f
=
∑
i
n
∂
f
∂
x
i
Δ f =\sum_{i}^n \frac{∂ f}{∂ x_i}
Δf=∑in∂xi∂f,如果把n维欧式空间退化成离散的二维图像空间,就能得到常见的边缘检测算子:
Δ
f
(
x
,
y
)
=
∂
2
f
(
x
,
y
)
∂
x
2
+
∂
2
f
(
x
,
y
)
∂
y
2
=
[
(
f
(
x
+
1
,
y
)
−
f
(
x
,
y
)
−
f
(
x
−
1
,
y
)
)
]
+
[
(
f
(
x
,
y
+
1
)
−
f
(
x
,
y
)
)
−
(
f
(
x
,
y
)
−
f
(
x
,
y
−
1
)
)
]
=
[
f
(
x
+
1
,
y
)
+
f
(
x
−
1
,
y
)
+
f
(
x
,
y
+
1
)
+
f
(
x
,
y
−
1
)
]
−
4
f
(
x
,
y
)
\begin{aligned}\Delta f(x, y)&=\frac{\partial^{2}f(x, y)}{\partial x^{2}}+\frac{\partial^{2}f(x, y)}{\partial y^{2}}\\&=[(f(x+1, y)-f(x, y)-f(x-1, y))]+[(f(x, y+1)-f(x, y))-(f(x, y)-f(x, y-1))]\\&=[f(x+1, y)+f(x-1, y)+f(x, y+1)+f(x, y-1)]-4f(x, y)\end{aligned}
Δf(x,y)=∂x2∂2f(x,y)+∂y2∂2f(x,y)=[(f(x+1,y)−f(x,y)−f(x−1,y))]+[(f(x,y+1)−f(x,y))−(f(x,y)−f(x,y−1))]=[f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)]−4f(x,y)
在处理图像时,拉普拉斯算子就被表示成
0
1
0
1
−
4
1
0
1
0
\boxed{\begin{array}{ccc}0&1&0\\\\1&-4&1\\\\0&1&0\\\end{array}}
0101−41010
从矩阵中直观地看到,拉普拉斯算子描述了中心像素与局部上、下、左、右 四邻居像素的差异,这种性质通常被用来当作图像上的边缘检测算子。
同理,在图信号中,拉普拉斯算子也被用来描述中心节点与邻居节点之间的信号的差异。对于一个图信号
x
x
x,如果用拉普拉斯矩阵右乘该信号,将矩阵乘法展开:
L
x
=
(
D
−
A
)
x
=
[
⋯
,
∑
v
j
∈
N
(
v
i
)
(
x
i
−
x
j
)
,
⋯
]
,
L\mathbf{x}=(D-A)\mathbf{x}=\Bigg[\cdots, \sum_{v_j\in N(v_i)}(x_i-x_j), \cdots\Bigg],
Lx=(D−A)x=[⋯,vj∈N(vi)∑(xi−xj),⋯],
对于每一个结点 v i v_i vi,设与该结点的度为 d i d_i di,则说明有 d i d_i di个其他结点(设为 v j v_j vj, v j v_j vj是所有与 v i v_i vi相邻的结点)与该结点相连。那么在减去邻接矩阵 A A A时展开就会减去所有 v j v_j vj的图信号 x j x_j xj,而度矩阵 D D D又会把该结点的图信号扩大 d i d_i di倍,把 d i d_i di倍的图信号分给每一个 v j v_j vj的图信号,每一个就是 x i − x j x_i-x_j xi−xj,最后对所有的 v j v_j vj求和即可得到
图傅里叶变换
从信号学引入傅里叶变换
傅里叶变换是数字信号处理的基石,傅里叶变换将信号从时域空间转换到频域空间, 而频域视角给信号的处理带来了极大的便利。围绕傅里叶变换,信号的滤波、卷积等操 都有了完备的理论定义,这为一些实际的工程应用,如信号的去噪、压缩、重构等任务提 供了理论指导。 类比傅里叶变换,我们给出图信号傅里叶变换的定义,即将图信号由空域(spatial domain)视角转化到频域(frequency domain)视角,便于图信号处理理论体系的建立。
图傅里叶变换过程
对拉普拉斯矩阵进行正交对角化
假设图G的拉普拉斯矩阵为
L
∈
R
N
×
N
L∈R^{N×N}
L∈RN×N,由于
L
L
L是一个实对称矩阵,根据实对称矩阵都可以被正交对角化,可得
L
=
V
Λ
V
T
=
[
⋮
⋮
⋯
⋮
v
1
v
2
⋯
v
N
⋮
⋮
⋯
⋮
]
[
λ
1
λ
2
⋱
λ
N
]
[
⋯
v
1
⋯
⋯
v
2
⋯
⋯
⋮
⋯
⋯
v
N
⋯
]
L=V\Lambda V^\mathrm{T}=\left[\begin{array}{ccccc}\vdots&\vdots&\cdots&\vdots\\\mathbf{v}_1&\mathbf{v}_2&\cdots&\mathbf{v}_N\\\vdots&\vdots&\cdots&\vdots\end{array}\right]\begin{bmatrix}\lambda_1\\&\lambda_2\\&&\ddots\\&&&\lambda_N\end{bmatrix}\begin{bmatrix}\cdots&\mathbf{v}_1&\cdots\\\cdots&\mathbf{v}_2&\cdots\\\cdots&\vdots&\cdots\\\cdots&\mathbf{v}_N&\cdots\end{bmatrix}
L=VΛVT=
⋮v1⋮⋮v2⋮⋯⋯⋯⋮vN⋮
λ1λ2⋱λN
⋯⋯⋯⋯v1v2⋮vN⋯⋯⋯⋯
其中
V
∈
R
N
×
N
V∈R^{N× N}
V∈RN×N,
V
=
[
v
1
,
v
2
,
.
.
.
,
v
N
]
\mathrm{V=[v_1, ~v_2, ~..., ~v_N]}
V=[v1, v2, ..., vN]表示L的N个特征向量。
λ
k
\lambda_k
λk表示特征值,对于这些特征值进行升序排列,
λ
1
≤
λ
2
.
.
.
≤
λ
N
λ_1≤λ_2...≤λ_N
λ1≤λ2...≤λN
进行傅里叶变换变换
对于图信号x,对该信号进行傅里叶变换为:
x
~
k
=
∑
i
=
1
N
V
k
i
T
x
i
=
⟨
v
k
,
x
⟩
,
\tilde{x}_k=\sum_{i=1}^NV_{ki}^\mathrm{T}x_i=\left\langle\mathbf{v}_k, \mathbf{x}\right\rangle ,
x~k=i=1∑NVkiTxi=⟨vk,x⟩,
其中特征向量
v
k
v_k
vk被称为傅里叶基,
x
~
k
\tilde{x}_k
x~k是第k个傅里叶基的系数。
从空间变换的角度来看,傅里叶变换把图信号从空间域转换到了频域,频域的基向量就是特征向量,而傅里叶系数是图信号在傅里叶基上的投影,衡量了图信号与傅里叶基之间的相似度。
如果用矩阵来表示,则傅里叶变化为
x
~
k
=
V
T
x
,
\tilde{\boldsymbol{x}}_k=V^\mathrm{T}\boldsymbol{x},
x~k=VTx,
逆变换
当在频域上处理完图之后,可能需要从频域重新变换到空间域,因此需要逆傅里叶变换,由于
V
x
~
=
V
V
T
x
=
I
x
=
x
,
V\tilde{x}=VV^\mathrm{T}x=Ix=x,
Vx~=VVTx=Ix=x,
因此对如果频域的傅里叶信号左乘
V
V
V,则就把信号从频域转换会空间域。
频域上的图信号
我们对图进行了傅里叶变换,而图的频率表示什么呢?
总变差
总变差(Total Variation,简称TV)是一个衡量函数或信号变化程度的量,广泛用于信号处理和图像处理领域。
图信号的总变差被定义为
T
V
(
x
)
=
x
T
L
x
=
∑
v
i
∑
v
j
∈
N
(
v
i
)
x
i
(
x
i
−
x
j
)
=
∑
e
i
j
∈
E
(
x
i
−
x
j
)
2
,
TV(\boldsymbol{x})=\boldsymbol{x}^{\mathrm{T}}L\boldsymbol{x}=\sum_{v_i}\sum_{v_j\in N(v_i)}x_i\big(x_i-x_j\big)=\sum_{e_{ij}\in E}\big(x_i-x_j\big)^2 ,
TV(x)=xTLx=vi∑vj∈N(vi)∑xi(xi−xj)=eij∈E∑(xi−xj)2,
由此定义可以看出,总变差是一个标量,它将各条边上信号的差值进行加和,刻画了图信号整体的平滑度。
图信号
如果对总变差中的图信号x进行傅里叶变换,
T
V
(
x
)
=
x
T
L
x
=
x
T
V
Λ
V
T
x
=
(
V
x
~
)
T
V
Λ
V
T
(
V
x
~
)
=
x
~
T
V
T
V
Λ
V
T
V
x
~
=
x
~
T
Λ
x
~
=
∑
k
N
λ
k
x
~
k
2
\begin{aligned}\mathrm{TV}(\boldsymbol{x})&=\boldsymbol{x}^\mathrm{T}L\boldsymbol{x}=\boldsymbol{x}^\mathrm{T}V\Lambda\: V^\mathrm{T}\boldsymbol{x}\\&=(V\boldsymbol{\tilde{\boldsymbol{x}}})^\mathrm{T}V\Lambda\: V^\mathrm{T}(V\boldsymbol{\tilde{\boldsymbol{x}}})\\&=\boldsymbol{\tilde{\boldsymbol{x}}}^\mathrm{T}V^\mathrm{T}V\Lambda\: V^\mathrm{T}V\boldsymbol{\tilde{\boldsymbol{x}}}\\&=\boldsymbol{\tilde{\boldsymbol{x}}}^\mathrm{T}\Lambda\boldsymbol{\tilde{\boldsymbol{x}}}\\&=\sum_k^N\lambda_k\tilde{\boldsymbol{x}}_k^2\end{aligned}
TV(x)=xTLx=xTVΛVTx=(Vx~)TVΛVT(Vx~)=x~TVTVΛVTVx~=x~TΛx~=k∑Nλkx~k2
因此图信号的总变差与图的特征值是线性关系,总变差是图的所有特征值的一个线性组合,权重是图信号相对应的傅里叶系数的平方。
结合总变差代表着图信号整体平滑度的实际意义,我们可以发现,特征值依次排列在一起,对图信号的平滑度作出一种梯度刻画,因此可以将特征值等价成频率。特征值越低,频率越低,对应的傅里叶基就变化得越缓慢,相近节点上的信号值趋于一致;特征值 越高,频率越高,对应的傅里叶基就变化得越剧烈,相近节点上的信号值则非常不一致
度的实际意义,我们可以发现,特征值依次排列在一起,对图信号的平滑度作出一种梯度刻画,因此可以将特征值等价成频率。特征值越低,频率越低,对应的傅里叶基就变化得越缓慢,相近节点上的信号值趋于一致;特征值 越高,频率越高,对应的傅里叶基就变化得越剧烈,相近节点上的信号值则非常不一致
参考文献:
深入浅出图神经网络:GCN原理解析
图傅里叶变换-知乎