論文解讀(CGC)《CGC: Contrastive Graph Clustering for Community Detection and Tracking》

發表於2022-04-23

論文資訊

論文標題:CGC: Contrastive Graph Clustering for Community Detection and Tracking
論文作者:Namyong Park, Ryan Rossi, Eunyee Koh, Iftikhar Ahamath Burhanuddin, Sungchul Kim, Fan Du, Nesreen Ahmed, Christos Faloutsos
論文來源:2022, AAAI
論文地址:download 
論文程式碼:download

1 介紹

  本文核心創新點:基於時間演化的聚類演算法。2.2

  創新點如下:

    • 網路訓練過程中的多層的表示矩陣可以視為多個檢視 2.1.1    2.1.3
    • 基於時間的表示互動 2.2.2
    • 高階結構(三角結構)的應用 2.1.1

  和其他方法對比:

     

2 Method

2.1 CGC: Contrastive Graph Clustering

兩個步驟:

  • refining cluster memberships based on the current node embeddings.
  • optimizing node embeddings such that nodes  from the same cluster are closer to each other, while those from different clusters are pushed further away from each other.

2.1.1 Multi-Level Contrastive Learning Objective

  正對:在同一個 cluster 中的節點。

  負對:在不同的 cluster 中的節點。

Signal: Input Node Features

  對於節點 $u$,將其輸入特徵 $\mathbf{f}_{u}$ 作為正樣本,隨機選擇另一個節點 $v$,將其輸入特徵 $\mathbf{f}_{v}$ 作為負樣本;然後將這些正負樣本與節點嵌入 $\mathbf{h}_{u}$ 進行對比。

  對於節點 $ u$ ,設 $\mathcal{S}_{u}^{F}=\left\{\mathbf{f}_{u}^{\prime i}\right\}_{i=0}^{r}$ 是包含一個正樣本 $(i=0)$ 和 $r$ 個負樣本($1 \leq i \leq r$)(輸入特徵)的集合,其中 $\prime$ 表示取樣。由於輸入特徵和節點嵌入可以有不同的維數,所以引入引數  $\mathbf{W}_{F} \in \mathbb{R}^{d^{\prime} \times d}$ 過渡,這裡定義一個基於節點特徵的對比損失$\mathcal{L}_{F}$:

    ${\large \mathcal{L}_{F}=\sum\limits _{u=1}^{n}-\log  \frac{\exp \left(\left(\mathbf{h}_{u}^{\top} \mathbf{W}_{F} \mathbf{f}_{u}^{\prime 0}\right) / \tau\right)}{\sum_{v=0}^{r} \exp \left(\left(\mathbf{h}_{u}^{\top} \mathbf{W}_{F} \mathbf{f}_{u}^{\prime v}\right) / \tau\right)} } \quad\quad\quad(3)$

Signal: Network Homophily

  設 $\mathcal{N}(u)$ 表示節點 $u$ 的鄰居, $\mathcal{N}_{\Delta}(u)$ 既是節點 $u$ 的鄰居也與節點 $u$ 在相同的三角結構(高階結構);因此,$\mathcal{N}_{\Delta}(u) \subseteq \mathcal{N}(u) $。

  從 $\mathcal{N}(u)$ 中選擇節點 $u$ 的一個正樣本,選中 $\mathcal{N}_{\Delta}(u)$ 中的鄰居的概率為 $\delta /\left|\mathcal{N}_{\Delta}(u)\right|$,其他鄰居的概率為 $(1-\delta) /\left|\mathcal{N}(u) \backslash \mathcal{N}_{\Delta}(u)\right| $,其中 $\delta \geq 0$ 決定了 $\mathcal{N}_{\Delta}(u)$ 中節點的權重,最後從$\mathbf{H}=\mathcal{E}(G, \mathrm{~F})$ 中提取該正樣本的節點嵌入 $\mathbf{h}_{u}^{\prime 0}$。

  為構造負樣本,設計了一個破壞函式 $C(G, \mathbf{F})$。具體來說,定義 $C(\cdot)$ 通過對 $\mathbf{F}$ 進行行變換(row-wise shuffling)返回損壞的節點特徵 矩陣$\widetilde{\mathbf{F}}$ ,同時保留圖 $G$ 結構,即 $C(G, \mathbf{F})=(G, \widetilde{\mathbf{F}})$,可以看作是在保持圖結構的同時在圖上隨機遷移節點。然後將GNN編碼器應用於 $G$ 和 $\widetilde{\mathbf{F}}$ ,得到負節點嵌入 $\widetilde{\mathbf{H}} \in \mathbb{R}^{n \times d^{\prime}}$,並隨機選擇 $r$ 個負樣本及其嵌入。

  設 $\mathcal{S}_{u}^{H}=\left\{\mathbf{h}_{u}^{\prime i}\right\}_{i=0}^{r}$ 為包含節點 $u$ 的一個正樣本($i=0$)和 $r$ ( $1 \leq i \leq r$)個負樣本嵌入的集合。在CGC中,基於同質性的對比損失 $\mathcal{L}_{H}$ 被定義為:

    ${\large \mathcal{L}_{H}=\sum\limits _{u=1}^{n}-\log \frac{\exp \left(\mathbf{h}_{u} \cdot \mathbf{h}_{u}^{\prime 0} / \tau\right)}{\sum_{v=0}^{r} \exp \left(\mathbf{h}_{u} \cdot \mathbf{h}_{u}^{\prime v} / \tau\right)}} \quad\quad\quad(4) $

Signal: Hierarchical Community Structure

  設 $\mathcal{K}=\left\{k_{\ell}\right\}_{\ell=1}^{L}$ 為聚類數集合,$\mathrm{C}_{\ell} \in   \mathbb{R}^{k_{\ell} \times d^{\prime}}$ 為第 $\ell$ 個聚類質心矩陣。給定嵌入矩陣 $\mathbf{H}$ 和簇質心矩陣 $\left\{\mathrm{C}_{\ell}\right\}_{\ell=1}^{L} $。節點 $u$ 的正樣本為節點 $u$ 最相近的 $L$ 個簇質心。而其負樣本是從第 $\ell$ 個其他 $k_{\ell}-1$ 聚類質心中隨機選擇的。

  設 $\mathcal{S}_{u, \ell}^{C}=\left\{\mathbf{c}_{u, \ell}^{i}\right\}_{i=0}^{r_{\ell}}$ 為包含節點 $u$ 的一個正樣本($i=0$)和 $r_{\ell}$ 個負樣本($1 \leq i \leq r_{\ell}$)(即質心)嵌入在 $k_{\ell}$ 質心中選擇的節點?。CGC定義了一個基於社群的分層對比損失 $\mathcal{L}_{C}$ 為:

    ${\large \mathcal{L}_{C}=\sum\limits _{u=1}^{n}-\left(\frac{1}{L} \sum\limits_{\ell=1}^{L} \log \frac{\exp \left(\mathbf{h}_{u} \cdot \mathbf{c}_{u, \ell}^{\prime 0} / \tau\right)}{\sum\limits_{v=0}^{r_{\ell}} \exp \left(\mathbf{h}_{u} \cdot \mathbf{c}_{u, \ell}^{v} / \tau\right)}\right)}\quad\quad\quad(5) $

Multi-Level Contrastive Learning Objective

  多層次的對比性學習目標。上述損失項在多個層次上捕獲社群結構上的訊號,即單個節點特徵$\left(\mathcal{L}_{F}\right)$、相鄰節點 $\left(\mathcal{L}_{H}\right)$ 和分層結構的社群 $\left(\mathcal{L}_{C}\right)$。CGC聯合優化

    $\mathcal{L}=\lambda_{F} \mathcal{L}_{F}+\lambda_{H} \mathcal{L}_{H}+\lambda_{C} \mathcal{L}_{C}\quad\quad\quad(6)$

  其中,$\lambda_{F} $、$\lambda_{H} $、$\lambda_{C}$  是損失項的權重。

2.1.2 Encoder Architecture

  作為我們的節點編碼器 $\mathcal{E}$,我們使用一個帶有平均聚合器的 GNN:

    $\mathbf{h}_{v}^{l}=\operatorname{ReLU}\left(\mathbf{W}_{G} \cdot \operatorname{MEAN}\left(\left\{\mathbf{h}_{v}^{l-1}\right\} \cup\left\{\mathbf{h}_{u}^{l-1} \mid \forall u \in \mathcal{N}(v)\right\}\right)\right)\quad\quad\quad(7)$

2.1.3 Algorithm

  演算法如下:

   

  其中:

    • $\Pi$ 代表著聚類演算法 ,如 $k -means$;  
    • $ \left\{\Phi_{\ell}\right\}$ 代表著聚類分配矩陣;  

2.2 CGC for Temporal Graph Clustering

  小結導讀:後面 2.2.3 會用。

  給定時間圖流 ( temporal graph stream)$\mathcal{G}=   \left\{G_{\tau_{1}}, \ldots, G_{\tau_{i-1}}\right\}$ (其中 $G_{\tau_{i}}$ 是其中的一個圖快照 ),學習到的節點嵌入矩陣  $\mathbf{H}_{i-1}$ 和聚類分配矩陣  $\Phi_{i-1}$ 基於直到 $i-1$ 之前的圖快照( snapshot)。$\mathbf{H}_{i-1}$ 和  $\Phi_{i-1}$ 用於反應 $G_{\tau_{i}}$ 中的新資訊。

  為方便,這裡記 $G_{i: j} $ 表示 $ i $ 到 $j$ 的圖快照集合,即 $\left\{G_{\tau_{i}}, \ldots, G_{\tau_{j}}\right\} $,其中 $ G_{i: j}=\left(V, E_{i: j}\right)$,$E_{i: j}=\bigcup_{o=i}^{j} E_{\tau_{o}}$ 。

  下面將描述如何擴充套件 CGC 用於時間圖聚類。

2.2.1 Temporal Contrastive Learning Objective

  學習表示時,表示一般都是平穩變化。因此,在一個時間跨度範圍內觀察到的節點的邊提供了相似或相關的時間檢視。

  給定時間戳 $j$ 和節點 $u$ ,我們將時間戳 $j-1 $ 時的嵌入 $\mathbf{h}_{u, j-1}$ 作為其正樣本。

  為獲得負樣本,使用 2.1.1節中使用的破壞函式,得損壞節點特徵矩陣 $\widetilde{\mathbf{F}}$,使用 $\mathcal{E}\left(G_{i: j-1}, \widetilde{\mathbf{F}}\right)$ 並視節點 $u$ 對應的嵌入作為負樣本(這裡的 $u $ 其實不是節點 $u$ ,只是位置對應其他節點 $v$)。打亂多次特徵矩陣 $\widetilde{\mathbf{F}}$ ,重複上述過程,便可以得到多組負樣本。【個人覺得完全有點多此一舉,反正都是負樣本還不如直接隨機選取 $r$ 個樣本】

  設 $\mathcal{S}_{u, j}^{T}=\left\{\mathbf{h}_{u, j-1}^{\prime i}\right\}_{i=0}^{r}$ 包含節點  $u$ 的一個正樣本($i=0$)和 $r$ 個負樣本($1 \leq i \leq r$)。CGC定義了一個在時間 $j$ 的對比損失 $\mathcal{L}_{T}$ :

    ${\large \mathcal{L}_{T}=\sum\limits _{u=1}^{n}-\log \frac{\exp \left(\mathbf{h}_{u, j} \cdot \mathbf{h}_{u, j-1}^{\prime 0} / \tau\right)}{\sum\limits_{v=0}^{r} \exp \left(\mathbf{h}_{u, j} \cdot \mathbf{h}_{u, j-1}^{\prime v} / \tau\right)}} \quad\quad\quad(8)$

  請注意,$\text{Eq.8}$ 與第 2.1.1 節中討論的目標相結合,其權重為$\lambda_{T}$,將損失 $\mathcal{L}$ 增加為

    $\mathcal{L}=\lambda_{F} \mathcal{L}_{F}+\lambda_{H} \mathcal{L}_{H}+\lambda_{C} \mathcal{L}_{C}+\lambda_{T} \mathcal{L}_{T}\quad\quad\quad(9)$

2.2.2 Encoder Architecture

  對 GNN 編碼器進行擴充套件:使得節點給予最近與該節點互動的鄰居更多權重,所以需要根據鄰居最近互動的時間來調整鄰居權重。

  設 $t_{(u, v)} $ 表示節點 $u$ 和 $v$ 之間邊的時間戳,並設 $t_{v}^{\max }= \underset{u \in \mathcal{N}(v)}{\text{max}}\;\;\;  \left\{t_{(u, v)}\right\}$,即節點 $v$ 與其鄰居互動時的最新時間戳。$\psi\in [0,1]$ 表示時間衰減因子,我們將時間衰減應用於鄰域 $u$ 的嵌入 $\mathbf{h}_{u}$ 如下:

    ${\large \operatorname{td}\left(\mathbf{h}_{u}\right)=\psi^{t_{v}^{\max }-t_{(u, v)}} \mathbf{h}_{u}} \quad\quad\quad(10)$

  然後對於具有時間感知能力的鄰域聚合,將 $\text{Eq.7}$ 中的 $\mathbf{h}_{u}$ 替換為其時間衰減版本 $\operatorname{td}\left(\mathbf{h}_{u}\right) $。

2.2.3 Graph Stream Segmentation

  合併之前的快照生成新快照是基於前後的相似性假設,然而在訓練時網路可能產生突變,導致新的快照在某種程度上和之前並不一致,所以需要檢測這些變化。

  設 $\mathcal{G}_{\text {seg }}=\left\{G_{\tau_{i}}, \ldots, G_{\tau_{j}}\right\}$ 是 $i$ 到 $j$ ($i<j$) 之間的圖流段(graph stream segment) 。給定一個快照 $G_{\tau_{j+1}}$ ,如果 $G_{\tau_{j+1}}$ 與 $\mathcal{G}_{\text {seg }}$ 相似,我們使用 $G_{\tau_{j+1}}$ 擴充套件當前段 $\mathcal{G}_{\text {seg }}$ ;如果不相似,將啟動一個只由 $G_{\tau_{j+1}}$ 組成的新的圖流段。【該問題為流式圖分割 問題】

  解決這個問題的想法是比較出現在 $\mathcal{G}_{\text {seg }}$ 和 $G_{\tau_{j+1}}$ 兩者中的節點嵌入。

  這一步的 GNN 編碼器已經基於 $\mathcal{G}_{\text {seg }}$ 訓練好了,但並沒有在 $G_{\tau_{j+1}}$ 訓練。如果 $\mathcal{G}_{\text {seg }}$ 和 $G_{\tau_{j+1}}$ 相似,他們對應的表示也相似。那麼接下來分析 $G_{\tau_{j+1}}$ 與 $\mathcal{G}_{\text {seg. }}$ 不相似的情況。

  設 $V^{*}$ 表示同時出現在 $\mathcal{G}_{\text {seg }}  $ 和 $G_{\tau_{j+1}} $ 之中的節點集合,設 $\mathbf{H}_{V^{*}}^{\text {seg }}, \mathbf{H}_{V^{*}}^{j+1} \in \mathbb{R}^{\left|V^{*}\right| \times d^{\prime}}  $ 分別表示 $V^{*}$ 基於 $\mathcal{G}_{\text {seg }}$、$G_{\tau_{j+1}}$ 的表示。這裡定義距離度量函式 $ d(\cdot, \cdot)$(cosine distance),$\mathrm{H}_{V^{*}}^{\mathrm{seg}} $ 和 $\mathbf{H}_{V^{*}}^{j+1}$ 之間的距離 $Dist  (\cdot, \cdot)$ 定義為:

    $\operatorname{Dist}\left(\mathbf{H}_{V^{*}}^{\operatorname{seg}}, \mathbf{H}_{V^{*}}^{t+1}\right)=\operatorname{MEAN}\left\{d\left(\left(\mathbf{H}_{V^{*}}^{\operatorname{seg}}\right)_{i},\left(\mathbf{H}_{V^{*}}^{t+1}\right)_{i}\right) \mid i \in V^{*}\right\}\quad\quad\quad(11)$

  如果距離超過了一個閾值,則對流進行分段。

  GraphStreamSegmentation 演算法如下:

  

2.2.4 Putting Things Together

  CGC在一個增量的端到端框架(Alg. 2).當一個新的圖形快照到達時,CGC使用 Alg. 3 (line 3) 自適應地確定一個要從中查詢簇的圖形快照序列,並使用 Alg. 1 (line 4) 更新聚類結果和節點嵌入。

3 Experiments

資料集

  

基線實驗

  

相關論文

聚類演算法 [20, 36, 37, 63–65, 67]

深度圖聚類演算法 [6, 40, 48, 57, 61]

兩階段的 DGC 模型:[28, 57] 

基於圖自編碼器的聚類演算法:[28]

基於聯合優化框架的聚類演算法:[6, 48, 61]

 

 

 

 

 

相關文章