圖神經網絡(Graph NN)是近來的一大研究熱點,尤其是DeepMind提出的「Graph Networks」,號稱有望讓深度學習實現因果推理。但這篇論文晦澀難懂,復星集團首席AI科學家、大數醫達創始人鄧侃博士,在清華俞士綸教授團隊對GNN綜述清晰分類的基礎上,解析DeepMind「圖網絡」的意義。
圖神經網絡(GNN)的出現
回顧 2018 年機器學習的進展,2018年6月 DeepMind 團隊發表的論文 「Relational inductive biases, deep learning, and graph networks」,是一篇重要的論文,引起業界熱議。
隨後,很多學者沿着他們的思路,繼續研究,其中包括清華大學孫茂松團隊。他們於2018年12月,發表了一篇綜述,題目是「Graph neural networks: A review of methods and applications」。
2019年1月,俞士綸教授團隊,也寫了一篇綜述,這篇綜述的覆蓋面更全面,題目是「A Comprehensive Survey on Graph Neural Networks」。
DeepMind 團隊的這篇論文,引起業界這麼熱烈的關注,或許有三個原因:
- 聲望:自從 AlphaGo 戰勝李世乭以後,DeepMind 享譽業界,成為機器學習業界的領軍團隊,DeepMind 團隊發表的論文,受到同行普遍關注;
- 開源:DeepMind 團隊發表論文 [1] 以後不久,就在 Github 上開源了他們開發的軟件系統,項目名稱叫 Graph Nets [4];
- 主題:聲望和開源,都很重要,但是並不是被業界熱議的最主要的原因。最主要的原因是主題,DeepMind 團隊研究的主題是,如何用深度學習方法處理圖譜。
什麼是圖神經網絡(GNN)
圖譜 (Graph) 由點 (Node) 和邊 (Edge) 組成。
圖譜是一個重要的數學模型,可以用來解決很多問題。
譬如我們把城市地鐵線路圖當成圖譜,每個地鐵站就是一個點,相鄰的地鐵站之間的連線就是邊,輸入起點到終點,我們可以通過圖譜的計算,計算出從起點到終點,時間最短、換乘次數最少的行程路線。
又譬如 Google 和百度的搜索引擎,搜索引擎把世界上每個網站的每個網頁,都當成圖譜中的一個點。每個網頁里,經常會有鏈接,引用其它網站的網頁,每個鏈接都是圖譜中的一條邊。哪個網頁被引用得越多,就說明這個網頁越靠譜,於是,在搜索結果的排名也就越靠前。
圖譜的操作,仍然有許多問題有待解決。
譬如輸入幾億條滴滴司機行進的路線,每條行進路線是按時間排列的一連串(時間、GPS經緯度)數組。如何把幾億條行進路線,疊加在一起,構建城市地圖?
不妨把地圖也當成一個圖譜,每個交叉路口,都是一個點,連接相鄰的兩個交叉路口,是一條邊。
貌似很簡單,但是細節很麻煩。
舉個例子,交叉路口有很多形式,不僅有十字路口,還有五角場、六道口,還有環形道立交橋——如何從多條路徑中,確定交叉路口的中心位置?
GNN 的價值
把深度學習,用來處理圖譜,能夠擴大我們對圖譜的處理能力。
深度學習在圖像和文本的處理方面,已經取得了巨大的成功。如何擴大深度學習的成果,使之應用於圖譜處理?
圖像由橫平豎直的像素矩陣組成。如果換一個角度,把每個像素視為圖譜中的一個點,每個像素點與它周邊的 8 個相鄰像素之間都有邊,而且每條邊都等長。通過這個視角,重新審視圖像,圖像是廣義圖譜的一個特例。
處理圖像的諸多深度學習手段,都可以改頭換面,應用於廣義的圖譜,譬如 convolution、residual、dropout、pooling、attention、encoder–decoder 等等。這就是深度學習圖譜處理的最初想法,很樸實很簡單。
雖然最初想法很簡單,但是深入到細節,各種挑戰層出不窮。每種挑戰,都意味着更強大的技術能力,都孕育着更有潛力的應用場景。
深度學習圖譜處理這個研究方向,業界沒有統一的稱謂。
強調圖譜的數學屬性的團隊,把這個研究方向命名為 Geometric Deep Learning。孫茂松團隊和俞士綸團隊,強調神經網絡在圖譜處理中的重要性,強調思想來源,他們把這個方向命名為 Graph Neural Networks。DeepMind 團隊卻反對綁定特定技術手段,他們使用更抽象的名稱,Graph Networks。
命名不那麼重要,但是用哪種方法去梳理這個領域的諸多進展,卻很重要。把各個學派的目標定位和技術方法,梳理清楚,有利於加強同行之間的相互理解,有利於促進同行之間的未來合作。
深度學習圖譜的5個方向
俞士綸團隊把深度學習圖譜處理的諸多進展,梳理成 5 個子方向,非常清晰好懂。
- Graph Convolution Networks
- Graph Attention Networks
- Graph Embedding
- Graph Generative Networks
- Graph Spatial-temporal Networks
先說 Graph Convolution Networks (GCNs)。
GCN 把 CNN 諸般武器,應用於廣義圖譜。CNN 主要分為四個任務,
- 點與點之間的融合。在圖像領域,點與點之間的融合主要通過卷積技術 (convolution) 來實現。在廣義圖譜里,點與點之間的關係,用邊來表達。所以,在廣義圖譜里,點點融合,有比卷積更強大的辦法。Messsage passing [5] 就是一種更強大的辦法。
- 分層抽象。CNN 使用 convolution 的辦法,從原始像素矩陣中,逐層提煉出更精鍊更抽象的特徵。更高層的點,不再是孤立的點,而是融合了相鄰區域中其它點的屬性。融合鄰點的辦法,也可以應用於廣義圖譜中。
- 特徵提煉。CNN 使用 pooling 等手段,從相鄰原始像素中,提煉邊緣。從相鄰邊緣中,提煉實體輪廓。從相鄰實體中,提煉更高層更抽象的實體。CNN 通常把 convolution 和 pooling 交替使用,構建結構更複雜,功能更強大的神經網絡。對於廣義圖譜,也可以融匯 Messsage passing 和 Pooling,構建多層圖譜。
- 輸出層。CNN 通常使用 softmax 等手段,對整張圖像進行分類,識別圖譜的語義內涵。對於廣義圖譜來說,輸出的結果更多樣,不僅可以對於整個圖譜,輸出分類等等結果。而且也可以預測圖譜中某個特定的點的值,也可以預測某條邊的值。
Graph Attention Networks 要解決的問題,與 GCN 類似,區別在於點點融合、多層抽象的方法。
Graph Convolution Networks 使用卷積方式,實現點點融合和分層抽象。Convolution 卷積方式僅僅適用於融合相鄰的點,而 attention 聚焦方式卻不限於相鄰的點,每個點可以融合整個圖譜中所有其它點,不管是否相鄰,是否融合如何融合,取決於點與點之間的關聯強弱。
Attention 能力更強大,但是對於算力的要求更高,因為需要計算整個圖譜中任意兩個點之間的關聯強弱。所以 Graph Attention Networks 研究的重點,是如何降低計算成本,或者通過並行計算,提高計算效率。
GCN 以外的其他 4 種圖譜神經網絡
Graph Embedding 要解決的問題,是給圖譜中每個點每條邊,賦予一個數值張量。圖像不存在這個問題,因為像素天生是數值張量。但是,文本由文字詞彙語句段落構成,需要把文字詞彙,轉化成數值張量,才能使用深度學習的諸多算法。
如果把文本中的每個文字或詞彙,當成圖譜中的一個點,同時把詞與詞之間的語法語義關係,當成圖譜中的一條邊,那麼語句和段落,就等同於行走在文本圖譜中的一條行進路徑。
如果能夠給每個文字和詞彙,都賦予一個貼切的數值張量,那麼語句和段落對應的行進路徑,多半是最短路徑。
有多種實現 Graph Embedding 的辦法,其中效果比較好的辦法是 Autoencoder。用 GCN 的辦法,把圖譜的點和邊轉換成數值張量,這個過程稱為編碼 (encoding),然後通過計算點與點之間的距離,把數值張量集合,反轉為圖譜,這個過程稱為解碼 (decoding)。通過不斷地調參,讓解碼得到的圖譜,越來越趨近於原始圖譜,這個過程稱為訓練。
Graph Embedding 給圖譜中的每個點每條邊,賦予貼切的數值張量,但是它不解決圖譜的結構問題。
如果輸入大量的圖譜行進路徑,如何從這些行進路徑中,識別哪些點與哪些點之間有連邊?難度更大的問題是,如果沒有行進路徑,輸入的訓練數據是圖譜的局部,以及與之對應的圖譜的特性,如何把局部拼接成圖譜全貌?這些問題是 Graph Generative Networks 要解決的問題。
Graph Generative Networks 比較有潛力的實現方法,是使用 Generative Adversarial Networks (GAN)。
GAN 由生成器 (generator) 和辨別器 (discriminator) 兩部分構成:1. 從訓練數據中,譬如海量行進路徑,生成器猜測數據背後的圖譜應該長什麼樣;2. 用生成出來的圖譜,偽造一批行進路徑;3. 從大量偽造的路徑和真實的路徑中,挑選幾條路徑,讓辨別器識別哪幾條路徑是偽造的。
如果辨別器傻傻分不清誰是偽造路徑,誰是真實路徑,說明生成器生成出的圖譜,很接近於真實圖譜。
動態圖譜
以上我們討論了針對靜態圖譜的若干問題,但是圖譜有時候是動態的,譬如地圖中表現的道路是靜態的,但是路況是動態的。
如何預測春節期間,北京天安門附近的交通擁堵情況?解決這個問題,不僅要考慮空間 spatial 的因素,譬如天安門周邊的道路結構,也要考慮時間 temporal 的因素,譬如往年春節期間該地區交通擁堵情況。這就是 Graph Spatial-temporal Networks 要解決的問題之一。
Graph Spatial-temporal Networks 還能解決其它問題,譬如輸入一段踢球的視頻,如何在每一幀圖像中,識別足球的位置?這個問題的難點在於,在視頻的某些幀中,足球有可能是看不見的,譬如被球員的腿遮擋了。
解決時間序列問題的通常思路,是 RNN,包括 LSTM 和 GRU 等等。
DeepMind 團隊在 RNN 基礎上,又添加了編碼和解碼 (encoder-decoder) 機制。
DeepMind想表達什麼?
在 DeepMind 團隊的這篇論文里[1],他們聲稱自己的工作,「part position paper, part review, and part unification」,既是提案,又是綜述,又是融合。這話怎麼理解?
DeepMind聯合谷歌大腦、MIT等機構27位作者發表重磅論文,提出「圖網絡」(Graph network),將端到端學習與歸納推理相結合,有望解決深度學習無法進行關係推理的問題。
前文說到,俞士綸團隊把深度學習圖譜處理的諸多進展,梳理成 5 個子方向:1) Graph Convolution Networks、2) Graph Attention Networks、3) Graph Embedding、4) Graph Generative Networks、5) Graph Spatial-temporal Networks。
DeepMind 團隊在 5 個子方向中着力解決後 4 個方向,分別是 Graph Attention Networks、Graph Embedding、Graph Generative Networks 和 Graph Spatial-temporal Networks。他們把這四個方向的成果,「融合」成統一的框架,命名為 Graph Networks。
在他們的論文中,對這個四個子方向沿途的諸多成果,做了「綜述」,但是並沒有綜述 Graph Convolution Networks 方向的成果。然後他們從這四個子方向的諸多成果中,挑選出了他們認為最有潛力的方法,形成自己的「提案」,這就是他們開源的代碼 [4]。
雖然論文中,他們聲稱他們的提案解決了四個子方向的問題,但是查看他們開源的代碼,發現其實他們着力解決的是後兩個子方向,Graph Attention Networks 和 Graph Spatial-temporal Networks。
DeepMind 的思路是這樣的:首先,把 [5] 的 message passing 點點融合的機制,與 [6] 圖譜全局的聚焦機制相結合,構建通用的 graph block 模塊;其次,把 LSTM 要素融進 encoder-decoder 框架,構建時間序列機制;最後,把 graph block 模塊融進 encoder-decoder 框架,形成 Graph Spatial-temporal Networks 通用系統。
為什麼 DeepMind 的成果很重要?
一、深度學習過程的解釋
從原理上講,深度學習譬如 CNN 的成果,來自於對圖像的不斷抽象。也就是,從原始的像素矩陣中,抽象出線段。從首尾相連的相鄰線段中,抽象出實體的輪廓。從輪廓抽象出實體,從實體抽象出語義。
但是,如果窺探 CNN 每一層的中間結果,實際上很難明確,究竟是哪一層的哪些節點,抽象出了輪廓,也不知道哪一層的哪些節點,抽象出了實體。總而言之,CNN 的網絡結構是個迷,無法明確地解釋網絡結構隱藏的工作過程的細節。
無法解釋工作過程的細節,也就談不上人為干預。如果 CNN 出了問題,只好重新訓練。但重新訓練後的結果,是否能達到期待的效果,無法事先語料。往往按下葫蘆浮起瓢,解決了這個缺陷,卻引發了其它缺陷。
反過來說,如果能明確地搞清楚 CNN 工作過程的細節,就可以有針對性地調整個別層次的個別節點的參數,事先人為精準干預。
二、小樣本學習
深度學習依賴訓練數據,訓練數據的規模通常很大,少則幾萬,多大幾百萬。從哪裡收集這麼多訓練數據,需要組織多少人力去對訓練數據進行標註,都是巨大挑戰。
如果對深度學習的過程細節,有更清晰的了解,我們就可以改善卷積這種蠻力的做法,用更少的訓練數據,訓練更輕巧的深度學習模型。
卷積的過程,是蠻力的過程,它對相鄰的點,無一遺漏地不分青紅皂白地進行卷積處理。
如果我們對點與點之間的關聯關係,有更明確的了解,就不需要對相鄰的點,無一遺漏地不分青紅皂白地進行卷積處理。只需要對有關聯的點,進行卷積或者其它處理。
根據點與點之間的關聯關係,構建出來的網絡,就是廣義圖譜。廣義圖譜的結構,通常比 CNN 網絡更加簡單,所以,需要的訓練數據量也更少。
三、遷移學習和推理
用當今的 CNN,可以從大量圖片中,識別某種實體,譬如貓。
但是,如果想給識別貓的 CNN 擴大能力,讓它不僅能識別貓,還能識別狗,就需要額外的識別狗的訓練數據。這是遷移學習的過程。
能不能不提供額外的識別狗的訓練數據,而只是用規則這樣的方式,告訴電腦貓與狗的區別,然後讓電腦識別狗?這是推理的目標。
如果對深度學習過程有更精準的了解,就能把知識和規則,融進深度學習。
從廣義範圍說,深度學習和知識圖譜,是機器學習陣營中諸多學派的兩大主流學派。迄今為止,這兩大學派隔岸叫陣,各有勝負。如何融合兩大學派,取長補短,是困擾學界很久的難題。把深度學習延伸到圖譜處理,給兩大學派的融合,帶來了希望。
四、空間和時間的融合,像素與語義的融合
視頻處理,可以說是深度學習的最高境界。
- 視頻處理融合了圖像的空間分割,圖像中實體的識別,實體對應的語義理解。
- 多幀靜態圖像串連在一起形成視頻,實際上是時間序列。同一個實體,在不同幀中所處的位置,蘊含著實體的運動。運動的背後,是物理定律和語義關聯。
- 如何從一段視頻,總結出文本標題。或者反過來,如何根據一句文本標題,找到最貼切的視頻。這是視頻處理的經典任務,也是難度超大的任務。
參考文獻
- Relational inductive biases, deep learning, and graph networks
- Graph neural networks: A review ofmethods and applications
- A Comprehensive Survey on Graph Neural Networks
- Graph nets
- Neural message passing for quantum chemistry
- Non-local neural networks
本文轉自公眾號 新智元,原文地址
Comments