0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

神經(jīng)網(wǎng)絡(luò)的基本知識(shí),以及兩種更高級(jí)的算法:DeepWalk和GraphSage

DPVg_AI_era ? 來源:lq ? 2019-02-16 11:03 ? 次閱讀

神經(jīng)網(wǎng)絡(luò)(GNN)在各個(gè)領(lǐng)域越來越受歡迎,本文介紹了圖神經(jīng)網(wǎng)絡(luò)的基本知識(shí),以及兩種更高級(jí)的算法:DeepWalk和GraphSage。

最近,圖神經(jīng)網(wǎng)絡(luò)(GNN)在各個(gè)領(lǐng)域越來越受到歡迎,包括社交網(wǎng)絡(luò)、知識(shí)圖譜、推薦系統(tǒng),甚至生命科學(xué)。

GNN在對(duì)圖形中節(jié)點(diǎn)間的依賴關(guān)系進(jìn)行建模方面能力強(qiáng)大,使得圖分析相關(guān)的研究領(lǐng)域取得了突破性進(jìn)展。本文旨在介紹圖神經(jīng)網(wǎng)絡(luò)的基本知識(shí),以及兩種更高級(jí)的算法:DeepWalk和GraphSage。

圖(Graph)

在討論GNN之前,讓我們先了解一下什么是圖(Graph)。在計(jì)算機(jī)科學(xué)中,圖是由兩個(gè)部件組成的一種數(shù)據(jù)結(jié)構(gòu):頂點(diǎn)(vertices)和邊(edges)。一個(gè)圖G可以用它包含的頂點(diǎn)V和邊E的集合來描述。

邊可以是有向的或無向的,這取決于頂點(diǎn)之間是否存在方向依賴關(guān)系。

一個(gè)有向的圖(wiki)

頂點(diǎn)通常也被稱為節(jié)點(diǎn)(nodes)。在本文中,這兩個(gè)術(shù)語是可以互換的。

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

圖神經(jīng)網(wǎng)絡(luò)是一種直接在圖結(jié)構(gòu)上運(yùn)行的神經(jīng)網(wǎng)絡(luò)。GNN的一個(gè)典型應(yīng)用是節(jié)點(diǎn)分類。本質(zhì)上,圖中的每個(gè)節(jié)點(diǎn)都與一個(gè)標(biāo)簽相關(guān)聯(lián),我們的目的是預(yù)測(cè)沒有g(shù)round-truth的節(jié)點(diǎn)的標(biāo)簽。

本節(jié)將描述The graph neural network model(Scarselli, F., et al., 2009) [1]這篇論文中的算法,這是第一次提出GNN的論文,因此通常被認(rèn)為是原始GNN。

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

其中x_co[v]表示與v相連的邊的特征,h_ne[v]表示v相鄰節(jié)點(diǎn)的嵌入,x_ne[v]表示v相鄰節(jié)點(diǎn)的特征。函數(shù)f是將這些輸入映射到d維空間上的過渡函數(shù)。由于我們要尋找h_v的唯一解,我們可以應(yīng)用Banach不動(dòng)點(diǎn)定理,將上面的方程重寫為一個(gè)迭代更新過程。

H和X分別表示所有h和x的串聯(lián)。

通過將狀態(tài)h_v和特性x_v傳遞給輸出函數(shù)g,從而計(jì)算GNN的輸出。

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

可以通過梯度下降進(jìn)行優(yōu)化。

然而,原始GNN存在三個(gè)主要局限性:

如果放寬“不動(dòng)點(diǎn)” (fixed point)的假設(shè),那么可以利用多層感知器學(xué)習(xí)更穩(wěn)定的表示,并刪除迭代更新過程。這是因?yàn)?,在原始論文中,不同的迭代使用轉(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)。

為了解決上述問題,研究人員已經(jīng)提出了幾個(gè)GNN的變體。不過,它們不是本文的重點(diǎn)。

DeepWalk:第一個(gè)無監(jiān)督學(xué)習(xí)節(jié)點(diǎn)嵌入的算法

DeepWalk [2]是第一個(gè)提出以無監(jiān)督的方式學(xué)習(xí)節(jié)點(diǎn)嵌入的算法。

它在訓(xùn)練過程中非常類似于詞匯嵌入。其動(dòng)機(jī)是graph中節(jié)點(diǎn)和語料庫中單詞的分布都遵循冪律,如下圖所示:

該算法包含兩個(gè)步驟:

在graph中的節(jié)點(diǎn)上執(zhí)行random walks,以生成節(jié)點(diǎn)序列

運(yùn)行skip-gram,根據(jù)步驟1中生成的節(jié)點(diǎn)序列,學(xué)習(xí)每個(gè)節(jié)點(diǎn)的嵌入

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

本文采用hierarchical softmax來解決由于節(jié)點(diǎn)數(shù)量龐大而導(dǎo)致的softmax計(jì)算成本高昂的問題。為了計(jì)算每個(gè)單獨(dú)輸出元素的softmax值,我們必須計(jì)算元素k的所有e ^ xk。

Softmax的定義

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

分層softmax利用二叉樹來處理這個(gè)問題。在這個(gè)二叉樹中,所有的葉子(下圖中的v1, v2,…v8)都表示graph中的頂點(diǎn)。在每個(gè)內(nèi)部節(jié)點(diǎn)中,都有一個(gè)二元分類器來決定選擇哪條路徑。要計(jì)算給定頂點(diǎn)v_k的概率,只需計(jì)算從根節(jié)點(diǎn)到葉節(jié)點(diǎn)v_k路徑上每一個(gè)子路徑的概率。由于每個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)的概率之和為1,所以所有頂點(diǎn)的概率之和為1的特性在分層softmax中仍然保持不變。由于二叉樹的最長(zhǎng)路徑是O(log(n)),其中n表示葉節(jié)點(diǎn)的數(shù)量,因此一個(gè)元素的計(jì)算時(shí)間現(xiàn)在減少到O(log|V|)。

Hierarchical Softmax

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

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

GraphSage:學(xué)習(xí)每個(gè)節(jié)點(diǎn)的嵌入

GraphSage提供了解決上述問題的辦法,以一種歸納的方式學(xué)習(xí)每個(gè)節(jié)點(diǎn)的嵌入。

具體地說,GraphSage每個(gè)節(jié)點(diǎn)由其鄰域的聚合(aggregation)表示。因此,即使圖中出現(xiàn)了在訓(xùn)練過程中沒有看到的新節(jié)點(diǎn),它仍然可以用它的鄰近節(jié)點(diǎn)來恰當(dāng)?shù)乇硎尽?/p>

下面是GraphSage算法:

外層循環(huán)表示更新迭代的數(shù)量,而h ^ k_v表示更新迭代k時(shí)節(jié)點(diǎn)v的潛在向量。在每次更新迭代時(shí),h ^ k_v的更新基于一個(gè)聚合函數(shù)、前一次迭代中v和v的鄰域的潛在向量,以及權(quán)重矩陣W ^ k。

論文中提出了三種聚合函數(shù):

1. Mean aggregator:

mean aggregator取一個(gè)節(jié)點(diǎn)及其所有鄰域的潛在向量的平均值。

與原始方程相比,它刪除了上面?zhèn)未a中第5行中的連接運(yùn)算。這種運(yùn)算可以看作是一種“skip-connection”,在論文后面的部分中,證明了這在很大程度上可以提高模型的性能。

2. LSTM aggregator:

由于圖中的節(jié)點(diǎn)沒有任何順序,因此它們通過對(duì)這些節(jié)點(diǎn)進(jìn)行排列來隨機(jī)分配順序。

3. Pooling aggregator:

這個(gè)運(yùn)算符在相鄰集上執(zhí)行一個(gè)element-wise的pooling函數(shù)。下面是一個(gè)max-pooling的示例:

論文使用max-pooling作為默認(rèn)的聚合函數(shù)。

損失函數(shù)定義如下:

其中u和v在固定長(zhǎng)度的random walk中共存,而v_n是不與u共存的負(fù)樣本。這種損失函數(shù)鼓勵(lì)距離較近的節(jié)點(diǎn)具有相似的嵌入,而距離較遠(yuǎn)的節(jié)點(diǎn)則在投影空間中被分離。通過這種方法,節(jié)點(diǎn)將獲得越來越多的關(guān)于其鄰域的信息。

GraphSage通過聚合其附近的節(jié)點(diǎn),可以為看不見的節(jié)點(diǎn)生成可表示的嵌入。它允許將節(jié)點(diǎn)嵌入應(yīng)用到涉及動(dòng)態(tài)圖的域,其中圖的結(jié)構(gòu)是不斷變化的。例如,Pinterest采用了GraphSage的擴(kuò)展版本PinSage作為其內(nèi)容發(fā)現(xiàn)系統(tǒng)的核心。

總結(jié)

本文中,我們學(xué)習(xí)了圖神經(jīng)網(wǎng)絡(luò)、DeepWalk和GraphSage的基礎(chǔ)知識(shí)。GNN在復(fù)雜圖結(jié)構(gòu)建模方面的強(qiáng)大功能確實(shí)令人驚嘆。鑒于其有效性,我相信在不久的將來,GNN將在AI的發(fā)展中發(fā)揮重要作用。

[1] Scarselli, Franco, et al. "The graph neural network model.”

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.1015.7227&rep=rep1&type=pdf

[2] Perozzi, Bryan, Rami Al-Rfou, and Steven Skiena. "Deepwalk: Online learning of social representations.”

http://www.perozzi.net/publications/14_kdd_deepwalk.pdf

[3] Hamilton, Will, Zhitao Ying, and Jure Leskovec. "Inductive representation learning on large graphs.”

https://www-cs-faculty.stanford.edu/people/jure/pubs/graphsage-nips17.pdf

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:掌握?qǐng)D神經(jīng)網(wǎng)絡(luò)GNN基本,看這篇文章就夠了

文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    遺傳算法 神經(jīng)網(wǎng)絡(luò) 解析

    關(guān)于遺傳算法神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 05-19 10:22

    【PYNQ-Z2試用體驗(yàn)】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí)

    學(xué)習(xí)和認(rèn)知科學(xué)領(lǐng)域,是一模仿生物神經(jīng)網(wǎng)絡(luò)(動(dòng)物的中樞神經(jīng)系統(tǒng),特別是大腦)的結(jié)構(gòu)和功能的數(shù)學(xué)模型或計(jì)算模型,用于對(duì)函數(shù)進(jìn)行估計(jì)或近似。神經(jīng)網(wǎng)絡(luò)由大量的人工
    發(fā)表于 03-03 22:10

    【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)

    `BP神經(jīng)網(wǎng)絡(luò)首先給出只包含一個(gè)隱層的BP神經(jīng)網(wǎng)絡(luò)模型(神經(jīng)網(wǎng)絡(luò)): BP神經(jīng)網(wǎng)絡(luò)其實(shí)由
    發(fā)表于 07-21 04:00

    【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)

    神經(jīng)網(wǎng)絡(luò)在學(xué)習(xí)新知識(shí)的同時(shí)要保持對(duì)之前學(xué)習(xí)的知識(shí)的記憶,而不是狗熊掰棒子SOM神經(jīng)網(wǎng)絡(luò)是一競(jìng)爭(zhēng)學(xué)習(xí)型的無監(jiān)督
    發(fā)表于 07-21 04:30

    神經(jīng)網(wǎng)絡(luò)和反向傳播算法

    03_深度學(xué)習(xí)入門_神經(jīng)網(wǎng)絡(luò)和反向傳播算法
    發(fā)表于 09-12 07:08

    反饋神經(jīng)網(wǎng)絡(luò)算法是什么

    反饋神經(jīng)網(wǎng)絡(luò)算法
    發(fā)表于 04-28 08:36

    BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)數(shù)學(xué)知識(shí)分享

    一文看懂BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)數(shù)學(xué)知識(shí)
    發(fā)表于 06-16 07:14

    有關(guān)脈沖神經(jīng)網(wǎng)絡(luò)基本知識(shí)

    譯者|VincentLee來源 |曉飛的算法工程筆記脈沖神經(jīng)網(wǎng)絡(luò)(Spiking neural network, SNN)將脈沖神經(jīng)元作為計(jì)算單...
    發(fā)表于 07-26 06:23

    基于高效采樣算法的時(shí)序圖神經(jīng)網(wǎng)絡(luò)系統(tǒng)介紹

    成為了非常重要的問題。 基于以上問題,本文提出了一基于高效采樣算法的時(shí)序圖神經(jīng)網(wǎng)絡(luò)系統(tǒng) 。首先我們介紹用于時(shí)序圖神經(jīng)網(wǎng)絡(luò)采樣的高效采樣方法。采樣常常被用于深度學(xué)習(xí)中以降低模型的訓(xùn)練時(shí)
    發(fā)表于 09-28 10:34

    圖形神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)兩種高級(jí)算法

    神經(jīng)網(wǎng)絡(luò)是一直接在圖結(jié)構(gòu)上運(yùn)行的神經(jīng)網(wǎng)絡(luò)。GNN的一個(gè)典型應(yīng)用是節(jié)點(diǎn)分類。本質(zhì)上,圖中的每個(gè)節(jié)點(diǎn)都與一個(gè)標(biāo)簽相關(guān)聯(lián),我們希望預(yù)測(cè)未標(biāo)記節(jié)點(diǎn)的標(biāo)簽。本節(jié)將介紹論文中描述的算法,GNN
    的頭像 發(fā)表于 04-17 14:19 ?2712次閱讀
    圖形<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的基礎(chǔ)<b class='flag-5'>知識(shí)</b><b class='flag-5'>兩種</b>較<b class='flag-5'>高級(jí)</b>的<b class='flag-5'>算法</b>

    什么是神經(jīng)網(wǎng)絡(luò)?什么是卷積神經(jīng)網(wǎng)絡(luò)?

    在介紹卷積神經(jīng)網(wǎng)絡(luò)之前,我們先回顧一下神經(jīng)網(wǎng)絡(luò)基本知識(shí)。就目前而言,神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)算法的核心,我們所熟知的很多深度學(xué)習(xí)
    的頭像 發(fā)表于 02-23 09:14 ?3630次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的介紹 什么是卷積神經(jīng)網(wǎng)絡(luò)算法

    卷積神經(jīng)網(wǎng)絡(luò)的介紹 什么是卷積神經(jīng)網(wǎng)絡(luò)算法 卷積神經(jīng)網(wǎng)絡(luò)涉及的關(guān)鍵技術(shù) 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networ
    的頭像 發(fā)表于 08-21 16:49 ?1923次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別

    卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,簡(jiǎn)稱CNN)和BP神經(jīng)網(wǎng)絡(luò)(Backpropagation Neural Networks,簡(jiǎn)稱BPNN)是兩種
    的頭像 發(fā)表于 07-02 14:24 ?4593次閱讀

    bp神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)區(qū)別是什么

    結(jié)構(gòu)、原理、應(yīng)用場(chǎng)景等方面都存在一定的差異。以下是對(duì)這兩種神經(jīng)網(wǎng)絡(luò)的比較: 基本結(jié)構(gòu) BP神經(jīng)網(wǎng)絡(luò)是一多層前饋神經(jīng)網(wǎng)絡(luò),由輸入層、隱藏層和
    的頭像 發(fā)表于 07-03 10:12 ?1308次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)的區(qū)別在哪

    結(jié)構(gòu)、原理、應(yīng)用場(chǎng)景等方面都存在一定的差異。以下是對(duì)這兩種神經(jīng)網(wǎng)絡(luò)的詳細(xì)比較: 基本結(jié)構(gòu) BP神經(jīng)網(wǎng)絡(luò)是一多層前饋神經(jīng)網(wǎng)絡(luò),由輸入層、隱藏
    的頭像 發(fā)表于 07-04 09:49 ?1w次閱讀