轉自:https://www.kechuang.org/t/84022?page=0&highlight=859356,感謝分享!
在機器學習、多維信號處理等領域,凡涉及到圖論的地方,相信小伙伴們總能遇到和拉普拉斯矩陣和其特征值有關的大怪獸。哪怕過了這一關,回想起來也常常一臉懵逼,拉普拉斯矩陣為啥被定義成
?這玩意為什么冠以拉普拉斯之名?為什么和圖論有關的算法如此喜歡用拉普拉斯矩陣和它的特征值?
最近讀論文的時候,剛好趁機溫習了一下相應的內容,尋本朔源一番,記錄下來,希望大家閱讀之后,也能夠有個更加通透的理解。
要講拉普拉斯矩陣,就要從拉普拉斯算子講起,要講拉普拉斯算子,就要從散度講起~
於是我們從散度開始,發車啦~~~
通量與散度
首先我們來看一道初中物理題:
小明乘帆船出行,刮來一陣妖風,假設帆的面積為
, 和妖風的夾角為
,妖風在每單位面積上的垂直風壓為
,求妖風對帆的推動力
那么聰明伶俐(?)的我們一定知道,這道題的答案應該是
。
如果我們用
表示風的向量(且
),用
表示帆的法向量,結合高中數學知識我們知道上述公式也可以寫成
。。。
如果我們現在再把題目弄復雜一點,假設船帆不是一個平面,而是一個空間中的曲面
,在
所在的每一點(面積微元
)處,其法向量為
,且空間中存在的風為
,根據大學數學知識我們可以得到:
於是我們就得到了通量
的定義, 
。。。
那么如果我們有一個封閉曲面呢,比如:

在向量場下的封閉曲面
此時我們指定曲面每一點處的法向量為該點朝外的向量:

紅色箭頭為法向量,注意在上面的例子中風與帆的比喻並不完全恰當,在計算通量的時候一般我們認為向量場會穿過曲面,而非被擋住
於是我們有

對於上圖,根據向量乘法的基本原理,聰明的我們很容易知道,對於射入曲面的那一部分(左半邊),其通量為負,而對於射出曲面的那一部分(右半邊),其通量為正。
更進一步的思考我們可以得出,相互抵消后,這一曲面上的總通量為 
。。。
接下來我們看下一張圖:

顯然,在這一向量場中,紅色曲面上的總通量為負,而綠色曲面上的總通量為正。 那么我們不斷縮小這兩個曲面,直至其無限接近一個點
,並將其總通量除以曲面所圍成的體積
,得到:
,
我們便得到了點
處的散度。
。。。
根據上面的分析,我們不難看出,在紅圈所在圓心處的散度為負,而綠圈圓心處的散度為正。
結合上述定義,我們知道,散度衡量了一個點處的向量場是被發射還是被吸收,或者說,對於散度為正的點,散度越大,意味着相應的向量場越強烈地在此發散,而對於散度為負的點,意味着相應的向量場在此匯聚
嗯,就這么簡單~ XD
拉普拉斯算子
接下來就是我們可愛的拉普拉斯算子啦~~
根據定義,函數
的拉普拉斯算子
又可以寫成
,其被定義為函數
梯度的散度。
那么這又是什么意思呢?
我們知道,在直角坐標系下,一個函數
在
處的梯度是一個向量
,
於是函數
的梯度函數 
就構成了一個在三維空間下的向量場。
於是乎,我們對這一向量場
求散度
,即得到了
的拉普拉斯算子
。
為什么要這樣做呢?
讓我們想像一座山,根據梯度的定義,在山峰周圍,所有的梯度向量向此匯聚,所以每個山峰處的拉普拉斯算子為負;而在山谷周圍,所有梯度從此發散,所以每個山谷處的拉普拉斯算子為正。所以說,對於一個函數,拉普拉斯算子實際上衡量了在空間中的每一點處,該函數梯度是傾向於增加還是減少
歪個樓,描述物理系統最優美的公式之一拉普拉斯方程,
,大家可以想一想,這一公式表達了物理系統怎么樣的特征呢?
圖論下的函數
我們知道,互相連接的節點可以構成一張圖,其中包含所有點構成的集合
, 和所有邊構成的集合
。
對於實數域上的函數
,我們可以理解為一種對於
的映射,將每個可能的
映射到一個對應的
上(
)。
相應地,我們也可以定義一個圖函數
,使得圖上的每一個節點
,都被映射到一個實數
上。
比如說,假設我們有一個這樣的社交網絡圖譜:

假設說每一條邊的權值對應兩個人之間信息的流通程度。現在我們想要分析這個社交網絡上的信息傳播,我們不僅需要知道信息流通的程度,我們還要知道每個人發動態的活躍程度,於是我們現在給這個圖一個函數
,使得:

這里的負數似乎可以理解為,
和
是謠言終結者,可以阻止信息的傳播~
那么我們得到這樣一張圖:

圖函數的梯度
我們定義了圖論的函數,那么應該如何給圖論下的函數定義梯度呢?
我們記得,梯度的意義在於,衡量函數在每一個點處,在每個正交方向上的變化,如
的梯度在
方向的分量 
在圖論中,我們認為一個節點沿着每一條邊通向它的相鄰節點,而每兩條邊之間互相並沒有什么關系,也就是說我們認為這個節點的每一條邊互相都是正交的
並且對於兩個節點,我們定義其距離
為其邊權值的倒數(比如上面社交網絡的例子,我們可以認為,兩個人的信息流通程度越低,兩個人的友誼就“越遠”)
那么對於一個節點
,我們認為其梯度在一條通向
的邊
上的分量為

(其中
為
到
的距離),
為了計算梯度,我們給出一個這樣的矩陣:
每一行代表一個點,每一列代表一條邊,使得對於每個點每條邊,如果該條邊從該點發射出去,且權值為
,則將矩陣中對應的這一元素置為
,如果該條邊指向該點,則將對應的元素置為
具體到上面社交網絡的例子,我們有相應的矩陣
:

我們又有關於圖函數
的列向量
:

我們試着計算
:

經過觀察我們可以知道,最后計算結果的向量,即是整個圖
在
函數上的梯度
,其中每一行,為該梯度在一條邊上的分量。
所以對於圖
,我們有
,使得 
拉普拉斯算子與拉普拉斯矩陣
我們記得在函數中,拉普拉斯算子的定義為函數梯度的散度,即每一點上其梯度的增加/減少,那么對於圖函數,其每一“點”即為每個“節點”,其梯度的散度該怎么定義呢?
我們幾乎可以立刻可以想到,圖函數每一點上梯度的散度,即是從該節點射出的梯度,減去射入該節點的梯度,那么我們幾乎又可以立即想到(?),根據這樣的定義去計算散度,只要把原來的梯度再左乘一個這樣的矩陣就可以啦:
每一行代表一個點,每一列代表一條邊,使得對於每個點每條邊,如果該條邊從該點發射出去,則將矩陣中對應的這一元素置為
,如果該條邊指向該點,則將對應的元素置為
命名這一矩陣為 
也就是說,我們把
的每個元素,正的變成1,負的變成-1,就得到了 

那么,

於是我們得到了圖論函數的拉普拉斯算子
,即我們常說的拉普拉斯矩陣。
注意在我們上面的范例中,將任意一條邊的方向反轉,等價於在
的一列上乘以
,這種情況下最終
不會改變,也就是說拉普拉斯矩陣的值與圖中每一條邊的方向無關,所以拉普拉斯矩陣一般用來表述無向圖
計算
的值,我們得到矩陣:

注意到這一對稱矩陣,對角線即是每個點的度,而其余的元素,則是負的鄰接矩陣,於是乎我們得到了拉普拉斯矩陣的經典算式:

(至於外面的各種資料為什么往往只使用
而非
,個人認為是因為前者只涉及減法,計算遠遠快於后者,所以程序中一般使用前者。但是為了理解拉普拉斯矩陣的意義,對后者的了解在我看來是必須的)
拉普拉斯矩陣的重要性質
拉普拉斯矩陣之所以如此常用,是因為其一大重要性質: 拉普拉斯矩陣的
個特征值
都是非負值,且有 
同時,我們引入關於矩陣
和
的瑞利熵的概念: 
其中
為
的共軛矩陣,對於
為實數矩陣的情況下 
而通過拉格朗日乘子法可以得出,瑞利熵的一個非常重要的特點就是: 瑞麗熵的最大值,等於
的最大特征值,瑞利熵的最小值,等於
的最小特征值
再看看圖算法中對於拉普拉斯矩陣
的運算中常常出現的f
,結合上文所述的拉普拉斯矩陣的重要性質,那么拉普拉斯矩陣在各種圖算法中的應用,想必大家也能夠理解啦~
