graph Laplacian 拉普拉斯矩陣


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

在機器學習、多維信號處理等領域,凡涉及到圖論的地方,相信小伙伴們總能遇到和拉普拉斯矩陣和其特征值有關的大怪獸。哪怕過了這一關,回想起來也常常一臉懵逼,拉普拉斯矩陣為啥被定義成  ?這玩意為什么冠以拉普拉斯之名?為什么和圖論有關的算法如此喜歡用拉普拉斯矩陣和它的特征值?

最近讀論文的時候,剛好趁機溫習了一下相應的內容,尋本朔源一番,記錄下來,希望大家閱讀之后,也能夠有個更加通透的理解。

要講拉普拉斯矩陣,就要從拉普拉斯算子講起,要講拉普拉斯算子,就要從散度講起~

於是我們從散度開始,發車啦~~~


通量與散度

首先我們來看一道初中物理題:

小明乘帆船出行,刮來一陣妖風,假設帆的面積為  , 和妖風的夾角為  ,妖風在每單位面積上的垂直風壓為  ,求妖風對帆的推動力

那么聰明伶俐(?)的我們一定知道,這道題的答案應該是  。

如果我們用  表示風的向量(且  ),用  表示帆的法向量,結合高中數學知識我們知道上述公式也可以寫成

。。。

如果我們現在再把題目弄復雜一點,假設船帆不是一個平面,而是一個空間中的曲面  ,在  所在的每一點(面積微元 )處,其法向量為  ,且空間中存在的風為  ,根據大學數學知識我們可以得到:

於是我們就得到了通量  的定義, 

。。。

那么如果我們有一個封閉曲面呢,比如:

在向量場下的封閉曲面

 

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

 

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

於是我們有

對於上圖,根據向量乘法的基本原理,聰明的我們很容易知道,對於射入曲面的那一部分(左半邊),其通量為,而對於射出曲面的那一部分(右半邊),其通量為正。

更進一步的思考我們可以得出,相互抵消后,這一曲面上的總通量為 

。。。

接下來我們看下一張圖:

顯然,在這一向量場中,紅色曲面上的總通量為負,而綠色曲面上的總通量為正。 那么我們不斷縮小這兩個曲面,直至其無限接近一個點  ,並將其總通量除以曲面所圍成的體積  ,得到:

 ,

我們便得到了點  處的散度。

。。。

根據上面的分析,我們不難看出,在紅圈所在圓心處的散度為負,而綠圈圓心處的散度為正。

結合上述定義,我們知道,散度衡量了一個點處的向量場是被發射還是被吸收,或者說,對於散度為正的點,散度越大,意味着相應的向量場越強烈地在此發散,而對於散度為負的點,意味着相應的向量場在此匯聚

嗯,就這么簡單~ XD

拉普拉斯算子

接下來就是我們可愛的拉普拉斯算子啦~~

根據定義,函數  的拉普拉斯算子  又可以寫成  ,其被定義為函數  梯度散度

那么這又是什么意思呢?

我們知道,在直角坐標系下,一個函數  在  處的梯度是一個向量  ,

於是函數  的梯度函數 

就構成了一個在三維空間下的向量場。

於是乎,我們對這一向量場  求散度  ,即得到了  的拉普拉斯算子  。

為什么要這樣做呢?

讓我們想像一座山,根據梯度的定義,在山峰周圍,所有的梯度向量向此匯聚,所以每個山峰處的拉普拉斯算子為負;而在山谷周圍,所有梯度從此發散,所以每個山谷處的拉普拉斯算子為正。所以說,對於一個函數,拉普拉斯算子實際上衡量了在空間中的每一點處,該函數梯度是傾向於增加還是減少

歪個樓,描述物理系統最優美的公式之一拉普拉斯方程,  ,大家可以想一想,這一公式表達了物理系統怎么樣的特征呢?

圖論下的函數

我們知道,互相連接的節點可以構成一張,其中包含所有點構成的集合  , 和所有邊構成的集合  。

對於實數域上的函數  ,我們可以理解為一種對於  的映射,將每個可能的  映射到一個對應的  上(  )。

相應地,我們也可以定義一個圖函數  ,使得圖上的每一個節點  ,都被映射到一個實數  上。

比如說,假設我們有一個這樣的社交網絡圖譜:

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

這里的負數似乎可以理解為,  和  是謠言終結者,可以阻止信息的傳播~

那么我們得到這樣一張圖:

 

圖函數的梯度

我們定義了圖論的函數,那么應該如何給圖論下的函數定義梯度呢?

我們記得,梯度的意義在於,衡量函數在每一個點處,在每個正交方向上的變化,如  的梯度在  方向的分量 

在圖論中,我們認為一個節點沿着每一條邊通向它的相鄰節點,而每兩條邊之間互相並沒有什么關系,也就是說我們認為這個節點的每一條邊互相都是正交的

並且對於兩個節點,我們定義其距離  為其邊權值的倒數(比如上面社交網絡的例子,我們可以認為,兩個人的信息流通程度越低,兩個人的友誼就“越遠”)

那么對於一個節點  ,我們認為其梯度在一條通向  的邊  上的分量

(其中  為  到  的距離),

為了計算梯度,我們給出一個這樣的矩陣:

每一行代表一個點,每一列代表一條邊,使得對於每個點每條邊,如果該條邊從該點發射出去,且權值為  ,則將矩陣中對應的這一元素置為  ,如果該條邊指向該點,則將對應的元素置為  

具體到上面社交網絡的例子,我們有相應的矩陣  :

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

我們試着計算  :

經過觀察我們可以知道,最后計算結果的向量,即是整個圖  在  函數上的梯度  ,其中每一行,為該梯度在一條邊上的分量。

所以對於圖  ,我們有  ,使得 

拉普拉斯算子與拉普拉斯矩陣

我們記得在函數中,拉普拉斯算子的定義為函數梯度的散度,即每一點上其梯度的增加/減少,那么對於圖函數,其每一“點”即為每個“節點”,其梯度的散度該怎么定義呢?

我們幾乎可以立刻可以想到,圖函數每一點上梯度的散度,即是從該節點射出的梯度,減去射入該節點的梯度,那么我們幾乎又可以立即想到(?),根據這樣的定義去計算散度,只要把原來的梯度再左乘一個這樣的矩陣就可以啦:

每一行代表一個點,每一列代表一條邊,使得對於每個點每條邊,如果該條邊從該點發射出去,則將矩陣中對應的這一元素置為  ,如果該條邊指向該點,則將對應的元素置為  

命名這一矩陣為 

 

也就是說,我們把  的每個元素,正的變成1,負的變成-1,就得到了 

那么,

於是我們得到了圖論函數的拉普拉斯算子  ,即我們常說的拉普拉斯矩陣

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

計算  的值,我們得到矩陣:

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

(至於外面的各種資料為什么往往只使用  而非  ,個人認為是因為前者只涉及減法,計算遠遠快於后者,所以程序中一般使用前者。但是為了理解拉普拉斯矩陣的意義,對后者的了解在我看來是必須的

拉普拉斯矩陣的重要性質

拉普拉斯矩陣之所以如此常用,是因為其一大重要性質: 拉普拉斯矩陣的  個特征值  都是非負值,且有 

同時,我們引入關於矩陣  和  的瑞利熵的概念: 

其中    共軛矩陣,對於  為實數矩陣的情況下 

而通過拉格朗日乘子法可以得出,瑞利熵的一個非常重要的特點就是: 瑞麗熵的最大值,等於  的最大特征值,瑞利熵的最小值,等於  的最小特征值

再看看圖算法中對於拉普拉斯矩陣  的運算中常常出現的f  ,結合上文所述的拉普拉斯矩陣的重要性質,那么拉普拉斯矩陣在各種圖算法中的應用,想必大家也能夠理解啦~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM