PaperNotes(17)-圖卷積神經網絡GCN-筆記

圖卷積神經網絡GCN-筆記

  • 1.卷積是什么
  • 2.圖卷積的源起
  • 3.空域卷積
    • 3.1消息傳遞網絡MPNN
    • 3.2 圖采樣與聚合GraphSage
  • 4.頻域卷積
  • 5.圖結構的序列化-Patch-SAN

從圖(Graph)到圖卷積(Graph Convolution):漫談圖神經網絡模型 (二)(https://www.cnblogs.com/SivilTaram/p/graph_neural_network_2.html)
該文詳細寫明了設涉及的參考材料,是一個很棒的綜述性材料。本文僅作為閱讀該系列文章的筆記,詳情請參考原文。
參考博文2:稍微簡略一些,建議看完《漫談圖神經網絡模型 (二)》再去看此文,最終講到不需要做特征值分解的GCN,有點神奇。
https://blog.csdn.net/qq_41727666/article/details/84622965

此前的圖神經網絡是基于循環結構,此篇主要介紹基于圖卷積神經網絡中的卷積操作。

1.卷積是什么

卷積本身是一種數學算子,對兩個函數f和g操作,生成第三個函數h。
h(t)=∫?∞∞f(τ)g(t?τ)dτh(t)=\int_{-\infty}^{\infty}f(\tau)g(t-\tau)d\tauh(t)=??f(τ)g(t?τ)dτ

即:新函數在t處的值=f 和g 關于t對稱處函數值成績的和。簡單(抽象)地說就是一個加權求和的過程。了解加權求和的核心之后,可以建模出圖像上的卷積操作。每一層的卷積核就是一個權重可學習的權值函數g(?)g(\cdot)g(?)

卷積核的權重可以依據任務確定:實現邊緣提取laplacian算子、可依據損失函數學習特定特征提取的權重。

卷積操作的作用:通過結點和周圍結點的信息,提取/聚合結點的特征。

小結:在機器學習領域,卷積的具體操作是加權求和,卷積的效果是特征聚合/提取。

2.圖卷積的源起

圖像卷積操作要求規整的數據結構,圖上結點的鄰居結點數量不固定。

衍生了兩種特征聚合圖結點的特征的操作:

  1. 把圖轉換成規整的結構–少數
  2. 處理變長鄰居結點的卷積核–主流,主要焦點

圖卷積又分為空域卷積和頻域卷積:

  1. 空域卷積–卷積核直接在原圖上卷積操作
  2. 頻域卷積–圖做了傅立葉變換之后再進行卷積操作

啟發:一種最簡單的無參卷積–將所有的鄰居結點的隱藏狀態加和,以更新當前結點的隱藏狀態。

3.空域卷積

3.1消息傳遞網絡MPNN

Massage Passing Neural Network–MPNN,空域卷積的形式化框架。他將空域卷積分解為兩個過程:消息傳遞Ml(?)M_l(\cdot)Ml?(?)和狀態更新Ul(?)U_l(\cdot)Ul?(?)
hvl+1=Ul+1(hv,∑u∈ne[v]Ml+1(hvl,hul,xuv))h_v^{l+1}=U_{l+1}(h_v, \sum_{u\in ne[v]}M_{l+1}(h^l_v,h_u^l,x_{uv}))hvl+1?=Ul+1?(hv?,une[v]?Ml+1?(hvl?,hul?,xuv?))
即本結點與鄰居結點的信息通過Ml(?)M_l(\cdot)Ml?(?)形成消息,將所有的消息類和后,然后通過狀態更新函數Ul(?)U_l(\cdot)Ul?(?)更新自己的隱狀態。

GCN:每一層包含所有結點,每層的MU參數并不共享,層數由設計確定
GNN:按更新時間序列展開成,各層的MU參數共享,每一次更新所有的結點,按不動點理論,時間序列的長度不定。

MPNN主要缺陷:卷積操作針對整張圖,所有結點都要進內存。大規模圖上的全圖卷積操作并不現實。

3.2 圖采樣與聚合GraphSage

采樣部分結點進行學習,

  1. 每一層的消息傳遞和狀態更新不涉及所有結點,隨機采樣若干個結點。
  2. 針對每個結點,隨機選取固定數目的鄰居結點,(1階/2階均可)
  3. 定義aggregate函數聚合鄰居結點的信息
  4. 計算采樣點處的損失

GraphSage狀態更新公式:
hvl+1=σ(Wl+1?aggregate(hvl,{hul}),?u∈ne[v])h_v^{l+1}=\sigma(W^{l+1}*aggregate(h_v^l,\{h_u^l\}),\forall u \in ne[v])hvl+1?=σ(Wl+1?aggregate(hvl?,{hul?}),?une[v])

GraphSage的設計重點在于aggregate函數的設計上。

4.頻域卷積

(理解起來稍微有一點抽象)–利用傅立葉變換在圖上的抽象來實現圖上卷積操作。
傅立葉變換:將一個在空域上定義的函數分解成頻域上的若干頻率成分。
f^(t)=∫f(x)exp??2πixtdx\hat{f}(t)=\int f(x)\exp^{-2\pi ixt}dxf^?(t)=f(x)exp?2πixtdx

傅立葉變換恒等式:兩個函數在空域上的卷積的效果,等于兩函數在頻域上的乘積。
(f?g)(t)=F?1[F[f(t)]⊙F[g(t)]](f*g)(t)=F^{-1}[F[f(t)]\odot F[g(t)]](f?g)(t)=F?1[F[f(t)]F[g(t)]]

所以:可以利用傅立葉變換,得到頻域表示后,進行哈達瑪乘積,再傅立葉逆變換回去,即可得到空域卷積的結果。

傅立葉變換的作用:

  1. 去規律的噪點
  2. 加速卷積操作(卷積核比較小時沒啥加速效果)

利用傅立葉變換實現圖上卷積的核心點:如何找到變換算子exp??2πixt\exp^{-2\pi ixt}exp?2πixt

依據變換算子是拉普拉斯算子的特征函數這一重要特性,找到圖數據拉普拉斯變換算子–拉普拉斯矩陣對應的特征向量。

(頻域卷積的前提條件-圖是無向圖。)
圖拉普拉斯矩陣的特征值分解:
L=UΛUTL=U\Lambda U^TL=UΛUT
U=(u1,u2,...,un)U = (u_1, u_2, ... , u_n)U=(u1?,u2?,...,un?)
Λ=diag(λ1,λ2,...,λn)\Lambda = diag(\lambda_1, \lambda_2, ... , \lambda_n)Λ=diag(λ1?,λ2?,...,λn?)

圖結點數據傅立葉變換:(^f)(t)=∑n=1Nf(n)ut(n)\hat(f)(t) = \sum_{n=1}^Nf(n)u_t(n)(^?f)(t)=n=1N?f(n)ut?(n) 這個疊加的n是個什么東西?N個結點的信息

整張圖的傅立葉變換:f^=[f^(1)...f^(N)]=UTf\hat{f}= \left[ \begin{array}{ccc} \hat{f}(1)\\ ... \\ \hat{f}(N)\\ \end{array} \right]= U^Tf f^?=???f^?(1)...f^?(N)????=UTf
用神經網絡建模卷積核傅立葉變化后的函數,用gθg_\thetagθ?表示,那么頻域卷積可以表示為:
gθ⊙UTfg_\theta\odot U^Tfgθ?UTf

再通過傅立葉逆變換可以求得,最終圖上的卷積。(逆變換算子為exp?2πixt\exp^{2\pi ixt}exp2πixt,類比圖中的逆變換算子為U):
o=(f?g)θ=UgθUTfo=(f*g)_\theta=Ug_\theta U^Tfo=(f?g)θ?=Ugθ?UTf

圖上頻域卷積的工作,都聚焦于gθg_\thetagθ?的設計。頻域卷積,隱狀態更新涉及:

  1. lll層隱狀態hl∈RN?dlh^l\in R^{N*d_l}hlRN?dl?,每一行為該層一個結點的隱藏狀態:
    hl=[h11lh12l...h1dll...hN1lhN2l...hNdll]h^l= \left[ \begin{array}{ccc} h^l_{11}&h^l_{12}&...&h^l_{1d_l}\\ ... \\ h^l_{N1}&h^l_{N2}&...&h^l_{Nd_l}\\ \end{array} \right] hl=???h11l?...hN1l??h12l?hN2l??......?h1dl?l?hNdl?l?????
  2. 傅立葉變換算子UTU^TUT,每一行是拉普拉斯矩陣的一個特征向量:
    UT=[u11u12...u1N...uN1uN2...uNN]U^T= \left[ \begin{array}{ccc} u_{11}&u_{12}&...&u_{1N}\\ ... \\ u_{N1}&u_{N2}&...&u_{NN}\\ \end{array} \right] UT=???u11?...uN1??u12?uN2??......?u1N?uNN?????
  3. 卷積核頻域形式gθ:dl+1?Ng_\theta:d_{l+1}*Ngθ?:dl+1??N,參數化唄,還就是一個權重呀(沒說明白怎么作用的呀,后面再看看吧):
    gθ=[θ1...0.........0...θN]g_\theta= \left[ \begin{array}{ccc} \theta_1&...&0\\ ...&...&... \\ 0&...&\theta_N\\ \end{array} \right] gθ?=???θ1?...0?.........?0...θN?????

頻域卷積,隱狀態更新公式,{:i}表示第i列,(i=1,...,dl),(j=1,...,dl+1)(i=1,...,d_l),(j=1,...,d_{l+1})(i=1,...,dl?),(j=1,...,dl+1?)
h:,jl+1=σ(U∑i=1dL)gθUTh:,ilh^{l+1}_{:,j}=\sigma(U\sum_{i=1}^{d_L})g_\theta U^Th^l_{:,i}h:,jl+1?=σ(Ui=1dL??)gθ?UTh:,il?

切比雪夫網絡用來加速特征矩陣的求解。

5.圖結構的序列化-Patch-SAN

Patch-SAN:將圖轉化成序列結構,然后利用卷積神經網絡在序列化結構上作卷積。
Patch-SAN原文中主要涉及圖分類任務。

圖結構的特點:

  1. 同構
  2. 鄰居結點的連接關系

圖結構-》序列化結構要求
3. 同構圖產生的序列應當是相似的
4. 保持鄰居結點和目標結點的距離關系

Patch-SAN 通過三個規則來將圖轉化成一個長度為w?(k+1)w*(k+1)w?(k+1)的序列,然后直接使用1D卷積對該序列進行操作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444749.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444749.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Servlet 工程 web.xml 中的 servlet 和 servlet-mapping 標簽

摘錄某個工程的 web.xml 文件片段:訪問順序為1—>2—>3—>4,其中2和3的值必須相同。 url-pattern 標簽中的值是要在瀏覽器地址欄中輸入的 url,可以自己命名,這個 url 訪問名為 servlet-name 中值的 servlet,兩…

leetcode236 二叉樹的最近公共祖先

給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個結點 p、q,最近公共祖先表示為一個結點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節點也可以是它自己的…

Unity的 UNet組件介紹

UNet常見概念簡介 Spawn:簡單來說,把服務器上的GameObject,根據上面的NetworkIdentity組件找到對應監視連接,在監視連接里生成相應的GameObject.Command:客戶端調用,服務器執行,這樣客戶端調用的參數必需要UNet可以序列化,這樣服務器在執行時才能把參數反序列化。需要注意…

MachineLearning(10)-聚類

聚類1.K-mean2.系統聚類3.DBSCAN聚類算法聚類:無監督學習,將相似的樣本聚為一類。核心如何定義相似。分類:有監督學習,依據分類準則,將樣本劃分為不同的類。核心分類器的設計(KNN)聚類&#xff…

幀同步和狀態同步(一)

幀同步 什么是幀同步:幀同步常被RTS(即時戰略)游戲常采用。在游戲中同步的是玩家的操作指令,操作指令包含當前的幀索引。一般的流程是客戶端上傳操作到服務器, 服務器收到后并不計算游戲行為, 而是轉發到所有客戶端。這里最重要的…

幀同步和狀態同步(二)案例分析

轉自:http://www.gameres.com/489361.html 騰訊一下出了兩款MOBA游戲,全民超神,王者榮耀,玩了一下,效果不錯,就分析了一下它底層的一些技術,發現一個是采用的狀態同步,TCP協議&#…

leetcode279 完全平方數

給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, ...)使得它們的和等于 n。你需要讓組成和的完全平方數的個數最少。 示例 1: 輸入: n 12 輸出: 3 解釋: 12 4 4 4. 示例 2: 輸入: n 13 輸出: 2 解釋: 13 4 9. 思路&#xf…

推薦系統(1)-概述

推薦系統概述1.數據部分2.模型部分2.1模型的組成2.2模型的訓練2.3模型評估《深度學習/推薦系統》讀書筆記推薦系統要處理的問題:對于用戶U(user),在特定的場景C(context),針對海量的“物品信息”,構建一個模型f(U,I,C)f(U,I,C)f(U…

(十七)深入淺出TCPIP之UDP打洞原理

專欄其他文章: 理論篇: (一)深入淺出TCPIP之理解TCP報文格式和交互流程 (二)深入淺出TCPIP之再識TCP,理解TCP三次握手(上) (三)深入淺出TCPIP之再識TCP,理解TCP四次揮手(上) (四)深入淺出TCPIP之TCP三次握手和四次揮手(下)的抓包分析 (五)深入淺出TCPIP之TCP流…

leetcode240. 搜索二維矩陣 II

編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target。該矩陣具有以下特性: 每行的元素從左到右升序排列。 每列的元素從上到下升序排列。 示例: 現有矩陣 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6…

NAT原理

網絡地址轉換(NAT,Network Address Translation)屬接入廣域網(WAN)技術,是一種將私有(保留)地址轉化為合法IP地址的轉換技術。下面介紹兩類不同方式實現的NAT:NAT(Network Address Translators):稱為基本的NAT在客戶機…

推薦系統(2)-協同過濾1-UserCF、ItemCF

協同過濾1.CF概述2.數據表示3.衡量相似度4.共現矩陣5.UserCF6.ItemCF7.UserCF 與ItemCF 應用場景、主要缺陷8.基于UserCF 電影推薦demo《深度學習/推薦系統》讀書筆記推薦系統的發展一日千里 傳統的推薦模型(2010年前后):協同過濾、羅輯回歸、因子分解、梯度提升樹 …

sql查詢實例1(學生表_課程表_成績表_教師表)

表架構 Student(S#,Sname,Sage,Ssex) 學生表 Course(C#,Cname,T#) 課程表 SC(S#,C#,score) 成績表 Teacher(T#,Tname) 教師表 建表語句 CREATE TABLE student ( s# INT, sname nvarchar(32), sage INT, ssex nvarchar(8) ) CREATE TABLE course ( c# INT, cname…

android 存儲方式以及路徑簡介

存儲分成了內部存儲和外部存儲。注意內部存儲又叫做機身內存,而且內存又包含了兩個部分RAM(運行時內存,這個和運行速度有關系,是手機運行時存儲數據和指令的地方)、ROM(這個才算是真正存儲東西的內部存儲范圍,是應用配置和其他數據的地方);而外部存儲就很明確了,用戶的外部掛…

MachineLearning(11)-關聯規則分析

關聯規則分析1.簡單來說-關聯規則2.經典關聯規則挖掘-Apriori1.簡單來說-關聯規則 關聯規則–通過量化的數字描述物品甲的出現 對 物品乙的出現 有多大影響。 最早是為了發現超市銷售數據庫中不同的商品之間的關聯關系:哪組商品可能會在一次購物中同時購買。 廣泛…

APK 安卓反編譯

在學習Android開發的過程你,你往往會去借鑒別人的應用是怎么開發的,那些漂亮的動畫和精致的布局可能會讓你愛不釋手,作為一個開發者,你可能會很想知道這些效果界面是怎么去實現的,這時,你便可以對改應用的A…

sql查詢實例2(借書卡、圖書、借書記錄)

問題描述: 本題用到下面三個關系表: CARD 借書卡。 CNO 卡號,NAME 姓名,CLASS 班級 BOOKS 圖書。 BNO 書號,BNAME 書名,AUTHOR 作者,PRICE 單價,QUANTITY 庫存冊數 BORROW 借書記錄。 CNO 借…

開始學習Unity3D(一)

本人最近轉行開始做海外獨立游戲的發行,主要是負責服務器,開會注意到海外的服務越來越豐富越來越細分,對國內將會造成很大的沖擊,比如AWS,Google,GameSparks等,這導致國內的所謂服務器開發將越來越簡單,國內對服務器開發的需求越來越少,反而客戶端的需求越來越多,所以…

List 流的使用

摘要 本文將介紹在 Java 1.8 中對 List 進行流操作的使用方法。引入的 java.util.stream 包為開發者提供了一種更為便捷和強大的方式來處理集合數據。通過使用流,我們能夠以聲明性的方式進行集合操作,減少了樣板代碼,提高了代碼的可讀性和可…

推薦系統(3)-協同過濾2-矩陣分解算法

協同過濾-矩陣分解算法1.奇異值分解2.梯度下降3.矩陣分解方法的優缺點《深度學習/推薦系統》讀書筆記(其實矩陣分解和協同過濾已經沒有特別大的聯系了) 2006年,在Netfilx舉辦的推薦算法競賽中Netflix Prize Challenge中,以矩陣分解…