转自:https://www.kechuang.org/t/84022?page=0&highlight=859356,感谢分享!

在机器学习、多维信号处理等领域,凡涉及到图论的地方,相信小伙伴们总能遇到和拉普拉斯矩阵和其特征值有关的大怪兽。哪怕过了这一关,回想起来也常常一脸懵逼,拉普拉斯矩阵为啥被定义成 graph Laplacian 拉普拉斯矩阵 ?这玩意为什么冠以拉普拉斯之名?为什么和图论有关的算法如此喜欢用拉普拉斯矩阵和它的特征值?

最近读论文的时候,刚好趁机温习了一下相应的内容,寻本朔源一番,记录下来,希望大家阅读之后,也能够有个更加通透的理解。

要讲拉普拉斯矩阵,就要从拉普拉斯算子讲起,要讲拉普拉斯算子,就要从散度讲起~

于是我们从散度开始,发车啦~~~


通量与散度

首先我们来看一道初中物理题:

小明乘帆船出行,刮来一阵妖风,假设帆的面积为 graph Laplacian 拉普拉斯矩阵 , 和妖风的夹角为 graph Laplacian 拉普拉斯矩阵 ,妖风在每单位面积上的垂直风压为 graph Laplacian 拉普拉斯矩阵 ,求妖风对帆的推动力
graph Laplacian 拉普拉斯矩阵

那么聪明伶俐(?)的我们一定知道,这道题的答案应该是 graph Laplacian 拉普拉斯矩阵 。

如果我们用 graph Laplacian 拉普拉斯矩阵 表示风的向量(且 graph Laplacian 拉普拉斯矩阵 ),用 graph Laplacian 拉普拉斯矩阵 表示帆的法向量,结合高中数学知识我们知道上述公式也可以写成graph Laplacian 拉普拉斯矩阵

。。。

如果我们现在再把题目弄复杂一点,假设船帆不是一个平面,而是一个空间中的曲面 graph Laplacian 拉普拉斯矩阵 ,在 graph Laplacian 拉普拉斯矩阵 所在的每一点(面积微元 graph Laplacian 拉普拉斯矩阵)处,其法向量为 graph Laplacian 拉普拉斯矩阵 ,且空间中存在的风为 graph Laplacian 拉普拉斯矩阵 ,根据大学数学知识我们可以得到:graph Laplacian 拉普拉斯矩阵

于是我们就得到了通量 graph Laplacian 拉普拉斯矩阵 的定义, graph Laplacian 拉普拉斯矩阵

。。。

那么如果我们有一个封闭曲面呢,比如:

graph Laplacian 拉普拉斯矩阵

在向量场下的封闭曲面

 

此时我们指定曲面每一点处的法向量为该点朝外的向量:

graph Laplacian 拉普拉斯矩阵

 

红色箭头为法向量,注意在上面的例子中风与帆的比喻并不完全恰当,在计算通量的时候一般我们认为向量场会穿过曲面,而非被挡住

于是我们有

graph Laplacian 拉普拉斯矩阵

对于上图,根据向量乘法的基本原理,聪明的我们很容易知道,对于射入曲面的那一部分(左半边),其通量为,而对于射出曲面的那一部分(右半边),其通量为正。

更进一步的思考我们可以得出,相互抵消后,这一曲面上的总通量为 graph Laplacian 拉普拉斯矩阵

。。。

接下来我们看下一张图:

graph Laplacian 拉普拉斯矩阵

显然,在这一向量场中,红色曲面上的总通量为负,而绿色曲面上的总通量为正。 那么我们不断缩小这两个曲面,直至其无限接近一个点 graph Laplacian 拉普拉斯矩阵 ,并将其总通量除以曲面所围成的体积 graph Laplacian 拉普拉斯矩阵 ,得到:

graph Laplacian 拉普拉斯矩阵 ,

我们便得到了点 graph Laplacian 拉普拉斯矩阵 处的散度。

。。。

根据上面的分析,我们不难看出,在红圈所在圆心处的散度为负,而绿圈圆心处的散度为正。

结合上述定义,我们知道,散度衡量了一个点处的向量场是被发射还是被吸收,或者说,对于散度为正的点,散度越大,意味着相应的向量场越强烈地在此发散,而对于散度为负的点,意味着相应的向量场在此汇聚

嗯,就这么简单~ XD

拉普拉斯算子

接下来就是我们可爱的拉普拉斯算子啦~~

根据定义,函数 graph Laplacian 拉普拉斯矩阵 的拉普拉斯算子 graph Laplacian 拉普拉斯矩阵 又可以写成 graph Laplacian 拉普拉斯矩阵 ,其被定义为函数 graph Laplacian 拉普拉斯矩阵 梯度散度

那么这又是什么意思呢?

我们知道,在直角坐标系下,一个函数 graph Laplacian 拉普拉斯矩阵 在 graph Laplacian 拉普拉斯矩阵 处的梯度是一个向量 graph Laplacian 拉普拉斯矩阵 ,

于是函数 graph Laplacian 拉普拉斯矩阵 的梯度函数 graph Laplacian 拉普拉斯矩阵

就构成了一个在三维空间下的向量场。

于是乎,我们对这一向量场 graph Laplacian 拉普拉斯矩阵 求散度 graph Laplacian 拉普拉斯矩阵 ,即得到了 graph Laplacian 拉普拉斯矩阵 的拉普拉斯算子 graph Laplacian 拉普拉斯矩阵 。

为什么要这样做呢?

让我们想像一座山,根据梯度的定义,在山峰周围,所有的梯度向量向此汇聚,所以每个山峰处的拉普拉斯算子为负;而在山谷周围,所有梯度从此发散,所以每个山谷处的拉普拉斯算子为正。所以说,对于一个函数,拉普拉斯算子实际上衡量了在空间中的每一点处,该函数梯度是倾向于增加还是减少

歪个楼,描述物理系统最优美的公式之一拉普拉斯方程, graph Laplacian 拉普拉斯矩阵 ,大家可以想一想,这一公式表达了物理系统怎么样的特征呢?

图论下的函数

我们知道,互相连接的节点可以构成一张,其中包含所有点构成的集合 graph Laplacian 拉普拉斯矩阵 , 和所有边构成的集合 graph Laplacian 拉普拉斯矩阵 。

对于实数域上的函数 graph Laplacian 拉普拉斯矩阵 ,我们可以理解为一种对于 graph Laplacian 拉普拉斯矩阵 的映射,将每个可能的 graph Laplacian 拉普拉斯矩阵 映射到一个对应的 graph Laplacian 拉普拉斯矩阵 上( graph Laplacian 拉普拉斯矩阵 )。

相应地,我们也可以定义一个图函数 graph Laplacian 拉普拉斯矩阵 ,使得图上的每一个节点 graph Laplacian 拉普拉斯矩阵 ,都被映射到一个实数 graph Laplacian 拉普拉斯矩阵 上。

比如说,假设我们有一个这样的社交网络图谱:

graph Laplacian 拉普拉斯矩阵

假设说每一条边的权值对应两个人之间信息的流通程度。现在我们想要分析这个社交网络上的信息传播,我们不仅需要知道信息流通的程度,我们还要知道每个人发动态的活跃程度,于是我们现在给这个图一个函数 graph Laplacian 拉普拉斯矩阵 ,使得:

graph Laplacian 拉普拉斯矩阵

这里的负数似乎可以理解为, graph Laplacian 拉普拉斯矩阵 和 graph Laplacian 拉普拉斯矩阵 是谣言终结者,可以阻止信息的传播~

那么我们得到这样一张图:

graph Laplacian 拉普拉斯矩阵

 

图函数的梯度

我们定义了图论的函数,那么应该如何给图论下的函数定义梯度呢?

我们记得,梯度的意义在于,衡量函数在每一个点处,在每个正交方向上的变化,如 graph Laplacian 拉普拉斯矩阵 的梯度在 graph Laplacian 拉普拉斯矩阵 方向的分量 graph Laplacian 拉普拉斯矩阵

在图论中,我们认为一个节点沿着每一条边通向它的相邻节点,而每两条边之间互相并没有什么关系,也就是说我们认为这个节点的每一条边互相都是正交的

并且对于两个节点,我们定义其距离 graph Laplacian 拉普拉斯矩阵 为其边权值的倒数(比如上面社交网络的例子,我们可以认为,两个人的信息流通程度越低,两个人的友谊就“越远”)

那么对于一个节点 graph Laplacian 拉普拉斯矩阵 ,我们认为其梯度在一条通向 graph Laplacian 拉普拉斯矩阵 的边 graph Laplacian 拉普拉斯矩阵 上的分量

graph Laplacian 拉普拉斯矩阵

(其中 graph Laplacian 拉普拉斯矩阵 为 graph Laplacian 拉普拉斯矩阵 到 graph Laplacian 拉普拉斯矩阵 的距离),

为了计算梯度,我们给出一个这样的矩阵:

每一行代表一个点,每一列代表一条边,使得对于每个点每条边,如果该条边从该点发射出去,且权值为 graph Laplacian 拉普拉斯矩阵 ,则将矩阵中对应的这一元素置为 graph Laplacian 拉普拉斯矩阵 ,如果该条边指向该点,则将对应的元素置为 graph Laplacian 拉普拉斯矩阵 

具体到上面社交网络的例子,我们有相应的矩阵 graph Laplacian 拉普拉斯矩阵 :

graph Laplacian 拉普拉斯矩阵

我们又有关于图函数 graph Laplacian 拉普拉斯矩阵 的列向量 graph Laplacian 拉普拉斯矩阵 :

graph Laplacian 拉普拉斯矩阵

我们试着计算 graph Laplacian 拉普拉斯矩阵 :

graph Laplacian 拉普拉斯矩阵

经过观察我们可以知道,最后计算结果的向量,即是整个图 graph Laplacian 拉普拉斯矩阵 在 graph Laplacian 拉普拉斯矩阵 函数上的梯度 graph Laplacian 拉普拉斯矩阵 ,其中每一行,为该梯度在一条边上的分量。

所以对于图 graph Laplacian 拉普拉斯矩阵 ,我们有 graph Laplacian 拉普拉斯矩阵 ,使得 graph Laplacian 拉普拉斯矩阵

拉普拉斯算子与拉普拉斯矩阵

我们记得在函数中,拉普拉斯算子的定义为函数梯度的散度,即每一点上其梯度的增加/减少,那么对于图函数,其每一“点”即为每个“节点”,其梯度的散度该怎么定义呢?

我们几乎可以立刻可以想到,图函数每一点上梯度的散度,即是从该节点射出的梯度,减去射入该节点的梯度,那么我们几乎又可以立即想到(?),根据这样的定义去计算散度,只要把原来的梯度再左乘一个这样的矩阵就可以啦:

每一行代表一个点,每一列代表一条边,使得对于每个点每条边,如果该条边从该点发射出去,则将矩阵中对应的这一元素置为 graph Laplacian 拉普拉斯矩阵 ,如果该条边指向该点,则将对应的元素置为 graph Laplacian 拉普拉斯矩阵 

命名这一矩阵为 graph Laplacian 拉普拉斯矩阵

 

也就是说,我们把 graph Laplacian 拉普拉斯矩阵 的每个元素,正的变成1,负的变成-1,就得到了 graph Laplacian 拉普拉斯矩阵

graph Laplacian 拉普拉斯矩阵

那么,

graph Laplacian 拉普拉斯矩阵

于是我们得到了图论函数的拉普拉斯算子 graph Laplacian 拉普拉斯矩阵 ,即我们常说的拉普拉斯矩阵

注意在我们上面的范例中,将任意一条边的方向反转,等价于在 graph Laplacian 拉普拉斯矩阵 的一列上乘以 graph Laplacian 拉普拉斯矩阵 ,这种情况下最终 graph Laplacian 拉普拉斯矩阵 不会改变,也就是说拉普拉斯矩阵的值与图中每一条边的方向无关,所以拉普拉斯矩阵一般用来表述无向图

计算 graph Laplacian 拉普拉斯矩阵 的值,我们得到矩阵:

graph Laplacian 拉普拉斯矩阵

注意到这一对称矩阵,对角线即是每个点的,而其余的元素,则是负的邻接矩阵,于是乎我们得到了拉普拉斯矩阵的经典算式:

graph Laplacian 拉普拉斯矩阵

(至于外面的各种资料为什么往往只使用 graph Laplacian 拉普拉斯矩阵 而非 graph Laplacian 拉普拉斯矩阵 ,个人认为是因为前者只涉及减法,计算远远快于后者,所以程序中一般使用前者。但是为了理解拉普拉斯矩阵的意义,对后者的了解在我看来是必须的

拉普拉斯矩阵的重要性质

拉普拉斯矩阵之所以如此常用,是因为其一大重要性质: 拉普拉斯矩阵的 graph Laplacian 拉普拉斯矩阵 个特征值 graph Laplacian 拉普拉斯矩阵 都是非负值,且有 graph Laplacian 拉普拉斯矩阵

同时,我们引入关于矩阵 graph Laplacian 拉普拉斯矩阵 和 graph Laplacian 拉普拉斯矩阵 的瑞利熵的概念: graph Laplacian 拉普拉斯矩阵

其中 graph Laplacian 拉普拉斯矩阵  graph Laplacian 拉普拉斯矩阵 共轭矩阵,对于 graph Laplacian 拉普拉斯矩阵 为实数矩阵的情况下 graph Laplacian 拉普拉斯矩阵

而通过拉格朗日乘子法可以得出,瑞利熵的一个非常重要的特点就是: 瑞丽熵的最大值,等于 graph Laplacian 拉普拉斯矩阵 的最大特征值,瑞利熵的最小值,等于 graph Laplacian 拉普拉斯矩阵 的最小特征值

再看看图算法中对于拉普拉斯矩阵 graph Laplacian 拉普拉斯矩阵 的运算中常常出现的f graph Laplacian 拉普拉斯矩阵 ,结合上文所述的拉普拉斯矩阵的重要性质,那么拉普拉斯矩阵在各种图算法中的应用,想必大家也能够理解啦~

相关文章: