主頁 >  其他 > 如何理解 Graph Convolutional Network(GCN)?

如何理解 Graph Convolutional Network(GCN)?

2020-09-13 00:52:44 其他

先說問題的本質:圖中的每個結點無時無刻不因為鄰居和更遠的點的影響而在改變著自己的狀態直到最終的平衡,關系越親近的鄰居影響越大,

要想理解GCN以及其后面一系列作業的實質,最重要的是理解其中的精髓Laplacian矩陣在干什么,知道了Laplacian矩陣在干什么后,剩下的只是解法的不同——所謂的Fourier變換只是將問題從空域變換到頻域去解,所以也有直接在空域解的(例如GraphSage),為了讓問題簡單便于理解,先讓我們忘記時域、頻域這些復雜的概念,從一個最簡單的物理學現象——熱傳匯出發,

   

圖(Graph)上的熱傳播模型

眾所周知,沒有外接干預的情況下,熱量從溫度高傳播到溫度低的地方并且不可逆,根據著名的牛頓冷卻定律(Newton Cool's Law),熱量傳遞的速度正比于溫度梯度,直觀上也就是某個地方A溫度高,另外一個B地方溫度低,這兩個地方接觸,那么溫度高的地方的熱量會以正比于他們倆溫度差的速度從A流向B

   

從一維空間開始

我們先建立一個一維的溫度傳播的模型,假設有一個均勻的鐵棒,不同位置溫度不一樣,現在我們刻畫這個鐵棒上面溫度的熱傳播隨著時間變化的關系,預先說明一下,一個連續的鐵棒的熱傳播模型需要列溫度對時間和坐標的偏微分方程來解決,我們不想把問題搞這么復雜,我們把空間離散化,假設鐵棒是一個一維鏈條,鏈條上每一個單元擁有一致的溫度,溫度在相鄰的不同的單元之間傳播,如下圖:

   

對于第i 個單元,它只和 i-1 與 i+1 兩個單元相鄰,接受它們傳來的熱量(或者向它們傳遞熱量,只是正負號的差異而已),假設它當前的溫度為Φi,那么就有:

   

k和單元的比熱容、質量有關是個常數,右邊第一項是下一個單元向本單元的熱量流入導致溫度升高,第二項是本單元向上一個單元的熱量流出導致溫度降低,做一點微小的數學變換可以得到:

注意觀察第二項,它是兩個差分的差分,在離散空間中,相鄰位置的差分推廣到連續空間就是導數,那么差分的差分,就是二階導數

所以,我們可以反推出鐵棒這樣的連續一維空間的熱傳導方程就是:

同理,在高維的歐氏空間中,一階導數就推廣到梯度,二階導數就是我們今天討論的主角——拉普拉斯算子

其中 Δ 這個符號代表的是對各個坐標二階導數的加和,現在的主流寫法也可以寫作 Δ2 ,綜上所述,我們發現這樣幾個事實:1、在歐氏空間中,某個點溫度升高的速度正比于該點周圍的溫度分布,用拉普拉斯算子衡量,2、拉普拉斯算子,是二階導數對高維空間的推廣,那么,你肯定會問:你扯這么多有什么用呢?我還是看不到拉普拉斯算子和拉普拉斯矩陣還有GCN有半毛錢關系啊?不要急,目前只是第一步,讓我們把這個熱傳導模型推廣導拓撲空間,你就會發現它們其實刻畫的是同一回事了!

   

圖(Graph)上熱傳播模型的推廣

現在,我們依然考慮熱傳導模型,只是這個事情不發生在歐氏空間了,發生在一個Graph上面,這個圖上的每個結點(Node)是一個單元,且這個單元只和與這個結點相連的單元,也就是有邊(Edge)連接的單元發生熱交換,例如下圖中,結點1只和結點024發生熱交換,更遠的例如結點5的熱量要通過4間接的傳播過來而沒有直接熱交換,

   

我們假設熱量流動的速度依然滿足牛頓冷卻定律,研究任一結點,它的溫度隨著時間的變化可以用下式來刻畫:

其中 A 是這個圖的鄰接矩陣(Adjacency Matrix),定義非常直觀: 對于這個矩陣中的每一個元素 Aij ,如果結點 i j 相鄰,那么Aij =1 ,否則 Aij =0 ,在這里,我們只討論簡單情況:

1、這張圖是無向圖,i j 相鄰那么 j i 也相鄰,所以 Aij = Aji 這是個對稱陣,

2、結點自己到自己沒有回環邊,也就是 A 對角線上元素都是 0

所以不難理解上面這個公式恰好表示了只有相鄰的邊才能和本結點發生熱交換且熱量輸入(輸出)正比于溫度差,我們不妨用乘法分配律稍微對上式做一個推導:

先看右邊括號里面第一項, deg( ) 代表對這個頂點求度(degree),一個頂點的度被定義為這個頂點有多少條邊連接出去,很顯然,根據鄰接矩陣的定義,第一項的求和正是在計算頂點 i 的度,

再看右邊括號里面的第二項,這可以認為是鄰接矩陣的第i 行對所有頂點的溫度組成的向量做了個內積,

   

為什么要作上述變化呢,我們只看一個點的溫度不太好看出來,我們把所有點的溫度寫成向量形式再描述上述關系就一目了然了,首先可以寫成這樣:

然后我們定義向量:

那么就有:

D被稱為度矩陣,只有對角線上有值,且這個值表示對應的頂點度的大小,整理整理,我們得到:

回顧剛才在連續歐氏空間的那個微分方程:

二者具有一樣的形式!我們來對比一下二者之間的關系:

  • 相同點:刻畫空間溫度分布隨時間的變化,且這個變化滿足一個相同形式的微分方程,
  • 不同點:前者刻畫拓撲空間有限結點,用向量 Φ 來刻畫當前狀態,單位時間狀態的變化正比于線性變換 -L 算子作用在狀態 Φ 上,后者刻畫歐氏空間的連續分布,用函式 Φ(x, t) 來刻畫當前狀態,單位時間狀態變化正比于拉普拉斯算子 Δ 作用在狀態 Φ上,

不難發現,這就是同一種變換、同一種關系在不同空間上面的體現,實質上是一回事!

   

于是我們自然而然,可以把連續空間中的熱傳導,推廣到圖(Graph)上面去,我們把圖上面和歐氏空間地位相同變換,以矩陣形式體現的 L 叫做拉普拉斯(Laplacian)矩陣,看,這正是 @superbrother 答案中所述的原始形式的拉普拉斯矩陣 L=D-A

需要多嘴一句的是,本文開頭所說的離散鏈條上的熱傳導,如果你把鏈條看成一個圖,結點從左到右編號123...的話,也可以用圖的熱傳導方程刻畫,此時 除了頭尾兩個結點是1其他值都是2 的主對角線上下兩條線上值是1,其他地方是0

   

推廣到GCN

   

現在問題已經很明朗了,只要你給定了一個空間,給定了空間中存在一種東西可以在這個空間上流動,兩鄰點之間流動的強度正比于它們之間的狀態差異,那么何止是熱量可以在這個空間流動,任何東西都可以!

自然而然,假設在圖中各個結點流動的東西不是熱量,而是特征(Feature,而是訊息(Message,那么問題自然而然就被推廣到了GCN所以GCN的實質是什么,是在一張Graph Network中特征(Feature)和訊息(Message)中的流動和傳播!這個傳播最原始的形態就是狀態的變化正比于相應空間(這里是Graph空間)拉普拉斯算子作用在當前的狀態,

抓住了這個實質,剩下的問題就是怎么去更加好的建模和解決這個問題,

建模方面就衍生出了各種不同的演算法,你可以在這個問題上面復雜化這個模型,不一定要遵從牛頓冷卻定律,你可以引入核函式、引入神經網路等方法把模型建得更非線性更能刻畫復雜關系,

解決方面,因為很多問題在頻域解決更加好算,你可以通過Fourier變換把空域問題轉化為頻域問題,解完了再變換回來,于是便有了所有Fourier變換中的那些故事,

扯了這么多,總結一下,問題的本質就是:

  1. 我們有張圖,圖上每個結點刻畫一個物體,物理學場景下這個物體是某個有溫度的單元,它的狀態是溫度,廣告和推薦的場景下這個物體是一個user,一個item,一個ad,它的狀態是一個embedding的向量,
  2. 相鄰的結點具有比不相鄰結點更密切的關系,物理學場景下,這個關系是空間上的臨近、接觸,廣告和推薦場景下這個是一種邏輯上的關系,例如用戶購買、點擊itemitem掛載ad
  3. 結點可以傳播熱量/訊息到鄰居,使得相鄰的結點在溫度/特征上面更接近,

本質上,這是一種Message Passing,是一種Induction,卷積、傅立葉都是表象和解法,

最后再補充說明幾點事實

熱/訊息傳導方程的數值可迭代求解性(機器學習上的可操作性)

我們可以把原方程寫成這樣:

   

機器學習中,時間是離散的,也就是左邊對時間的求導變成了離散的一步步迭代,好在這個方程天生似乎就是上帝為了我們能夠迭代求解而設計的,右邊用拉普拉斯算子作用一次到全域的狀態上,就能把狀態更新一步!

實際解決的程序中,可以發揮機器學習搬磚工懂得舉一反三的優良精神,首先,不一定要全域操作,我們可以batchify操作一部分結點,大家輪著來,其次,我們可以只考察這個點的一階和二階鄰居對當前點作Message Passing,這個思想就是對拉普拉斯算子作特征分解,然后只取低階的向量,因為矩陣的譜上面能量一般具有長尾效應,頭幾個特征值dominate幾乎所有能量,

   

Laplacian算子的另一個性質

Laplacian矩陣/算子不僅表現的是一種二階導數的運算,另一方面,它表現了一種加和性,這個從圖上熱/訊息傳播方程最原始的形態就能一目了然:

   

可見,每個結點每個時刻的狀態變化,就是所有鄰居對本結點差異的總和,也就是所有的鄰居把message pass過來,然后再Aggregate一下,這正是GraphSage等空域演算法的關鍵步驟Aggregate思想的濫觴,

在實際建模中,我們的Aggregate不一定是加和,作為一個熟練的機器學習搬磚工,我們懂得可以把Aggregate推廣成各種操作例如Sum Pooling,例如LSTM,例如Attention,以求刷效果,發paper :)

兩種空間下的Fourier分解/ 特征分解對比(卷積為什么能從歐氏空間推廣到Graph空間)

最后,因為有以上分析作基礎,我們可以解釋一下傅立葉變換是怎么推廣到圖空間的,

   

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

   

   

   

   

   

   

   

   

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/18180.html

標籤:其他

上一篇:華為以后是不是再也沒有麒麟處理器了?

下一篇:全球失明的主要原因之一是什么?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more