日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[图神经网络] 图神经网络GNN基础入门

發(fā)布時(shí)間:2023/12/15 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [图神经网络] 图神经网络GNN基础入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近,深度學(xué)習(xí)領(lǐng)域關(guān)于圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Networks,GNN)的研究熱情日益高漲,圖神經(jīng)網(wǎng)絡(luò)已經(jīng)成為各大深度學(xué)習(xí)頂會(huì)的研究熱點(diǎn),包括社交網(wǎng)絡(luò),知識(shí)圖,推薦系統(tǒng),甚至生命科學(xué)。GNN在對(duì)圖中節(jié)點(diǎn)之間的依賴(lài)關(guān)系建模方面的強(qiáng)大功能使得與圖分析相關(guān)的研究領(lǐng)域取得了突破。GNN處理非結(jié)構(gòu)化數(shù)據(jù)時(shí)的出色能力使其在網(wǎng)絡(luò)數(shù)據(jù)分析、推薦系統(tǒng)、物理建模、自然語(yǔ)言處理和圖上的組合優(yōu)化問(wèn)題方面都取得了新的突破。

本文旨在介紹圖形神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)和兩種更高級(jí)的算法,DeepWalk和GraphSage。

一 圖

在我們學(xué)習(xí)GNN之前,讓我們先了解一下圖是什么。在計(jì)算機(jī)科學(xué)中,圖是由兩個(gè)組成部分組成的數(shù)據(jù)結(jié)構(gòu),即頂點(diǎn)和邊緣。圖G可以通過(guò)頂點(diǎn)集V和它包含的邊E來(lái)進(jìn)行描述。

圖表示學(xué)習(xí)的主要目標(biāo)是:將結(jié)點(diǎn)映射為向量表示的時(shí)候盡可能多地保留圖的拓?fù)湫畔?/strong>。圖表示學(xué)習(xí)主要分為基于圖結(jié)構(gòu)的表示學(xué)習(xí)基于圖特征的表示學(xué)習(xí)

?

圖由頂點(diǎn)(Vertex)和連接頂點(diǎn)的邊(Edge)構(gòu)成,邊可以是有向的或無(wú)向的,這取決于頂點(diǎn)之間是否存在方向依賴(lài)關(guān)系。

頂點(diǎn)和邊之間的關(guān)系可以用鄰接矩陣(A)表示,兩個(gè)頂點(diǎn)間有邊標(biāo)識(shí)為1,否則為0。

如上圖所示,圖G=(V,E)其中 V={v1,v2,v3,v4,v5},E={(v1,v2),(v1,v3),(v2,v4),(v3,v4),(v4,v5)}

?

二 GNN 圖神經(jīng)網(wǎng)絡(luò)

圖神經(jīng)網(wǎng)絡(luò)是一種直接作用于圖結(jié)構(gòu)上的神經(jīng)網(wǎng)絡(luò)。GNN比較經(jīng)典的是這篇《The Graph Neural Network Model》

GNN的一個(gè)典型應(yīng)用是節(jié)點(diǎn)分類(lèi)。本質(zhì)上,圖中的每個(gè)節(jié)點(diǎn)都與一個(gè)標(biāo)簽相關(guān)聯(lián),我們希望在沒(méi)有g(shù)round-truth的情況下預(yù)測(cè)節(jié)點(diǎn)的標(biāo)簽。本節(jié)將說(shuō)明本文中描述的算法。第一個(gè)提出的GNN常常被稱(chēng)為原始GNN。

在節(jié)點(diǎn)分類(lèi)問(wèn)題設(shè)置中,每個(gè)節(jié)點(diǎn)v的特征是x_v,并與一個(gè)ground-truth標(biāo)簽t_v關(guān)聯(lián)。給定一個(gè)部分標(biāo)記的圖G,目標(biāo)是利用這些標(biāo)記的節(jié)點(diǎn)來(lái)預(yù)測(cè)未標(biāo)記的標(biāo)簽。它學(xué)習(xí)用一個(gè)d維向量(狀態(tài))h_v表示每個(gè)節(jié)點(diǎn),其中包含其鄰域的信息。具體地說(shuō),

其中x_co[v]表示與v相連的邊的特征,h_ne[v]表示與v相鄰節(jié)點(diǎn)的嵌入,x_ne[v]表示與v相鄰節(jié)點(diǎn)的特征。函數(shù)f是將這些輸入投射到d維空間的轉(zhuǎn)換函數(shù)。因?yàn)槲覀冋跒閔_v尋找一個(gè)惟一的解,所以我們可以應(yīng)用Banach定點(diǎn)定理并將上面的等式重寫(xiě)為迭代更新過(guò)程。這種操作通常稱(chēng)為消息傳遞鄰居聚合

H和X分別表示所有H和X的級(jí)聯(lián)。

通過(guò)將狀態(tài)h_v和特征x_v傳遞給輸出函數(shù)g來(lái)計(jì)算GNN的輸出。

這里的f和g都可以解釋為前饋全連接神經(jīng)網(wǎng)絡(luò)。L1損失可以直接表述為:

可以通過(guò)梯度下降來(lái)優(yōu)化。

然而,有文章指出,GNN的這一原始方法存在三個(gè)主要限制:

  • 如果放松“不動(dòng)點(diǎn)”的假設(shè),就有可能利用多層感知器來(lái)學(xué)習(xí)更穩(wěn)定的表示,并消除迭代更新過(guò)程。這是因?yàn)?#xff0c;在原方案中,不同的迭代使用相同的轉(zhuǎn)換函數(shù)f的參數(shù),而MLP不同層中不同的參數(shù)允許分層特征提取。

  • 它不能處理邊緣信息(例如,知識(shí)圖中不同的邊緣可能表示節(jié)點(diǎn)之間不同的關(guān)系)

  • 不動(dòng)點(diǎn)會(huì)阻礙節(jié)點(diǎn)分布的多樣化,因此可能不適合學(xué)習(xí)表示節(jié)點(diǎn)。

  • 三 DeepWalk

    DeepWalk是第一個(gè)提出以無(wú)監(jiān)督方式學(xué)習(xí)節(jié)點(diǎn)嵌入的算法。就訓(xùn)練過(guò)程而言,它非常類(lèi)似于單詞嵌入。其動(dòng)機(jī)是圖中節(jié)點(diǎn)和語(yǔ)料庫(kù)中單詞的分布遵循冪律,如下圖所示:

    DeepWalk采用了Random walk的思想進(jìn)行結(jié)點(diǎn)采樣。首先根據(jù)用戶(hù)的行為構(gòu)建出一個(gè)圖網(wǎng)絡(luò);隨后通過(guò)Random walk隨機(jī)采樣的方式構(gòu)建出結(jié)點(diǎn)序列(例如:一開(kāi)始在A(yíng)結(jié)點(diǎn),A->B,B又跳到了它的鄰居結(jié)點(diǎn)E,最后到F,得到"A->B->E->F"序列);對(duì)于序列的問(wèn)題就是NLP中的語(yǔ)言模型,因?yàn)槲覀兊木渥泳褪菃卧~構(gòu)成的序列。接下來(lái)我們的問(wèn)題就變成Word2vec(詞用向量表示)的問(wèn)題,采用Skip-gram的模型來(lái)得到最終的結(jié)點(diǎn)向量。可以說(shuō)這種想法確實(shí)是十分精妙,將圖結(jié)構(gòu)轉(zhuǎn)化為序列問(wèn)題確實(shí)是非常創(chuàng)新的出發(fā)點(diǎn)。在這里,結(jié)點(diǎn)走向其鄰居結(jié)點(diǎn)的概率是均等的。當(dāng)然,在有向圖和無(wú)向圖中,游走的方式也不一樣。無(wú)向圖中的游走方式為相連即可走;而有向圖中則是只沿著“出邊”的方向走。

    上圖出自阿里Embedding實(shí)踐paper:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba

    在隨機(jī)游走的每個(gè)時(shí)間步長(zhǎng)上,下一個(gè)節(jié)點(diǎn)均勻地從前一個(gè)節(jié)點(diǎn)的鄰居中采樣。然后將每個(gè)序列截?cái)酁殚L(zhǎng)度2|w| + 1的子序列,其中w表示skip-gram的窗口大小。

    本文采用層次softmax 算法,解決了節(jié)點(diǎn)數(shù)量大、計(jì)算量大的softmax問(wèn)題。要計(jì)算每個(gè)單獨(dú)輸出元素的softmax值,我們必須計(jì)算所有元素k的所有e^xk。

    因此,原始softmax的計(jì)算時(shí)間為O(|V|),其中V表示圖中頂點(diǎn)的集合。

    層次softmax利用二叉樹(shù)來(lái)處理該問(wèn)題。在這個(gè)二叉樹(shù)中,所有的葉子(上圖中的v1 v2…v8)都是圖中的頂點(diǎn)。在每個(gè)內(nèi)部節(jié)點(diǎn)中,都有一個(gè)二進(jìn)制分類(lèi)器來(lái)決定選擇哪條路徑。要計(jì)算給定頂點(diǎn)v_k的概率,只需計(jì)算從根節(jié)點(diǎn)到左節(jié)點(diǎn)的路徑上的每個(gè)子路徑的概率v_k。由于每個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)的概率之和為1,所以所有頂點(diǎn)的概率之和等于1的性質(zhì)在層次softmax中仍然成立。現(xiàn)在一個(gè)元素的計(jì)算時(shí)間減少到O(log|V|),因?yàn)槎鏄?shù)的最長(zhǎng)路徑以O(shè)(log(n))為界,其中n是葉子的數(shù)量。

    經(jīng)過(guò)DeepWalk GNN的訓(xùn)練,模型學(xué)習(xí)到每個(gè)節(jié)點(diǎn)的良好表示,如下圖所示。不同的顏色表示輸入圖中不同的標(biāo)簽。我們可以看到,在輸出圖中(2維嵌入),具有相同標(biāo)簽的節(jié)點(diǎn)聚集在一起,而具有不同標(biāo)簽的大多數(shù)節(jié)點(diǎn)被正確地分離。

    然而,DeepWalk的主要問(wèn)題是它缺乏泛化的能力。每當(dāng)一個(gè)新節(jié)點(diǎn)出現(xiàn)時(shí),它都必須對(duì)模型進(jìn)行重新訓(xùn)練,才可以表示這個(gè)節(jié)點(diǎn)。因此,這種GNN不適用于圖中節(jié)點(diǎn)不斷變化的動(dòng)態(tài)圖。

    四 GraphSage

    GraphSage提供解決上述問(wèn)題的解決方案,以歸納方式學(xué)習(xí)每個(gè)節(jié)點(diǎn)的嵌入。具體而言,每個(gè)節(jié)點(diǎn)由其鄰域的聚合表示。因此,即使在訓(xùn)練時(shí)間期間看不到的新節(jié)點(diǎn)出現(xiàn)在圖中,它仍然可以由其相鄰節(jié)點(diǎn)正確地表示。

    具體實(shí)現(xiàn)中,訓(xùn)練時(shí)它僅僅保留訓(xùn)練樣本到訓(xùn)練樣本的邊,然后包含Sample和Aggregate兩大步驟,Sample是指如何對(duì)鄰居的個(gè)數(shù)進(jìn)行采樣,Aggregate是指拿到鄰居節(jié)點(diǎn)的embedding之后如何匯聚這些embedding以更新自己的embedding信息。下圖展示了GraphSAGE學(xué)習(xí)的一個(gè)過(guò)程,

    第一步,對(duì)鄰居采樣

    第二步,采樣后的鄰居embedding傳到節(jié)點(diǎn)上來(lái),并使用一個(gè)聚合函數(shù)聚合這些鄰居信息以更新節(jié)點(diǎn)的embedding

    第三步,根據(jù)更新后的embedding預(yù)測(cè)節(jié)點(diǎn)的標(biāo)簽

    網(wǎng)絡(luò)的層數(shù)可以理解為需要最大訪(fǎng)問(wèn)的鄰居的跳數(shù)(hops),比如在上圖中,紅色節(jié)點(diǎn)的更新拿到了它一、二跳鄰居的信息,那么網(wǎng)絡(luò)層數(shù)就是2。為了更新紅色節(jié)點(diǎn),首先在第一層(k=1),我們會(huì)將藍(lán)色節(jié)點(diǎn)的信息聚合到紅色解節(jié)點(diǎn)上,將綠色節(jié)點(diǎn)的信息聚合到藍(lán)色節(jié)點(diǎn)上。在第二層(k=2)紅色節(jié)點(diǎn)的embedding被再次更新,不過(guò)這次用到的是更新后的藍(lán)色節(jié)點(diǎn)embedding,這樣就保證了紅色節(jié)點(diǎn)更新后的embedding包括藍(lán)色和綠色節(jié)點(diǎn)的信息,也就是兩跳信息。

    ?

    五 為何基于mean、max aggregate的GNN不夠強(qiáng)大

    mean和max 無(wú)法區(qū)分哪些結(jié)構(gòu)

    節(jié)點(diǎn)v和v'為中心節(jié)點(diǎn),通過(guò)聚合鄰居特征生成embeddind,分析不同aggregate設(shè)置下是否能區(qū)分不同的結(jié)構(gòu)(如果能捕獲不同結(jié)構(gòu),二者的embedding應(yīng)該不一樣)

    設(shè)紅綠藍(lán)色節(jié)點(diǎn)特征值分別為r,g,b,不考慮combine

    結(jié)論:由于mean和max-pooling 函數(shù) 不滿(mǎn)足單射性,無(wú)法區(qū)分某些結(jié)構(gòu)的圖,故性能會(huì)比sum差一點(diǎn)。

    sum, mean, max 分別可以捕獲什么信息?

    三種不同的aggregate

    • sum:學(xué)習(xí)全部的標(biāo)簽以及數(shù)量,可以學(xué)習(xí)精確的結(jié)構(gòu)信息
    • mean:學(xué)習(xí)標(biāo)簽的比例(比如兩個(gè)圖標(biāo)簽比例相同,但是節(jié)點(diǎn)有倍數(shù)關(guān)系),偏向?qū)W習(xí)分布信息
    • max:學(xué)習(xí)最大標(biāo)簽,忽略多樣,偏向?qū)W習(xí)有代表性的元素信息

    基于對(duì) graph分類(lèi),證明了 sum 比 mean 、max 效果好,但是不能說(shuō)明在node 分類(lèi)上也是這樣的效果,另外可能優(yōu)先場(chǎng)景會(huì)更關(guān)注鄰域特征分布,或者代表性, 故需要都加入進(jìn)來(lái)實(shí)驗(yàn)。

    ?

    參考:

    https://towardsdatascience.com/a-gentle-introduction-to-graph-neural-network-basics-deepwalk-and-graphsage-db5d540d50b3

    https://zhuanlan.zhihu.com/p/136521625

    How Powerful are Graph Neural Networks? GIN 圖同構(gòu)網(wǎng)絡(luò) ICLR 2019 論文詳解

    ?

    ?

    ?

    創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的[图神经网络] 图神经网络GNN基础入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。