国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

圖機(jī)器學(xué)習(xí)(GML)&圖神經(jīng)網(wǎng)絡(luò)(GNN)原理和代碼實(shí)現(xiàn)前置學(xué)習(xí)系列二

2022-12-05 13:29 作者:汀丶人工智能  | 我要投稿

項(xiàng)目鏈接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 歡迎fork歡迎三連!文章篇幅有限,部分程序出圖不一一展示,詳情進(jìn)入項(xiàng)目鏈接即可

圖機(jī)器學(xué)習(xí)(GML)&圖神經(jīng)網(wǎng)絡(luò)(GNN)原理和代碼實(shí)現(xiàn)(PGL)[前置學(xué)習(xí)系列二]

上一個(gè)項(xiàng)目對(duì)圖相關(guān)基礎(chǔ)知識(shí)進(jìn)行了詳細(xì)講述,下面進(jìn)圖GML

networkx :NetworkX 是一個(gè) Python 包,用于創(chuàng)建、操作和研究復(fù)雜網(wǎng)絡(luò)的結(jié)構(gòu)、動(dòng)力學(xué)和功能 https://networkx.org/documentation/stable/reference/algorithms/index.html

import numpy as np import random import networkx as nx from IPython.display import Image import matplotlib.pyplot as plt from sklearn.metrics import accuracy_score from sklearn.metrics import roc_curve from sklearn.metrics import roc_auc_score

1. 圖機(jī)器學(xué)習(xí)GML

圖學(xué)習(xí)的主要任務(wù)

圖學(xué)習(xí)中包含三種主要的任務(wù):

  • 鏈接預(yù)測(cè)(Link prediction)

  • 節(jié)點(diǎn)標(biāo)記預(yù)測(cè)(Node labeling)

  • 圖嵌入(Graph Embedding)

1.1鏈接預(yù)測(cè)(Link prediction)

在鏈接預(yù)測(cè)中,給定圖G,我們的目標(biāo)是預(yù)測(cè)新邊。例如,當(dāng)圖未被完全觀察時(shí),或者當(dāng)新客戶加入平臺(tái)(例如,新的LinkedIn用戶)時(shí),預(yù)測(cè)未來(lái)關(guān)系或缺失邊是很有用的。

詳細(xì)闡述一下就是:

GNN鏈接預(yù)測(cè)任務(wù),即預(yù)測(cè)圖中兩個(gè)節(jié)點(diǎn)之間的邊是否存在。在Social Recommendation,Knowledge Graph Completion等應(yīng)用中都需要進(jìn)行鏈接預(yù)測(cè)。模型實(shí)現(xiàn)上是將鏈接預(yù)測(cè)任務(wù)看成一個(gè)二分類任務(wù):

  1. 將圖中存在的邊作為正樣本;

  2. 負(fù)采樣一些圖中不存在的邊作為負(fù)樣本;

  3. 將正樣例和負(fù)樣例合并劃分為訓(xùn)練集和測(cè)試集;

  4. 可以采用二分類模型的評(píng)估指標(biāo)來(lái)評(píng)估模型的效果,

例如:AUC值在一些場(chǎng)景下例如大規(guī)模推薦系統(tǒng)或信息檢索,模型需要評(píng)估top-k預(yù)測(cè)結(jié)果的準(zhǔn)確性,因此對(duì)于鏈接預(yù)測(cè)任務(wù)還需要一些其他的評(píng)估指標(biāo)來(lái)衡量模型最終效果:

  1. MR(MeanRank)

  2. MRR(Mean Reciprocal Rank)

  3. Hit@n

MR, MRR, Hit@n指標(biāo)含義:假設(shè)整個(gè)圖譜中共n個(gè)實(shí)體,評(píng)估前先進(jìn)行如下操作:

(1)將一個(gè)正確的三元組(h,r,t)中的頭實(shí)體h或者尾實(shí)體t,依次替換成整個(gè)圖譜中的其他所有實(shí)體,這樣會(huì)產(chǎn)生n個(gè)三元組;

(2)對(duì)(1)中產(chǎn)生的n個(gè)三元組分別計(jì)算其能量值,例如在TransE中計(jì)算h+r-t的值,這樣n個(gè)三元組分別對(duì)應(yīng)自己的能量值;

(3)對(duì)上述n個(gè)三元組按照能量值進(jìn)行升序排序,記錄每個(gè)三元組排序后的序號(hào);

(4)對(duì)所有正確的三元組都進(jìn)行上述三步操作MR指標(biāo):將整個(gè)圖譜中每個(gè)正確三元組的能量值排序后的序號(hào)取平均得到的值;

  • MRR指標(biāo):將整個(gè)圖譜每個(gè)正確三元組的能量排序后的序號(hào)倒數(shù)取平均得到的值;

  • Hit@n指標(biāo):整個(gè)圖譜正確三元組的能量排序后序號(hào)小于n的三元組所占的比例。因此對(duì)于鏈接預(yù)測(cè)任務(wù)來(lái)說(shuō),MR指標(biāo)越小,模型效果越好;

  • MRR和Hit@n指標(biāo)越大,模型效果越好。接下來(lái)本文將在Cora引文數(shù)據(jù)集上,預(yù)測(cè)兩篇論文之間是否存在引用關(guān)系或被引用關(guān)系

新LinkedIn用戶的鏈接預(yù)測(cè)只是給出它可能認(rèn)識(shí)的人的建議。

在鏈路預(yù)測(cè)中,我們只是嘗試在節(jié)點(diǎn)對(duì)之間建立相似性度量,并鏈接最相似的節(jié)點(diǎn)?,F(xiàn)在的問(wèn)題是識(shí)別和計(jì)算正確的相似性分?jǐn)?shù)!

為了說(shuō)明圖中不同鏈路的相似性差異,讓我們通過(guò)下面這個(gè)圖來(lái)解釋:

設(shè)$N(i)$是節(jié)點(diǎn)$i$的一組鄰居。在上圖中,節(jié)點(diǎn)$i$和$j$的鄰居可以表示為:

$i$的鄰居:

1.1.1 相似度分?jǐn)?shù)

我們可以根據(jù)它們的鄰居為這兩個(gè)節(jié)點(diǎn)建立幾個(gè)相似度分?jǐn)?shù)。

  • 公共鄰居:$S(i,j) = \mid N(i) \cap N(j) \mid$,即公共鄰居的數(shù)量。在此示例中,分?jǐn)?shù)將為2,因?yàn)樗鼈儍H共享2個(gè)公共鄰居。


  • Jaccard系數(shù):$S(i,j) = \frac { \mid N(i) \cap N(j) \mid } { \mid N(i) \cup N(j) \mid }$,標(biāo)準(zhǔn)化的共同鄰居版本。

  • 交集是共同的鄰居,并集是:


  • 因此,Jaccard系數(shù)由粉紅色與黃色的比率計(jì)算出:


  • 值是$\frac {1} {6}$。

  • Adamic-Adar指數(shù):$S(i,j) = \sum_{k \in N(i)\cap N(j) } \frac {1} {\log \mid N(k) \mid}$。 對(duì)于節(jié)點(diǎn)i和j的每個(gè)公共鄰居(common neighbor),我們將1除以該節(jié)點(diǎn)的鄰居總數(shù)。這個(gè)概念是,當(dāng)預(yù)測(cè)兩個(gè)節(jié)點(diǎn)之間的連接時(shí),與少量節(jié)點(diǎn)之間共享的元素相比,具有非常大的鄰域的公共元素不太重要。

  • 優(yōu)先依附(Preferential attachment): $S(i,j) = \mid N(i) \mid * \mid N(j) \mid$

  • 當(dāng)社區(qū)信息可用時(shí),我們也可以在社區(qū)信息中使用它們。

  • 1.1.2 性能指標(biāo)(Performance metrics)

我們?nèi)绾芜M(jìn)行鏈接預(yù)測(cè)的評(píng)估?我們必須隱藏節(jié)點(diǎn)對(duì)的子集,并根據(jù)上面定義的規(guī)則預(yù)測(cè)它們的鏈接。這相當(dāng)于監(jiān)督學(xué)習(xí)中的train/test的劃分。 然后,我們?cè)u(píng)估密集圖的正確預(yù)測(cè)的比例,或者使用稀疏圖的標(biāo)準(zhǔn)曲線下的面積(AUC)。

參考鏈接:模型評(píng)估指標(biāo)AUC和ROC:https://cloud.tencent.com/developer/article/1508882

1.1.3 代碼實(shí)踐

這里繼續(xù)用空手道俱樂(lè)部圖來(lái)舉例:

使用在前兩篇文中提及到的Karate圖,并使用python來(lái)進(jìn)行實(shí)現(xiàn)

# 導(dǎo)入空手道俱樂(lè)部圖 n=34 m = 78 G_karate = nx.karate_club_graph() pos = nx.spring_layout(G_karate) nx.draw(G_karate, cmap = plt.get_cmap('rainbow'), with_labels=True, pos=pos) # 我們首先把有關(guān)圖的信息打印出來(lái): n = G_karate.number_of_nodes() m = G_karate.number_of_edges() print("Number of nodes : %d" % n) print("Number of edges : %d" % m) print("Number of connected components : %d" % nx.number_connected_components(G_karate)) plt.figure(figsize=(12,8)) nx.draw(G_karate, pos=pos) plt.gca().collections[0].set_edgecolor("#000000") # 現(xiàn)在,讓刪除一些連接,例如25%的邊: # Take a random sample of edges edge_subset = random.sample(G_karate.edges(), int(0.25 * G_karate.number_of_edges())) # remove some edges G_karate_train = G_karate.copy() G_karate_train.remove_edges_from(edge_subset) # 繪制部分觀察到的圖,可以對(duì)比上圖發(fā)現(xiàn),去掉了一些邊 plt.figure(figsize=(12,8)) nx.draw(G_karate_train, pos=pos) # 可以打印我們刪除的邊數(shù)和剩余邊數(shù): edge_subset_size = len(list(edge_subset)) print("Deleted : ", str(edge_subset_size)) print("Remaining : ", str((m - edge_subset_size))) # Jaccard Coefficient # 可以先使用Jaccard系數(shù)進(jìn)行預(yù)測(cè): pred_jaccard = list(nx.jaccard_coefficient(G_karate_train)) score_jaccard, label_jaccard = zip(*[(s, (u,v) in edge_subset) for (u,v,s) in pred_jaccard]) # 打印前10組結(jié)果 print(pred_jaccard[0:10]) # 預(yù)測(cè)結(jié)果如下,其中第一個(gè)是節(jié)點(diǎn),第二個(gè)是節(jié)點(diǎn),最后一個(gè)是Jaccard分?jǐn)?shù)(用來(lái)表示兩個(gè)節(jié)點(diǎn)之間邊預(yù)測(cè)的概率)# 然后我們可以使用ROC-AUC標(biāo)準(zhǔn)來(lái)比較不同模型的性能,因?yàn)槲覀兗扔姓鎸?shí)的邊(label),也有預(yù)測(cè)邊的概率(score) # Compute the ROC AUC Score # 其中,F(xiàn)PR是False Positive Rate, TPR是True Positive Rate fpr_jaccard, tpr_jaccard, _ = roc_curve(label_jaccard, score_jaccard) auc_jaccard = roc_auc_score(label_jaccard, score_jaccard) print(auc_jaccard) # Adamic-Adar # 現(xiàn)在計(jì)算Adamic-Adar指數(shù)和對(duì)應(yīng)的ROC-AUC分?jǐn)?shù) # Prediction using Adamic Adar pred_adamic = list(nx.adamic_adar_index(G_karate_train)) score_adamic, label_adamic = zip(*[(s, (u,v) in edge_subset) for (u,v,s) in pred_adamic]) print(pred_adamic[0:10]) # Compute the ROC AUC Score fpr_adamic, tpr_adamic, _ = roc_curve(label_adamic, score_adamic) auc_adamic = roc_auc_score(label_adamic, score_adamic) print(auc_adamic) # Compute the Preferential Attachment # 同樣,可以計(jì)算Preferential Attachment得分和對(duì)應(yīng)的ROC-AUC分?jǐn)?shù) pred_pref = list(nx.preferential_attachment(G_karate_train)) score_pref, label_pref = zip(*[(s, (u,v) in edge_subset) for (u,v,s) in pred_pref]) print(pred_pref[0:10]) fpr_pref, tpr_pref, _ = roc_curve(label_pref, score_pref) auc_pref = roc_auc_score(label_pref, score_pref) print(auc_pref)# 繪制ROC-AUC來(lái)評(píng)價(jià)預(yù)測(cè)的效果 plt.figure(figsize=(12, 8)) plt.plot(fpr_jaccard, tpr_jaccard, label='Jaccard Coefficient - AUC %.2f' % auc_jaccard, linewidth=4) plt.plot(fpr_adamic, tpr_adamic, label='Adamic-Adar - AUC %.2f' % auc_adamic, linewidth=4) plt.plot(fpr_pref, tpr_pref, label='Preferential Attachment - AUC %.2f' % auc_pref, linewidth=4) plt.plot([0, 1], [0, 1], 'k--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.0]) plt.xlabel('False positive rate') plt.ylabel('True positive rate') plt.title("ROC AUC Curve") plt.legend(loc='lower right') plt.show()

1.2 節(jié)點(diǎn)標(biāo)記預(yù)測(cè)(Node labeling)

給定一個(gè)未標(biāo)記某些節(jié)點(diǎn)的圖,我們希望對(duì)這些節(jié)點(diǎn)的標(biāo)簽進(jìn)行預(yù)測(cè)。這在某種意義上是一種半監(jiān)督的學(xué)習(xí)問(wèn)題。

處理這些問(wèn)題的一種常見方法是假設(shè)圖上有一定的平滑度。平滑度假設(shè)指出通過(guò)數(shù)據(jù)上的高密度區(qū)域的路徑連接地點(diǎn)可能具有相似的標(biāo)簽。這是標(biāo)簽傳播算法背后的主要假設(shè)。

標(biāo)簽傳播算法(Label Propagation Algorithm,LPA)是一種快速算法,僅使用網(wǎng)絡(luò)結(jié)構(gòu)作為指導(dǎo)來(lái)發(fā)現(xiàn)圖中的社區(qū),而無(wú)需任何預(yù)定義的目標(biāo)函數(shù)或關(guān)于社區(qū)的先驗(yàn)信息。

單個(gè)標(biāo)簽在密集連接的節(jié)點(diǎn)組中迅速占據(jù)主導(dǎo)地位,但是在穿過(guò)稀疏連接區(qū)域時(shí)會(huì)遇到問(wèn)題。

半監(jiān)督標(biāo)簽傳播算法是如何工作?

首先,我們有一些數(shù)據(jù):$x1, …, xl, x{l+1}, …, xn \in R^p$,,以及前$l$個(gè)點(diǎn)的標(biāo)簽:$y1, …, yl \in 1…C$.

我們定義初始標(biāo)簽矩陣$Y \in R^{n \times C}$,如果$xi$具有標(biāo)簽$yi=j$則$Y_{ij} = 1$,否則為0。

該算法將生成預(yù)測(cè)矩陣$F \in R^{n \times C}$,我們將在下面詳述。然后,我們通過(guò)查找最可能的標(biāo)簽來(lái)預(yù)測(cè)節(jié)點(diǎn)的標(biāo)簽:

$\hat{Yi} = argmaxj F_{i,j}$

預(yù)測(cè)矩陣$F$是什么?

預(yù)測(cè)矩陣是矩陣$F^{\star}$,其最小化平滑度和準(zhǔn)確度。因此,我們的結(jié)果在平滑性和準(zhǔn)確性之間進(jìn)行權(quán)衡。

問(wèn)題的描述非常復(fù)雜,所以我將不會(huì)詳細(xì)介紹。但是,解決方案是:

$F^{\star} = ( (1-\alpha)I + L_{sym})^{-1} Y$

其中:

  • 參數(shù)$\alpha = \frac {1} {1+\mu}$

  • $Y$是給定的標(biāo)簽

  • $L_{sym}$是圖的歸一化拉普拉斯矩陣(Laplacian matrix)

如果您想進(jìn)一步了解這個(gè)主題,請(qǐng)關(guān)注圖函數(shù)的平滑度和流形正則化的概念。斯坦福有一套很好的標(biāo)簽圖可以下載:https://snap.stanford.edu/data/

Networkx直接實(shí)現(xiàn)標(biāo)簽傳播:https://networkx.github.io/documentation/latest/reference/algorithms/generated/networkx.algorithms.community.labelpropagation.labelpropagation_communities.html

接下來(lái)我們用python來(lái)實(shí)現(xiàn)節(jié)點(diǎn)標(biāo)簽的預(yù)測(cè)。 為了給我們使用到的標(biāo)簽添加更多的特征,我們需要使用來(lái)自Facebook的真實(shí)數(shù)據(jù)。你可以再這里下載,然后放到facebook路徑下。

Facebook 數(shù)據(jù)已通過(guò)將每個(gè)用戶的 Facebook 內(nèi)部 id 替換為新值來(lái)匿名化。此外,雖然已經(jīng)提供了來(lái)自該數(shù)據(jù)集的特征向量,但對(duì)這些特征的解釋卻很模糊。例如,如果原始數(shù)據(jù)集可能包含特征“political=Democratic Party”,則新數(shù)據(jù)將僅包含“political=anonymized feature 1”。因此,使用匿名數(shù)據(jù)可以確定兩個(gè)用戶是否具有相同的政治派別,但不能確定他們各自的政治派別代表什么。

我已經(jīng)把數(shù)據(jù)集放在目錄里了,就不需要下載了

1.2.1 代碼實(shí)現(xiàn)標(biāo)簽擴(kuò)散

G_fb = nx.read_edgelist("facebook/3980.edges") n = G_fb.number_of_nodes() m = G_fb.number_of_edges() print("Number of nodes: %d" % n) print("Number of edges: %d" % m) print("Number of connected components: %d" % nx.number_connected_components(G_fb)) # 我們把圖數(shù)據(jù)顯示出來(lái): mapping=dict(zip(G_fb.nodes(), range(n))) nx.relabel_nodes(G_fb, mapping, copy=False) pos = nx.spring_layout(G_fb) plt.figure(figsize=(12,8)) nx.draw(G_fb, node_size=200, pos=pos) plt.gca().collections[0].set_edgecolor("#000000") with open('facebook/3980.featnames') as f: ? ?for i, l in enumerate(f): ? ? ? ?pass n_feat = i+1 features = np.zeros((n, n_feat)) f = open('facebook/3980.feat', 'r') for line in f: ? ?if line.split()[0] in mapping: ? ? ? ?node_id = mapping[line.split()[0]] ? ? ? ?features[node_id, :] = list(map(int, line.split()[1:])) features = 2*features-1 feat_id = 6 ?#特征選擇id,自行設(shè)置 labels = features[:, feat_id] plt.figure(figsize=(12,8)) nx.draw(G_fb, cmap = plt.get_cmap('bwr'), nodelist=range(n), node_color = labels, node_size=200, pos=pos) plt.gca().collections[0].set_edgecolor("#000000") plt.show() # 這個(gè)所選擇的特征,在圖中相對(duì)平滑,因此擁有較好的學(xué)習(xí)傳播性能。 # 為了闡述節(jié)點(diǎn)標(biāo)簽預(yù)測(cè)是如何進(jìn)行的,我們首先要?jiǎng)h掉一些節(jié)點(diǎn)的標(biāo)簽,作為要預(yù)測(cè)的對(duì)象。這里我們只保留了30%的節(jié)點(diǎn)標(biāo)簽:random.seed(5) proportion_nodes = 0.3 labeled_nodes = random.sample(G_fb.nodes(), int(proportion_nodes * G_fb.number_of_nodes())) known_labels = np.zeros(n) known_labels[labeled_nodes] = labels[labeled_nodes] plt.figure(figsize=(12,8)) nx.draw(G_fb, cmap = plt.get_cmap('bwr'), nodelist=range(n), node_color = known_labels, node_size=200, pos=pos) plt.gca().collections[0].set_edgecolor("#000000") # set node border color to black plt.show()

1.3 圖嵌入(Graph Embedding)

嵌入的學(xué)習(xí)方式與 word2vec 的 skip-gram 嵌入的學(xué)習(xí)方式相同,使用的是 skip-gram 模型。問(wèn)題是,我們?nèi)绾螢?Node2Vec 生成輸入語(yǔ)料庫(kù)?數(shù)據(jù)要復(fù)雜得多,即(非)定向、(非)加權(quán)、(a)循環(huán)……

為了生成語(yǔ)料庫(kù),我們使用隨機(jī)游走采樣策略:

在處理NLP或計(jì)算機(jī)視覺(jué)問(wèn)題時(shí),我們習(xí)慣在深度神經(jīng)網(wǎng)絡(luò)中對(duì)圖像或文本進(jìn)行嵌入(embedding)。到目前為止,我們所看到的圖的一個(gè)局限性是沒(méi)有向量特征。但是,我們可以學(xué)習(xí)圖的嵌入!圖有不同幾個(gè)級(jí)別的嵌入:

  • 對(duì)圖的組件進(jìn)行嵌入(節(jié)點(diǎn),邊,特征…)(Node2Vec) node2vec是一個(gè)用于圖表示學(xué)習(xí)的算法框架。給定任何圖,它可以學(xué)習(xí)節(jié)點(diǎn)的連續(xù)特征表示,然后可以用于各種下游機(jī)器學(xué)習(xí)任務(wù)。


  • 對(duì)圖的子圖或整個(gè)圖進(jìn)行嵌入(Graph2Vec) Learning Distributed Representations of Graphs

  • 學(xué)習(xí)圖的分布式表示

  • 最近關(guān)于圖結(jié)構(gòu)化數(shù)據(jù)的表示學(xué)習(xí)的工作主要集中在學(xué)習(xí)圖子結(jié)構(gòu)(例如節(jié)點(diǎn)和子圖)的分布式表示。然而,許多圖分析任務(wù)(例如圖分類和聚類)需要將整個(gè)圖表示為固定長(zhǎng)度的特征向量。雖然上述方法自然不具備學(xué)習(xí)這種表示的能力,但圖內(nèi)核仍然是獲得它們的最有效方法。然而,這些圖內(nèi)核使用手工制作的特征(例如,最短路徑、graphlet 等),因此受到泛化性差等問(wèn)題的阻礙。為了解決這個(gè)限制,在這項(xiàng)工作中,我們提出了一個(gè)名為 graph2vec 的神經(jīng)嵌入框架來(lái)學(xué)習(xí)任意大小圖的數(shù)據(jù)驅(qū)動(dòng)的分布式表示。圖2vec' s 嵌入是以無(wú)監(jiān)督的方式學(xué)習(xí)的,并且與任務(wù)無(wú)關(guān)。因此,它們可以用于任何下游任務(wù),例如圖分類、聚類甚至播種監(jiān)督表示學(xué)習(xí)方法。我們?cè)趲讉€(gè)基準(zhǔn)和大型現(xiàn)實(shí)世界數(shù)據(jù)集上的實(shí)驗(yàn)表明,graph2vec 在分類和聚類精度方面比子結(jié)構(gòu)表示學(xué)習(xí)方法有顯著提高,并且可以與最先進(jìn)的圖內(nèi)核競(jìng)爭(zhēng)。

  • 1.3.1. 節(jié)點(diǎn)嵌入(Node Embedding)

我們首先關(guān)注的是圖組件的嵌入。有幾種方法可以對(duì)節(jié)點(diǎn)或邊進(jìn)行嵌入。例如,DeepWalk【http://www.perozzi.net/projects/deepwalk/ 】 使用短隨機(jī)游走來(lái)學(xué)習(xí)圖中邊的表示。我們將討論Node2Vec,這篇論文由2016年斯坦福大學(xué)的Aditya Grover和Jure Leskovec發(fā)表。

作者說(shuō):“node2vec是一個(gè)用于圖表示學(xué)習(xí)的算法框架。給定任何圖,它可以學(xué)習(xí)節(jié)點(diǎn)的連續(xù)特征表示,然后可以用于各種下游機(jī)器學(xué)習(xí)任務(wù)?!?/p>

該模型通過(guò)使用隨機(jī)游走,優(yōu)化鄰域保持目標(biāo)來(lái)學(xué)習(xí)節(jié)點(diǎn)的低維表示。

Node2Vec的代碼可以在GitHub上找到: https://github.com/eliorc/node2vec

部分程序出圖不一一展示,詳情進(jìn)入項(xiàng)目鏈接即可

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

2.1GNN引言

圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Networks,GNN)綜述鏈接:https://zhuanlan.zhihu.com/p/75307407?fromvoterspage=true 譯文

https://arxiv.org/pdf/1901.00596.pdf 原始文章 最新版本V4版本

近年來(lái),深度學(xué)習(xí)徹底改變了許多機(jī)器學(xué)習(xí)任務(wù),從圖像分類和視頻處理到語(yǔ)音識(shí)別和自然語(yǔ)言理解。這些任務(wù)中的數(shù)據(jù)通常在歐幾里得空間中表示。然而,越來(lái)越多的應(yīng)用程序?qū)?shù)據(jù)從非歐幾里德域生成并表示為具有復(fù)雜關(guān)系和對(duì)象之間相互依賴關(guān)系的圖。圖數(shù)據(jù)的復(fù)雜性對(duì)現(xiàn)有的機(jī)器學(xué)習(xí)算法提出了重大挑戰(zhàn)。最近,出現(xiàn)了許多關(guān)于擴(kuò)展圖數(shù)據(jù)深度學(xué)習(xí)方法的研究。在本次調(diào)查中,我們?nèi)娓攀隽藬?shù)據(jù)挖掘和機(jī)器學(xué)習(xí)領(lǐng)域中的圖神經(jīng)網(wǎng)絡(luò) (GNN)。我們提出了一種新的分類法,將最先進(jìn)的圖神經(jīng)網(wǎng)絡(luò)分為四類,即循環(huán)圖神經(jīng)網(wǎng)絡(luò)、卷積圖神經(jīng)網(wǎng)絡(luò)、圖自動(dòng)編碼器和時(shí)空?qǐng)D神經(jīng)網(wǎng)絡(luò)。我們進(jìn)一步討論了圖神經(jīng)網(wǎng)絡(luò)在各個(gè)領(lǐng)域的應(yīng)用,并總結(jié)了圖神經(jīng)網(wǎng)絡(luò)的開源代碼、基準(zhǔn)數(shù)據(jù)集和模型評(píng)估。最后,我們?cè)谶@個(gè)快速發(fā)展的領(lǐng)域提出了潛在的研究方向

神經(jīng)網(wǎng)絡(luò)最近的成功推動(dòng)了模式識(shí)別和數(shù)據(jù)挖掘的研究。許多機(jī)器學(xué)習(xí)任務(wù),如對(duì)象檢測(cè) [1]、[2]、機(jī)器翻譯 [3]、[4] 和語(yǔ)音識(shí)別 [5],曾經(jīng)嚴(yán)重依賴手工特征工程來(lái)提取信息特征集,最近已經(jīng)由各種端到端深度學(xué)習(xí)范例徹底改變,例如卷積神經(jīng)網(wǎng)絡(luò) (CNN) [6]、遞歸神經(jīng)網(wǎng)絡(luò) (RNN) [7] 和自動(dòng)編碼器 [8]。深度學(xué)習(xí)在許多領(lǐng)域的成功部分歸功于快速發(fā)展的計(jì)算資源(例如 GPU)、大訓(xùn)練數(shù)據(jù)的可用性以及深度學(xué)習(xí)從歐幾里得數(shù)據(jù)(例如圖像、文本、和視頻)。以圖像數(shù)據(jù)為例,我們可以將圖像表示為歐幾里得空間中的規(guī)則網(wǎng)格。卷積神經(jīng)網(wǎng)絡(luò) (CNN) 能夠利用圖像數(shù)據(jù)的移位不變性、局部連通性和組合性 [9]。因此,CNN 可以提取與整個(gè)數(shù)據(jù)集共享的局部有意義的特征,用于各種圖像分析。

雖然深度學(xué)習(xí)有效地捕獲了歐幾里得數(shù)據(jù)的隱藏模式,但越來(lái)越多的應(yīng)用程序?qū)?shù)據(jù)以圖形的形式表示。例如,在電子商務(wù)中,基于圖的學(xué)習(xí)系統(tǒng)可以利用用戶和產(chǎn)品之間的交互來(lái)做出高度準(zhǔn)確的推薦。在化學(xué)中,分子被建模為圖形,并且需要確定它們的生物活性以進(jìn)行藥物發(fā)現(xiàn)。在引文網(wǎng)絡(luò)中,論文通過(guò)引文相互鏈接,并且需要將它們分類到不同的組中。圖數(shù)據(jù)的復(fù)雜性對(duì)現(xiàn)有的機(jī)器學(xué)習(xí)算法提出了重大挑戰(zhàn)。由于圖可能是不規(guī)則的,圖可能具有可變大小的無(wú)序節(jié)點(diǎn),并且來(lái)自圖中的節(jié)點(diǎn)可能具有不同數(shù)量的鄰居,導(dǎo)致一些重要的操作(例如卷積)在圖像域中很容易計(jì)算,但是難以應(yīng)用于圖域。此外,現(xiàn)有機(jī)器學(xué)習(xí)算法的一個(gè)核心假設(shè)是實(shí)例相互獨(dú)立。這個(gè)假設(shè)不再適用于圖數(shù)據(jù),因?yàn)槊總€(gè)實(shí)例(節(jié)點(diǎn))通過(guò)各種類型的鏈接(例如引用、友誼和交互)與其他實(shí)例相關(guān)聯(lián)。

最近,人們對(duì)擴(kuò)展圖形數(shù)據(jù)的深度學(xué)習(xí)方法越來(lái)越感興趣。受來(lái)自深度學(xué)習(xí)的 CNN、RNN 和自動(dòng)編碼器的推動(dòng),在過(guò)去幾年中,重要操作的新泛化和定義迅速發(fā)展,以處理圖數(shù)據(jù)的復(fù)雜性。例如,可以從 2D 卷積推廣圖卷積。如圖 1 所示,可以將圖像視為圖形的特殊情況,其中像素由相鄰像素連接。與 2D 卷積類似,可以通過(guò)取節(jié)點(diǎn)鄰域信息的加權(quán)平均值來(lái)執(zhí)行圖卷積。

二維卷積類似于圖,圖像中的每個(gè)像素都被視為一個(gè)節(jié)點(diǎn),其中鄰居由過(guò)濾器大小確定。 2D 卷積取紅色節(jié)點(diǎn)及其鄰居像素值的加權(quán)平均值。 節(jié)點(diǎn)的鄰居是有序的并且具有固定的大小。

圖卷積。 為了得到紅色節(jié)點(diǎn)的隱藏表示,圖卷積運(yùn)算的一個(gè)簡(jiǎn)單解決方案是取紅色節(jié)點(diǎn)及其鄰居節(jié)點(diǎn)特征的平均值。 與圖像數(shù)據(jù)不同,節(jié)點(diǎn)的鄰居是無(wú)序且大小可變的。

發(fā)展:

圖神經(jīng)網(wǎng)絡(luò) (GNN) Sperduti 等人的簡(jiǎn)史。 (1997) [13] 首次將神經(jīng)網(wǎng)絡(luò)應(yīng)用于有向無(wú)環(huán)圖,這激發(fā)了對(duì) GNN 的早期研究。圖神經(jīng)網(wǎng)絡(luò)的概念最初是在 Gori 等人中概述的。 (2005) [14] 并在 Scarselli 等人中進(jìn)一步闡述。 (2009) [15] 和 Gallicchio 等人。 (2010) [16]。這些早期研究屬于循環(huán)圖神經(jīng)網(wǎng)絡(luò)(RecGNNs)的范疇。他們通過(guò)以迭代方式傳播鄰居信息來(lái)學(xué)習(xí)目標(biāo)節(jié)點(diǎn)的表示,直到達(dá)到一個(gè)穩(wěn)定的固定點(diǎn)。這個(gè)過(guò)程在計(jì)算上是昂貴的,并且最近已經(jīng)越來(lái)越多地努力克服這些挑戰(zhàn)[17],[18]。 受 CNN 在計(jì)算機(jī)視覺(jué)領(lǐng)域的成功的鼓舞,大量重新定義圖數(shù)據(jù)卷積概念的方法被并行開發(fā)。這些方法屬于卷積圖神經(jīng)網(wǎng)絡(luò) (ConvGNN) 的范疇。 ConvGNN 分為兩個(gè)主流,基于光譜的方法和基于空間的方法。 Bruna 等人提出了第一個(gè)關(guān)于基于光譜的 ConvGNN 的杰出研究。

(2013)[19],它開發(fā)了一種基于譜圖理論的圖卷積。從那時(shí)起,基于譜的 ConvGNN [20]、[21]、[22]、[23] 的改進(jìn)、擴(kuò)展和近似值不斷增加?;诳臻g的 ConvGNN 的研究比基于光譜的 ConvGNN 早得多。 2009 年,Micheli 等人。 [24] 首先通過(guò)架構(gòu)復(fù)合非遞歸層解決了圖相互依賴問(wèn)題,同時(shí)繼承了 RecGNN 的消息傳遞思想。然而,這項(xiàng)工作的重要性被忽視了。直到最近,出現(xiàn)了許多基于空間的 ConvGNN(例如,[25]、[26]、[27])。代表性 RecGNNs 和 ConvGNNs 的時(shí)間線如表 II 的第一列所示。除了 RecGNNs 和 ConvGNNs,在過(guò)去幾年中還開發(fā)了許多替代 GNN,包括圖自動(dòng)編碼器 (GAE) 和時(shí)空?qǐng)D神經(jīng)網(wǎng)絡(luò) (STGNN)。這些學(xué)習(xí)框架可以建立在 RecGNN、ConvGNN 或其他用于圖建模的神經(jīng)架構(gòu)上。

綜述總結(jié)如下:

  1. 新分類 我們提出了一種新的圖神經(jīng)網(wǎng)絡(luò)分類。圖神經(jīng)網(wǎng)絡(luò)分為四組:循環(huán)圖神經(jīng)網(wǎng)絡(luò)、卷積圖神經(jīng)網(wǎng)絡(luò)、圖自動(dòng)編碼器和時(shí)空?qǐng)D神經(jīng)網(wǎng)絡(luò)。

  2. 綜合回顧 我們提供了最全面的圖數(shù)據(jù)現(xiàn)代深度學(xué)習(xí)技術(shù)概覽。對(duì)于每種類型的圖神經(jīng)網(wǎng)絡(luò),我們都提供了代表性模型的詳細(xì)描述,進(jìn)行了必要的比較,并總結(jié)了相應(yīng)的算法。

  3. 豐富的資源我們收集了豐富的圖神經(jīng)網(wǎng)絡(luò)資源,包括最先進(jìn)的模型、基準(zhǔn)數(shù)據(jù)集、開源代碼和實(shí)際應(yīng)用。本調(diào)查可用作理解、使用和開發(fā)適用于各種現(xiàn)實(shí)生活應(yīng)用的不同深度學(xué)習(xí)方法的實(shí)踐指南。

  4. 未來(lái)方向 我們討論了圖神經(jīng)網(wǎng)絡(luò)的理論方面,分析了現(xiàn)有方法的局限性,并在模型深度、可擴(kuò)展性權(quán)衡、異質(zhì)性和動(dòng)態(tài)性方面提出了四個(gè)可能的未來(lái)研究方向。

2.2 神經(jīng)網(wǎng)絡(luò)類型

在本節(jié)中,我們介紹了圖神經(jīng)網(wǎng)絡(luò) (GNN) 的分類,如表 II 所示。 我們將圖神經(jīng)網(wǎng)絡(luò) (GNN) 分為循環(huán)圖神經(jīng)網(wǎng)絡(luò) (RecGNN)、卷積圖神經(jīng)網(wǎng)絡(luò) (ConvGNN)、圖自動(dòng)編碼器 (GAE) 和時(shí)空?qǐng)D神經(jīng)網(wǎng)絡(luò) (STGNN)。 圖 2 給出了各種模型架構(gòu)的示例。 下面,我們對(duì)每個(gè)類別進(jìn)行簡(jiǎn)要介紹。

2.2.1循環(huán)圖神經(jīng)網(wǎng)絡(luò)(RecGNNs,Recurrent graph neural networks )

循環(huán)圖神經(jīng)網(wǎng)絡(luò)(RecGNNs)大多是圖神經(jīng)網(wǎng)絡(luò)的先驅(qū)作品。 RecGNN 旨在學(xué)習(xí)具有循環(huán)神經(jīng)架構(gòu)的節(jié)點(diǎn)表示。 他們假設(shè)圖中的一個(gè)節(jié)點(diǎn)不斷地與其鄰居交換信息/消息,直到達(dá)到穩(wěn)定的平衡。 RecGNN 在概念上很重要,并啟發(fā)了后來(lái)對(duì)卷積圖神經(jīng)網(wǎng)絡(luò)的研究。 特別是,基于空間的卷積圖神經(jīng)網(wǎng)絡(luò)繼承了消息傳遞的思想。

2.2.2 卷積圖神經(jīng)網(wǎng)絡(luò) (ConvGNNs,Convolutional graph neural networks)

卷積圖神經(jīng)網(wǎng)絡(luò) (ConvGNNs) 將卷積操作從網(wǎng)格數(shù)據(jù)推廣到圖數(shù)據(jù)。 主要思想是通過(guò)聚合它自己的特征 xv 和鄰居的特征 xu 來(lái)生成節(jié)點(diǎn) v 的表示,其中 u ∈ N(v)。 與 RecGNN 不同,ConvGNN 堆疊多個(gè)圖卷積層以提取高級(jí)節(jié)點(diǎn)表示。 ConvGNN 在構(gòu)建許多其他復(fù)雜的 GNN 模型中發(fā)揮著核心作用。 圖 2a 顯示了用于節(jié)點(diǎn)分類的 ConvGNN。 圖 2b 展示了用于圖分類的 ConvGNN。

2.2.3圖自動(dòng)編碼器 (GAE,Graph autoencoders (GAEs))

是無(wú)監(jiān)督學(xué)習(xí)框架,它將節(jié)點(diǎn)/圖編碼到潛在向量空間并從編碼信息中重建圖數(shù)據(jù)。 GAE 用于學(xué)習(xí)網(wǎng)絡(luò)嵌入和圖形生成分布。 對(duì)于網(wǎng)絡(luò)嵌入,GAE 通過(guò)重構(gòu)圖結(jié)構(gòu)信息(例如圖鄰接矩陣)來(lái)學(xué)習(xí)潛在節(jié)點(diǎn)表示。 對(duì)于圖的生成,一些方法逐步生成圖的節(jié)點(diǎn)和邊,而另一些方法一次全部輸出圖。 圖 2c 展示了一個(gè)用于網(wǎng)絡(luò)嵌入的 GAE。

2.2.4 時(shí)空?qǐng)D神經(jīng)網(wǎng)絡(luò) (STGNN,Spatial-temporal graph neural networks)

旨在從時(shí)空?qǐng)D中學(xué)習(xí)隱藏模式,這在各種應(yīng)用中變得越來(lái)越重要,例如交通速度預(yù)測(cè) [72]、駕駛員機(jī)動(dòng)預(yù)期 [73] 和人類動(dòng)作識(shí)別 [ 75]。 STGNN 的關(guān)鍵思想是同時(shí)考慮空間依賴和時(shí)間依賴。 許多當(dāng)前的方法集成了圖卷積來(lái)捕獲空間依賴性,并使用 RNN 或 CNN 對(duì)時(shí)間依賴性進(jìn)行建模。 圖 2d 說(shuō)明了用于時(shí)空?qǐng)D預(yù)測(cè)的 STGNN。

具體公式推到見論文!

2.3圖神經(jīng)網(wǎng)絡(luò)的應(yīng)用

GNN 在不同的任務(wù)和領(lǐng)域中有許多應(yīng)用。 盡管每個(gè)類別的 GNN 都可以直接處理一般任務(wù),包括節(jié)點(diǎn)分類、圖分類、網(wǎng)絡(luò)嵌入、圖生成和時(shí)空?qǐng)D預(yù)測(cè),但其他與圖相關(guān)的一般任務(wù),如節(jié)點(diǎn)聚類 [134]、鏈接預(yù)測(cè) [135 ],圖分割[136]也可以通過(guò)GNN來(lái)解決。 我們?cè)敿?xì)介紹了基于以下研究領(lǐng)域的一些應(yīng)用。

計(jì)算機(jī)視覺(jué)(Computer vision)

計(jì)算機(jī)視覺(jué) GNN 在計(jì)算機(jī)視覺(jué)中的應(yīng)用包括場(chǎng)景圖生成、點(diǎn)云分類和動(dòng)作識(shí)別。識(shí)別對(duì)象之間的語(yǔ)義關(guān)系有助于理解視覺(jué)場(chǎng)景背后的含義。 場(chǎng)景圖生成模型旨在將圖像解析為由對(duì)象及其語(yǔ)義關(guān)系組成的語(yǔ)義圖 [137]、[138]、[139]。另一個(gè)應(yīng)用程序通過(guò)在給定場(chǎng)景圖的情況下生成逼真的圖像來(lái)反轉(zhuǎn)該過(guò)程 [140]。由于自然語(yǔ)言可以被解析為每個(gè)單詞代表一個(gè)對(duì)象的語(yǔ)義圖,因此它是一種很有前途的解決方案,可以在給定文本描述的情況下合成圖像。 分類和分割點(diǎn)云使 LiDAR 設(shè)備能夠“看到”周圍環(huán)境。點(diǎn)云是由 LiDAR 掃描記錄的一組 3D 點(diǎn)。 [141]、[142]、[143] 將點(diǎn)云轉(zhuǎn)換為 k-最近鄰圖或超點(diǎn)圖,并使用 ConvGNN 探索拓?fù)浣Y(jié)構(gòu)。 識(shí)別視頻中包含的人類行為有助于從機(jī)器方面更好地理解視頻內(nèi)容。一些解決方案檢測(cè)視頻剪輯中人體關(guān)節(jié)的位置。由骨骼連接起來(lái)的人體關(guān)節(jié)自然形成了一個(gè)圖形。給定人類關(guān)節(jié)位置的時(shí)間序列,[73]、[75] 應(yīng)用 STGNN 來(lái)學(xué)習(xí)人類動(dòng)作模式。 此外,GNN 在計(jì)算機(jī)視覺(jué)中的適用方向數(shù)量仍在增長(zhǎng)。它包括人-物交互[144]、小樣本圖像分類[145]、[146]、[147]、語(yǔ)義分割[148]、[149]、視覺(jué)推理[150]和問(wèn)答[151]。

自然語(yǔ)言處理(Natural language processing )

自然語(yǔ)言處理 GNN 在自然語(yǔ)言處理中的一個(gè)常見應(yīng)用是文本分類。 GNN 利用文檔或單詞的相互關(guān)系來(lái)推斷文檔標(biāo)簽 [22]、[42]、[43]。 盡管自然語(yǔ)言數(shù)據(jù)表現(xiàn)出順序,但它們也可能包含內(nèi)部圖結(jié)構(gòu),例如句法依賴樹。句法依賴樹定義了句子中單詞之間的句法關(guān)系。 Marcheggiani 等人。 [152] 提出了在 CNN/RNN 句子編碼器之上運(yùn)行的句法 GCN。 Syntactic GCN 基于句子的句法依賴樹聚合隱藏的單詞表示。巴斯廷斯等人。 [153] 將句法 GCN 應(yīng)用于神經(jīng)機(jī)器翻譯任務(wù)。 Marcheggiani 等人。[154] 進(jìn)一步采用與 Bastings 等人相同的模型。 [153]處理句子的語(yǔ)義依賴圖。 圖到序列學(xué)習(xí)學(xué)習(xí)在給定抽象詞的語(yǔ)義圖(稱為抽象意義表示)的情況下生成具有相同含義的句子。宋等人。 [155] 提出了一種圖 LSTM 來(lái)編碼圖級(jí)語(yǔ)義信息。貝克等人。 [156] 將 GGNN [17] 應(yīng)用于圖到序列學(xué)習(xí)和神經(jīng)機(jī)器翻譯。逆向任務(wù)是序列到圖的學(xué)習(xí)。給定句子生成語(yǔ)義或知識(shí)圖在知識(shí)發(fā)現(xiàn)中非常有用

交通 Traffic

準(zhǔn)確預(yù)測(cè)交通網(wǎng)絡(luò)中的交通速度、交通量或道路密度對(duì)于智能交通系統(tǒng)至關(guān)重要。 [48]、[72]、[74] 使用 STGNN 解決交通預(yù)測(cè)問(wèn)題。 他們將交通網(wǎng)絡(luò)視為一個(gè)時(shí)空?qǐng)D,其中節(jié)點(diǎn)是安裝在道路上的傳感器,邊緣由節(jié)點(diǎn)對(duì)之間的距離測(cè)量,每個(gè)節(jié)點(diǎn)將窗口內(nèi)的平均交通速度作為動(dòng)態(tài)輸入特征。 另一個(gè)工業(yè)級(jí)應(yīng)用是出租車需求預(yù)測(cè)。 鑒于歷史出租車需求、位置信息、天氣數(shù)據(jù)和事件特征,Yao 等人。 [159] 結(jié)合 LSTM、CNN 和由 LINE [160] 訓(xùn)練的網(wǎng)絡(luò)嵌入,形成每個(gè)位置的聯(lián)合表示,以預(yù)測(cè)時(shí)間間隔內(nèi)某個(gè)位置所需的出租車數(shù)量。

推薦系統(tǒng) Recommender systems

基于圖的推薦系統(tǒng)將項(xiàng)目和用戶作為節(jié)點(diǎn)。 通過(guò)利用項(xiàng)目與項(xiàng)目、用戶與用戶、用戶與項(xiàng)目之間的關(guān)系以及內(nèi)容信息,基于圖的推薦系統(tǒng)能夠產(chǎn)生高質(zhì)量的推薦。 推薦系統(tǒng)的關(guān)鍵是對(duì)項(xiàng)目對(duì)用戶的重要性進(jìn)行評(píng)分。 結(jié)果,它可以被轉(zhuǎn)換為鏈接預(yù)測(cè)問(wèn)題。 為了預(yù)測(cè)用戶和項(xiàng)目之間缺失的鏈接,Van 等人。 [161] 和英等人。 [162] 提出了一種使用 ConvGNN 作為編碼器的 GAE。 蒙蒂等人。 [163] 將 RNN 與圖卷積相結(jié)合,以學(xué)習(xí)生成已知評(píng)級(jí)的底層過(guò)程

化學(xué) Chemistry

在化學(xué)領(lǐng)域,研究人員應(yīng)用 GNN 來(lái)研究分子/化合物的圖形結(jié)構(gòu)。 在分子/化合物圖中,原子被視為節(jié)點(diǎn),化學(xué)鍵被視為邊緣。 節(jié)點(diǎn)分類、圖分類和圖生成是針對(duì)分子/化合物圖的三個(gè)主要任務(wù),以學(xué)習(xí)分子指紋 [85]、[86]、預(yù)測(cè)分子特性 [27]、推斷蛋白質(zhì)界面 [164] 和 合成化合物

其他

GNN 的應(yīng)用不僅限于上述領(lǐng)域和任務(wù)。 已經(jīng)探索將 GNN 應(yīng)用于各種問(wèn)題,例如程序驗(yàn)證 [17]、程序推理 [166]、社會(huì)影響預(yù)測(cè) [167]、對(duì)抗性攻擊預(yù)防 [168]、電子健康記錄建模 [169]、[170] ]、大腦網(wǎng)絡(luò)[171]、事件檢測(cè)[172]和組合優(yōu)化[173]。

2.4未來(lái)方向

盡管 GNN 已經(jīng)證明了它們?cè)趯W(xué)習(xí)圖數(shù)據(jù)方面的能力,但由于圖的復(fù)雜性,挑戰(zhàn)仍然存在。

模型深度 Model depth

深度學(xué)習(xí)的成功在于深度神經(jīng)架構(gòu) [174]。 然而,李等人。 表明隨著圖卷積層數(shù)的增加,ConvGNN 的性能急劇下降 [53]。 隨著圖卷積將相鄰節(jié)點(diǎn)的表示推得更近,理論上,在無(wú)限數(shù)量的圖卷積層中,所有節(jié)點(diǎn)的表示將收斂到一個(gè)點(diǎn) [53]。 這就提出了一個(gè)問(wèn)題,即深入研究是否仍然是學(xué)習(xí)圖數(shù)據(jù)的好策略。

可擴(kuò)展性權(quán)衡 Scalability trade-off

GNN 的可擴(kuò)展性是以破壞圖完整性為代價(jià)的。 無(wú)論是使用采樣還是聚類,模型都會(huì)丟失部分圖信息。 通過(guò)采樣,節(jié)點(diǎn)可能會(huì)錯(cuò)過(guò)其有影響力的鄰居。 通過(guò)聚類,圖可能被剝奪了獨(dú)特的結(jié)構(gòu)模式。 如何權(quán)衡算法的可擴(kuò)展性和圖的完整性可能是未來(lái)的研究方向。

異質(zhì)性Heterogenity

當(dāng)前的大多數(shù) GNN 都假設(shè)圖是同質(zhì)的。 目前的 GNN 很難直接應(yīng)用于異構(gòu)圖,異構(gòu)圖可能包含不同類型的節(jié)點(diǎn)和邊,或者不同形式的節(jié)點(diǎn)和邊輸入,例如圖像和文本。 因此,應(yīng)該開發(fā)新的方法來(lái)處理異構(gòu)圖。

動(dòng)態(tài)Dynamicity

圖本質(zhì)上是動(dòng)態(tài)的,節(jié)點(diǎn)或邊可能出現(xiàn)或消失,節(jié)點(diǎn)/邊輸入可能會(huì)隨時(shí)間變化。 需要新的圖卷積來(lái)適應(yīng)圖的動(dòng)態(tài)性。 雖然圖的動(dòng)態(tài)性可以通過(guò) STGNN 部分解決,但很少有人考慮在動(dòng)態(tài)空間關(guān)系的情況下如何執(zhí)行圖卷積。

總結(jié)

因?yàn)橹耙恢痹谘芯恐R(shí)提取相關(guān)算法,后續(xù)為了構(gòu)建小型領(lǐng)域知識(shí)圖譜,會(huì)用到知識(shí)融合、知識(shí)推理等技術(shù),現(xiàn)在開始學(xué)習(xí)研究圖計(jì)算相關(guān)。

現(xiàn)在已經(jīng)覆蓋了圖的介紹,圖的主要類型,不同的圖算法,在Python中使用Networkx來(lái)實(shí)現(xiàn)它們,以及用于節(jié)點(diǎn)標(biāo)記,鏈接預(yù)測(cè)和圖嵌入的圖學(xué)習(xí)技術(shù),最后講了GNN應(yīng)用。

本項(xiàng)目參考了:maelfabien大神、以及自尊心3 在博客 or github上的貢獻(xiàn)

歡迎大家fork, 后續(xù)將開始圖計(jì)算相關(guān)項(xiàng)目以及部分知識(shí)提取技術(shù)深化!

更多參考:

https://github.com/maelfabien/MachineLearningTutorials

項(xiàng)目鏈接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 歡迎fork歡迎三連!文章篇幅有限,部分程序出圖不一一展示,詳情進(jìn)入項(xiàng)目鏈接即可



圖機(jī)器學(xué)習(xí)(GML)&圖神經(jīng)網(wǎng)絡(luò)(GNN)原理和代碼實(shí)現(xiàn)前置學(xué)習(xí)系列二的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
江津市| 临泉县| 海丰县| 罗平县| 公安县| 小金县| 宜兰县| 特克斯县| 白银市| 英吉沙县| 腾冲县| 咸宁市| 闵行区| 庆阳市| 交口县| 隆德县| 耒阳市| 霸州市| 九龙城区| 嘉鱼县| 织金县| 鹿邑县| 陈巴尔虎旗| 石景山区| 错那县| 洪洞县| 南充市| 朝阳市| 仪陇县| 阿坝县| 筠连县| 库伦旗| 洪江市| 都兰县| 方正县| 潢川县| 普定县| 阿图什市| 八宿县| 阜城县| 桐乡市|