1. 程式人生 > >深度學習在graph上的應用

深度學習在graph上的應用

轉載請標明出處: http://blog.csdn.net/ikerpeng/article/details/72844728

知乎專欄:https://zhuanlan.zhihu.com/p/27216346

本文要介紹的這一篇paper是ICML2016上一篇關於 CNN 在圖(graph)上的應用。ICML 是機器學習方面的頂級會議,這篇文章--<<Learning CNNs for Graphs>>--所研究的內容也具有非常好的理論和實用的價值。如果您對於圖的資料結構並不是很熟悉建議您先參考本文末的相關基礎知識的介紹。

CNN已經在計算機視覺(CV)以及自然語言處理等領域取得了state-of-art 的水平,其中的資料可以被稱作是一種Euclidean Data,CNN正好能夠高效的處理這種資料結構,探索出其中所存在的特徵表示。


圖1 尤拉資料(Euclidean Data)舉例

所謂的尤拉資料指的是類似於grids, sequences… 這樣的資料,例如影象就可以看作是2D的grid資料,語音訊號就可以看作是1D的grid資料。但是現實的處理問題當中還存在大量的 Non-EuclideanData,如社交多媒體網路(Social Network)資料,化學成分(Chemical Compound)結構資料,生物基因蛋白(Protein)資料以及知識圖譜(Knowledge Graphs)資料等等,這類的資料屬於圖結構的資料(Graph-structured Data)。CNN等神經網路結構則並不能有效的處理這樣的資料。因此,這篇paper要解決的問題就是如何使用CNN高效的處理圖結構的資料。

圖2 Graph 資料舉例

本文所提出演算法思想很簡單,將一個圖結構的資料轉化為CNN能夠高效處理的結構。處理的過程主要分為兩個步驟:1.從圖結構當中選出具有代表性的nodes序列;2.對於選出的每一個node求出一個卷積的鄰域(neighborhoodfield)。接下來我們詳細的介紹演算法相關的細節。

本paper將影象(image)看作是一種特殊的圖(graph),即一種的grid graph,每一個畫素就是graph當中的一個node。那麼我猜想文章的motivation主要來自於想將CNN在影象上的應用generalize 到一般的graph上面。

那麼我們首先來看一下CNN在Image當中的應用。如圖3所示,左圖表示的是一張影象在一個神經網路層當中的卷機操作過程。最底部的那一層是輸入的特徵圖(或原圖),通過一個卷積(這裡表示的是一個3*3的卷積核,也就是文章當中的receptivefiled=9)操作,輸出一張卷積後的特徵圖。如圖3 的卷積操作,底層的9個畫素被加權對映到上層的一個畫素;再看圖3中的右圖,表示從graph的角度來看左圖底層的輸入資料。其中任意一個帶卷積的區域都可以看作是一箇中心點的node以及它的領域的nodes集合,最終加權對映為一個值。因此,底部的輸入特徵圖可以看作是:在一個方形的grid 圖當中確定一些列的nodes來表示這個影象並且構建一個正則化的鄰域圖(而這個鄰域圖就是卷積核的區域,也就是感知野)。

圖3 影象的卷積操作

按照這樣的方式來解釋,那麼如paper中Figure1所示,一張4*4大小的影象,實際上可以表示為一個具有4個nodes(圖中的1,2,3,4)的圖(graph),其中每一個node還包括一個和卷積核一樣大小的鄰域(neighborhoodfiled)。那麼,由此得到對於這種影象(image)的卷積實際上就是對於這4個node組成的圖(graph)的領域的卷積。那麼,對於一個一般性的graph資料,同樣的只需要選出其中的nodes,並且求解得到其相關的固定大小(和卷積核一樣大小)領域便可以使用CNN卷積得到圖的特徵表示。

圖4 paper中的Figure1.

需要注意的是,圖4(b)當中表示的是(a)當中的一個node的鄰域,這個感知野按照空間位置從左到右,從上到下的順序對映為一個和卷積核一樣大小的vector,然後再進行卷積。但是在一般的圖集當中,不存在影象當中空間位置資訊。這也是處理圖資料過程當中要解決的一個問題。

基於以上的描述paper當中主要做了三個事情:1. 選出合適的nodes;2. 為每一個node建立一個鄰域;3. 建立graph表示到 vector表示的單一對映,保證具有相似的結構特徵的node可以被對映到vector當中相近的位置。演算法具體分為4個步驟:

1.      圖當中頂點的選擇Node Sequence Selection

首先對於輸入的一個Graph,需要確定一個寬度w(定義於Algorithm 1),它表示也就是要選擇的nodes的個數。其實也就是感知野的個數(其實這裡也就是表明,每次卷積一個node的感知野,卷積的stride= kernel size)。那麼具體如何進行nodes的選擇勒?

實際上,paper當中說根據graph當中的node的排序label進行選擇,但是本文並沒有對如何排序有更多的介紹。主要採取的方法是:centrality,也就是中心化的方法,個人的理解為越處於中心位置的點越重要。這裡的中心位置不是空間上的概念,應該是度量一個點的關係中的重要性的概念,簡單的舉例說明。如圖5當中的兩個圖實際上表示的是同一個圖,對其中紅色標明的兩個不同的nodes我們來比較他們的中心位置關係。比較的過程當中,我們計算該node和其餘所有nodes的距離關係。我們假設相鄰的兩個node之間的距離都是1。

圖5 圖當中的兩個nodes

那麼對於圖5當中的右圖的紅色node,和它直接相連的node有4個,因此距離+4;再稍微遠一點的也就是和它相鄰點相鄰的有3個,距離+6;依次再相鄰的有3個+9;最後還剩下一個最遠的+4;因此我們知道該node的總的距離為23。同理我們得到左邊的node的距離為3+8+6+8=25。那麼很明顯node的選擇的時候左邊的node會被先選出來。

當然,這只是一種node的排序和選擇的方法,其存在的問題也是非常明顯的。Paper並沒有在這次的工作當中做詳細的說明。

2.      找到Node的領域

接下來對選出來的每一個node確定一個感知野receptive filed以便進行卷積操作。但是,在這之前,首先找到每一個node的鄰域區域(neighborhood filed),然後再從當中確定感知野當中的nodes。假設感知野的大小為k,那麼對於每一個Node很明顯都會存在兩種情況:鄰域nodes不夠k個,或者是鄰域點多了。這個將在下面的章節進行講解。

圖6 Neighborhood Assemble結果

如圖選出的是6個nodes,對於每一個node,首先找到其直接相鄰的nodes(被稱作是1-neighborhood),如果還不夠再增加間接相鄰的nodes。那麼對於1-neighborhood就已經足夠的情況,先全部放在候選的區域當中,在下一步當中通過規範化來做最終的選擇。

3.      圖規範化過程Graph Normalization

假設上一步NeighborhoodAssemble過程當中一個node得到一個領域nodes總共有N個。那麼N的個數可能和k不相等的。因此,normalize的過程就是要對他們打上排序標籤進行選擇,並且按照該順序對映到向量當中。

圖6 求解node的receptivefiled

如果這個node的鄰域nodes的個數不足的話,直接全部選上,不夠補上啞節點(dummy nodes),但還是需要排序;如果數目N超過則需要按著排序截斷後面的節點。如圖6所示表示從選node到求解出receptive filed的整個過程。Normalize進行排序之後就能夠對映到一個vector當中了。因此,這一步最重要的是對nodes進行排序。

圖7 Normalize過程

如圖7所示,表示對任意一個node求解它的receptive filed的過程。這裡的卷積核的大小為4,因此最終要選出來4個node,包括這個node本身。因此,需要給這些nodes打上標籤(labeling)。當然存在很多的方式,那麼怎樣的打標籤方式才是最好的呢?如圖7所示,其實從這7個nodes當中選出4個nodes會形成一個含有4個nodes的graph的集合。作者認為:在某種標籤下,隨機從集合當中選擇兩個圖,計算他們在vector空間的圖的距離和在graph空間圖的距離的差異的期望,如果這個期望越小那麼就表明這個標籤越好!具體的表示如下:


得到最好的標籤之後,就能夠按著順序將node對映到一個有序的vector當中,也就得到了這個node的receptive field,如圖6最右邊所示。

4.      卷積網路結構Convolutional Architecture

文章使用的是一個2層的卷積神經網路,將輸入轉化為一個向量vector之後便可以用來進行卷積操作了。具體的操作如圖8所示。


圖8 卷積操作過程

首先最底層的灰色塊為網路的輸入,每一個塊表示的是一個node的感知野(receptive field)區域,也是前面求解得到的4個nodes。其中an表示的是每一個node的資料中的一個維度(node如果是彩色影象那就是3維;如果是文字,可能是一個詞向量……這裡表明資料的維度為n)。粉色的表示卷積核,核的大小為4,但是寬度要和資料維度一樣。因此,和每一個node卷季後得到一個值。卷積的步長(stride)為4,表明每一次卷積1個node,stride=4下一次剛好跨到下一個node。(備註:paper Figure1 當中,(a)當中的stride=1,但是轉化為(b)當中的結構後stride=9)。卷積核的個數為M,表明卷積後得到的特徵圖的通道數為M,因此最終得到的結果為V1……VM,也就是圖的特徵表示。有了它便可以進行分類或者是迴歸的任務了。

基礎問題:

如果對其中的nodes進行特徵表示(Feat)的話如下右圖。

 

可能還需要明確的問題:

1.      Graph 相似是什麼概念?相似而不 同構isomorphic又是什麼概念?   

2.      application-dependent node 是什麼?

3.      這些Graph 相關的資料集具體是什麼樣的資料集,如MUTAG, PCT, NCI1,要完成什麼樣的任務?

4.      Ranking 和labeling的關係沒有太清楚。

5.      Optimal graph normalizationis NP-hard 為什麼?

6.      擴充到edges的應用

類似於node,增加特徵的通道就好了

文章可能寫錯的地方:

   演算法3當中第7行的|V|可能應該是|U|。

相關推薦

唐宇迪深度學習課程篇——動手完成簡單的神經網絡

random 學習課程 div abs 特征值 唐宇迪 arr 神經網絡 簡單的 #coding:utf-8 ‘‘‘ Created on 2017年7月21日 @author: KLKJ ‘‘‘ import numpy as np def sigmoid(x,d

實戰深度學習)OpenCV庫

選擇 世界排名 pat 調用 install 英文 就是 深度學習 第一次 在如今人工智能的浪潮下,無數模擬機器學習和深度學習的開發者工具倍出,其中在計算機圖形學和計算機視覺裏面最流行的一個庫就是OpenCV庫了.計算機圖形學和計算機視覺學在我們的自動駕駛和仿生機器人當中有

20180813視頻筆記 深度學習基礎篇(1)之必備基礎知識點 深度學習基礎篇(2)神經網絡模型視頻筆記:深度學習基礎篇(3)神經網絡案例實戰 和 深度學習基礎下篇

計算 概念 人臉識別 大量 png 技巧 表現 lex github 深度學習基礎上篇(3)神經網絡案例實戰 https://www.bilibili.com/video/av27935126/?p=1 第一課:開發環境的配置 Anaconda的安裝 庫的安裝 Windo

【遷移學習】簡述遷移學習深度學習中的應用

選自MachineLearningMastery 作者:Jason Brownlee 機器之心編譯 參與:Nurhachu Null、劉曉坤 本文介紹了遷移學習的基本概念,以及該方法在深度學習中的應用,引導構建預測模型的時候使用遷移學習的基本策略。 遷移學習是一種機器學習

機器學習(四) 機器學習深度學習的實際應用整理

前言     本文主要是整理備份機器學習與深度學習的實際應用,儘量給出原始作者網站,包括論文、程式碼和github等原始資料。共勉! 實際應用 基於深度神經網路的免費開源的人臉識別系統 openface已經到了0.2.1了,備份一個基

關於舉辦“Python機器學習深度學習核心技術應用”培訓班通知

各企事業單位、高等院校及科研院所: 機器學習(Machine Learning)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效

五個案例,三大心得,深度學習的實踐應用之路

原文連結:http://geek.csdn.net/news/detail/202622 這篇文章對深度學習在工程級別應用上遇到的問題進行了很好地總結,並且提出一些有建設性的解決方案,很有實際意義。 當我們需要用深度學習處理現實問題時,除了相關

OpenCV3.3深度學習模組(DNN)應用-影象分類

DNN模組介紹 在OpenCV3.3版本釋出中把DNN模組從擴充套件模組移到了OpenCV正式釋出模組中,當前DNN模組最早來自Tiny-dnn,可以載入預先訓練好的Caffe模型資料,OpenCV做了近一步擴充套件支援所有主流的深度學習框架訓練生成與匯出模型資料載入,常見的有如下: Caffe

實戰深度學習):OpenCV庫

在如今人工智慧的浪潮下,無數模擬機器學習和深度學習的開發者工具倍出,其中在計算機圖形學和計算機視覺裡面最流行的一個庫就是OpenCV庫了.計算機圖形學和計算機視覺學在我們的自動駕駛和仿生機器人當中有著舉足輕重的地位,尤其是opencv庫在裡面的應用尤為廣泛。今天我就分享給大家

關於舉辦“MATLAB機器學習深度學習核心技術應用”培訓班通知

各企事業單位、高等院校及科研院所: 機器學習(Machine Learning)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的效

《TensorFlow+Keras深度學習人工智慧實踐應用》林大貴版-解析

參考部落格: 【Keras-CNN】CIFAR-10 https://blog.csdn.net/bryant_meng/article/details/81077196#1_Data_preprocessing_12 目錄:https://blog.csdn.net/b

走近人臉檢測:從VJ到深度學習

http://mt.sohu.com/20160413/n444091833.shtml 作者:鄔書哲 中科院計算所智慧資訊處理重點實驗室VIPL課題組博士生 研究方向:目標檢測,尤其關注基於深度學習的目標檢測方法。   本文分上下兩篇,上篇主要介紹人臉檢測的基本流程,以及傳統的VJ人臉檢測器及

[深度學習] TensorFlowFCN模型驗證

針對 https://blog.csdn.net/weixin_41028208/article/details/81568310 中好多留言,不知道如何用自己的資料驗證模型結果,我特意從原程式中摘出來了一個程式,用來驗證data_dir中的圖片 一個簡單的辦法,把圖片放到v

[深度學習] TensorFlow實現Unet網路

程式碼取自於 https://github.com/jakeret/tf_unet TensorFlow Unet文件 https://tf-unet.readthedocs.io/en/latest/installation.html TensorFlow Unet安

深度學習——Ubuntu安裝tensorflow

Ubuntu上安裝tensorflow非常簡單,但還是會踩到一點小坑。本文假設你的Ubuntu已經安裝好,然後安裝tensorflow過程如下: 1.     輸入 su 回車,輸入密碼 2.     安裝pip sudo apt-get install python-

深度學習graph應用

轉載請標明出處: http://blog.csdn.net/ikerpeng/article/details/72844728知乎專欄:https://zhuanlan.zhihu.com/p/27216346本文要介紹的這一篇paper是ICML2016上一篇關於 CNN

深度學習graph的使用

cnn 步長 最好的 順序 自然語言處理 label 灰色 auto ctu 本文要介紹的這一篇paper是ICML2016上一篇關於 CNN 在圖(graph)上的應用。ICML 是機器學習方面的頂級會議,這篇文章--<< Learning CNNs for

Pointnet&Pointnet++點雲深度學習及其在三維場景理解中的應用

  轉化為柵格資料,使用CNN提取特徵 使用點雲的原生資料對特徵進行端到端的提取     螢幕剪輯的捕獲時間: 2018/11/17 21:36   設計的演算法和網路對點雲需要滿

第一篇關於深度學習在NER應用的綜述文章

《A Survey on Recent Advances in Named Entity Recognition from Deep Learning models》 這是第一篇關於深度學習在NER上應用的綜述文章   這篇文章比較注重多語言和多領域的基於深度學習NER的綜述

深度學習在單影象超解析度應用:SRCNN、Perceptual loss、SRResNet

單影象超解析度技術涉及到增加小影象的大小,同時儘可能地防止其質量下降。這一技術有著廣泛用途,包括衛星和航天影象分析、醫療影象處理、壓縮影象/視訊增強及其他應用。我們將在本文藉助三個深度學習模型解決這個問題,並討論其侷限性和可能的發展方向。 我們通過網頁應用程式的形式部署