深入理解圖注意力機制(Graph Attention Network)

2021-02-21 PaperWeekly

©PaperWeekly 原創 · 作者|紀厚業

學校|北京郵電大學博士生

研究方向|異質圖神經網絡及其應用

圖神經網絡已經成為深度學習領域最熾手可熱的方向之一。作為一種代表性的圖卷積網絡,Graph Attention Network (GAT) 引入了注意力機制來實現更好的鄰居聚合。通過學習鄰居的權重,GAT 可以實現對鄰居的加權聚合。因此,GAT 不僅對於噪音鄰居較為魯棒,注意力機制也賦予了模型一定的可解釋性。

下圖概述了 Graph Attention Network 主要做的事情。

針對節點

深入理解圖注意力機制

2.1 非對稱的注意權重

首先,介紹下如何學習節點對

其中,

除了拼接操作以外,聚合鄰居信息時,需要對每個節點的所有鄰居的注意力進行歸一化。歸一化之後的注意力權重

這種非對稱性在圖數據上有什麼用呢?一個簡單的例子:在社交網絡中,有一個大 V 和一個普通用戶互相關注。但是,大 V 對於普通用戶的重要性和普通用戶對大 V 的重要性明顯是不一樣的。

完整的圖注意力公式如下:

也有文章 18 ArXiv Attention-based Graph Neural Network for Semi-supervised Learning (AGNN) 嘗試為節點對

2.2 可有可無的 LeakyRelu?在求

假設注意力向量

如果在沒有 LeakyReLU 的時候對鄰居進行歸一化:

也就是說,分子分母同時約去了節點

這裡對原始 GAT 論文中的公式進行了展開解讀,一是為了更深入的理解圖注意力機制,二是後面的代碼解讀需要用到這種展開。

2.3 Transformer Vs GAT

NLP 中大火的 Transformer 和 GAT 本質在做一樣的事情。Transformer 利用 self-attention 機制將輸入中的每個單詞用其上下文的加權來表示,而 GAT 是利用 self-attention 機制將每個節點用其鄰居的加權來表示。下面是經典的 Transformer 公式:

這裡的

上述過程和 GAT 的核心思想非常相似:都是通過探索輸入之間的關聯性(注意力權重),通過對上下文信息(句子上下文/節點鄰居)進行聚合,來獲得各個輸入(單詞/節點)的表示。

Transformer 和 GAT 的主要區別是:在 GAT 中,作者對自注意力進行了簡化。每個節點無論是作為中心節點/上下文/聚合輸出,都只用一種表示

核心代碼解讀

Graph Attention Network 的作者開源了代碼:

https://github.com/PetarV-/GAT

但是,這份代碼對於初學者來說較難理解。這裡對 GAT 的核心代碼進行簡要的解讀和介紹。

作者在 GAT/utils/layers.py 中的 attn_head 實現了 GAT 核心模塊:注意力機制。

def attn_head(seq, out_sz, bias_mat,
              activation, in_drop=0.0, coef_drop=0.0, residual=False):

這裡有 3 個比較核心的參數:

seq 指的是輸入的節點特徵矩陣,大小為 [num_graph, num_node, fea_size]out_sz 指的是變換後的節點特徵維度,也就是

seq_fts = tf.layers.conv1d(seq, out_sz, 1, use_bias=False)

也就是說,seq_fts 的大小為 [num_graph, num_node, out_sz]。

回顧前面的公式展開 

f_1 = tf.layers.conv1d(seq_fts, 1, 1)
f_2 = tf.layers.conv1d(seq_fts, 1, 1)

經過 tf.layers.conv1d(seq_fts, 1, 1) 之後的 f_1 和 f_2 維度均為 [num_graph, num_node, 1]。

將 f_2 轉置之後與 f_1 疊加,通過廣播得到的大小為 [num_graph, num_node, num_node] 的 logits,就是一個注意力矩陣:

按照 GAT 的公式,我們只要對 logits 進行 softmax 歸一化就可以拿到注意力權重

coefs = tf.nn.softmax(tf.nn.leaky_relu(logits) + bias_mat)

因為的 logits 存儲了任意兩個節點之間的注意力值,但是,歸一化只需要對每個節點的所有鄰居的注意力進行(下式標紅的部分)。所以,引入了 bias_mat 就是將 softmax 的歸一化對象約束在每個節點的鄰居上,如下式的紅色部分。

那麼,bias_mat 是如何實現的呢?直接的想法就是只含有 0,1 的鄰接矩陣與注意力矩陣相乘,從而對鄰居進行 mask。但是,直接用 0,1mask 會有問題。

假設注意力權值 [1.2, 0.3, 2.4] 經過 [0,1,1] 的乘法 mask 得到 [0, 0.3, 2.4],再送入到 softmax 歸一化,實際上變為

def adj_to_bias(adj, sizes, nhood=1):
       ...
   ...
   return -1e9 * (1.0 - mt)

然後,將 bias_mat 和注意力矩陣相加,進而將非節點鄰居進行 mask。

例如,[1.2, 0.3, 2.4] 經過 加法 mask 得到

vals = tf.matmul(coefs, seq_fts)

Graph Attention Network 作為首次將圖注意力機制引入到圖神經網絡中的工作,已經在很多領域得到了廣泛應用。受益於注意力機制,GAT 能夠過濾噪音鄰居,提升模型表現並可以對結果實現一定的解釋。

點擊以下標題查看更多往期內容: 

如何才能讓更多的優質內容以更短路逕到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。 

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得技術乾貨。我們的目的只有一個,讓知識真正流動起來。

📝 來稿標準:

• 稿件確係個人原創作品,來稿需註明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向) 

• 如果文章並非首發,請在投稿時提醒並附上所有已發布連結 

• PaperWeekly 默認每篇文章都是首發,均會添加「原創」標誌

📬 投稿郵箱:

• 投稿郵箱:hr@paperweekly.site 

• 所有文章配圖,請單獨在附件中發送 

• 請留下即時聯繫方式(微信或手機),以便我們在編輯發布時和作者溝通

🔍

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關於PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報導人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。

相關焦點

  • 異構圖注意力網絡 Heterogeneous Graph Attention Network
    論文提出了一種新的異構圖神經網絡分層注意力機制,涉及到節點級別和語義級別。節點級別的Attention主要學習節點及其臨近節點間的權重,語義級別的Attention是來學習基於不同meta-path的權重。
  • 嚮往的GAT(圖注意力模型)
    深度學習三巨頭」之一的Yoshua Bengio組提出了Graph Attention Networks(下述簡稱為GAT)去解決GCN存在的問題並且在不少的任務上都取得了state of art的效果(可以參考機器之心:深入理解圖注意力機制的復現結果),是graph neural network領域值得關注的工作。1 聊點基礎登堂入室之前,先介紹三點基礎問題。
  • 知識圖譜注意力網絡:Knowledge Graph Attention Network
    In this work, we investigate the utility of knowledge graph (KG), which breaks down the independent interaction assumption by linking items with their attributes.
  • 圖深度學習入門教程(六)——注意力機制與圖注意力
    硬模式(Hard Attention):會在生成注意力權重後篩選掉一部分不符合條件的注意力,讓它的注意力權值為0,即可以理解為不再注意不符合條件的部分。 1.4 注意力機制模型的原理注意力機制模型是指完全使用注意力機制搭建起來的模型。注意力機制除了可以輔助其他神經網絡以外,本身也具有擬合能力。
  • 筆記 | 注意力機制之Residual Attetion Network
    0 前言計算機視覺中的注意力機制的基本思想是讓模型學會專注,把注意力集中在重要的信息上而忽視不重要的信息。舉個簡單的例子,對於圖像分類任務,有隻狗在廣闊無垠的沙漠裡漫步,模型能識別出有隻狗,那假如狗是在茂密的森林裡散步呢,模型有可能識別不出來,這是為什麼呢?
  • 【Attention】淺談Attention機制的理解
    廢話不多說,在本文我就淺談下對注意機制的理解。Attentin機制的發家史Attention機制最早是應用於圖像領域的,九幾年就被提出來的思想。因而自注意力機制也自然而然的成為了大家近期的研究熱點,並在各種NLP任務上進行探索,紛紛都取得了很好的性能。Attention機制的本質attention機制的本質是從人類視覺注意力機制中獲得靈感(可以說很『以人為本』了)。大致是我們視覺在感知東西的時候,一般不會是一個場景從到頭看到尾每次全部都看,而往往是根據需求觀察注意特定的一部分。
  • 淺談Attention機制的理解
    ,很多深度學習的框架都帶上了注意力機制,而且也取得了很好的性能指標。因而自注意力機制也自然而然的成為了大家近期的研究熱點,並在各種NLP任務上進行探索,紛紛都取得了很好的性能。   Attention機制的本質attention機制的本質是從人類視覺注意力機制中獲得靈感(可以說很『以人為本』了)。
  • 注意力機制Attention
    注意力機制(attention mechanism)Attention實質上是一種分配機制,其核心思想是突出對象的某些重要特徵。根據Attention對象的重要程度,重新分配資源,即權重,實現核心思想是基於原有的數據找到其之間的關聯性,然後突出其某些重要特徵。注意力可以被描述為將一個查詢和一組鍵值對映射到一個輸出,其中查詢、鍵、值和輸出都是向量。
  • 注意力機制(Attention Mechanism)在自然語言處理中的應用
    基於注意力(attention)機制的神經網絡成為了最近神經網絡研究的一個熱點,本人最近也學習了一些基於attention機制的神經網絡在自然語言處理(NLP)領域的論文,現在來對attention在NLP中的應用進行一個總結,和大家一起分享。
  • GMAN:基於多注意力機制的方法預測交通流量 | 課程上新
    本課程來自集智第 48 期圖網絡論文解讀活動。
  • 乾貨|理解attention機制本質及self-attention
    的知識,這篇接上篇,更加深入的理解attention的有關思想和最新的self-attention機制一、Attention機制的本質思想如果把Attention機制從上文講述例子中的Encoder-Decoder框架中剝離,並進一步做抽象,可以更容易看懂Attention機制的本質思想。
  • Attention!當推薦系統遇見注意力機制
    NewBeeNLP原創出品公眾號專欄作者@上杉翔二悠閒會 · 信息檢索當注意力機制都已經變成很tasteless的手法的時候,使用或者魔改注意力機制一定要專注講好自己的故事:即『為什麼要用Attention,為什麼要魔改Attention』
  • Attention 掃盲:注意力機制及其 PyTorch 應用實現
    機制是對人類視覺注意力機制的仿生,本質上是一種資源分配機制。例如,對於下面一張圖,我的主要關注點就在於中間的 icon 和 ATTENTION 文字,對於邊框上的條紋就不太關注,而且看一眼還有點暈。attention 機制的最典型應用是統計機器翻譯。給定任務,輸入是「Echt」, 「Dicke」 and 「Kiste」進 encoder,使用 rnn 表示文本為固定長度向量 h3。但問題就在於,當前 decoder 生成 y1 時僅僅依賴於最後一個隱層狀態h3,也就是 sentence_embedding。那麼這個 h3 必須 encode 輸入句子中的全部信息才行。
  • nlp領域發生了新的技術突破,用attention機制研究nlp領域
    包括:attention機制,cnn,adaptive attention network(an),兩層cnn相比較,an表現優於一層的cn。lstm,已經有了兩種不同的,看似性能和效率差異不大的attention機制:rnnattention,lstmattention。今天我們將從這兩種attention機制開始研究nlp領域突破性技術!
  • 重新思考深度學習中的Attention機制
    這件事情讓我萌發了再深入思考一下Attention機制的想法!2. 「樸素」的Attention思想如果用一句話來描述Attention機制的作用,你會怎麼選擇?Attention機制的作用就是對信息進行更好地加權融合。我們來看下這句話的關鍵詞。其實就兩個,第一,信息;第二,加權融合。這兩個詞怎麼來理解呢?「信息」。
  • 計算機視覺中的注意力機制
    注意力機制顧名思義,注意力機制是本質上是為了模仿人類觀察物品的方式。在以上描述下,注意力機制其實包含兩個部分:注意力機制需要決定整段輸入的哪個部分需要更加關注;從關鍵的部分進行特徵提取,得到重要的信息。通常來說,在機器翻譯或者自然語言處理領域,人們閱讀和理解一句話或者一段話其實是有著一定的先後順序的,並且按照語言學的語法規則來進行閱讀理解。
  • GCN (Graph Convolutional Network) 圖卷積網絡解析
    ,所以重點學習了一遍GCN,廣泛地參考了很多技術性文章,把一些我覺得比較有用的知識總結出來,加深對圖卷積網絡的理解,重要的內容也會貼出相應的連結方便大家學習,歡迎大家隨時和我分享學習體會和心得。這片文章匯集了儘可能多的圖卷積概念和知識,方便後續的深入學習。
  • 【CV中的Attention機制】BiSeNet中的FFM模塊與ARM模塊
    前言:之前介紹過一個語義分割中的注意力機制模塊-scSE模塊,效果很不錯。今天講的也是語義分割中使用到注意力機制的網絡BiSeNet,這個網絡有兩個模塊,分別是FFM模塊和ARM模塊。其實現也很簡單,不過作者對注意力機制模塊理解比較深入,提出的FFM模塊進行的特徵融合方式也很新穎。1.
  • 【論文推薦】最新5篇度量學習(Metric Learning)相關論文—人臉驗證、BIER、自適應圖卷積、注意力機制、單次學習
    Adaptive Graph Convolutional Neural Networks(自適應圖卷積神經網絡Current filters in graph CNNs are built for fixed and shared graph structure. However, for most real data, the graph structures varies in both size and connectivity.
  • 【圖網絡】如何理解 Graph Convolutional Network(GCN)?
    不過這些視角對於新人來說可能沒那麼好理解,空域(不進行傅立葉變換,直接利用相鄰節點求卷積)角度的說明可能更符合 CV 同學的視角。這裡從空域的角度推導譜域的結論,不知道同學們會不會有一種萬法歸一的感覺୧( ⁼̴̶̤̀ω⁼̴̶̤́ )૭ 。