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