What’s up with the Graph Laplacian?

来源

作者:Jeremy Kun

blog: Math ∩ Programming

在数学上图和与图关联的某些矩阵的代数性质有很深的联系。

这儿有一个这种现象的最简单的例子。一个无向图\(G=(V,E)\) 并且\(A=(a_{i,j})\)是它的的邻接矩阵。一个显著的事实是矩阵\(A^k\)的(i, j)项就是从i到j的长度为k的路径的数目。

数学中在图的邻接矩阵上做线性代数研究的领域叫做 spectral graph theory。然而另一个和图相关的矩阵和邻接矩阵一样有用并且在谱图理论中受到很大的关注:图拉普拉斯矩阵。

如果你是物理学家,电子工程师,或者应用数学专家,你会从偏微分方程中识别出拉普拉斯算子并且用自然的方式将它离散化,但是我不会假设你对那些学科相当熟悉。事实上,如果你不想考虑偏微分方程的连续系统,你仍然可以欣赏到图拉普拉斯算子的美妙。

这儿有一个方法来研究它。\(G=(V,E)\)是无向图,有\(n=|V|\)个节点。\(f : V \rightarrow R\) 是图节点的函数。如果图节点是定义有序的(整篇博客都隐含这一点),那么\(f\) 可以被表示成一个实数向量。一个\(f\)的导数的自然的概念就是查看\(f\)的值沿着每条边的变化值。

Definition: The graph gradient of \(f\) is the vector \(\nabla f = (f(v) - f(w))_{(v, w) \in E}\)

An example of the graph gradient.

一个理解梯度值的方法是:\(f\)在某个顶点沿着某条边的方向的导数就是这条边上两个端点的值的变化量。这非常像是一个图版本的 discrete calculus

但是不像离散微积分,图梯度不是一个非常优雅的对象。特别是差分算子(difference operator)暗含了一个在边上的方向,但是没有一个自然的方式来选择一个。我们可以任意挑选一个方向,但是那么做的话,梯度的一些 numerical properties 将不是清楚定义的(well-defined)。你也可以固定你的参考点作为一个单一的顶点,但是那样你就仅仅只能得到那个顶点延生的边上的方向。

然而,一个不依赖方向选择的属性是 (squared) Euclidean norm of the gradient, \(\sum_{(v,w) \in E} (f(v) - f(w))^2\) . 事实上,符号改变后,平方的数值不会改变。

也可以把 squared Euclidean norm 看作是 quadratic form, 它是一个有许多变量的多项式并且所有项的次数是2。 这些多项式总是可以写成矩阵的形式 \(x^T A x\) , 其中\(x\)是变量的向量,\(A\)是一个对称的标量的方形矩阵。

我们特殊的 squared-gradient quadratic form 的矩阵部分就叫做 graph Laplacian, 并且我们可以用一个优雅的公式表示它。

Definition: \(G\) be a graph with adjacency matrix \(A\). The (combinatorial) graph Laplacian $L(G) $ is the matrix \(D-A\), where \(D\) is the diagonal matrix whose \((i,i)\)-entry is the degree of vertex \(i\).

An example of the combinatorial graph laplacian

如果你喜欢前面梯度的思考方式,你应该把 graph Laplacian 看做是一个矩阵(编码成计算在图上的梯度和任意函数的gradient-norms的过程)。作为一个运算符,\(L(G)\) 将一个函数\(f\)映射成一个函数\(g\) 使得\(g(i) = \sum_{j : (i,j) \in E} f(j) - f(i)\) 。所以拉普拉斯算子(Laplacian)在顶点上强加了一个离开顶点的方向,并且 计算向外的导数的和。

这应该足以激励人们研究拉普拉斯算子。并且这将会给予很大的回报。发掘出的主要的洞见是:Laplacian的eigenvalue和eigenvector可以提供有用的关于图结构的信息。

Fourier transforms, for comparison

人们可能想知道为什么你希望从graph Laplacian的特征值和特征向量中提取信息。所以我想简单地提一下,这是连续情况的直接类比:傅里叶分析。

一个思考傅里叶分析的简洁的方式是从Laplace operator \(\Delta\) 开始。

\(\displaystyle \Delta(f) = \sum_{i=1}^n \frac{\partial^2 f}{\partial x_i^2}.\)

这是一个在向量空间中至少两次可微函数的线性映射。一旦你爱上线性代数,你注定会问什么是\(\Delta\) 的特征向量?答案就是它们是复指数,

\(f_s(t) = e^{2 \pi i s t},\)

其中\(t\)是一个实数变量,s是一个固定的实数(频率)。一旦你理解了这些,傅里叶分析就是求不同的函数看起来是什么样子的当你在这个规则下将他们展开后,并且你可以从这些系数中推导出什么性质。对应特征向量 \(f_s\)的值 s 被解释成频率;一个函数\(g\) 在频率 s 下的系数就是内积\(\langle g, f_s(t) \rangle\), 它对应复值函数是一个确定的整数,我不会现在把它写下来 (可以看这里

对于graph Laplacian也是相同的原理,但是其傅里叶分析会更简单一点(特征向量不会依赖于任意所研究的图(the "graph" is just R))

事实上,虽然我们不会详细地讨论它在这个博客中,你可以在图上做傅里叶分析用同样地方式,并且把图上的函数看作是“信号”,做低阶过滤等等。看这篇论文来了解更多信息。A taste: 一旦你写出 graph Laplacian(依赖于图) 的特征向量,你可以做相同的展开来获得一个图傅里叶变换。

\(GFT(f)(i) = \langle f, v_i \rangle = \sum_{j=1}^n f(j) v_i(j)\)

这里的“函数”仅仅是向量,所以 inner product 是 normal dot product。抛开傅里叶分析,让我们深入研究 Laplacian的特征值和特征向量。

Eigenvectors of the Laplacian

先前我们定义了 Laplacian :\(L=D-A\)。但是如果你使用这个定义,你最终会得到一个额外的因子 deg(v) 。这在数学上没关系,但是会弄乱我们的公式。所以,让我们用一个归一化因子来重新定义 Laplacian 来保持整洁 (以防当你对在离散傅里叶变换时做归一化操作感到惊讶)。因为我们将会除以度,所以假设没有节点的度为零。

Definition: Let \(G\) be a graph with adjacency matrix \(A\). The combinatorial graph Laplacian \(L(G)\) is the matrix \(D-A\) , where \(D\) is the diagonal matrix whose \((i,i)\) entry is the degree of vertex \(i\). The graph Laplacian \(\mathscr{L}(G)\) is the matrix whose \((i,j)\) entry is:

\[\mathscr{L}(G)(i,j) = \begin{cases} 1 & { if } \space i=j \\ -1/\sqrt{ {deg}(i) {deg}(j)} & { if } \space i \neq j \space { and } \space (i,j) \in E \\ 0 & { otherwise} \end{cases}.\]

Let’s update our example from earlier:

The graph Laplacian (with truncated real-valued entries)

现在 quadratic form 也被归一化了,归一化的方法是通过节点度加权。

$ f^T \mathscr{L} f = \frac{\sum_{(u,v)} (f(u) - f(v))^2}{\sum_v f(v)^2 {deg}(v)} $

有些作者把这叫做归一化 graph Laplacian。你可以下面的公式\(\mathscr{L} = D^{-1/2}LD^{-1/2}\) 。大多数属性在两种类型的拉普拉斯算子之间来回平滑地转换。

例如,最简单的 L 的特征向量是全1向量,其特征值为0。同样地,向量

\((\frac{1}{\sqrt{{deg}(v)}})_{v \in V} = D^{-1/2} \mathbf{1}\)

是\(\mathscr{L}\)特征值为0的特征向量。这是“平凡的”特征向量,并不能给我们关于图的任何信息。

It also happens that the eigenvectors minimize the quadratic form \(x^T \mathscr{L} x\) (see here for a proof)。回顾一下,这是很明显的因为最小的特征值是零,并且这个 quadratic form 是平方和(非负的)。把0对应的特征向量称为平凡特征向量\(v_0\).

下一个最小的特征值\(\lambda_1\) ,并且它对应的特征向量\(v_1\),是非常重要的。\(v_1\)使得quadratic form 在所有 \(v_0\) 正交的向量中最小化。

$\lambda_1 = \inf_{v \perp v_0} v^T \mathscr{L} v $

\(\lambda_1\) 提供了关于图 G 连通性 (connectedness)的信息。

Theorem:\(\lambda_1 > 0\) if and only if \(G\) is connected.

Proof sketch: If \(G\) is disconnected, you can write the matrix for $\mathscr{L} $ as two blocks with zeros elsewhere, meaning there are two linearly independent eigenvectors (those with all 1s on a block and zeros elsewhere). On the other hand, if \(G\) is connected and \(x\) is an eigenvector with eigenvalue zero, then the quadratic form \(x^T L x = 0 = \sum_{(u,v)} (x(u) - x(v))^2\) (note I’m using the combinatorial Laplacian for simplicity). This implies all \(x(u) - x(v) = 0\) for every edge, but there is a path connecting any two pair of vertices, so all \(x(u)\) are equal.

更重要的是,\(\lambda_1\)随着 G 变得更加连通而增长!下面的图展示了\(\lambda_1\)是如何增长的当你向图添加边时。注意开始时只有100个节点的环,然后打乱剩下的边并且随机向图中添加。

The growth rate of the second smallest eigenvalue as the density of the graph increases.

最右端的图是当加入所有的边( G此时是完全图)的情况,这是\(\lambda_1=1\) (这是一个可以证明的定理)。

所有这些都大致告诉我们\(\lambda_1\)表示了一种对图的“连通性度量”。更好的是,对应的特征向量通过下面的定理提炼了这种度量。

Theorem (informal): Let \(G\) be a graph and $L(G) $ its normalized graph Laplacian. Let \(v_1\) be the eigenvector of \(L(G)\) corresponding to the second smallest eigenvalue of \(L(G)\). Sorting the vertices in \(G\) according to the corresponding values of \(v_1\) approximates the sparsest cut of \(G\).

未完待续

What’s up with the Graph Laplacian的更多相关文章

  1. graph Laplacian 拉普拉斯矩阵

    转自:https://www.kechuang.org/t/84022?page=0&highlight=859356,感谢分享! 在机器学习.多维信号处理等领域,凡涉及到图论的地方,相信小伙 ...

  2. 论文笔记之:Semi-supervised Classification with Graph Convolutional Networks

    Semi-supervised Classification with Graph Convolutional Networks 2018-01-16  22:33:36 1. 文章主要思想: 2. ...

  3. SC3聚类 | 拉普拉斯矩阵 | Laplacian matrix | 图论 | R代码

    Laplacian和PCA貌似是同一种性质的方法,坐标系变换.只是拉普拉斯属于图论的范畴,术语更加专业了. 要看就把一篇文章看完整,再看其中有什么值得借鉴的,总结归纳理解后的东西才是属于你的. 问题: ...

  4. NetworkX系列教程(8)-Drawing Graph

    小书匠Graph图论 如果只是简单使用nx.draw,是无法定制出自己需要的graph,并且这样的graph内的点坐标的不定的,运行一次变一次,实际中一般是要求固定的位置,这就需要到布局的概念了.详细 ...

  5. 论文解读GALA《Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learning》

    论文信息 Title:<Symmetric Graph Convolutional Autoencoder for Unsupervised Graph Representation Learn ...

  6. 论文解读(GCC)《GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training》

    论文信息 论文标题:GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training论文作者:Jiezhong Qiu, Qibi ...

  7. {ICIP2014}{收录论文列表}

    This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...

  8. 三维网格形变算法(Laplacian-Based Deformation)

    网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数. 网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程 ...

  9. 加入商品分类信息,考虑用户所处阶段的 图模型 推荐算法 Rws(random walk with stage)

    场景: 一个新妈妈给刚出生的宝宝买用品,随着宝宝的长大,不同的阶段需要不同的物品. 这个场景中涉及到考虑用户所处阶段,给用户推荐物品的问题. 如果使用用户协同过滤,则需要根据购买记录,找到与用户处于同 ...

随机推荐

  1. spark算子篇-aggregate 系列

    aggregate aggregate 是比较常用的 行动 操作,不是很好懂,这里做个解释. aggregate(zeroValue, seqOp, combOp) zeroValue 是一个初始值, ...

  2. docker-文件系统出错处理

    Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2 2018年03月17日 22: ...

  3. P3488 [POI2009]LYZ-Ice Skates

    传送门 这一题基础是二分图匹配,并且要知道一个 $Hall$ 定理:对于二分图能完全匹配的充要条件是,设点数少的那边为左边,点数为 $n$,对于 $k \in [1,n]$ ,左边任意 $k$ 个点, ...

  4. linux查看端口被占用情况

    Linux 查看端口占用情况可以使用 lsof 和 netstat 命令. 如果linux中没有这两个命令,则yum安装一下 yum install -y lsof yum install -y ne ...

  5. mysql复习(2)

    一.数据定义: SQL数据的定义包括模式的定义.表定义.视图定义和索引的定义. 1.基本的模式定义情况如下表. 2.一个关系数据库管理系统的实例中可以创建多个数据库,一个数据库中可以建立多个模式,一个 ...

  6. js介绍及语法结构

    javaScript它是一门动态的,弱类型的,解释型面向Web的编程语言.虽然名字里有Java但其它与Java无关.它可以用来增强页面动态效果,实现页面与用户之间的实时,动态交互. javascrip ...

  7. openlayers之地图截图

    方法1 //this.map._this为初始化地图对象 this.map._this.once('postcompose', function (event) { var canvas = even ...

  8. 转载: utm坐标和经纬度相互转换

    原文地址: https://blog.csdn.net/hanshuobest/article/details/77752279 //经纬度转utm坐标 int convert_lonlat_utm( ...

  9. 垃圾回收gc --翻译

    原文在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management.基本保持了平译,并在一些地方做了概念解释.(转 ...

  10. 标准C语言(4)

    分支语句可以在程序执行的时候从几组语句里选择一组,执行而忽略其他组,在编写程序的时候如果遇到多种可能性,每种可能性需要专门的语句处理,这种情况下就可以考虑采用分支结构解决问题 if关键字可以用来编写分 ...