[图神经网络] 图节点Node表示---GAT
一. 概括
圖神經(jīng)網(wǎng)絡(luò)已經(jīng)成為深度學(xué)習(xí)領(lǐng)域最熾手可熱的方向之一。本文提出Graph Attention Networks(GATs),將注意力機(jī)制應(yīng)用到圖神經(jīng)網(wǎng)絡(luò)中,每一層學(xué)習(xí)節(jié)點(diǎn)每個(gè)鄰居對(duì)其生成新特征的貢獻(xiàn)度,按照貢獻(xiàn)度大小對(duì)鄰居特征進(jìn)行聚合,以此生成節(jié)點(diǎn)新特征。GATs具有計(jì)算復(fù)雜度低,適用歸納學(xué)習(xí)任務(wù)的特性。因此,GAT 不僅對(duì)于噪音鄰居較為魯棒,注意力機(jī)制也賦予了模型一定的可解釋性。
二. self-attention
本節(jié)詳細(xì)介紹每一次迭代(每一層)中aggregate模塊所使用的Self-Attention機(jī)制
2.1 方法
輸入:節(jié)點(diǎn)i特征??, 鄰居特征
輸出:鄰居j對(duì)節(jié)點(diǎn)i生成新特征的貢獻(xiàn)度?
模型:使用一個(gè)簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò)去計(jì)算?, 共享參數(shù)W? 通過反向傳播學(xué)習(xí)。
2.2 輸入預(yù)處理
對(duì),???線性變換,得到W和W?
2.3 輸入層->隱層
注意力網(wǎng)絡(luò)可以有很多的設(shè)計(jì)方式,這里作者將節(jié)點(diǎn) i和j?的表示進(jìn)行了拼接,再映射為一個(gè)標(biāo)量。需要。
2.4 隱層->輸出層
為了使不同鄰居的貢獻(xiàn)度可以對(duì)比,使用softmax歸一化,最終得到鄰居j對(duì)節(jié)點(diǎn)i生成新特征的貢獻(xiàn)度 aij
2.5 生成節(jié)點(diǎn)新特征
對(duì)節(jié)點(diǎn)i的鄰居特征按貢獻(xiàn)度 aij進(jìn)行加權(quán)平均后加一個(gè)非線性轉(zhuǎn)換,得到節(jié)點(diǎn)i的新特征?
2.6?Transformer Vs GAT
NLP 中大火的 Transformer 和 GAT 本質(zhì)在做一樣的事情。Transformer 利用 self-attention 機(jī)制將輸入中的每個(gè)單詞用其上下文的加權(quán)來表示,而 GAT 是利用 self-attention 機(jī)制將每個(gè)節(jié)點(diǎn)用其鄰居的加權(quán)來表示。下面是經(jīng)典的 Transformer 公式:
上述過程和 GAT 的核心思想非常相似:都是通過探索輸入之間的關(guān)聯(lián)性(注意力權(quán)重),通過對(duì)上下文信息(句子上下文/節(jié)點(diǎn)鄰居)進(jìn)行聚合,來獲得各個(gè)輸入(單詞/節(jié)點(diǎn))的表示。
Transformer 和 GAT 的主要區(qū)別是:
1.在 GAT 中,作者對(duì)自注意力進(jìn)行了簡(jiǎn)化。每個(gè)節(jié)點(diǎn)無論是作為中心節(jié)點(diǎn)/上下文/聚合輸出,都只用一種表示?。也就是說,在 GAT 中 Q=K=V
2.在圖上,節(jié)點(diǎn)的鄰居是一個(gè)集合,具有不變性。Transformer 將文本隱式的建圖過程中丟失了單詞之間的位置關(guān)系,這對(duì) NLP 的一些任務(wù)是很致命的。為了補(bǔ)償這種建圖損失的位置關(guān)系,Transformer 用了額外了的位置編碼來描述位置信息
?
三. Multi-head Attention
因?yàn)橹挥?jì)算一次attention,很難捕獲鄰居所有的特征信息,《Attention is all you need》論文中進(jìn)一步完善了attention機(jī)制,提出了multi-head attention ,其實(shí)很簡(jiǎn)單,就是重復(fù)做多次attention計(jì)算),如下圖所示:
其中,?表示一個(gè)可訓(xùn)練的參數(shù)向量, 用來學(xué)習(xí)節(jié)點(diǎn)和鄰居之間的相對(duì)重要性,?也是一個(gè)可訓(xùn)練的參數(shù)矩陣,用來對(duì)輸入特征做線性變換,表示向量拼接(concate)。
?
本文也使用了multi-head attention:學(xué)習(xí)K個(gè)不同的attention,對(duì)應(yīng)參數(shù)?,然后在生成節(jié)點(diǎn)i的新特征時(shí)拼接起來
如果在整個(gè)圖神經(jīng)網(wǎng)絡(luò)的最后一層,使用平均替代拼接,得到節(jié)點(diǎn)最終的embedding:
?
四. GAT VS GCN
1.?與GCN的聯(lián)系與區(qū)別
無獨(dú)有偶,我們可以發(fā)現(xiàn)本質(zhì)上而言:GCN與GAT都是將鄰居頂點(diǎn)的特征聚合到中心頂點(diǎn)上(一種aggregate運(yùn)算),利用graph上的local stationary學(xué)習(xí)新的頂點(diǎn)特征表達(dá)。不同的是GCN利用了拉普拉斯矩陣,GAT利用attention系數(shù)。一定程度上而言,GAT會(huì)更強(qiáng),因?yàn)轫旤c(diǎn)特征之間的相關(guān)性被更好地融入到模型中。
2.? 為什么GAT適用于有向圖?
我認(rèn)為最根本的原因是GAT的運(yùn)算方式是逐頂點(diǎn)的運(yùn)算(node-wise),這一點(diǎn)可從公式(1)—公式(3)中很明顯地看出。每一次運(yùn)算都需要循環(huán)遍歷圖上的所有頂點(diǎn)來完成。逐頂點(diǎn)運(yùn)算意味著,擺脫了拉普利矩陣的束縛,使得有向圖問題迎刃而解。
3. 為什么GAT適用于inductive任務(wù)?
GAT中重要的學(xué)習(xí)參數(shù)是?W?與?a(·)?,因?yàn)樯鲜龅闹痦旤c(diǎn)運(yùn)算方式,這兩個(gè)參數(shù)僅與頂點(diǎn)特征相關(guān),與圖的結(jié)構(gòu)毫無關(guān)系。所以測(cè)試任務(wù)中改變圖的結(jié)構(gòu),對(duì)于GAT影響并不大,只需要改變?Ni,重新計(jì)算即可。
與此相反的是,GCN是一種全圖的計(jì)算方式,一次計(jì)算就更新全圖的節(jié)點(diǎn)特征。學(xué)習(xí)的參數(shù)很大程度與圖結(jié)構(gòu)相關(guān),這使得GCN在inductive任務(wù)上遇到困境。
?
?
?
?
?
補(bǔ)充. Message Passing
?
?
?
https://zhuanlan.zhihu.com/p/66812926
?
總結(jié)
以上是生活随笔為你收集整理的[图神经网络] 图节点Node表示---GAT的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css中display属性有几种含义
- 下一篇: [机器学习] 常用并行计算算子原理