圖網絡模型原理詳解(Graph Network)

《Relational inductive biases, deep learning, and graph networks》

這篇論文包含了一部分新研究、一部分回顧和部分統一結論,這篇文章涉及到的很多知識面,涉及到聯結主義、行爲主義、符號主義,其本身的模型並不難,但是要理解其提出來的背景及相關知識聯繫,和其研究的深層含義就需要慢慢品讀其中的參考文獻了。

這篇論文是DeepMind聯合谷歌大腦、MIT等機構27位作者發表重磅論文,提出“圖網絡”(Graph network),將端到端學習與歸納推理相結合,有望解決深度學習無法進行關係推理的問題。

作者認爲組合泛化是人工智能實現與人類相似能力的首要任務,而結構化表示和計算是實現這一目標的關鍵,實現這個目標的關鍵是結構化的表示數據和計算(structured representation)。本文討論圖網絡如何支持關係推理和組合泛化,爲更復雜的、可解釋的和靈活的推理模式奠定基礎。

人類智能的一個關鍵特徵是“無限使用有限方法”的能力,也就是說我們一旦掌握了一種方法,我們可以無限次將這種方法應用到對應的場景中解決對應的問題,比如:我們學習說話並不是將世界上所有的句子都學一遍,我們學習的是單個的單詞還有語法,然後我們可以將單詞經過特定的語法組織,組成很多很多句子。這反映了組合歸納的原則,即從已知的構建塊構造新的推論、預測和行爲。人類的組合概括能力主要取決於我們表達結構和推理關係的認知機制。我們將複雜系統表示爲實體及其相互作用的組合,比如判斷一堆不規則的石頭堆砌起來是否穩定。人類的認知可以通過層層抽象來去掉事物間細節上的差異,保留下最一般的共同點;所以我們可以通過組合已有的技能和經驗來解決新的問題(例如去一個新地方可以將“坐飛機”、"去聖迭戈"、“喫飯”、“在一家印度餐館”這幾個已有的概念組合起來得以實現。);人類可以將兩個關係結構(指的就是graph這種表示物體和物體間關係的數據)放在一起進行比較,然後根據對其中一個的知識,來對另一個進行推斷。

當前的深度學習方法都強調end-to-end,端到端的學習方式,而當數據量和計算資源沒有現在這麼豐富的時候,人們都是採取的hand-engineering的方式,手動設計各種模型。作者認爲在這兩種模型之間的選擇不應該走極端,只要一個而不要另一個,應該是end-to-end和hand-engineering相結合來設計模型。

Relational reasoning

這裏我們將 "結構" 定義爲一堆已知的構件快的組合,“結構化表示”主要關注組合(即元素的排列),“結構化計算” 作用對象爲元素及元素組成的總體,"關係推理" 涉及操縱實體和關係的結構化表示,並使用規則去組合實體和關係。概念如下所示:

實體是具有屬性的元素,例如具有大小和質量的物理對象。

關係是實體之間的屬性。這裏我們關注實體之間的配對關係。

規則是一種函數,它將實體和關係映射到其他實體和關係,這裏我們採用一個或兩個參數的規則,並返回一元屬性值。
 

Relational inductive biases

首先需要解釋一下什麼是歸納偏置(Inductive biases)

inductive bias,這個概念顧名思義,就是在歸納推理(induct)的時候的偏向(bias),也就是在模型學習的時候,參數有傾向性的調節成某種狀態,模型有傾向性的學習成某一類樣子。

學習是通過觀察和與世界互動來理解有用知識的過程,這就涉及到從一個有很多解決方案的空間中尋找一個最優的能很好對數據做出解釋的解決方案,當我們採用了某個解決方案我們的回報也是最大的。可能在很多場景下,有很多解決方案的效果是相同的,但是 Inductive Bias 會讓學習算法不依賴觀測數據優先考慮一個最最最優的方法,因爲他有偏向啊。在貝葉斯模型中,歸納偏置表現爲先驗分佈模型的選擇和參數的選擇,在另外一些場景中,偏置項可能表現爲防止過擬合的正則化項,或者這個偏置項的存在純粹就是因爲模型本身的結構就是這樣要求的。歸納偏置通常犧牲靈活性以提高樣本的複雜性。理想情況下,歸納偏置既可以改善對解決方案的搜索,又不會顯着降低性能,並有助於找到以理想方式推廣的解決方案;然而,不合適的歸納偏置項會引入太強的約束可能導致最終的效果並不是最優的。

在深度學習中,實體和關係通常表示爲分佈式表示,規則可以當做是神經網絡函數逼近器; 然而,實體,關係和規則的確切形式因架構而異。也就是說不同的網絡架構對應到的實體和關係是不同的,CNN對應着自己的實體和關係,RNN同樣也對應着他自己的實體和關係,如下圖所示:

每種不同的網絡模型對應的實體、關係、偏置項都不同,例如RNN中實體代表着時間步,關係代表着序列

標準深度學習模型中的關係歸納偏置

這裏需要說relational inductive biases有別於inductive biases,什麼區別我們來看模型

全連接層:

輸入的是一個向量,輸出的是每個向量元素與權重向量點乘之後加上偏置項,經過一個激活函數,例如(ReLU)。在這個網絡中,實體是網絡中的單元,關係是各個單元連接的權重參數(層i中的所有單元連接到層j中的所有單元),並且規則是由權重和偏差組成的一系列函數來表示。整個模型中沒有共享參數,信息之間也沒有隔離,每一個單元都可以參與決定任何一個輸出單元,和輸出是沒有關係的。因此,全連接層的relational inductive biases是很弱的,也就是模型並沒有在歸納推斷的時候偏向於哪個relation,而是一視同仁,每個單元都連接到後一層的單元節點,自由度非常大。

卷積層:

CNN中的實體還是單元,或者說是網格元素(例如image中的pixel),relation更加稀疏。相比於全連接網絡,這裏加入的relational inductive biases是局域性和平移不變性,局域性指的就是卷積核是大小固定的,就那麼大,只抓取那麼大的區域的信息,遠處的信息不考慮;平移不變性指的是rule的複用,即卷積核到哪裏都是一樣的,同一個卷積核在各個地方進行卷積。到這我們可以看到,rule在深度學習的模型中的含義是如何將某一層的網絡信息傳遞到下一層,而且是具體到權重的值是多少,後文還提到一句話“learning algorithm which find rules for computing their interactions”,也就是說,算法指的是計算框架,例如卷積操作之類的,而rule是學習到的具體的以什麼權重進行卷積操作。

循環神經網絡:

RNN中的entity是每一步的輸入和hidden state;relation是每一步的hidden state對前一步hidden state和當前輸入的依賴。這裏的rule是用hidden state和輸入更新hidden state的方式。rule是在每一步都複用的,也就是說這裏存在一個relational inductive biases是temporal invariance,時間不變性。

Computations over sets and graphs

文章提出set(集合)的概念,集合中的元素是沒有順序的,但是集合中元素的一些特徵可以用來指定順序,比如質量體積等等。因此,用來處理set或graph的深度學習模型應該是在不同的排序方式下都能有同樣的結果,也就是對排序不變(invariance to ordering)。

作者強調處理set模型的 relational inductive biases 並不是因爲有什麼relation的存在,而恰恰是由於缺乏順序,比如求太陽系的中心位置,就是把各個行星的位置進行求平均,每一個行星都是對稱的。如果使用多層感知機(MLP)來處理這個問題,那麼就可能需要大量的訓練才能訓練出一個求平均的函數,因爲多層感知機對每一個輸入都是按照單獨的方式處理,而不是一視同仁的處理所有輸入。但是有的時候需要考慮排序,例如計算solar system裏每一個planet的運動,要考慮planet兩兩之間的相互作用。以上這兩個例子其實是兩個極端,一個是planet之間兩兩沒關係,另一個是兩兩都有關係,而現實世界的很多模型是處在這兩個極端之間的(如下圖),即並不是每兩個之間都沒有聯繫,但也並不是兩兩之間都有聯繫,這也其實就是graph模型,每一個物體只與一部分其它物體進行相互作用。

(a)一個分子結構,其中每個原子表示爲對應關係的節點和邊(Duvenaud 等,2015)。

(b)一個質量彈簧系統,其中繩索由在圖中表示爲節點的質量序列定義(Battaglia 等,2016;Chang 等,2017)。

(c)一個 n 主體系統,其中主體是節點,底層圖是完全連接的(Battaglia 等,2016 年;Chang 等,2017)。

(d)一個精密的主體系統,其中球和壁是節點,底層圖形定義球之間以及球和壁之間的相互作用

(e)一個句子,其中單詞對應於樹中的葉子,其他節點和邊可以由解析器提供。或者,可以使用完全連接的圖

(f)一張圖像,可以分解成與完全連接圖像中的節點相對應的圖像塊(Santoro 等,2017;Wang 等,2018)
 

Graph networks

作者在自己的模型中沒有使用神經元這個詞,意在強調這個模型不一定需要通過neural network實現,也可以使用別的函數。graph network的主要計算單元是GN block,GN block是一個輸入輸出都是graph的graph-to-graph module。在graph中,前面說過的entity就被表示成節點(node),而relation被表示成邊(edge),系統層面的特徵用global attribute表示。

節點表示爲 v_i,邊表示爲 e_k,全局屬性表示爲 u。我們還使用 s_k 和 r_k 分別表示邊 k 發送節點和接收節點的索引。

  • 有向邊:單向邊,從「發送」節點到「接收」節點。
  • 屬性:可以編碼爲向量、集合甚至其他圖形的屬性。
  • 屬性化:邊和頂點具有與其關聯的屬性。
  • 全局屬性:圖級屬性。
  • 多圖:頂點之間可以有多個邊,包括自邊(self-edge)

graph用一個3元組(3-tuple)表示 G = (u; V; E) (u v e 詳見上圖)u代表的是一個全局信息(global attribute),是整個graph的一個特徵;V代表graph的節點的集合,E代表邊的集合代表邊和節點的數量,是第k個邊的特徵(attribute),分別是receiver node和sender node的編號

計算單元:GN block 包含三個更新函數和三個聚合函數

左邊φ爲更新函數,右邊ρ爲聚合函數 

是作用於edge的,更新第k個edge的時候,輸入參數爲  [  當前的特徵、連接在這個edge兩端的節點的特徵,以及全局的特徵u  ] 。是對node使用的,輸入的是全局的特徵u、當前節點的特徵、以及, 這個是由公式第一行右邊的aggregation function來得到的。是用來更新全局信息的,輸入也無需贅述。

右邊的三個函數,每一個函數都有一個上標,這個上標指的是由什麼的信息生成什麼的信息,例如指的是由edge的信息生成node的信息。這三個函數的輸入:

  1. ,這裏,rk=i,即所有指向索引爲i的節點的有向邊,可以看出將要生成的是第i個node的信息,指的是所有的edge,這個函數也就是用所有更新過的edge的信息來生成一個用來產生新的node信息的,然後再由生成最終的新的node信息。

右邊的函數解釋通了,左邊的函數中的輸入變量也就有了,也就是說,整個過程是:

  1. 首先用當前的edge信息、node信息、以及全局信息u來生成新的edge的信息,
  2. 有了新的edge信息,就能生成新的node信息;
  3. 有了新的node和edge信息,就能生成新的全局信息u,整個更新過程也就完成了。

算法的過程如下圖:

這個算法,輸入是graph的三個組成部分:node、edge、u。

  1. 函數在第一個循環中用更新edge的update function更新每一個edge,
  2. 在第二個循環中,更新每個node的特徵,
  3. 然後生成,將這兩個參數分別進行聚合生成相應的信息
  4. 最後更新u,
  5. 函數最後的返回值就是更新後的edge、node、u。

算法計算步驟示意圖如下:

 這裏面,作者強調,函數的輸入是一個集合,輸出是一個單獨的值,這個函數要能做到可以輸入不同數量的元素,也就是說輸入集合的大小是可變的,而且,輸入集合中的元素無論怎麼排列,都應該輸出同樣的信息。即invariant to permutation。這個更新的順序作者認爲不是固定的,倒過來先更新global,再更新node,再更新edge也是無所謂的

作者給了一個具體的例子來使這個更新過程更加具體,假定我們有一個系統,是由橡膠球以及球體之間相連接的彈簧(並不是任意兩個球體之間都有彈簧,而是有些球體之間有彈簧,有些沒有)構成。第一步update edge的信息可理解爲計算和更新球體兩兩之間的作用力或者彈性勢能之類的量;更新node信息可以理解爲是根據這些更新好的勢能或作用力等表徵相互作用的量來更新球體的位置速度等信息;最後更新全局的信息可能是在計算總勢能之類的全局量。在這個例子裏,先更新哪個都不重要。

Relational inductive biases in graph networks

GN block的relational inductive biases是很強的

首先,每一個輸入的graph的entity之間的relation都是不一定什麼樣的,也就是說GN的輸入決定了實體節點之間是如何相互作用或者相互獨立的;兩個entity之間有直接的聯繫,就用一個edge連接以表示;沒有直接的聯繫,就沒有相應的edge,這兩個entity之間也就不能直接相互作用。有些時候人們並不會因爲graph的兩個node之間沒有連接而不去讓他們直接發生相互作用,例如在一篇人體動作識別的paper中,作者將人體關節兩兩之間都加上edge,來判斷動作,這是因爲有些關節之間雖然不是生理結構上直接相連的,但是組合起來卻能完成一些動作,例如兩個手拍手,這也就體現一個問題,graph中原有的edge並不一定體現我們在計算時所需要的相互作用,或者不全面,人體關節是否直接相連跟他們能否共同完成某些動作並不是唯一的決定性的關係,有很多不相鄰的關節其實在我們識別動作時應該設置上相互作用的,比如兩隻手。

relational inductive biases的第二點表現是graph將entity和entity之間的relation都用set(集合)來表示,這意味着GN對這些元素的順序的改變要具有不變性。

第三點更新graph的edge和node的函數是在所有的node和edge上覆用的,這說明GN會自動支持組合泛化,這是因爲無論graph有多少node,node之間的連接是怎樣的,GN都能夠處理

Design principles for graph network architectures

作者在這裏強調,GN是不對attribute representation和函數的形式有什麼限制的,但是本文會主要將注意力集中在深度學習的架構上,使得GN成爲一個可學習的graph-to-graph的函數近似(function approximator,這個應該是指神經網絡都是起到擬合函數的作用,因此訓練出來的也就是一個函數的近似)。

Flexible representations

GN對graph representation的支持是很靈活的,一方面是global、edge、node的特徵的表示都很靈活,可以是向量、tensor、sequence、set,甚至是graph。爲了能和其他的深度學習結構對接,往往會將representation選爲tensor或vector。此外,對於不同任務的不同需求,GN都能滿足,edge-focused GN就輸出edge,例如判斷entity之間相互作用的任務;node-focused的就輸出node,graph-focused的就輸出global。另一方面,GN對輸入graph的結構也沒要求,什麼結構都支持。我們得到的數據可能是entity之間所有的relation都已知的,也可能是都未知的,更多的時候介於這兩個極端之間。有的時候,entity是怎麼設定的也不知道,這時候可能需要假設,例如將句子中的每個詞彙都視作一個node(entity)。relation不明確的時候,最簡單的方法是假設所有entity之間都有聯繫,但這種方法在entity數量很大時不太好,因爲這時edge數量隨node數量平方增長。因此,relation缺失的問題,也就是從沒結構的數據中推測出一些稀疏的結構,也是一個很重要的未來研究的方向

Configurable within-block structure

GN block內部的結構是可以隨意改變的,前面介紹了完整的GN block的工作過程,介紹了裏面的信息的傳輸和使用的函數(函數未指定具體形式),但實際應用中,信息的傳遞結構和函數都可以隨意指定,下圖給出了幾種形式:

(a)是一個完整的GN block,其餘的是變種。

(b)是函數設置爲RNN的簡單的例子,需要額外提供一個hidden state作爲輸入和輸出。這裏面沒有message-passing,意思是u、v、e之間沒有交流,message-passing應該是特指有graph結構的數據的結點等元素之間按照自己的結構進行信息的傳遞,例如卷積操作,所以這種沒有利用結構信息的就算是沒有message-passing了。這種使用RNN的GN block可以用來做一些dynamic graph states的smoothing

(c)是2017年Glimer提出的MPNN模型,

(d) NLNN,Non-local neural network,是2018年CVPR的一篇文章提出的,這篇文章提出了各種不同的attention機制,包括intra-/self-/vertex-/graph-attention,這些attention的意思都是指的node如何進行更新。

NLNN模型是不考慮edge的,每兩個node之間都會計算一個attention weight,然後加權求和(這也是爲什麼叫non-local,並不是局部進行卷積,而是全局進行加權),但是一些其他和NLNN類似的工作是隻計算有edge相連的節點間的attention weights的,包括Attentional multi-agent predictive modeling(Hoshen 2017)和Graph attention networks。上圖其實是將圖(d)的拆解開了,每次計算的時候,是一個未經過歸一化的權重係數,是一個標量,然後是一個vector,是等待進行加權求和的node的特徵經過函數β處理得到的,然後進行卷積的時候就如下述公式進行操作:

這三個公式的順序應該是1、3、2,也就是先更新了edge,然後是計算了加權求和的結果,最後用加權求和的結果更新了node。2017年Vaswani(Attention Is All You Need)提出了multi-head self-attention機制,可以並行的同時計算多個attention函數,也就是分別按照不同的權重將近鄰節點加權求和,然後將不同權重得到的結果連接起來作爲卷積後的結果。這就像是使用了不同類型的edge,通過不同的連接方式進行了卷積。

接着作者簡介一些其他的GN的變種,指出了完整的GN的各個部分根據需要都可以忽略,有的模型忽略了global信息,有的卻只需要global信息,不需要的,就算得到了也直接忽略就好。在輸入的時候,如果有的信息沒有,比如沒有edge信息,那麼就當成attribute vector的長度爲0即可。

Composable multi-block architectures

設計graph networks的一個關鍵原則就是通過將GN block組合起來得到複雜的結構。因爲GN block輸出和輸入一樣都是graph,因此內部結構不同的GN block也可以方便的組合起來,就像標準的deep learning模型輸入輸出都是tensor一樣。不同的GN block組合起來可以複用內部的函數,就像展開的RNN一樣,並且在合併input graph和hidden state的時候,可以採用LSTM或者GRU一樣的gating機制,而不是簡單地合併起來。

圖網絡通過組合多個GN模塊實現複雜結構,組合形式:

 基本的兩個GN block的合併方式爲具體公式爲:一個圖G經過GN1的運算的輸出作爲GN2的輸入。

在上圖(a)中,GN block可以是共享的(GN1 = GN2 = · · · = GNM)也可以是不共享的(GN1 ≠ GN2 ≠ · · · ≠ GNM)

(b)中是encoder-decoder模型,這是一種常用方式,將圖輸入進行編碼獲取到中間隱狀態表示,輸入GNcore中GNcore是一個共享block ,然後解碼到輸出圖。在我們上文提到的小球彈簧系統中,可以這樣理解,encoder是計算小球之間初始力和相互作用的能量,core可以理解爲一個對系統的動態更新,解碼器用於讀取系統最終的狀態,小球的位置等

(c)recurrent GN-based architectures類似於RNN,加入了隱藏變量,這種結構適用於預測圖序列,比如動態系統在時間序列下的狀態軌跡。經過編碼後的圖必須和結構一致,這樣他們纔可以連接他們的和u向量,在輸出的時候複製一份給然後進行解碼輸出。在每一步都是共享的 

 如果我們不包含全局信息u,那麼某個節點的信息需要m個傳播步驟後才能到達另一個我們想到達的節點,所以在不帶全局信息情況下,節點可以傳播的信息由最多m跳的節點和邊緣集確定

一些關於graph networks編程的問題,由於node和edge的update function都是在所有node和edge複用的,因此它們的更新都是可以並行計算的;此外,多個graph可以看成一個大的graph的不相連的子圖,也可以並行起來計算。

Discussion

首先討論一下graph networks的combinatorial generalization,作者說道,GN的結構很自然的會支持組合泛化,因爲計算不是在整個系統的宏觀層面執行的,計算是在各個entity和relation上覆用的,這使得之前從來沒見過的系統也能夠進行處理

接着分析了一些GN的侷限性,一方面是有些問題無法解決,像是區分一些非同構的graph之類的問題,另一方面是有些問題不能直接用graph來表示,像一些recursion、control flow、conditional iteration之類的概念至少需要一些額外的假設

深度學習模型可以直接處理原始的感受器得到的信息,但是GN需要的graph如何生成也是個問題,將得到的image,text搞成全連接的graph不是很好,而且直接將這些原始數據的基本元素視作entity也不見得合適,例如參與卷積的像素點並不是圖片中的物體,而且實際物體之間的relation可能是稀疏的,如何獲取這個稀疏性也是一個問題。因此,能夠從原始數據中提取出entity是一個重要的問題

另一個存在的問題是,在計算的過程中,graph也可能發生變化,例如某一個entity代表的物體可能會破碎,那麼代表這個物體的node也應該相應的分離開來,類似的,有些時候物體之間的關係也會發生變化,需要添加或者去除edge,這種適應性的問題也正在被研究,現在已經有一些識別graph的underlying structure(潛在的結構)的算法可能是可以用來進行這個任務的。

由於GN的行爲和人類對世界的理解類似,都是將世界解釋成物體和相互關係組成的,因此GN的行爲可能會更加容易解釋,變得更加易於分析,更容易可視化。探索GN的可解釋性也是未來一個有趣的方向。

雖然本文是將注意力集中在graph上的,但是與此相關的一個方向便是將deep learning和structured representation相結合,相關的工作有很多

 

參考:https://blog.csdn.net/b224618/article/details/81380567

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章