自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

新聞 人工智能
Google Research最近發(fā)了一篇博客,從零開始教學(xué)GNN的發(fā)展路程,不熟悉的同學(xué)可以查缺補(bǔ)漏啦!

 [[422426]]

近幾年,神經(jīng)網(wǎng)絡(luò)在自然語言、圖像、語音等數(shù)據(jù)上都取得了顯著的突破,將模型性能帶到了一個(gè)前所未有的高度,但如何在圖數(shù)據(jù)上訓(xùn)練仍然是一個(gè)可研究的點(diǎn)。

傳統(tǒng)神經(jīng)網(wǎng)絡(luò)輸入的數(shù)據(jù)通常每個(gè)sample之間都不存在關(guān)系,而圖數(shù)據(jù)更加復(fù)雜,每個(gè)節(jié)點(diǎn)之間存在聯(lián)系,也更符合真實(shí)世界中的數(shù)據(jù)存儲(chǔ)方式。真實(shí)世界的物體通常根據(jù)它們與其他事物的聯(lián)系來定義的,一組對(duì)象以及它們之間的聯(lián)系可以很自然地表示為一個(gè)圖(graph),基于圖數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)也稱為Graph Neural Network(GNN)。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

圖神經(jīng)網(wǎng)絡(luò)的發(fā)展逐漸受到更多關(guān)注,在推理、常識(shí)等方面也取得很多成就,來自Google的研究員們最近發(fā)表了一篇博客,介紹了圖神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程,還對(duì)現(xiàn)代圖神經(jīng)網(wǎng)絡(luò)進(jìn)行了探討和解釋。

一個(gè)圖由頂點(diǎn)和邊組成,在人的腦海中,可以很自然地把社交網(wǎng)絡(luò)等數(shù)據(jù)表示為圖,那如何把圖像和文本表示為圖你想過嗎?

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

通常認(rèn)為圖像是帶有通道(channels)的矩形網(wǎng)格,將它們表示為例如244x244x3的三維矩陣。

另一種看待圖像的方式是有規(guī)則結(jié)構(gòu)的圖像,其中每個(gè)像素代表一個(gè)節(jié)點(diǎn),并通過邊緣連接到相鄰的像素。每個(gè)非邊界像素恰好有8個(gè)相鄰節(jié)點(diǎn),并且存儲(chǔ)在每個(gè)節(jié)點(diǎn)上的信息是表示像素 RGB 值的三維向量。

可視化圖的連通性的一種方法是鄰接矩陣。對(duì)這些節(jié)點(diǎn)進(jìn)行排序,在一個(gè)5x5的圖像中有25個(gè)像素,構(gòu)造一個(gè)矩陣,如果兩個(gè)節(jié)點(diǎn)之間存在一條邊那么在鄰接矩陣中就存在一個(gè)入口。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

對(duì)于文本來說,可以將索引與每個(gè)字符、單詞或標(biāo)記相關(guān)聯(lián),并將文表示為一個(gè)有向圖,其中每個(gè)字符或索引都是一個(gè)節(jié)點(diǎn),并通過一條邊連接到后面的節(jié)點(diǎn)。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

但文本和圖像在實(shí)際使用上通常不采用這種編碼方式,用圖來表示是比較多余的一步操作,因?yàn)樗袌D像和文本都具有非常規(guī)則的結(jié)構(gòu)。例如,圖像的鄰接矩陣中通常有一條帶狀結(jié)構(gòu),因?yàn)樗械墓?jié)點(diǎn)或像素都連接包含在在一個(gè)網(wǎng)格結(jié)構(gòu)中。文本的鄰接矩陣只包括一條對(duì)角線,因?yàn)槊總€(gè)單詞只連接到前一個(gè)單詞和下一個(gè)單詞。

在使用神經(jīng)網(wǎng)絡(luò)表示圖任務(wù)時(shí),一個(gè)最重要的表示就是它的連通性,一個(gè)比較好的選擇就是鄰接矩陣,但如前文所說,鄰接矩陣過于稀疏,空間利用率不高;另一個(gè)問題就是同一個(gè)圖的鄰接矩陣有多種表示方法,神經(jīng)網(wǎng)絡(luò)無法保證這些鄰接矩陣的輸出結(jié)果都相同,也就是說不存在置換不變性(permutation invariant)。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

并且不同形狀的圖可能也包含相同的鄰接矩陣。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

一種優(yōu)雅且高效來表示稀疏矩陣的方法是鄰接列表。它們將節(jié)點(diǎn)之間的邊的連通性描述為鄰接列表第k個(gè)條目中的元組(i,j)。由于邊的數(shù)量遠(yuǎn)低于鄰接矩陣的條目數(shù)量,因此可以避免了在圖的斷開部分(不含邊)進(jìn)行計(jì)算和存儲(chǔ)。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

既然圖的描述是以排列不變的矩陣格式,那圖神經(jīng)網(wǎng)絡(luò)(GNNs)就可以用來解決圖預(yù)測(cè)任務(wù)。GNN是對(duì)圖的所有屬性(節(jié)點(diǎn)、邊、全局上下文)的可優(yōu)化變換,它可以保持圖的對(duì)稱性(置換不變性)。GNN采用“圖形輸入,圖形輸出”架構(gòu),這意味著這些模型類型接受圖作為輸入,將信息加載到其節(jié)點(diǎn)、邊和全局上下文,并逐步轉(zhuǎn)換這些embedding,而不更改輸入圖形的連通性。

最簡單的GNN模型架構(gòu)還沒有使用圖形的連通性,在圖的每個(gè)組件上使用一個(gè)單獨(dú)的多層感知器(MLP)(其他可微模型都可以)就可以稱之為GNN層。

對(duì)于每個(gè)節(jié)點(diǎn)向量,使用MLP并返回一個(gè)可學(xué)習(xí)的節(jié)點(diǎn)向量。對(duì)每一條邊也做同樣的事情,學(xué)習(xí)每一條邊的embedding,也對(duì)全局上下文向量做同樣的事情,學(xué)習(xí)整個(gè)圖的單個(gè)embedding。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

與神經(jīng)網(wǎng)絡(luò)模塊或?qū)右粯?,我們可以將這些GNN層堆疊在一起。

由于GNN不會(huì)更新輸入圖的連通性,因此可以使用與輸入圖相同的鄰接列表和相同數(shù)量的特征向量來描述GNN的輸出圖。

構(gòu)建了一個(gè)簡單的GNN后,下一步就是考慮如何在上面描述的任務(wù)中進(jìn)行預(yù)測(cè)。

首先考慮二分類的情況,這個(gè)框架也可以很容易地?cái)U(kuò)展到多分類或回歸情況。如果任務(wù)是在圖節(jié)點(diǎn)上進(jìn)行二分類預(yù)測(cè),并且圖已經(jīng)包含節(jié)點(diǎn)信息,那么對(duì)于每個(gè)節(jié)點(diǎn)embedding應(yīng)用線性分類器即可。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

實(shí)際情況可能更復(fù)雜,例如圖形中的信息可能存儲(chǔ)在邊中,而且節(jié)點(diǎn)中沒有信息,但仍然需要對(duì)節(jié)點(diǎn)進(jìn)行預(yù)測(cè)。所以就需要一種從邊收集信息并將其提供給節(jié)點(diǎn)進(jìn)行預(yù)測(cè)的方法。

可以通過Pooling來實(shí)現(xiàn)這一點(diǎn)。Pooling分兩步進(jìn)行:對(duì)于要池化的每個(gè)item,收集它們的每個(gè)embedding并將它們連接到一個(gè)矩陣中,通常通過求和操作聚合收集的embedding。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

更復(fù)雜地,可以通過在 GNN 層內(nèi)使用池化來進(jìn)行更復(fù)雜的預(yù)測(cè),以使學(xué)習(xí)到的embedding更了解圖的連通性??梢允褂孟鬟f(Message Passing)來做到這一點(diǎn),其中相鄰節(jié)點(diǎn)或邊緣交換信息并影響彼此更新的embedding。

消息傳遞包含三個(gè)步驟:

1、對(duì)于圖中的每個(gè)節(jié)點(diǎn),收集所有相鄰節(jié)點(diǎn)embedding(或消息)。

2、通過聚合函數(shù)(如sum)聚合所有消息。

3、所有匯集的消息都通過一個(gè)更新函數(shù)傳遞,通常是一個(gè)學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)。

這些步驟是利用圖的連接性的關(guān)鍵,還可以在GNN層中構(gòu)建更復(fù)雜的消息傳遞變體,以產(chǎn)生更高表達(dá)能力的GNN模型。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

本質(zhì)上,消息傳遞和卷積是聚合和處理元素的鄰居信息以更新元素值的操作。在圖中,元素是節(jié)點(diǎn),在圖像中,元素是像素。然而,圖中相鄰節(jié)點(diǎn)的數(shù)量可以是可變的,這與圖像中每個(gè)像素都有一定數(shù)量的相鄰元素不同。通過將傳遞給GNN層的消息堆疊在一起,節(jié)點(diǎn)最終可以合并整個(gè)圖形中的信息。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

節(jié)點(diǎn)學(xué)習(xí)完embedding后的下一步就是邊。在真實(shí)場(chǎng)景中,數(shù)據(jù)集并不總是包含所有類型的信息(節(jié)點(diǎn)、邊緣和全局上下文),當(dāng)用戶想要對(duì)節(jié)點(diǎn)進(jìn)行預(yù)測(cè),但提供的數(shù)據(jù)集只有邊信息時(shí),在上面展示了如何使用池將信息從邊路由到節(jié)點(diǎn),但也僅局限在模型的最后一步預(yù)測(cè)中。除此之外,還可以使用消息傳遞在GNN層內(nèi)的節(jié)點(diǎn)和邊之間共享信息。

可以采用與之前使用相鄰節(jié)點(diǎn)信息相同的方式合并來自相鄰邊緣的信息,首先合并邊緣信息,使用更新函數(shù)對(duì)其進(jìn)行轉(zhuǎn)換并存儲(chǔ)。

但存儲(chǔ)在圖中的節(jié)點(diǎn)和邊信息不一定具有相同的大小或形狀,因此目前還沒有一種明確有效的方法來組合他們,一種比較好的方法是學(xué)習(xí)從邊空間到節(jié)點(diǎn)空間的線性映射,反之亦然?;蛘?,可以在update函數(shù)之前將它們concatenate在一起。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

最后一步就是獲取全局的節(jié)點(diǎn)、邊表示。

之前所描述的網(wǎng)絡(luò)存在一個(gè)缺陷:即使多次應(yīng)用消息傳遞,在圖中彼此不直接連接的節(jié)點(diǎn)可能永遠(yuǎn)無法有效地將信息傳遞給彼此。對(duì)于一個(gè)節(jié)點(diǎn),如果有k層網(wǎng)絡(luò),那么信息最多傳播k步。

對(duì)于預(yù)測(cè)任務(wù)依賴于相距很遠(yuǎn)的節(jié)點(diǎn)或節(jié)點(diǎn)組的情況,這可能是一個(gè)問題。一種解決方案是讓所有節(jié)點(diǎn)都能夠相互傳遞信息。但不幸的是,對(duì)于大型的圖來說,所需要的計(jì)算成本相當(dāng)高,但在小圖形中已經(jīng)可以有所應(yīng)用。

這個(gè)問題的一個(gè)解決方案是使用圖(U)的全局表示,它有時(shí)被稱為主節(jié)點(diǎn)或上下文向量。該全局上下文向量連接到網(wǎng)絡(luò)中的所有其他節(jié)點(diǎn)和邊,并可以作為它們之間傳遞信息的橋梁,為整個(gè)圖形建立表示。這可以創(chuàng)建一個(gè)比其他方法更豐富、更復(fù)雜的圖形表示。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

從這方面來看,所有的圖形的屬性都已經(jīng)學(xué)習(xí)到了對(duì)應(yīng)的表示,因此可以通過調(diào)整感興趣的屬性相對(duì)于其余屬性的信息在池中利用它們。例如對(duì)于一個(gè)節(jié)點(diǎn),可以考慮來自相鄰節(jié)點(diǎn)、連接邊和全局信息的信息。為了將新節(jié)點(diǎn)嵌入到所有這些可能的信息源上,還可以簡單地將它們連接起來。此外,還可以通過線性映射將它們映射到同一空間,并應(yīng)用特征調(diào)節(jié)層(feature-wise modulation layer)。

GNN入門必看!Google Research教你從毛坯開始搭建sota 圖神經(jīng)網(wǎng)絡(luò)

通過上述流程,相信大家已經(jīng)對(duì)簡單的GNN如何發(fā)展為sota模型有了了解。在獲取圖的節(jié)點(diǎn)、邊表示后,就可以為之后的任務(wù)再單獨(dú)設(shè)計(jì)網(wǎng)絡(luò),GNN為神經(jīng)網(wǎng)絡(luò)提供了一種處理圖數(shù)據(jù)的方式。

在原文博客中,還包括一些GNN的真實(shí)案例和數(shù)據(jù)集,并了解GNN在其中的具體作用,想了解更多內(nèi)容可以訪問參考鏈接進(jìn)行閱讀。

責(zé)任編輯:張燕妮 來源: 新智元
相關(guān)推薦

2021-07-28 15:35:58

谷歌神經(jīng)網(wǎng)絡(luò)AI

2022-03-02 14:53:34

人工智能神經(jīng)網(wǎng)絡(luò)

2021-10-26 09:00:00

圖形機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2018-07-03 16:10:04

神經(jīng)網(wǎng)絡(luò)生物神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)

2023-02-09 08:53:26

GNN神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)

2022-05-25 14:21:01

神經(jīng)網(wǎng)絡(luò)框架技術(shù)

2017-03-10 12:16:46

機(jī)器學(xué)習(xí)

2022-03-25 15:07:05

神經(jīng)網(wǎng)絡(luò)AI數(shù)據(jù)

2021-11-19 17:18:39

谷歌TensorFlow技術(shù)

2022-12-05 10:08:59

2017-09-10 07:07:32

神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)集可視化

2020-09-09 10:20:48

GraphSAGE神經(jīng)網(wǎng)絡(luò)人工智能

2023-05-04 07:39:14

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

2021-01-25 19:49:11

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

2016-12-27 14:24:57

課程筆記神經(jīng)網(wǎng)絡(luò)

2021-06-23 17:48:02

自然語言神經(jīng)網(wǎng)絡(luò)人工智能

2017-07-19 06:46:44

卷積神經(jīng)網(wǎng)絡(luò)計(jì)算機(jī)視覺

2022-05-07 08:35:58

神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)GNN庫

2024-12-12 00:29:03

2017-09-15 13:35:11

JavaScript神經(jīng)網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)