【GNN】啥是GNN?GNN咋學(xué)?GNN何用?
GNN的可視化解釋!

近來發(fā)現(xiàn)非常多的建模問題中都使用了GNN方法,便去學(xué)習(xí)了一番,后來發(fā)現(xiàn)了一篇非常不錯的GNN的可視化解釋文章,便將其翻譯整理和大家一起分享。
目前圖模型的應(yīng)用非常廣泛,最典型的如社交網(wǎng)絡(luò),蛋白質(zhì)結(jié)構(gòu)等。最近越來越多的圖算法也被應(yīng)用于搜索推薦,時間序列等的問題,并且都取得了非常大的成功,本文我們直觀的不帶有任何數(shù)學(xué)等形式的了解一下圖神經(jīng)網(wǎng)絡(luò)。
大家一定會非常好奇,圖神經(jīng)網(wǎng)絡(luò)究竟哪里好,它能學(xué)到其它網(wǎng)絡(luò)學(xué)不到的東西嗎?下面我們就一起來看看GNN是如何工作的。

1.關(guān)于圖
圖一般由兩個核心模塊組成,分別是:節(jié)點和邊。

如上圖所示,黑色的箭頭是邊的指向,表示一種關(guān)系,注意此處我們表示的是有向圖。
雖然圖很簡單,但如果我們賦予節(jié)點和邊不同的含義的話,那么圖就可以非常多的信息,例如每個節(jié)點是用戶,邊是打電話的話,那么就可以表示一個電話相關(guān)的社交;如果節(jié)點是商品,邊表示用戶的購買順序的話,那么就是一個用戶的購物網(wǎng)絡(luò)。
2.一些概念
recurrent單元,嵌入向量表示和前向神經(jīng)網(wǎng)絡(luò)。
我們假設(shè)特征向量是當(dāng)前節(jié)點索引的一個熱編碼,標(biāo)簽用顏色表示,如下圖所示:

所有的節(jié)點被轉(zhuǎn)化為一個recurrent單元, 所有的邊組成一個前向神經(jīng)網(wǎng)絡(luò)。

3.信息傳遞
一旦節(jié)點和邊的轉(zhuǎn)換完成,圖就會在節(jié)點之間執(zhí)行消息傳遞。這個過程也被稱為Neighbourhood Aggregation,因為它涉及到通過有向邊從給定引用節(jié)點周圍的周圍節(jié)點推送消息。
對于GNNs,對于單個參考節(jié)點,相鄰節(jié)點通過邊神經(jīng)網(wǎng)絡(luò)將其信息(embeddings)傳遞到參考節(jié)點上的遞歸單元中。遞歸單元的新嵌入將通過將所說的遞歸函數(shù)應(yīng)用于當(dāng)前embeddings和相鄰節(jié)點embeddings的邊緣神經(jīng)網(wǎng)絡(luò)輸出的總和來更新。

注意:邊神經(jīng)網(wǎng)絡(luò)輸出的和(圖中的黑色封套)是輸出順序的不變量。
4.傳遞之后最終得到的向量表示是什么呢?
執(zhí)行了幾次鄰域聚合/消息傳遞之后,我們的每個節(jié)點單元就變成了一組全新的embedding。
當(dāng)前每個節(jié)點對自己和相鄰節(jié)點的信息(特征)會有更多的了解,從而得到整個圖更精確的表示。
為了在pipeline的更高層進(jìn)行進(jìn)一步的處理,或者簡單地表示圖,我們可以將所有embeddings相加,得到表示整個圖形的向量。
使用H比使用鄰接矩陣往往效果更好,這些矩陣不代表圖形的特征或獨特方面,盡管存在任何圖形扭曲-只是節(jié)點之間的邊連接。


從上面的分析我們可以發(fā)現(xiàn),在使用圖的時候我們可以簡單的將其劃分為下面幾步:
給定一個圖,首先將節(jié)點轉(zhuǎn)化為遞歸單元,將邊轉(zhuǎn)化為前饋神經(jīng)網(wǎng)絡(luò); 對所有節(jié)點執(zhí)行n次鄰域聚合(消息傳遞)。 對所有節(jié)點的嵌入向量求和得到圖表示H。 將H傳遞到更高的層中,或者使用它來表示圖形的獨特屬性!

從上面GNN的直觀解釋中,我們知道了圖形神經(jīng)網(wǎng)絡(luò)是如何工作的,那什么時候使用它會更為方便或者什么時候可以直接使用它呢?
社交媒體中,對用戶進(jìn)行聚類的時候可以使用,依據(jù)每個用戶follow和被follow的信息構(gòu)建圖,然后學(xué)習(xí)每個用戶的embeddings信息聚類; 內(nèi)容推薦,依據(jù)用戶流量內(nèi)容的關(guān)聯(lián)關(guān)系,對用戶進(jìn)行內(nèi)容推薦;
當(dāng)然,我覺得只要是能構(gòu)建成圖的數(shù)據(jù),都可以嘗試使用gnn。

1.An Illustrated Guide to Graph Neural Networks
往期精彩回顧
本站qq群851320808,加入微信群請掃碼:
