backgroud:圖網(wǎng)絡(luò)數(shù)據(jù)普遍存在,要解決的問(wèn)題是將原始的網(wǎng)絡(luò)結(jié)構(gòu)映射到低維向量空間,并保持相似性,進(jìn)而可以用到各種機(jī)器學(xué)習(xí)算法中。
network embedding產(chǎn)出方法大致可以分為兩類:淺層、深層網(wǎng)絡(luò)
淺層網(wǎng)絡(luò):deepwalk 基于同線性越多,歐式空間表示越像的想法,解決思路是MF矩陣分解,重點(diǎn)在于similarity function構(gòu)建,不足是網(wǎng)絡(luò)節(jié)點(diǎn)增加需要重新訓(xùn)練網(wǎng)絡(luò)學(xué)的embedding向量。
深層網(wǎng)絡(luò):deeplearn 基于CNN卷積核提取特征的想法,困難在于語(yǔ)音、圖片數(shù)據(jù)具有平移不變性,圖數(shù)據(jù)沒(méi)有,目前大致有兩大類方法:Spectral based GCN? ? (譜方法),Spatial based GCN? (空間方法)。
1、GCN(Graph Convolutional Network)
GCN定義:

2、GCN SGAE
GCN的缺點(diǎn):Transductive learning的方式,需要把所有節(jié)點(diǎn)都參與訓(xùn)練才能得到node embedding,無(wú)法快速得到新node的embedding。
得到新節(jié)點(diǎn)的表示的難處:要想得到新節(jié)點(diǎn)的表示,需要讓新的graph或者subgraph去和已經(jīng)優(yōu)化好的node embedding去“對(duì)齊”。然而每個(gè)節(jié)點(diǎn)的表示都是受到其他節(jié)點(diǎn)的影響,因此添加一個(gè)節(jié)點(diǎn),意味著許許多多與之相關(guān)的節(jié)點(diǎn)的表示都應(yīng)該調(diào)整。這會(huì)帶來(lái)極大的計(jì)算開銷,即使增加幾個(gè)節(jié)點(diǎn),也要完全重新訓(xùn)練所有的節(jié)點(diǎn)。
因此我們需要換一種思路:既然新增的節(jié)點(diǎn),一定會(huì)改變?cè)泄?jié)點(diǎn)的表示,那么我們干嘛一定要得到每個(gè)節(jié)點(diǎn)的一個(gè)固定的表示呢?我們何不直接學(xué)習(xí)一種節(jié)點(diǎn)的表示方法。這樣不管graph怎么改變,都可以很容易地得到新的表示。
基本思想:去學(xué)習(xí)一個(gè)節(jié)點(diǎn)的信息是怎么通過(guò)其鄰居節(jié)點(diǎn)的特征聚合而來(lái)的。學(xué)習(xí)到了這樣的“聚合函數(shù)”,而我們本身就已知各個(gè)節(jié)點(diǎn)的特征和鄰居關(guān)系,我們就可以很方便地得到一個(gè)新節(jié)點(diǎn)的表示了。
GCN等transductive的方法,學(xué)到的是每個(gè)節(jié)點(diǎn)的一個(gè)唯一確定的embedding;而GraphSAGE方法學(xué)到的node embedding,是根據(jù)node的鄰居關(guān)系的變化而變化的,也就是說(shuō),即使是舊的node,如果建立了一些新的link,那么其對(duì)應(yīng)的embedding也會(huì)變化,而且也很方便地學(xué)到。
大致的思路是:假設(shè)我們要聚合K次,則需要有K個(gè)聚合函數(shù)(aggregator),可以認(rèn)為是N層。每一次聚合,都是把上一層得到的各個(gè)node的特征聚合一次,在假設(shè)該node自己在上一層的特征,得到該層的特征。如此反復(fù)聚合K次,得到該node最后的特征。最下面一層的node特征就是輸入的node features。

前面一直都沒(méi)討論一個(gè)點(diǎn),那就是如何選擇一個(gè)節(jié)點(diǎn)的鄰居以及多遠(yuǎn)的鄰居。這里作者的做法是設(shè)置一個(gè)定值,每次選擇鄰居的時(shí)候就是從周圍的直接鄰居(一階鄰居)中均勻地采樣固定個(gè)數(shù)個(gè)鄰居。

3、GCN ATTENTION
為何要GAT
因?yàn)镚CN是無(wú)法解決動(dòng)態(tài)的圖,而且GCN給每個(gè)鄰居節(jié)點(diǎn)都分配相同的權(quán)值,但每個(gè)鄰居節(jié)點(diǎn)的重要性都是相同的,得出了GAT要解決的兩個(gè)問(wèn)題,首先是如何確定每個(gè)節(jié)點(diǎn)對(duì)其不同鄰居的權(quán)重,然后是如何將處理好的鄰居特征與自身特征結(jié)合在一起。


(1)權(quán)重的確定

(2)特征的結(jié)合


參考文獻(xiàn):
1、深度學(xué)習(xí)新星 | 圖卷積神經(jīng)網(wǎng)絡(luò)(GCN)有多強(qiáng)大?
https://zhuanlan.zhihu.com/p/37894842
2、GraphSAGE:我尋思GCN也沒(méi)我厲害!
https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/98540692
3、圖卷積網(wǎng)絡(luò)之GAT(Graph Attention Networks)