图信号处理学习-1

局部性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-02ZcygHv-1690979793211)(attachments/VXQ5Z393.png)

(Antonio Ortega, p. 53)

局部性的重要性

局部方法广泛用于处理传统信号,例如音频、图像或视频。在音频编码中,连续的样本被分组到窗口中并单独处理,使得编码参数适应本地音频内容,从而提高编码效率。类似地,大多数图像和视频编码系统将图像划分为不重叠的块,以便每个块(例如8×8像素)被单独压缩,以适应局部图像属性。局部处理对于图信号也很有用,因为整个图的行为存在差异(例如,由传感器网络监控的单独区域或社交网络中的不同社交群体)。

局部处理的另一个好处是计算效率。对于音频处理,我们可以将信号分割成不重叠的窗口,并"即时"对信号进行编码,而无需等待所有信号都可用。局部操作使并行处理变得容易:一个大图像可以分为多个子图像,每个子图像可以分配给不同的处理器。类似地,大图可以分为子图,以便可以通过跨多个处理器的分布式计算来完成处理。

局部图处理是什么意思?

邻近度的概念可以通过扩展定义 2.3(对应于一跳邻域)并引入 k k k跳邻域的概念来推广。

  • 定义 2.7(

    k k k

    跳邻域)

给定节点 v i v_i vi,其 k k k跳邻域 N k ( i ) \mathcal{N_k(i)} Nk(i)是作为路径一部分的所有节点的集合,该路径的起始或终止于 v i v_i vi的边不超过 k k k个。

在 k k k跳邻域中(图 2.2),对于足够小的 k k k,"局部"处理是可能的,仅涉及一个节点及其最近的邻居。例如,在一个社交网络中,一个二跳邻域代表了一个扩展的联系人圈子,包括我们直接认识的人,以及通过我们的直接联系人介绍认识的人。

k k k跳邻域什么时候才是真正局部的?为了正确看待局部性,我们可以问 k k k应该有多小,才能将 k k k跳邻域的处理视为局部性。这可以通过比较节点 i i i的 k k k跳邻居数量 ∣ N k ( i ) ∣ \left | N_{k}\left ( i \right ) \right | ∣Nk(i)∣与图的大小来完成。如果 ∣ N k ( i ) ∣ ≪ N \left | N_{k}\left ( i \right ) \right | \ll N ∣Nk(i)∣≪N那么对节点 i i i的 k k k跳邻域的处理可以被认为是局部的。量化局部性的替代方法需要定义节点之间的距离。

对于无向且未加权的图,两个节点之间的测地距离是两个节点之间的最短路径的长度(以跳数为单位)。通过假设边权重是节点相似性的度量,这个想法可以扩展到加权图;然后获得距离作为相似度的倒数。因此,我们可以定义连通图中任意两个节点 i i i和 j j j之间的测地距离,如下:

  • 定义2.8(测地距离)

如果节点 i i i、 j j j相连, a i j ≠ 0 a_{ij} \ne 0 aij=0,将距离定义为 d i j = 1 a i j d_{ij}=\frac{1}{a_{ij}} dij=aij1,相似度越大,距离越短。如果节点 i i i、 j j j不直接相连,则令 p i j = { i , j 1 , j 2 , ⋯   , j k , j } p_{ij}=\{i,j_1,j_2,\cdots,j_k,j\} pij={i,j1,j2,⋯,jk,j}是连接节点 i i i和 j j j的路径。那么节点 i i i和 j j j之间的测地距离是所有可能路径中的最小值:

d ( i , j ) = min ⁡ p ( i , j ) ( 1 a i j 1 + ⋯ + 1 a j k j ) 。 d(i,j)=\min_{p(i,j)}(\frac{1}{a_{ij_1}}+\cdots+\frac{1}{a_{j_kj}})。 d(i,j)=p(i,j)min(aij11+⋯+ajkj1)。

在未加权图中 a i j ∈ { 0 , 1 } a_{ij}\in\{0,1\} aij∈{0,1},因此 d ( i , j ) d(i,j) d(i,j)确实是节点 i i i、 j j j之间最短路径的长度(以跳数为单位)。

请注意,测地距离取决于图形结构。首先,如果图形是有向的,测地距离可能不是对称的。其次,如果图结构发生变化(例如,边权重发生变化),测地距离也会发生变化。因此,如果沿 p ( i , j ) p(i,j) p(i,j)的任何边权重发生变化,则该路径后面的距离将发生变化,并且 p ( i , j ) p(i,j) p(i,j)可能不再是最短路径。

  • 定义2.9(图的半径和直径)

对于连通图 G \mathcal{G} G中的任意节点 v i v_i vi,定义 D i = m a x j d i j D_{i}=max_j d_{ij} Di=maxjdij,即从 v i v_i vi到距离 v i v_i vi最远的节点的之间的距离。在未加权无向图中, D i D_i Di是可以从 v i v_i vi中带走的最大跳数。图形的直径和半径 d ( G ) d(\mathcal{G}) d(G)和 r ( G ) r(\mathcal{\mathcal{G}}) r(G)分别为: d ( G ) = max ⁡ i D i d(\mathcal{G})=\max_i D_i d(G)=maxiDi, r ( G ) = min ⁡ i D i 。 r(\mathcal{\mathcal{G}})=\min_i D_i。 r(G)=miniDi。

注: d ( i , j ) d(i,j) d(i,j)是不直接相连节点 i i i、 j j j之间的距离, d i j d_{ij} dij为直接相连节点 i i i、 j j j之间的距离。

直观上,我们期望 d ( G ) d(\mathcal{G}) d(G)和 r ( G ) r(\mathcal{\mathcal{G}}) r(G)与图的正则性相关。例如,在图 1.9 的正则循环图中,很容易看出 d ( G ) = r ( G ) = 4 d(\mathcal{G})=r(\mathcal{\mathcal{G}})=4 d(G)=r(G)=4。

对于未加权的图,半径和直径是根据跳数来定义的,因此我们可以根据以下注释来定义局部性。

注释 2.1:如果 k k k明显小于 r ( G ) r(\mathcal{\mathcal{G}}) r(G),则 k k k跳局部节点域操作被视为真正的"局部"。

例如,考虑对 k ≥ r ( G ) k \ge r(\mathcal{G}) k≥r(G)的 k k k跳邻域进行处理。这意味着,对于 G \mathcal{G} G中的至少某些节点, k k k跳操作将包括所有节点,这很难被描述为本地节点。

对于加权图,计算相应的未加权图的半径或直径可能就足够了,即与原始加权图具有相同拓扑的图,但所有非零边权重已设置为 1。但是严格区分基于连通性的局部性和相似性隐含的局部性也很重要。例如,令 j j j为加权图中距离 i i i恰好 k k k跳的节点。如果它的相似度 1 d i j \frac{1}{d_{ij}} dij1非常小,那么它对 i i i处的处理操作的影响通常会很低。因此,如果所有相距 k k k跳节点的相似度较低,我们可以将 k k k跳操作视为几乎与 k − 1 k-1 k−1跳操作相似的局部化。

以节点为中心的本地处理

图处理可以被视为一系列以节点为中心的操作。考虑一个简单的单跳平均操作: y ( i ) = 1 d i ∑ j ∈ N ( i ) a i j x ( j ) y(i)=\frac{1}{d_i}\sum_{j\in\mathcal{N(i)}}a_{ij}x(j) y(i)=di1∑j∈N(i)aijx(j),其中 d i d_i di是节点 i i i的度, x ( i ) x(i) x(i), y ( i ) y(i) y(i)分别表示 x \mathbf{x} x和 y \mathbf{y} y的第 i i i个条目。此操作以信号 x \mathbf{x} x为输入信号并产生输出信号 y \mathbf{y} y,其中第 i i i个条目是节点 i i i邻居的平均值。

计算输出 y ( i ) y(i) y(i)需要访问数据------节点 i i i的一跳邻居------ N ( i ) \mathcal{N(i)} N(i),这表明该计算在图上是局部的。此外,其是一个简单的前向运算, x \mathbf{x} x中的值不会被修改,因此可以按任何顺序计算输出 y ( i ) y(i) y(i), 而不影响结果。例如,我们可以计算 y ( i ) y(i) y(i)对于 i ∈ 1 , 2 , ⋯   , N i \in 1,2,\cdots,N i∈1,2,⋯,N按索引递增顺序。由于与节点关联的标签是任意的,因此这种排序不一定对处理有好处。这与路径或网格图形成对比,路径或网格图存在一些自然的节点顺序,例如顺序遍历、传递所有节点、从路径的一个端点到另一个端点图形。下面的例子进一步说明了计算效率与图结构的密切关系。

**例2.1 **假设图太大而无法在处理器存储器中存储权重 a i j a_{ij} aij和 x \mathbf{x} x, y \mathbf{y} y。然后,必须将输入信号 x \mathbf{x} x分成两个较小的信号 x 1 \mathbf{x}_1 x1和 x 2 \mathbf{x}_2 x2,并将 V \mathcal{V} V分成两组节点 V 1 \mathcal{V}_1 V1和 V 2 \mathcal{V}_2 V2,即 V 1 ∪ V 2 = V \mathcal{V}_1\cup\mathcal{V}_2=\mathcal{V} V1∪V2=V且 V 1 ∩ V 2 = ∅ \mathcal{V}_1\cap\mathcal{V}_2=\emptyset V1∩V2=∅。然后, x 1 \mathbf{x}_1 x1和 x 2 \mathbf{x}_2 x2以及每个集合中节点的邻域和权重信息,会被分配给可以并行运行的不同处理器。假设要求两个子集的大小大致相同,那么 V 1 \mathcal{V}_1 V1和 V 2 \mathcal{V}_2 V2的最佳选择是什么?

**解决方案 **假设选择 V 1 \mathcal{V}_1 V1和 V 2 \mathcal{V}_2 V2,并且相应的 x 1 \mathbf{x}_1 x1和 x 2 \mathbf{x}_2 x2已加载到各自的处理器中。 x 1 \mathbf{x}_1 x1的处理可以对 V 1 \mathcal{V}_1 V1中的所有节点完成,除了 V 1 \mathcal{V}_1 V1中在 V 2 \mathcal{V}_2 V2中具有邻居的节点之外。如果 j ∈ V 2 j\in\mathcal{V}_2 j∈V2且 j ∈ N ( i ) , i ∈ V 1 j\in\mathcal{N}(i),i\in\mathcal{V}_1 j∈N(i),i∈V1,则两个处理器必须交换数据才能完成计算。因此,为了减少这种通信开销,我们应该选择 V 1 \mathcal{V}_1 V1和 V 2 \mathcal{V}_2 V2,以最小化 V 1 \mathcal{V}_1 V1和 V 2 \mathcal{V}_2 V2之间的边数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7nVsNZVb-1690979793215)(attachments/H6Q3ASGU.png)

(Antonio Ortega, p. 56)

例 2.1 的解决方案的通用版本需要将原始图划分为多个子图,同时最小化分配给不同子图的节点之间的边数。接下来研究将图划分为子图的问题,使得子图之间的连接(图割)满足某些条件。

聚类和图切分

有利于分布式处理的分组(例 2.1)会导致子图彼此之间的连接不紧密,如图 2.3 所示。如果 V 1 \mathcal{V}_1 V1和 V 2 \mathcal{V}_2 V2是两个子图中各自的节点集,那么 V 1 \mathcal{V}_1 V1中的节点将在 V 1 \mathcal{V}_1 V1中拥有大部分邻居,我们可以说 V 1 \mathcal{V}_1 V1(和 V 2 \mathcal{V}_2 V2)中的节点形成一个簇。

更正式地说,假设我们希望识别 L ≥ 2 L\ge2 L≥2个簇。一个具体的解决方案是分配一个标签 l ∈ { 1 , 2 , ⋯   , L } l\in\{1,2,\cdots,L\} l∈{1,2,⋯,L}。分配给节点 i i i的标签表示为 l ( i ) l(i) l(i)。因为聚类的思想是将邻居分组在一起,所以很自然地将两个节点之间所需的标签的元素代价定义为 c i j = a i j I ( l ( i ) ≠ l ( j ) ) c_{ij}=a_{ij}\mathcal{I}(l(i) \ne l(j)) cij=aijI(l(i)=l(j)),其中 a i j a_{ij} aij是边权重, I ( l ( i ) ≠ l ( j ) ) \mathcal{I}(l(i) \ne l(j)) I(l(i)=l(j))是指示函数:如果 l ( i ) ≠ l ( j ) l(i) \ne l(j) l(i)=l(j)( i i i和 j j j位于不同的簇中),则 I ( l ( i ) ≠ l ( j ) ) = 1 \mathcal{I}(l(i) \ne l(j))=1 I(l(i)=l(j))=1;如果 l ( i ) = l ( j ) l(i)=l(j) l(i)=l(j)( i i i和 j j j位于同一簇中),则 I ( l ( i ) ≠ l ( j ) ) = 0 \mathcal{I}(l(i)\ne l(j))=0 I(l(i)=l(j))=0。如果两个节点未连接( a i j = 0 a_{ij}=0 aij=0),则对总代价的贡献为零。这使我们能够定义聚类问题。

  • 定义 2.10(聚类)

对于 L ≥ 2 L\ge2 L≥2, L L L类聚类问题即以最小化成本的方式:

C = ∑ i ∼ j c i j = ∑ i ∼ j a i j I ( l ( i ) ≠ l ( j ) ) , C=\sum_{i \sim j}c_{ij}=\sum_{i \sim j}a_{ij}\mathcal{I}(l(i) \ne l(j)), C=i∼j∑cij=i∼j∑aijI(l(i)=l(j)),

为图中的每个节点 i i i选择标签 l ( i ) ∈ { 1 , 2 , ⋯   , L } l(i)\in\{1,2,\cdots,L\} l(i)∈{1,2,⋯,L},其中对所有连接节点对(表示为 i ∼ j i \sim j i∼j)求和。此问题的变体可能要求簇的大小相似。

图割 聚类问题可以与寻找图割的问题相关,其中我们选择边而不是对节点进行分组。

  • 定义 2.11(图割)

图割是连通图 G \mathcal{G} G中的一组边 E c ⊂ E \mathcal{E}_c\subset\mathcal{E} Ec⊂E,使得:(i) 如果 E c \mathcal{E}_c Ec中的所有边都被删除后 G \mathcal{G} G是断开的; (ii) 删除任何集合 E ′ , E ′ ⊂ E c \mathcal{E}^\prime,\mathcal{E}^\prime\subset\mathcal{E}_c E′,E′⊂Ec的所有边后, G \mathcal{G} G保持连通。对于给定大小的结果连接分量,如果在未加权图中具有最小边数,或者在加权图中具有最小边权重,则图割是最小的。

寻找最小图割 将图划分为两组节点,其中连接两组中节点的边权重最小。我们可以看到,在 L = 2 L=2 L=2的情况下,定义 2.10 问题的最优解也对应于最小割。我们将在第 7.5.2 节中进一步探讨聚类的概念,其中我们将考虑它如何与我们对图频率的定义联系起来。类似地,找到最大割也会将图划分为两组节点,但这次连接这两组中节点的边权重被最大化。虽然最小割可用于聚类,但最大割可用于着色。

图形着色

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NpX7z1JZ-1690979793216)(attachments/VWZE6KYP.png)

(Antonio Ortega, p. 58)

图着色是图论中的一个经典问题,与图信号处理有着有趣的联系。颜色是与节点集相关联的标签。有效的图着色是为节点分配颜色,使图中没有两个相连的节点被分配相同的颜色。请注意,聚类和着色寻求相反的目标:在聚类中,我们尝试最小化连接节点之间标签的差异,而有效的着色要求连接节点的标签不同。对于具有 N N N个节点的图,一种简单的着色方法是分配 N N N个不同的颜色,每个节点分配一种颜色。因此,图形着色的主要挑战是找到存在着色的最小颜色数,也称为色数。 k − k- k−可着色图可以定义如下。

  • 定义 2.12(k-可着色图)

k − k- k−可着色图或 k − k- k−部分图可以使用 k k k个节点集 V 1 , V 1 , ⋯   , V k \mathcal{V}_1,\mathcal{V}1,\cdots,\mathcal{V}k V1,V1,⋯,Vk和所有的边 e = v k i v k j e=v{k_i}v{k_j} e=vkivkj来描述,其中 V i ∩ V j = ∅ , i ≠ j \mathcal{V}_i\cap\mathcal{V}_j=\emptyset,i \ne j Vi∩Vj=∅,i=j且 V 1 ∪ V 2 ∪ ⋯ ∪ V k = V \mathcal{V}_1\cup\mathcal{V}2\cup\cdots\cup\mathcal{V}k=\mathcal{V} V1∪V2∪⋯∪Vk=V, v k i , v k j ( k i ≠ k j ) v{k_i},v{k_j}(k_i \ne k_j) vki,vkj(ki=kj)为两个节点集( V i , V j \mathcal{V}_i,\mathcal{V}_j Vi,Vj)中的两个节点。

图 2.4 显示了图 2.3 中图的着色(有五种颜色)。这种二分图 (k = 2) 对于图信号处理特别重要,实际上对于传统信号处理也是如此(路径图始终是二分图,但循环图只有在具有偶数个节点时才是二分图)。

  • 定义 2.13(二分图)

二分图或2-色图有两个节点集 V 1 , V 2 \mathcal{V}_1,\mathcal{V}_2 V1,V2,其中 V 1 ∩ V 2 = ∅ \mathcal{V}_1\cap\mathcal{V}_2=\emptyset V1∩V2=∅且 V 1 ∪ V 2 = V \mathcal{V}_1\cup\mathcal{V}_2=\mathcal{V} V1∪V2=V,所有的边 e e e可以写为 e = v 1 v 2 e=v_1v_2 e=v1v2或 e = v 2 v 1 e=v_2v_1 e=v2v1,其中 v 1 ⊂ V 1 , v 2 ⊂ V 2 v_1\subset\mathcal{V}_1,v_2\subset\mathcal{V}_2 v1⊂V1,v2⊂V2。

请注意,形成图 2.4 中右侧簇的四个节点都相互连接,即它们形成一个派系。因此,这四个节点需要四种不同的颜色,因此色数为 4。类似地,具有 N N N个节点的完整图将具有色数 N N N。更一般地,由于着色必须避免将相同的颜色分配给两个邻居,具有 N N N个节点的图的颜色数量将取决于边的数量。

路径图是二分图且没有循环。一般来说,没有循环的图就是树。树上的任何节点都可以被选为根节点并分配到第一层。连接到根的节点是其后代或子节点,属于第二级,通过 K K K条边路径可达的节点位于 K + 1 K+1 K+1级。任何级别上没有后代的节点称为叶节点。每个节点具有相同数量后代的树称为正则树,如果可以选择根节点以使所有叶节点处于同一级别,则该树称为平衡树。请注意,每棵树都是二分图,但每个二分图都一定是树,因为二分图可以是具有偶数个节点或边的环。

近似k-划分 根据之前的观察,从图中删除边后,修改后的图的色数只能相同或更小。如果需要某个预先指定的 k k k的 k − k- k−着色图(例如第 5.6.2 节中的二分图),则可以修改该图(保留所有节点,但删除一些边)以实现所需的色数。显然,我们总是可以通过删除足够多的边来达到这个目标,但这可能会导致图形与原始图形非常不同。因此,更相关(且更具挑战性)的问题是找到最佳近似值,即具有所需色数的图,同时要求去除最少数量的边或去除总权重最小的边。

为了说明这一点,请比较最大和最小图割的情况,它们都将图划分为两个子图并产生二分近似(其中仅保留形成割的边,并删除所有其他边)。然而,最大切割会导致更好的近似,因为它选择两个集合中具有最大权重的边,因此每个集合内的边权重之和将最小化。由于这些是二分近似中要删除的边缘,因此最小化它们的权重是一个合理的目标。第 6 章研究了图近似。

**着色和信号变化 **我们可以使用着色的概念来获得有关图形信号变化的一些见解。根据定义,分配相同颜色的两个节点不能是直接邻居。考虑图 2.5 的二分图,图中定义了两个不同的信号(图 2.5(a) 和 (b))。这两个信号相似:都有四个正值和三个负值。请注意,图 2.5(b) 中的信号为与一种颜色对应的所有节点分配了相同的符号。由于该图是二分图,因此所有边都连接具有不同符号值的节点,并且相应的信号具有很大的变化。相比之下,图 2.5(a) 中信号的符号变化较少,导致整体信号变化较小。

着色和采样 在图信号采样(第 4 章)中,目标是选择节点子集(采样集),以便从这些观察到的节点获得的信号可用于估计未观察到的节点处的信号。如果我们要从 N N N个节点中选择 K K K个,那么最好将这些节点"展开",以便提供来自图的所有部分的本地信息。这表明,在对图进行着色后,应该用一种颜色对所有节点进行采样(因为这些节点会自动保持分离)。因此,在图 2.5 的例子中,如果要选择三个节点,那么左边的节点(对应一种颜色)将是一个不错的选择:因为它们并不相连,提供冗余信息的可能性较小。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3pHx7dl-1690979793217)(attachments/9H8RPV7K.png)

(Antonio Ortega, p. 60)

Referred in 书名:Introduction to graph signal processing

相关推荐
BingoGo1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
QQ5110082855 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php