1. 程式人生 > 其它 >論文閱讀 Dynamic Graph Representation Learning Via Self-Attention Networks

論文閱讀 Dynamic Graph Representation Learning Via Self-Attention Networks

4 Dynamic Graph Representation Learning Via Self-Attention Networks

link:https://arxiv.org/abs/1812.09430

Abstract

提出了在動態圖上使用自注意力

Conclusion

本文提出了使用自注意力的網路結構用於在動態圖學習節點表示。具體地說,DySAT使用(1)結構鄰居和(2)歷史節點表示上的自我注意來計算動態節點表示,雖然實驗是在沒有節點特徵的圖上進行的,但DySAT可以很容易地推廣到特徵豐富的圖上。另一個有趣的方向是探索框架的連續時間泛化,以包含更細粒度的時間變化。

Figure and table

圖1:DySAT的結構,採用了兩個自注意力的結構,結構自注意力後接時序自注意力。黑色虛線表示新連線,藍色虛線表示基於鄰居的結構注意力

表1:資料集引數

表2:連結預測的sota(DynGEM在這確實不好 不過畢竟別人的賣點是穩定性)

圖2:在不同時間步的表現對照

Introduction

照例提了一下將節點嵌入的方法效果不錯,但是動態圖有時間資訊,前人的工作沒有考慮時間資訊或者只是用快照+時間正則化的的方法。

注意力機制在序列任務中獲得了巨大成功。關鍵是學習一個函式,該函式可以進行加權求和權重即為注意力,同時關注與特定上下文最相關的部分。當注意機制使用單一序列作為輸入和上下文時,通常稱為自我注意

DySAT通過在鄰居和時間序列上做注意力機制以反映圖結構在不同數量的歷史快照上的時間演化。與基於時間平滑度的方法相比,DySAT學習的注意力權重能夠在細粒度節點級粒度上捕獲時間依賴性。

Method

3 PROBLEM DEFINITION

定義了一些引數

動態圖定義為一組時間步\(T\)下的快照\(\Bbb{G}=\{ \cal{G^{\mit{1}},...,G^{\mit{T}}}\}\)

其中每個快照表示為\(\cal{G_{\mit{t}}=(V,E^{\mit{t}})}\)

\(\cal{V}\)表示為所有時間步下的共享節點集

\(\cal{E}^\mit{t}\)表示為\(t\)

時間下的邊集

\(A^t\)表示為\(t\)時間下的鄰接矩陣

節點\(v \in \cal{V}\)\(t = 1,2,...,T\)時間下的嵌入表達為\(\boldsymbol{e}_{v}^{t} \in \mathbb{R}^{d}\),\(d\)是嵌入的維度即向量長度,

4 DYNAMIC SELF-ATTENTION NETWORK

DySAT由兩個元件構成:結構注意力塊、時間注意力塊。與已有的注意機制研究類似,採用多頭注意來提高模型容量和穩定性。

DySAT的組成是結構自注意力塊後接著時間注意力塊,如圖1。其中每個元件可能包含對應層型別的多個堆疊層。結構塊(結構自注意力塊,下同)通過自注意力聚合提取鄰居特徵,為快照計算該節點嵌入。這些嵌入作為時間快的輸入提供,時間塊在多個時間步上出現,捕捉圖形中的時間變化。

4.1 STRUCTURAL SELF-ATTENTION

基於GAT的思路,結構塊的注意力公式如下

\[\boldsymbol{z}_{v}=\sigma\left(\sum_{u \in \mathcal{N}_{v}} \alpha_{u v} \boldsymbol{W}^{s} \boldsymbol{x}_{u}\right), \quad \alpha_{u v}=\frac{\exp \left(\sigma\left(A_{u v} \cdot \boldsymbol{a}^{T}\left[\boldsymbol{W}^{s} \boldsymbol{x}_{u} \| \boldsymbol{W}^{s} \boldsymbol{x}_{v}\right]\right)\right)}{\sum_{w \in \mathcal{N}_{v}} \exp \left(\sigma\left(A_{w v} \cdot \boldsymbol{a}^{T}\left[\boldsymbol{W}^{s} \boldsymbol{x}_{w} \| \boldsymbol{W}^{s} \boldsymbol{x}_{v}\right]\right)\right)} \]

引數解釋:

\(\mathcal{N}_{v}=\{u \in \mathcal{V}:(u, v) \in \mathcal{E}\}\)表示為節點\(v\)的鄰居\(u\)集合

\(\boldsymbol{W}^{s} \in \mathbb{R}^{D \times F}\)可訓練權重,維度是\(D \times F\)

\(a \in \mathbb{R}^{2 F}\)權重向量(原文這裡寫的維度寫錯成2D)

||:拼接操作

\(α_{uv}\):邊\(uv\)的注意力權重

在上式中先使用LeakyRELU計算注意力權重,接著使用ELU計算輸出表示

上面兩種啟用函式都是RELU的改版,RELU在值小於0時容易造成梯度消失,所以有一些變種RELU,主要還是改動負半軸的的函式

LeakyRELU將負半軸改為$ x<0 :LeakyRELU(x) = ax $,其中a是一個設定的較小常數

ELU將負半軸改為$ x<0 :ELU(x) = e^x-1 $,其中a是一個設定的較小常數

在我們的實驗中,我們使用稀疏矩陣來實現對鄰居的mask自注意力。

4.2 TEMPORAL SELF-ATTENTION

該層的輸入是特定節點v在不同時間步的一系列表示。

該層的輸入是\(\left\{\boldsymbol{x}_{v}^{1}, \boldsymbol{x}_{v}^{2}, \ldots, \boldsymbol{x}_{v}^{T}\right\},\boldsymbol{x}_{v}^{t} \in \mathbb{R}^{D^{\prime}}\)其中\(T\)是時間步數,\(D^{\prime}\)是輸入向量維度

該層的輸出是\(\left\{\boldsymbol{z}_{v}^{1}, \boldsymbol{z}_{v}^{2}, \ldots, \boldsymbol{z}_{v}^{T}\right\},\boldsymbol{z}_{v}^{t} \in \mathbb{R}^{F^{\prime}}\)其中\(T\)是時間步數,\(F^{\prime}\)是輸入向量維度

將以上的向量表示改變為矩陣:

\[\boldsymbol{X}_{v} \in \mathbb{R}^{T \times D^{\prime}} \text { and } \boldsymbol{Z}_{v} \in \mathbb{R}^{T \times F^{\prime}} \]

時間自注意力機制的目標是捕獲在圖結構上的多個時間步下的時序資訊變化,在時間\(t\)下的節點\(v\)嵌入\(\boldsymbol{x}_{v}^{t}\)表示為\(v\)周圍當前區域性結構的編碼.使用\(\boldsymbol{x}_{v}^{t}\)作為query去關注歷史表示(<t) ,跟蹤v周圍的本地社群的演變。因此,時間自注意有助於學習節點在不同時間步上的各種表示之間的依賴關係。、

為了計算\(t\)處節點\(v\)的輸出表示,使用縮放的點積注意力,其中查詢、鍵和值被設定為輸入節點表示。

說一下為什麼要使用縮放的點積注意力(為什麼要除\(\sqrt{F^{\prime}}\)):https://www.zhihu.com/question/339723385/answer/782509914

其中其中查詢、鍵和值被設定為輸入節點表示(qkv矩陣)。首先使用線性投影矩陣\(\boldsymbol{W}_{q} \in \mathbb{R}^{D^{\prime} \times F^{\prime}}, \boldsymbol{W}_{k} \in \mathbb{R}^{D^{\prime} \times F^{\prime}} \text { , } \boldsymbol{W}_{v} \in \mathbb{R}^{D^{\prime} \times F^{\prime}}\)將qkv分別進行投影。具體公式如下

\[\boldsymbol{Z}_{v}=\boldsymbol{\beta}_{\boldsymbol{v}}\left(\boldsymbol{X}_{v} \boldsymbol{W}_{v}\right), \quad \beta_{v}^{i j}=\frac{\exp \left(e_{v}^{i j}\right)}{\sum_{k=1}^{T} \exp \left(e_{v}^{i k}\right)}, \quad e_{v}^{i j}=\left(\frac{\left(\left(\boldsymbol{X}_{v} \boldsymbol{W}_{q}\right)\left(\boldsymbol{X}_{v} \boldsymbol{W}_{k}\right)^{T}\right)_{i j}}{\sqrt{F^{\prime}}}+M_{i j}\right) \]

引數解釋:

\(\boldsymbol{\beta}_{\boldsymbol{v}} \in \mathbb{R}^{T \times T}\)是注意力權重矩陣,由dot-product attention構成

\(\boldsymbol{M}_{\boldsymbol{v}} \in \mathbb{R}^{T \times T}\)是一個掩模矩陣,防止模型注意到未來的時間步。當\(M_{i j}=-\infty\),softmax就會讓這次計算出來的注意力權重為0

所以將\(\boldsymbol{M}\)定義為

\[M_{i j}=\left\{\begin{array}{ll} 0, & i \leq j \\ -\infty, & \text { otherwise } \end{array}\right. \]

4.3 MULTI-HEAD ATTENTION

本文還採取了多頭注意力的機制(類似cnn中的改變通道數,對節點的每個表示使用多通道疊加的概念)

我們在結構和時間自我注意層中使用多個注意頭,然後連線:

結構多頭自注意力:\(\boldsymbol{h}_{v}=\operatorname{Concat}\left(\boldsymbol{z}_{v}^{1}, \boldsymbol{z}_{v}^{2}, \ldots, \boldsymbol{z}_{v}^{H}\right) \quad \forall v \in V\)

時間多頭自注意力:\(\boldsymbol{H}_{v}=\operatorname{Concat}\left(\boldsymbol{Z}_{v}^{1}, \boldsymbol{Z}_{v}^{2}, \ldots, \boldsymbol{Z}_{v}^{H}\right) \quad \forall v \in V\)

\(\boldsymbol{h}_{v} \in \mathbb{R}^{F} \text { , } \boldsymbol{H}_{v} \in \mathbb{R}^{T \times F^{\prime}}\)

其中\(H\)是注意力頭的數目,請注意,雖然結構注意應用於單個快照,但時間注意在多個時間步上執行。

4.4 DYSAT ARCHITECTURE

這節介紹模型結構,整個模型由三個模組構成:

結構塊,時序塊,圖上下文預測

該模型以一組T圖快照作為輸入,並在每個時間步生成節點嵌入

結構注意力塊:該模組由多個堆疊的結構自我注意層組成,用於從不同距離的節點中提取特徵。如圖1所示,在具有共享引數的不同快照上獨立應用每一層,以在每個時間步捕獲節點周圍的區域性鄰域結構。該層的輸出為\(\left\{\boldsymbol{h}_{v}^{1}, \boldsymbol{h}_{v}^{2}, \ldots, \boldsymbol{h}_{v}^{T}\right\}, \boldsymbol{h}_{v}^{t} \in \mathbb{R}^{f}\)

時間注意力塊:通過位置嵌入(position embedding)為時間注意力模組提供順序資訊。將位置嵌入表示為為\(\left\{\boldsymbol{p}^{1}, \ldots, \boldsymbol{p}^{T}\right\}, \boldsymbol{p}^{t} \in \mathbb{R}^{f}\)

然後將位置嵌入與結構注意塊的輸出相結合\(\left.(\boldsymbol{h}_{v}^{1}+\boldsymbol{p}^{1}, \boldsymbol{h}_{v}^{2}+\boldsymbol{p}^{2}, \ldots, \boldsymbol{h}_{v}^{T}+\boldsymbol{p}^{T}\right)\)用於跨越多個時間步的節點v的時序表示。 他的塊也遵循類似的結構,有多個堆疊的時間自我注意層。最終層的輸出傳遞到位置前饋層,以給出最終節點表示\(\left\{\boldsymbol{e}_{v}^{1}, \boldsymbol{e}_{v}^{2}, \ldots, \boldsymbol{e}_{v}^{T}\right\} \forall v \in V\)

圖上下文預測:為了確保學習到的表示同時捕獲結構和時間資訊,我們定義了一個目標函式,該函式跨多個時間步保留節點周圍的區域性結構。使用節點\(v\)\(t\)時刻的動態表示\(e_v^t\)去預測在\(t\)時刻\(v\)節點周圍出現在區域性鄰域中的節點。特別的,使用BCE損失在每個時間步以鼓勵節點在固定長度的隨機遊走共同出現以具有相似的表示,損失如下

\[L_{v}=\sum_{t=1}^{T} \sum_{u \in \mathcal{N}_{w a l k}^{t}(v)}-\log \left(\sigma\left(<\boldsymbol{e}_{u}^{t}, \boldsymbol{e}_{v}^{t}>\right)\right)-w_{n} \cdot \sum_{u^{\prime} \in P_{n}^{t}(v)} \log \left(1-\sigma\left(<\boldsymbol{e}_{u^{\prime}}^{t}, \boldsymbol{e}_{v}^{t}>\right)\right) \]

引數解釋:

σ:sigmoid

< . >:向量點乘

\(\mathcal{N}_{\text {walk }}^{t}(v)\):節點v在快照t下時,定長的隨機遊走後的節點集

\(P^t_n(v)\):節點v在快照t下時,負取樣分佈

\(w_n\):負取樣率 可調節引數

Experiment

5 EXPERIMENTS

選取連結預測作為模型效能表示

5.1 DATASETS

資料集是4個,兩個通訊網路,兩個二部圖評分網路

具體見表1

5.2 EXPERIMENTAL SETUP

在快照\(\left\{\mathcal{G}^{1}, \ldots, \mathcal{G}^{t}\right\}\)上學習節點表示\(\left\{e_{v}^{t}, \forall v \in \mathcal{V}\right\}\)後,預測快照\(\mathcal{G}^{t+1}\)的連結。論文比較了不同的模型,基於它們將每個示例(節點對)正確分類為連結和非連結的能力。為了進一步分析預測能力,還評估了新的鏈路預測,重點是在每個時間步出現的新鏈路(附錄B)。

\(\mathcal{G}^{t+1}\)做連結預測時,使用真實連結和相同數量的負樣本取樣作為評估示例。用一個佔比20%的固定驗證集去調整超引數,在後面會丟棄掉這部分資料。我們隨機抽取25%的樣本進行訓練,並使用剩餘的75%作為測試集。重複10次隨機試驗,並在結果中報告平均效能。

除非有明文規定,對於所有的方法,節點對的特徵表示都是使用Hadamard積\(\left(\boldsymbol{e}_{u}^{t} \cdot \boldsymbol{e}_{v}^{t}\right)\)Hadamard運算元計算兩個向量的元素乘積,並密切反映學習節點嵌入中廣泛使用的內積運算。我們使用ROC曲線下面積(AUC)分數評估鏈路預測的效能。我們還在附錄表6中報告了平均精度分數。

優化器:Adam。對於 Enron,在結構塊和時間塊中使用一個單層,每層由16個注意力頭組成,每個注意力頭計算8個特徵(總共128個維度)。在其他資料集中,使用了兩個自注意力層,分別有16個和8個頭部,每個頭部計算16個特徵(層大小為256,128)。該模型最多可訓練200個輪次,批量大小為256個節點,並選擇驗證集中效能最好的模型進行評估。

5.3 BASELINE

除了和動態圖演算法比較,還比較了幾種靜態圖嵌入方法,以分析使用時間資訊進行動態鏈路預測的收益。為了與靜態方法進行公平比較,我們通過構建一個到時間t的聚合圖來合併快照的整個歷史,其中每個連結的權重被定義為到時間t為止的累積權重,與它的發生時間無關。我們為所有基線使用作者提供的實現,並設定最終嵌入維度d=128。

對比了靜態方法的node2vec,graphSage,graph autoencoders。在GraphPage中使用不同的聚合器進行實驗,即GCN、平均池、最大池和LSTM,以報告每個資料集中效能最好的聚合器的效能。為了與GAT進行公平比較,GAT最初只對節點分類進行實驗,論文在GraphSAGE中實現了一個圖形注意層作為額外的聚合器,用GraphSAGE+GAT表示。本文還將GCN和GAT訓練為自動編碼器,用於沿著(Modeling polypharmacy side effects with graph convolutional networks)的建議線路進行鏈路預測,分別用GCN-AE和GAT-AE表示。

在動態環境中,根據最新的動態圖嵌入研究,包括Know Evolve、DynamicRiad和DynGEM,對DySAT進行評估。所有方法的超引數調整詳情見附錄F。

5.4 EXPERIMENTAL RESULTS

在每個時間步t對模型進行評估,方法是將單獨的模型訓練到快照t,並在t+1對每個t進行評估,總結了表2中所有模型的微觀和巨集觀平均AUC分數(跨越所有時間步)。從結果中,我們觀察到,與所有資料集的最佳基線相比,DySAT實現了3–4%巨集觀AUC的一致增益。此外,還比較了每個時間步的模型效能(圖2),以深入瞭解它們的時間行為。論文對DySAT的效能進行了優化,使其比其他方法更穩定。這種對比在通訊網路(安然和UCI)中表現得尤為明顯,觀察到靜態嵌入方法在特定時間步的效能急劇下降。

在ML-10M上,使用一臺配備Nvidia Tesla V100 GPU和28個CPU核心的機器,每小批DySAT的執行時間為0.72秒。相比之下,沒有時間注意的模型變數(附錄a)需要0.51秒,這說明時間注意的成本相對較低。

6 DISCUSSION

原文提出了一些觀察,這裡直接翻譯了:

實驗結果為不同圖形嵌入技術的效能提供了一些有趣的觀察和見解。

首先,觀察到GraphSAGE在不同的資料集上實現了與DynamicRiad相當的效能,儘管它只接受靜態圖的訓練。一種可能的解釋是,GraphSAGE使用可訓練的鄰居聚合函式,而DynamicRiad使用基於Skipgram的方法,並增加了時間平滑度。 所以結構和時間建模與表達聚合功能(如多頭注意)的結合,是DySAT在動態連結預測方面始終表現優異的原因。還觀察到node2vec實現了與時間資訊無關的一致性能,這證明了二階隨機遊走取樣的有效性。這一觀察結果為應用抽樣技術進一步改善DySAT指明瞭方向。

還觀察到node2vec實現了與時間資訊無關的效能,這證明了二階隨機遊走取樣的有效性

在DySAT中,我們採用結構注意層,然後是時間注意層。我們之所以選擇這種設計,是因為圖形結構隨著時間的推移並不穩定,這使得在時間注意層之後直接使用結構注意層是不可行的。論文還考慮了另一種替代設計選擇,即按照類似於(Shen等人,2018年)的策略,在鄰居和時間這兩個維度上一起使用自我關注。實際上,由於多個快照中每個節點的鄰居數量可變,這在計算上會非常昂貴。

在當前設定中,使用稀疏矩陣將每個快照的鄰接矩陣儲存在記憶體中,這在縮放到大型圖時可能會帶來記憶體挑戰。在未來,作者計劃沿著GraphSAGE的路線,探索具有記憶效率的小批量訓練策略的DySAT。此外,我們開發了一個增量自我注意網路(IncSAT),作為DySAT的直接擴充套件,它在計算和記憶成本方面都是有效的。正如附錄E所報告的,我們的初步結果是有希望的,這為將來探索增量(或流式)圖形表徵學習的自我注意架構打開了大門。我們還評估了DySAT在多步鏈路預測或預測方面的能力,並觀察到與現有方法相比平均6%AUC的顯著相對改善,如附錄C所述。

Summary

這篇論文的embedding是使用獨熱碼作為輸入,引入了自注意力機制並嘗試在動態圖上使用,並且還引入的pos嵌入的思路(Convolutional sequence to sequence learning)以保證順序,讀了四篇論文,慢慢開始有感覺了,現在讀一篇論文加上理解內容已經比原來快很多了,很多引數和公式看一眼就知道咋回事了,基本上都是翻來覆去的各種搭積木