图信号处理学习笔记(1):图信号基本知识及其变换

2023-05-16

最近在学习图信号处理的相关知识,想进行一些应用层面的实践,恰巧遇到一篇十分具有启发性的推荐算法的论文,故以此文进行简单总结,也作为自己的学习笔记。

Reference:

  1. https://en.wikipedia.org/wiki/Laplacian_matrix

一、图信号基本知识

一个无向图 G G G(Graph) 可以定义为: G = ( V , E ) G=(V,E) G=(V,E)。即无向图由节点集合 V V V和边缘集合 E E E构成。 V = { 1 , 2 , . . . , N } V=\{1,2,...,N\} V={1,2,...,N} N N N为节点个数。部分节点之间存在“连接”(译为links或edges),这些连接集合表示为 E E E。具体地,任意不同的两个节点为 i , j ∈ V i,j\in V i,jV,则 E = { i , j , w i j } E=\{i,j,w_{ij}\} E={i,j,wij},表示节点 i i i与节点 j j j间的连接权值 w i j w_{ij} wij

上述的三元组合表达方式并不是非常理想的,我们并不能通过这种表达方式发掘图本身的特征,因此,矩阵被广泛应用于图的表达。基本地,定义邻接矩阵 A A A,则一个带有 N N N个节点的图可以用大小为 N ∗ N N*N NN A A A表示,其中 A ( i , j ) = w i j A(i,j)=w_{ij} A(i,j)=wij

除了 A A A以外,还有一些常用的矩阵表达方式,分别具有不同的性质,也能够反映不同的图的特征。在此之前,先定义 d i d_i di为节点 i i i的维度,其为节点 i i i的所有连接权值的总和。然后,定义维度矩阵 D = d i a g ( d 1 , d 2 , . . . , d N ) D=diag(d_1,d_2,...,d_N) D=diag(d1,d2,...,dN),其中 d i a g ( ) diag() diag()将向量转变为对角矩阵。

1) Incidence Matrix(关联矩阵)

注:为了方便描述,下述的图都给定为简单图,在简单图中, A A A的元素只由0和1构成。1表示该边存在,反之则为0。如果不是简单图,这些矩阵依然满足下述定义式。

给定无向图 G = ( V , E ) G=(V,E) G=(V,E),其对应的关联矩阵 ∇ \nabla 是一个长宽为 [ ∣ E ∣ ∗ ∣ V ∣ ] [|E|*|V|] [EV]的矩阵。对于矩阵里的每一条边 e = n i n j e=n_in_j e=ninj,可以任意给定一个方向。之后,如果节点 x x x是边缘 e e e的起始节点,则 ∇ e x = − 1 \nabla_{ex}=-1 ex=1,如果节点 x x x是终止节点,则 ∇ e x = 1 \nabla_{ex}=1 ex=1

即,每一行有且仅包含了一个1和一个-1,其余都是0元素。

2) Laplacian Matrix (拉普拉斯矩阵)

Laplacian Matrix可由Incidence Matrix得到: L = ∇ T ∇ L=\nabla^T\nabla L=T

同时,若给定一个简单图(simple graph)的邻接矩阵 A A A和维度矩阵 D D D。则这个图的Laplacian Matrix也可定义为: L = D − A L = D-A L=DA

上述两式是等价的。具体地, L L L的元素为:
L i , j = { d i i = j − 1 n o d e   i   i s   a d j a c e n t   t o   j 0 o t h e r w i s e L_{i,j}=\left\{ \begin{aligned} d_i & &{i=j} \\ -1 & &{node\ i\ is\ adjacent\ to\ j}\\ 0 & &{otherwise} \end{aligned} \right. Li,j=di10i=jnode i is adjacent to jotherwise
在这里插入图片描述
拉普拉斯矩阵 L L L具有半正定的特性,且各行各列累加都为0。

下面给出半正定的证明: λ i \lambda_i λi v i v_i vi L L L的某一特征值和特征向量对。则有:

λ i = v i T L v i = v i T ∇ T ∇ v i = ( ∇ v i ) T ( ∇ v i ) ≥ 0 \lambda_i=v_i^TLv_i=v_i^T\nabla^T\nabla v_i=(\nabla v_i)^T(\nabla v_i)\geq0 λi=viTLvi=viTTvi=(vi)T(vi)0

所以 L L L为半正定矩阵。

3) Symmetric Normalized Laplacian Matrix (对称标准化拉普拉斯矩阵)

一个简单图的对称标准化拉普拉斯矩阵 L s y m L^{sym} Lsym定义如下:
L s y m = D − 1 2 L D − 1 2 = I − D − 1 2 A D − 1 2 L^{sym} = D^{-\frac 12}L D^{-\frac 12} = I - D^{-\frac 12}AD^{-\frac 12} Lsym=D21LD21=ID21AD21
具体地, L s y m L^{sym} Lsym的元素为:
L i , j s y m = { 1 i = j   a n d   d i ≠ 0 − 1 d i d j   n o d e   i   i s   a d j a c e n t   t o   j 0 o t h e r w i s e L^{sym}_{i,j}=\left\{ \begin{aligned} 1 & &{i=j \ and \ d_i \neq 0} \\ -\frac{1}{\sqrt{d_id_j}} & &{\ node\ i \ is\ adjacent\ to\ j} \\ 0 & &{otherwise} \end{aligned} \right. Li,jsym=1didj 10i=j and di̸=0 node i is adjacent to jotherwise
L s y m L^{sym} Lsym在进行了标准化(对角线的值为1)的同时,保留了对称特性。

4)Random Walk Normalized Laplacian (随机游走标准化拉普拉斯矩阵)

随机游走标准化拉普拉斯矩阵 L r w L^{rw} Lrw定义如下:
L r w = D − 1 L = I − D − 1 A L^{rw}=D^{-1}L=I-D^{-1}A Lrw=D1L=ID1A
具体地, L r w L^{rw} Lrw的元素为:
L i , j r w = { 1 i = j   a n d   d i ≠ 0 − 1 d i   n o d e   i   i s   a d j a c e n t   t o   j 0 o t h e r w i s e L^{rw}_{i,j}=\left\{ \begin{aligned} 1 & &{i=j \ and \ d_i \neq 0 } \\ -\frac{1}{d_i} & &{\ node\ i\ is\ adjacent\ to\ j}\\ 0 & &{otherwise} \end{aligned} \right. Li,jrw=1di10i=j and di̸=0 node i is adjacent to jotherwise
L r w L^{rw} Lrw在进行了标准化的同时,使得每一行的和为0,但失去了对称特性。

4)图信号

以上的三种矩阵表述根据不同的需要,可以十分有力的表达图的结构。但表达的也仅仅是图的结构,就好比是设计好了一栋连接错综复杂的大楼,每一个节点还等着我们去赋值。给定任意一个无向图的邻接矩阵 A A A,假定节点数为 N N N,则任意的长度为 N N N的信号都可以作为这个无向图的图信号,其各个位置的值代表对应节点的值。
在这里插入图片描述

二、图信号傅里叶变换(Graph Fourier Transform,GFT)

类比于一维信号的离散时间变换(Discrete Fourier Transform),GFT的变换将图信号线性映射到某一组正交基,但不同于DFT的将不同角频率的三角函数作为正交基,GFT的正交基取决于其Graph的结构,或者更确切地说,是取决于其描述Graph的各种上述提到的矩阵。不过,和DFT类似的是,GFT的目标也是通过线性映射来获取图信号所包含的不同的频率成分。

1) “频率”的定义

对于一个有限长的一维信号,其短时傅里叶变换能够将其分解为不同频率的正弦波的累加和。越高频率的正弦波周期越短,即在短时间内的振荡变化越快。将这个概念衍生到图信号的变换来:节点可以类比于一维信号里时间的概念,对于任意一个节点,与其相连接的节点相比较,如果变化(Variation)剧烈,则可以认为这个节点的频率很高,与瞬时频率比较类似。

定义信号 x x x在节点 i i i的变化程度 z ( i ) z(i) z(i),一种很常用的度量方式如下式:
z ( i ) = ∑ j ∈ N i w i , j ( x ( i ) − x ( j ) ) z(i)=\sum_{j \in N_i} w_{i,j}(x(i)-x(j)) z(i)=jNiwi,j(x(i)x(j))
其中 N i N_i Ni为节点 i i i的所有邻接节点。

整个图的变化度量可以定义为上式的加权和:
v a r i a n c e = ∑ i = 1 N z ( i ) x ( i ) = ∑ i = 1 N ∑ j ∈ N i w i , j ( x ( i ) − x ( j ) ) x ( i ) variance=\sum_{i=1}^{N}z(i)x(i)=\sum_{i=1}^N\sum_{j \in N_i}w_{i,j}(x(i)-x(j))x(i) variance=i=1Nz(i)x(i)=i=1NjNiwi,j(x(i)x(j))x(i)
不难发现,给定任意一个无向图 G G G的拉普拉斯矩阵 L L L,上式其实就是 x T L x x^TLx xTLx,该式可称为瑞利熵(Rayleigh Quotient)。现在,我们要依次寻找正交基的基向量 u u u,来使得 u T L u u^TLu uTLu的值可能小。

由于 L L L满足各行各列累加都为0,因此下式永远成立:
1 T L 1 = 0 1^TL1=0 1TL1=0
其中 1 1 1为全1列向量。显然,标准化后的 1 1 1向量可以当作这一组正交基的起点向量,表示最低频率成分,记作 u 1 = 1 N 1 u_1=\frac{1}{\sqrt{N}}1 u1=N 11

由于 L L L为半正定,所以对任意向量 v v v,必定满足 v T L v ⩾ 0 v^TLv \geqslant 0 vTLv0。寻找 u 2 u_2 u2,使得 u 2 T L u 2 u_2^TLu_2 u2TLu2最小,并且与 u 1 u_1 u1正交。以此类推,直到找到N个正交向量组成正交基为止。

事实上,这些向量 U = { u 1 , u 2 , . . . , u N } U=\{u_1,u_2,...,u_N\} U={u1,u2,...,uN}就是 L L L的特征向量,并且其特征值从0开始由小到大排列。
L = U Λ U T L=U\Lambda U^T L=UΛUT

在无向图的前提下, L L L是一个对称矩阵,所以必定能找到标准正交的N个 u u u和其对应的特征值。

2) GFT

给定一个无向图,对于任意图信号 x x x,其可以由拉普拉斯矩阵的特征向量线性加和构成,加和的系数即为变换后的向量 x ~ \tilde {x} x~。因此有:
x = U x ~ x=U\tilde x x=Ux~
其中 x ~ = U T x \tilde x=U^Tx x~=UTx。则 x ~ \tilde x x~中的每一个元素代表了各个频率成分。

3) 可视化

在这里插入图片描述
从图中可以看出,当特征值越大,过零点就越多,印证了特征值越大,基向量越高频的性质。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图信号处理学习笔记(1):图信号基本知识及其变换 的相关文章

  • 李飞飞发表研究新成果:视觉推理的推断和执行程序(HR)

    原文 论文导读 xff1a 目前进行视觉推理的方法都是通过黑箱结构将输入直接映射到输出 xff0c 而不是对潜在的推理过程进行明确建模 这样一来 xff0c 黑箱模型学习到的是利用数据内的偏置而不是学习进行视觉推理的过程 受到模块化网络的启
  • 构建Linux Samba支持任意WIN10访问(无需改策略)

    传统方式构建的Linux Samba无法直接被WIN10访问 xff0c 大多需要在要访问的WIN10系统上改变组策略 这个方法虽然可行 xff0c 但是大量WIN10系统的组策略修改较为繁琐 之所以WIN10无法访问是当SAMBA连接开始
  • VNC SERVER 安装

    1 用root用户身份运行以下命令 yum install tigervnc server 2 停用防火墙 systemctl stop firewalld service systemctl disable firewalld servi
  • Ubuntu 更换清华大学镜像源

    Ubuntu 更换镜像源 通常我们使用ubunntu的时候总是出现网络过慢导致的更新下载失败等问题 Ubuntu默认的服务器是在国外 xff0c 自然连接就很慢 这里我们更换成国内的镜像源 xff0c 这里使用清华镜像源 操作步骤如下 xf
  • C语言strtok函数的用法

    先理解strtok函数的定义 xff0c 尤其是指针方面的 xff0c 需要自己理解 原型 xff1a char strtok char s const char delim include lt string h gt 分解字符串为一组字
  • ubuntu mate18.04+树莓派4B+ROS安装详细教程

    前记 最近项目需要 xff0c 需要给树莓派4B 安装Ubuntu mate xff0c 本来是一件很简单的事情 xff0c 因为Ubuntu mate官网已经开始支持树莓派4B了 xff0c 但是实际操作后 xff0c 才发现烧录官方的桌
  • FreeRTOS可视化追踪软件 —— 破解Tracealyzer 4.2.12

    方法一 愚人节破解Tracealyzer 4 2 12 xff08 若发这里不妥 xff0c 可通知删贴 xff09 http www stmcu org cn module forum thread 620069 1 1 html 4 3
  • tensorflow2(GPU)显卡版安装

    准备工作 硬件 xff1a 一张算力3 5以上的NVIDIA显卡 查询链接 link 软件 xff1a Miniconda3 pycharm NVIDIA显卡驱动 30系列以前 xff1a cuda 10 1 cudnn 10 1 v7 6
  • elasticsearch底层引擎替换之索引创建+文档添加

    最近在改elasticsearch的源码 xff0c 真的蛋疼 xff0c 现在先记录一下遇到的问题 首先 xff0c 我们在做的是替换掉elasticsearch的底层引擎 xff0c 也就是把lucene替换成我们自己的引擎 这个工作起
  • Winform 集成零散dll进exe的方法

    Winform程序经常需要引用一些第三方控件 xff0c 这些控件大多以DLL的形式提供 另外 xff0c 一般USB桥芯片的官方提供 net操作类库也都是DLL形式提供的 因此一个稍大的项目中往往有一大堆的零散的DLL文件 xff0c 而
  • vncserver 使用遇到的问题

    今天使用vncserver遇到了几个问题 xff0c 如下 xff1a 1 使用普通账户无法修改该账户下的vncpasswd xff1a 解决方法 xff1a 打开 vnc目录 xff0c ls l看一下发现 passwd这个文件的用户和用
  • slf4j的MDC对象和ThreadLocal简单分析

    MDC xff08 Mapped Diagnostic Context xff0c 映射调试上下文 xff09 是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能 某些应用程序采用多线程的方式来处理多个用户的请求
  • springboot中@bean的lite模式

    当 64 Beans相互依赖时 xff0c 表示依赖关系就像一个bean方法调用另一个方法一样简 单 xff1a 64 Configuration public class AppConfig 64 Bean public Foo foo
  • spring bean解析源码分析

    转自https www jianshu com p 19e01388ccc5 前言 Spring源码分析是一个系列 xff0c 源码是Spring 4 X xff0c 本系列主要分析Spring的代码执行流程 xff0c 过于细节的内容将不
  • springboot remote shell简单实例

    springboot项目可以使用远程shell进行监控和管理 xff08 在2 0版本就不可以使用了 xff0c 此处要注意 xff09 使用时先添加spring boot remote shell 的依赖 xff0c gradle项目自己
  • 2021-08-30 创建tensor时,注意不要让梯度消失了

    下面这种是错误的 xff0c 梯度会消失 data span class token operator 61 span torch span class token punctuation span tensor span class to
  • 嵌入式学习项目实战 --- 在线词典

    目录 一 前言 二 项目功能 三 程序流程 1 客户端 2 服务器 四 代码实现 1 客户端代码 2 服务器代码 3 Makefile 一 前言 本文学习自 华清远见 的一个开源嵌入式项目在线词典综合实战 xff0c 涵盖了网络编程 文件I
  • hexo博客的制作

    安装Hexo 首先来看看我的hexo的博客演示 地址 xff1a http 91lyj xyz 我的ssm博客地址 xff1a www iclyj cn a target blank href http 91lyj xyz http 91l
  • win10系统CUDA10.0安装教程(for tensorflow2.0)

    前言 xff1a 目前最新的CUDA版本是10 1 xff0c 但是出于某种神秘的原因 xff0c 目前tensorflow2 0仅支持CUDA10 0 这个已经在我的电脑与一部分网友的反馈中得到了证实 tensorflow2 0不仅绑定了
  • 数学学习——Borel-Cantelli 引理证明

随机推荐

  • linux中的设备名称和设备号

    看赵炯博士的 linux 0 11 源代码注释 已经两三周了 xff0c 从今天起开始将一些个人总结和感悟分小标题写出来 xff0c 聊作记忆以供后来查看 在linux0 11源码的 linux boot bootsect s中 xff0c
  • python学习——numpy savetxt 追加模式

    因为savetxt的第一个参数f xff0c 可以是file handle xff0c 也可以是file name 所以用以下的这个代码就可以 xff1a span class token keyword with span span cl
  • 量化投资学习——A股H股套利年化100%

    一 交易对象选取 首先是选取数据 xff0c 选取数据的来源是wind xff1a 从wind中的交易数据 AH比较 里面可以看到历史收盘价和A H溢价率 xff0c 考虑到在2008年金融危机之后 xff0c 全球市场发生了较大的变化 x
  • C++学习——介绍一些C++内存检测工具

    1 C C 43 43 内存治理神器 Google Sanitizers Santizers是由Google开发的开源工具 xff0c 集成在LLVM项目中 xff0c 来检查内存泄漏和其他内存错误 Sanitize工具是一组用于检测内存错
  • C++学习——如何增加堆栈大小来避免内存分配的问题

    为了避免程序在运行过程中内存分配不足的问题 xff0c 你可以增加程序分配的内存量 在CMake中 xff0c 你可以通过在CMakeLists txt文件中添加设定来实现 你可以通过添加以下代码来增加程序分配的内存量 xff1a set
  • C++学习——解决一个double free or corruption (!prev)错误

    在我的场景下 xff0c 出现问题的地方是一个for循环 xff0c 代码如下所示 xff1a span class token keyword for span span class token punctuation span span
  • 量化投资学习——股指期货研究(九)

    基差增强策略的增强相对收益一般使用两种方法计算 xff1a 第一种是股指期货与现货收敛造成的期货价格相对指数价格上涨的部分 xff0c 此时关注的指标为年化基差率 xff0c 方法为计算期指合约收益率与指数收益率之差 xff1b 第二种是考
  • opencv无法打开源文件opencv2/opencv.hpp文件

    今天在使用vs2015配置OpenCV的时候遇到了这个问题 xff1a 无法打开 源 文件 34 opencv2 opencv hpp 34 解决方式 xff1a 前面都已经将Opencv的路径配置完毕后 xff0c 将Debug的默认 8
  • 简述计算机三大变换的联系和区别 (傅里叶变换 拉普拉斯变换 z变换)

    Q 简述计算机三大变换的联系和区别 傅里叶变换 拉普拉斯变换 z变换 xff08 1 xff09 傅里叶变换定义 xff1a 表示能将满足一定条件的某个函数表示成三角函数 xff08 正弦和 或余弦函数 xff09 或者它们的积分的线性组合
  • python数据处理——按列名选取dataframe的多列

    这是一个经常遇到的问题了 xff0c 但是为什么专门拿出来写一个博客呢 xff0c 因为啊 xff0c 博主啊博主 xff0c 你太笨了 xff0c 总是忘 xff01 最后一次啊 xff0c 不能再忘了 xff01 data 39 w 3
  • python数据处理——取dataframe的一列或一行

    df 39 w 39 选择表格中的 39 w 39 列 xff0c 使用类字典属性 返回的是Series类型 df w 选择表格中的 39 w 39 列 xff0c 使用点属性 返回的是Series类型 df 39 w 39 选择表格中的
  • linux shell使用经验

    今天突然对python心血来潮 xff0c 网上搜了篇学习笔记在看 ubuntu中练习了一下 xff0c 无意中注意到一个关于shell语言的基本通用规则 刚开始学习bash的时候也注意到了 xff0c 最简单的bash程序一般也会有三行
  • 量化投资学习——因子IC、IR的介绍

    因子IC IR的介绍 xff1a IC即信息系数 xff08 Information Coefficient xff09 xff0c 表示所选股票的因子值与股票下期收益率的截面相关系数 xff0c 通过 IC 值可以判断因子值对下期收益率的
  • debian,ubuntu,redhat,centos区别及联系&&yum,apt-get区别及联系

    debian xff1a 图形化界面 xff0c 体积小 xff0c 稳定性最高 xff0c 安装包丰富 xff0c 文档相对较少 xff0c 但是适用于低配置的vps xff0c 128M内存就可以流畅运行debian xff0c 使用a
  • openswitch虚拟机安装方法

    Openswitch虚拟机安装 1 安装VMware xff0c 并且创建一个Ubuntu16 04虚拟机 xff0c 详见openswitch编译指南 2 在开启虚拟机之前 xff0c 打开虚拟化选项 虚拟机 设置 处理器 勾选 虚拟化I
  • Spring Security oauth2(二)使用get方式请求oauth2默认的认证接口/oauth/token

    在我们上篇文章中 xff0c 我们作为快速入门 pring Security oauth2 xff08 一 xff09 快速入门 xff0c 搭建授权服务器 讲了4中授权模式 xff0c 接下来的篇章中 xff0c 我们将会逐步的去一个一个
  • MPLS基础概述&&MP-BGP实验(华为 DataCome)

    作用 早期网络设备性能有限 xff0c 用标签来代替数量庞大的路由 xff0c 随着网络设备性能提高 xff0c MPLS高速转发就不再有优势了 MPLS支持多层标签和转发平面面向连接的特性 xff0c 使其在VPN xff08 Virtu
  • 常用数据库分页查询SQL汇总

    常用数据库分页查询SQL汇总 参数 xff1a pageIndex 页码 xff1b pageSize 每页数据的大小 xff1b Oracle 通用查询SQL如下 xff1a span class token keyword SELECT
  • UML一一 类图关系 (泛化、实现、依赖、关联、聚合、组合)

    目录 类图关系概述 1 泛化关系2 实现关系3 依赖关系4 关联关系 4 1 一对一的关系4 2 单向一对多关系4 3 单向多对一关系4 4 双向一对多 多对一关系4 5 单向多对多关系 5 聚合关系6 组合关系 MySQL笔记 B站宋红康
  • 图信号处理学习笔记(1):图信号基本知识及其变换

    最近在学习图信号处理的相关知识 xff0c 想进行一些应用层面的实践 xff0c 恰巧遇到一篇十分具有启发性的推荐算法的论文 xff0c 故以此文进行简单总结 xff0c 也作为自己的学习笔记 Reference https en wiki