從資料結構到演算法:圖網路方法初探
機器之心原創
作者:朱梓豪
編輯:Qing Lin
如果說 2019 年機器學習領域什麼方向最火,那麼必然有圖神經網路的一席之地。其實早在很多年前,圖神經網路就以圖嵌入、圖表示學習、網路嵌入等別名呈現出來,其實所有的這些方法本質上都是作用在圖上的機器學習。本文將根據近兩年的綜述對圖網路方法做一個總結,為初入圖世界的讀者提供一個總體的概覽。
本文作者朱梓豪為中科院信工所在讀碩士,主要研究方向為圖神經網路、視覺問答、視覺對話等。
什麼是圖
圖是一種常見的資料結構,用於表示物件及其之間的關係。其中,物件又稱節點(node)或頂點(vertex),關係用邊(edge)來描述。在數學上一般用 G=(V,E,A,X) 來表示,其中 V={v1,v2……,vn} 是節點集合,E=e_ij 表示邊的集合,A 是大小為|V|×|V|的鄰接矩陣,用於表示節點之間的連線關係,如果 e_ij∈E,則 A_ij=1,X 是大小為|V|×d 的特徵矩陣,X 的第 i 行 X_i:表示第 i 個節點的屬性特徵,其中 d 是屬性的維度。
為何需要在圖上應用機器學習方法
圖是一種描述和建模複雜系統的通用語言,在真實世界中無處不在。例如,Facebook、 Twitter 等社交媒體構成了人類之間的社交網路 (Social Network);人體中的蛋白質分子構成了生物網路 (Biological Network);各種移動終端構成了通訊網路 (Communication Network);智慧硬體之間構成了物聯網 (Internet-of-Things) 、城市間的公路、鐵路、航線構成了運輸網路 (Transportation Network) 等等。因此也催化出一系列在圖上進行資料探勘的任務,如為使用者推薦感興趣的好友、判斷蛋白質結構、預測交通流量、檢測異常賬戶等等。但是真實圖的資料量龐大,動輒上億節點、而且內部拓撲結構複雜,很難將傳統的圖分析方法如最短路徑、DFS、BFS、PageRank 等演算法應用到這些任務上。鑑於機器學習在影像、文字領域的廣泛應用,一部分研究者嘗試將機器學習方法和圖資料結合起來,逐漸成為機器學習領域的一股熱潮。
網路表示學習、圖嵌入的定義
俗話說「巧婦難為無米之炊」,再強大的機器學習演算法也需要資料進行支援。在同樣的資料集和任務上,由於特徵的不同,同一個演算法的結果也可能會有天壤之別。由於特徵的選擇對結果的決定性作用,很多資料探勘方面的研究工作把重心放到了針對特定的資料由人工設計出有價值的特徵上。
深度學習本質上是一種特徵學習方法,其思想在於將原始資料通過非線性模型轉變為更高層次的特徵表示,從而獲得更抽象的表達。與人工設計特徵不同,深度學習會自動從資料中學習出特徵表示,所以又稱為表示學習(Representation Learning)。如影像分類,輸出的一張高維的圖片,經過一系列的卷積池化等操作,低層可以抽取出低階的特徵(輪廓、顏色)、較深的層會根據低階特徵學習到更高階的特徵,然後變換成一個向量通過全連線層進行分類,這個向量就是輸入影像的特徵表示。
一個很自然的想法就是,既然直接在圖上直接應用機器學習方法比較困難,那麼能否先將節點或邊用低維向量表示出來,然後在這些向量上應用已經很成熟的機器學習演算法。這種將圖中節點嵌入到低維歐式空間中的方法就叫做圖嵌入(Graph Embedding)。
其實、圖嵌入、網路嵌入、圖表示學習、網路表示學習這些名詞指的的都是同一個概念。給定圖$G=(\mathbf{V,E,A,X})$,圖嵌入需要學習從節點到向量的對映:$f:v_i\to \mathbf{y}_i \in R^d$,其中$d<<|V|$,$f$需要儘可能的保留住節點的結構資訊和屬性資訊。
圖嵌入方法的分類
圖資料最大的特點在於節點之間存在著連結關係,這表明圖中節點之間並非完全獨立。除了節點間的連結關係,節點自身也可能含有資訊,比如網際網路中網頁節點對應的文字資訊,這些特性使得圖嵌入需要考慮很多的因素。從訓練所需的資訊來看,一般有三種主要的資訊源:圖結構、節點屬性和節點標籤,可基於此分成無監督圖嵌入和半監督圖嵌入;還有一種是根據輸入資料的不同進行劃分,比如按照邊的方向性、是否是異構網路等性質。然而這兩種劃分依據並不合適,因為當前圖嵌入演算法的主要區別在於演算法型別,同一演算法型別下的框架都是相似的,因此本文基於 Hamilton 等 [1] 和 Goyal 等 [2] 兩篇關於圖嵌入的綜述,將圖嵌入方法概括為基於矩陣分解的圖嵌入、基於隨機遊走的圖嵌入、基於神經網路的圖嵌入(即圖神經網路)。
基於矩陣分解的圖嵌入
基於矩陣分解的方法是將節點間的關係用矩陣的形式加以表示,然後分解該矩陣以得到嵌入向量。通常用於表示節點關係的矩陣包括鄰接矩陣、拉普拉斯矩陣、節點轉移概率矩陣、節點屬性矩陣等。根據矩陣的性質不同適用於不同的分解策略。主要包括 Local Linear Embedding(LLE)[3]、Laplacian Eigenmaps[4]、SPE[5]、GraRep[6] 等。
LLE 演算法其實是流形學習的一種,LLE 演算法認為每一個資料點都可以由其鄰域節點的線性加權組合構造得到。降維到低維空間後,這種線性關係仍然得到保留。Laplacian Eigenmaps 和 LLE 有些相似,直觀思想是希望相互間有關係的點(在圖中相連的點)在降維後的空間中儘可能的靠近。為了使得輸入圖的嵌入是低維表示並且保留圖全域性拓撲結構,Shaw 等 [5] 提出在歐式空間中嵌入圖的結構保留嵌入方法(SPE,Structure Preserving Embedding),學習由一組線性不等式約束的低秩核矩陣,用於捕獲輸入圖結構。SPE 在圖的視覺化和無失真壓縮方面獲得明顯改善,優於 Laplacian Eigenmaps 等方法。Cao 等 [6] 認為考慮節點之間的 k 階關係對把握網路的全域性特徵非常重要,考慮越高階的關係,得到的網路表示效果會越好。GraRep 通過 SVD 分解分別學習節點的 k 階表示,然後將其結合起來作為最終的表示,這樣可以很好地捕捉到遠距離節點之間的關係。
基於隨機遊走的方法
隨機遊走方法已經被用來近似圖的許多屬性,包括節點中心性和相似性等。當圖的規模特別大或者只能觀察到部分圖的時候,隨機遊走就變得非常有用。有研究者提出了利用圖上隨機遊走來獲取節點表示的嵌入技術,其中最著名的就是 DeepWalk[7] 和 node2vec[8]。
DeepWalk 是基於 word2vec 詞向量提出來的。word2vec 在訓練詞向量時,將語料作為輸入資料,而圖嵌入輸入的是整張圖,兩者看似沒有任何關聯。但是 DeepWalk 的作者發現,預料中詞語出現的次數與在圖上隨機遊走節點被訪問到底的次數都服從冪律分佈。因此 DeepWalk 把節點當做單詞,把隨機遊走得到的節點序列當做句子,然後將其直接作為 word2vec 的輸入來得到節點的嵌入表示。其框架如圖 1 所示,首先採用隨機遊走的方法產生標準的輸入序列,用 SkipGram 模型對序列建模得到節點的向量表示,然後使用分層 softmax 解決節點高維度輸出問題。DeepWalk 模型的提出為圖嵌入提出了一種新的研究思路,也算是引發了對圖嵌入研究的熱潮。
圖一
node2vec 通過改變生成隨機遊走序列的方式改進了 DeepWalk 演算法。DeepWalk 是按照均勻分佈隨機選取隨機遊走序列的下一個節點。node2vec 同時考慮了廣度優先搜尋 (BFS) 和深度優先搜尋 (DFS)。Grover 等發現,廣度優先搜尋注重刻畫網路中的區域性特徵,而深度優先搜尋能更好地遍歷整個網路,反映了節點間的同質性。特別地,node2vec 引入 search bias 函式來平衡這兩種取樣方式,通過引數 p 和 q 來調整下一步的跳轉概率。
其他基於隨機遊走的方法還包括 Walklets、LsNet2vec、TriDNR、HARP、DDRW 等等。
基於神經網路的圖嵌入(圖神經網路)
還有一類方法是將神經網路和圖結合起來的圖表示學習方法,也是最近一年來最火的方向之一,我們統稱為圖神經網路。機器之心已經為其做過了全面的介紹,具體請參見:深度學習時代的圖模型,
清華髮文綜述圖網路、清華大學圖神經網路綜述:模型與應用、圖神經網路概述第三彈:來自 IEEE Fellow 的 GNN 綜述。主要將其分為圖卷積網路、圖注意力網路、圖生產網路、圖時空網路、圖自編碼器。又可以分為基於譜的方法和基於空間的方法。由於基於譜的方法需要分解矩陣特徵向量,因此絕大多數新提出的方法都是基於空間,也就是如何傳播並聚合節點和邊的資訊。影像和文字本質上是有規則的格柵結構的圖,因此,很自然想到可以將已經在 CV、NLP 領域成功應用的模型擴充到圖上,如詞向量和圖卷積。最近,也出現了基於膠囊的圖神經網路和基於影像語義分割 U-Net 模型的 Graph U-Net。
注意力機制的在圖嵌入的應用
有一部分研究者將注意力 (attention) 機制引入到了圖神經網路中。注意力機制的本質是從人類視覺注意力機制中獲得靈感。大致是我們視覺在感知東西的時候,一般不會是一個場景從到頭看到尾全部都看,而是根據需求觀察特定的一部分。這意味著,當人們注意到某個目標或某個場景時,該目標內部以及該場景內每一處空間位置上的注意力分佈是不一樣的。而且當我們發現一個場景經常在某部分出現自己想觀察的東西時,我們就會進行學習在將來再出現類似場景時把注意力放到該部分上。更通用的解釋就是,注意力機制是根據當前的某個狀態,從已有的大量資訊中選擇性的關注部分資訊的方法,其實就是一系列 注意力分配係數。
基於注意力機制的 GNN 的思想是在計算每個節點的表示的時候,首先計算其和鄰居節點之間的注意力係數,為重要的鄰居節點分配較大的權重,在聚合的過程中將不同的重要性分配給鄰域內不同的節點。
表 1 按照輸入、輸出、任務對近兩年發表的基於注意力機制的圖神經網路模型進行彙總比較,下面對幾個具有代表性的模型進行概述,具體內容請參照論文《Attention Models in Graphs: A Survey》[9]。
Yoshua Bengio 的 MILA 團隊在 2018 年提出了圖注意力網路 (Graph Attention Networks, GAT)[10],論文中定義了 Graph attention 層,通過疊加不同的 attention 層,可以組成任意結構的圖神經網路,其架構如圖所示,最終要的步驟就是計算節點 i 的鄰居節點對其的注意力係數$\alpha_{ij}$, 這裡還是用了多頭注意力機制,圖中不同的顏色代表不同的頭。
不同於 GAT 是節點分類,DAGCN[11] 用於圖分類任務。模型中包括兩個 attention 單元,一個是和 GAT 一樣,用於圖卷積得到節點的表示,另一個是基於 attention 的池化操作,得到整個圖的表示,然後將圖表示輸入到一個 MLP 得到整個圖的分類。作者認為,經典的 GCN 每一層都只能捕獲第 k-hop 鄰域的結構資訊,只有最後一層的 H 被用下一步的預測,隨著網路層數的增多,會丟失大量的資訊。作者提出的 attention 層的思想是不僅要依賴於第 k-hop 的結果, 還要從前面每一個 hop 捕獲有價值的資訊。
綜合各種圖注意力網路的論文來看,最主要的區別在於如何定義和實現注意力機制。第一類是學習 attention weights:
主要是通過 softmax 函式實現的,同時還需要一個基於節點屬性可訓練的計算節點 j 和節點 0 相關性的函式,例如 GAT 的實現方式為:
其中 W 是將節點屬性對映到隱空間的可訓練的引數矩陣,||表示串接。
第二類基於相似度的 attention,同樣,給定相應的屬性或特徵,第二種注意力的學習方法與上面的方法類似,但有一個關鍵的區別是更多的注意力集中在具有更多相似隱藏表示或特徵的節點上,這在文獻中也經常被稱為對齊。以 AGNN 中的公式為例:
其中 cos 來計算餘弦相似度,可以看到和上式非常相似。不同之處在於,模型顯式地為彼此相關的物件學習類似的隱藏嵌入,因為注意力是基於相似性或對齊的。
前兩種注意力主要集中在選擇相關資訊以整合到目標物件的隱藏表示中,而第三種注意力的目的略有不同,叫做基於注意力的遊走。舉例來說,在一個輸入圖上執行一系列遊走,並使用 RNN 對訪問的節點資訊進行編碼,從而構造一個子圖嵌入。RNN 的 t 時刻的隱藏狀態對 1 到 t 訪問的節點進行編碼。Attention 就是一個函式$f』(h_t)=r_{t+1}$, 輸入的是 t 時刻的隱藏狀態,輸出一個 rank vector,告訴我們下一步我們應該優先考慮哪種型別的節點。
框架
這裡簡單的介紹一下 Hamilton 在論文 [1] 中提出的一種圖嵌入 encoder-decoder 框架(如圖),可以將大多數的圖嵌入方法用這個框架來表示。在這個框架中,我們圍繞兩個關鍵的對映函式組織了各種方法:一個 encoder(它將每個節點對映到一個低維向量) 和一個 decoder(它從已知的嵌入中解碼關於圖的結構資訊)。encoder-decoder 背後的直覺想法是這樣的:如果我們能從低位嵌入表示中學會解碼高維圖資訊,如節點在圖中的全域性位置或節點的區域性鄰域結構,那麼原則上,這些嵌入應包含下游機器學習任務所需的所有資訊。
encoder 是一個函式:
將節點 i 對映到嵌入向量$z_i \in R^d$。decoder 是接受一組節點嵌入並從這些嵌入中解碼使用者指定的圖統計資料的函式。例如,decoder 可能根據節點的嵌入預測節點之間是否存在邊,或者可能預測圖中節點所屬的社群。原則上,有許多 decoder 都是可以使用的,但是在大多數工作中使用的是成對 decoder:
當我們將成對 decoder 應用於一對嵌入$(z_i,z_j)$時,我們得到了原始圖中$v_i$和$v_j$之間相似性的重構,目標就是最小化重構後的相似性和原圖中相似性的誤差:
其中其中 SG 是一個使用者定義的、在圖 G 上的的節點間相似性度量。換句話說,目標是優化 encoder-decoder 模型,可以從低維節點嵌入 z_i 和 z_j 中解碼出原始圖中 SG(v_i, v_j) 成對節點相似性。例如可以設 SG(v_i, v_j)=A_{ij},如果節點相鄰則定義節點的相似度為 1,否則為 0。或者可以根據在圖 G 上的固定長度隨機遊走 v_i 和 v_j 共線的概率來定義 SG。在實踐中,大多數方法通過最小化節點對集合 D 上的經驗損失 L 來實現重構目標:
優化了上述目標函式後,我們就可以使用經過訓練的 encoder 為節點生成嵌入,然後可以將其用作下游機器學習任務的特徵輸入。下表展示了常用圖嵌入方法的 encoder-decoder 框架描述。
總結
圖嵌入是指將圖中節點用低維稠密向量來表示,從一開始的基於矩陣分解的方法逐漸出現了基於隨機遊走的方法,後來又演化出基於神經網路的方法也是我們經常聽到的圖神經網路。圖嵌入目前還面臨著一些挑戰,例如如何在超大規模圖上高效進行分析,如何應對真實世界中不斷變化的動態圖,如何對圖神經網路的黑盒模型進行解釋,以及如何建模異質圖。目前在圖網路領域也湧現出一些新的方向,例如如何針對圖網路進行對抗攻擊使其模型效能大幅下降,相反的就是如何提高模型的魯棒性;如何將人工設計網路架構轉變為由機器自動設計,這對應著網路結構搜尋問題(NAS),以及如何將圖網路和計算機視覺、自然語言處理等方向結合起來。這些都是很有價值也有意思的方向,感興趣的讀者可以進行更深度的研究。
參考文獻:
[1] Hamilton, William L., Rex Ying, and Jure Leskovec. "Representation learning on graphs: Methods and applications." arXiv preprint arXiv:1709.05584 (2017).
[2] Goyal, Palash, and Emilio Ferrara. "Graph embedding techniques, applications, and performance: A survey." Knowledge-Based Systems 151 (2018): 78-94.
[3] Roweis, Sam T., and Lawrence K. Saul. "Nonlinear dimensionality reduction by locally linear embedding." science 290.5500 (2000): 2323-2326.
[4] Belkin, Mikhail, and Partha Niyogi. "Laplacian eigenmaps and spectral techniques for embedding and clustering." Advances in neural information processing systems. 2002.
[5] Shaw, Blake, and Tony Jebara. "Structure preserving embedding." Proceedings of the 26th Annual International Conference on Machine Learning. ACM, 2009.
[6] Cao, Shaosheng, Wei Lu, and Qiongkai Xu. "Grarep: Learning graph representations with global structural information." Proceedings of the 24th ACM international on conference on information and knowledge management. ACM, 2015.
[7] Perozzi, Bryan, Rami Al-Rfou, and Steven Skiena. "Deepwalk: Online learning of social representations." Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2014.
[8] Grover, Aditya, and Jure Leskovec. "node2vec: Scalable feature learning for networks." Proceedings of the 22nd ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2016.
[9] Lee, John Boaz, et al. "Attention models in graphs: A survey." arXiv preprint arXiv:1807.07984 (2018).
[10] Veličković, Petar, et al. "Graph attention networks." arXiv preprint arXiv:1710.10903 (2017).
[11] F.Chen,S.Pan,J.Jiang,H.Huo,G.Long,DAGCN:DualAttention
Graph Convolutional Networks, arXiv. cs.LG (2019).
https://www.toutiao.com/i6724157533595894286/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2654714/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料結構(一)-初探資料結構
- 資料結構 - 樹,初探資料結構
- 演算法與資料結構學習路線圖演算法資料結構
- 資料結構與演算法:圖形結構資料結構演算法
- 資料結構 - 雜湊表,初探資料結構
- CNN網路結構的發展:從LeNet到EfficientNetCNN
- 從經典結構到改進方法,神經網路語言模型綜述神經網路模型
- ICDM 2019最佳論文:從圖片、文字到網路結構資料翻譯,一種新型的多屬性圖翻譯模型模型
- 演算法與資料結構1800題 圖演算法資料結構
- 資料結構與演算法1800題 圖資料結構演算法
- 演算法與資料結構1800題 圖演算法資料結構
- 資料結構與演算法-圖解版資料結構演算法圖解
- 演算法與資料結構——圖簡介演算法資料結構
- 資料結構與演算法-資料結構(棧)資料結構演算法
- 資料結構 - 圖資料結構
- 06 Javascript資料結構與演算法 之 圖JavaScript資料結構演算法
- 「演算法與資料結構」從入門到進階整理推薦書單演算法資料結構
- leetcode演算法資料結構題解---資料結構LeetCode演算法資料結構
- 資料結構:初識(資料結構、演算法與演算法分析)資料結構演算法
- Keras輸出網路結構圖Keras
- 【PHP資料結構】PHP資料結構及演算法總結PHP資料結構演算法
- 資料結構&演算法資料結構演算法
- 獵豹網校資料結構與演算法資料結構演算法
- 學習javascript資料結構與演算法(六)——圖JavaScript資料結構演算法
- 【資料結構——圖和圖的儲存結構】資料結構
- 網路爬蟲---從千圖網爬取圖片到本地爬蟲
- 資料結構之圖資料結構
- 資料結構:圖(Graph)資料結構
- 圖解vsan儲存結構/資料恢復方法圖解資料恢復
- 網易馬進:DDB從分散式資料庫到結構化資料中心的架構變遷分散式資料庫架構
- python演算法與資料結構-演算法和資料結構介紹(31)Python演算法資料結構
- python演算法與資料結構-什麼是資料結構Python演算法資料結構
- dio+json_serializable從網路請求到資料解析JSON
- 演算法資料結構 | 圖論基礎演算法——拓撲排序演算法資料結構圖論排序
- 演算法與資料結構之-圖的最短路徑演算法資料結構
- 資料結構和演算法的圖解和實現資料結構演算法圖解
- 資料結構——Floyd演算法資料結構演算法
- 基本資料結構演算法資料結構演算法