深度学习在graph上的使用

2023-05-16

原文地址:https://zhuanlan.zhihu.com/p/27216346

本文要介绍的这一篇paper是ICML2016上一篇关于 CNN 在图(graph)上的应用。ICML 是机器学习方面的顶级会议,这篇文章--<< Learning CNNs for Graphs>>--所研究的内容也具有非常好的理论和实用的价值。如果您对于图的数据结构并不是很熟悉建议您先参考本文末的相关基础知识的介绍。

CNN已经在计算机视觉(CV)以及自然语言处理等领域取得了state-of-art 的水平,其中的数据可以被称作是一种Euclidean Data,CNN正好能够高效的处理这种数据结构,探索出其中所存在的特征表示。

&amp;amp;lt;img src="https://pic2.zhimg.com/v2-3a226517f52a83f3edbeb019c8ad0109_b.png" data-rawwidth="410" data-rawheight="256" class="content_image" width="410"&amp;amp;gt;

图1 欧氏(欧几里德)数据(Euclidean Data)举例

所谓的欧氏(欧几里德)数据指的是类似于grids, sequences… 这样的数据,例如图像就可以看作是2D的grid数据,语音信号就可以看作是1D的grid数据。但是现实的处理问题当中还存在大量的 Non-Euclidean Data,如社交多媒体网络(Social Network)数据,化学成分(Chemical Compound)结构数据,生物基因蛋白(Protein)数据以及知识图谱(Knowledge Graphs)数据等等,这类的数据属于图结构的数据(Graph-structured Data)。CNN等神经网络结构则并不能有效的处理这样的数据。因此,这篇paper要解决的问题就是如何使用CNN高效的处理图结构的数据。

&amp;amp;lt;img src="https://pic3.zhimg.com/v2-122afdad899925fcd6d19015d5824ace_b.png" data-rawwidth="567" data-rawheight="221" class="origin_image zh-lightbox-thumb" width="567" data-original="https://pic3.zhimg.com/v2-122afdad899925fcd6d19015d5824ace_r.jpg"&amp;amp;gt;

图2 Graph 数据举例

本文所提出算法思想很简单,将一个图结构的数据转化为CNN能够高效处理的结构。处理的过程主要分为两个步骤:1.从图结构当中选出具有代表性的nodes序列;2.对于选出的每一个node求出一个卷积的邻域(neighborhood field)。接下来我们详细的介绍算法相关的细节。

本paper将图像(image)看作是一种特殊的图(graph),即一种的grid graph,每一个像素就是graph当中的一个node。那么我猜想文章的motivation主要来自于想将CNN在图像上的应用generalize 到一般的graph上面。

那么我们首先来看一下CNN在Image当中的应用。如图3所示,左图表示的是一张图像在一个神经网络层当中的卷机操作过程。最底部的那一层是输入的特征图(或原图),通过一个卷积(这里表示的是一个3*3的卷积核,也就是文章当中的receptive filed=9)操作,输出一张卷积后的特征图。如图3 的卷积操作,底层的9个像素被加权映射到上层的一个像素;再看图3中的右图,表示从graph的角度来看左图底层的输入数据。其中任意一个带卷积的区域都可以看作是一个中心点的node以及它的领域的nodes集合,最终加权映射为一个值。因此,底部的输入特征图可以看作是:在一个方形的grid 图当中确定一些列的nodes来表示这个图像并且构建一个正则化的邻域图(而这个邻域图就是卷积核的区域,也就是感知野)。

&amp;amp;lt;img src="https://pic4.zhimg.com/v2-c309bc72bcbe1d3fcf3e77b62481c367_b.png" data-rawwidth="475" data-rawheight="236" class="origin_image zh-lightbox-thumb" width="475" data-original="https://pic4.zhimg.com/v2-c309bc72bcbe1d3fcf3e77b62481c367_r.jpg"&amp;amp;gt;

图3 图像的卷积操作

按照这样的方式来解释,那么如paper中Figure1所示,一张4*4大小的图像,实际上可以表示为一个具有4个nodes(图中的1,2,3,4)的图(graph),其中每一个node还包括一个和卷积核一样大小的邻域(neighborhood filed)。那么,由此得到对于这种图像(image)的卷积实际上就是对于这4个node组成的图(graph)的领域的卷积。那么,对于一个一般性的graph数据,同样的只需要选出其中的nodes,并且求解得到其相关的固定大小(和卷积核一样大小)领域便可以使用CNN卷积得到图的特征表示。

&amp;amp;lt;img src="https://pic2.zhimg.com/v2-3e36b0fa70e01c72a0dc98ad613a3dd5_b.png" data-rawwidth="484" data-rawheight="277" class="origin_image zh-lightbox-thumb" width="484" data-original="https://pic2.zhimg.com/v2-3e36b0fa70e01c72a0dc98ad613a3dd5_r.jpg"&amp;amp;gt;

图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。

&amp;amp;lt;img src="https://pic4.zhimg.com/v2-a6139481fa6581d2b6eca899bc24baa3_b.png" data-rawwidth="817" data-rawheight="163" class="origin_image zh-lightbox-thumb" width="817" data-original="https://pic4.zhimg.com/v2-a6139481fa6581d2b6eca899bc24baa3_r.jpg"&amp;amp;gt;

图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的领域Neighborhood Assembly

接下来对选出来的每一个node确定一个感知野receptive filed以便进行卷积操作。但是,在这之前,首先找到每一个node的邻域区域(neighborhood filed),然后再从当中确定感知野当中的nodes。假设感知野的大小为k,那么对于每一个Node很明显都会存在两种情况:邻域nodes不够k个,或者是邻域点多了。这个将在下面的章节进行讲解。

&amp;amp;lt;img src="https://pic3.zhimg.com/v2-84669297de00e2b5e77170997f71e0d6_b.png" data-rawwidth="632" data-rawheight="303" class="origin_image zh-lightbox-thumb" width="632" data-original="https://pic3.zhimg.com/v2-84669297de00e2b5e77170997f71e0d6_r.jpg"&amp;amp;gt;

图6 Neighborhood Assemble结果

如图选出的是6个nodes,对于每一个node,首先找到其直接相邻的nodes(被称作是1-neighborhood),如果还不够再增加间接相邻的nodes。那么对于1-neighborhood就已经足够的情况,先全部放在候选的区域当中,在下一步当中通过规范化来做最终的选择。

3. 图规范化过程Graph Normalization

假设上一步Neighborhood Assemble过程当中一个node得到一个领域nodes总共有N个。那么N的个数可能和k不相等的。因此,normalize的过程就是要对他们打上排序标签进行选择,并且按照该顺序映射到向量当中。

&amp;amp;lt;img src="https://pic1.zhimg.com/v2-771287779ad086e6c23eb3351152f4cc_b.png" data-rawwidth="781" data-rawheight="120" class="origin_image zh-lightbox-thumb" width="781" data-original="https://pic1.zhimg.com/v2-771287779ad086e6c23eb3351152f4cc_r.jpg"&amp;amp;gt;

图7 求解node的receptive filed

如果这个node的邻域nodes的个数不足的话,直接全部选上,不够补上哑节点(dummy nodes),但还是需要排序;如果数目N超过则需要按着排序截断后面的节点。如图7所示表示从选node到求解出receptive filed的整个过程。Normalize进行排序之后就能够映射到一个vector当中了。因此,这一步最重要的是对nodes进行排序。

&amp;amp;lt;img src="https://pic1.zhimg.com/v2-6afbfd2936c380b4d7e3d0703065abb8_b.png" data-rawwidth="194" data-rawheight="269" class="content_image" width="194"&amp;amp;gt;

 

图8 Normalize 过程

如图8所示,表示对任意一个node求解它的receptive filed的过程。这里的卷积核的大小为4,因此最终要选出来4个node,包括这个node本身。因此,需要给这些nodes打上标签(labeling)。当然存在很多的方式,那么怎样的打标签方式才是最好的呢?如图7所示,其实从这7个nodes当中选出4个nodes会形成一个含有4个nodes的graph的集合。作者认为:在某种标签下,随机从集合当中选择两个图,计算他们在vector空间的图的距离和在graph空间图的距离的差异的期望,如果这个期望越小那么就表明这个标签越好!具体的表示如下:

&amp;amp;lt;img src="https://pic2.zhimg.com/v2-b0583558079a4d93167d2acb3a546535_b.png" data-rawwidth="634" data-rawheight="280" class="origin_image zh-lightbox-thumb" width="634" data-original="https://pic2.zhimg.com/v2-b0583558079a4d93167d2acb3a546535_r.jpg"&amp;amp;gt;

 

得到最好的标签之后,就能够按着顺序将node映射到一个有序的vector当中,也就得到了这个node的receptive field,如图6最右边所示。

4. 卷积网络结构Convolutional Architecture

文章使用的是一个2层的卷积神经网络,将输入转化为一个向量vector之后便可以用来进行卷积操作了。具体的操作如图9所示。

 

&amp;amp;lt;img src="https://pic4.zhimg.com/v2-b400a7ddc72bca42b6fcbb6ad7c70f8f_b.png" data-rawwidth="887" data-rawheight="320" class="origin_image zh-lightbox-thumb" width="887" data-original="https://pic4.zhimg.com/v2-b400a7ddc72bca42b6fcbb6ad7c70f8f_r.jpg"&amp;amp;gt; 图9 卷积操作过程

 

首先最底层的灰色块为网络的输入,每一个块表示的是一个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,也就是图的特征表示。有了它便可以进行分类或者是回归的任务了。


基础问题:

图的基本概念:主要有顶点和边构成,存在一个邻接矩阵A,如果对其中的nodes进行特征表示(Feat)的话如下右图。

&amp;amp;lt;img src="https://pic4.zhimg.com/v2-634e92ce5d033a4a5ac7089b4d399267_b.png" data-rawwidth="873" data-rawheight="200" class="origin_image zh-lightbox-thumb" width="873" data-original="https://pic4.zhimg.com/v2-634e92ce5d033a4a5ac7089b4d399267_r.jpg"&amp;amp;gt;
 
 

转载于:https://www.cnblogs.com/lzhu/p/10238336.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习在graph上的使用 的相关文章

  • 使用最短路径计算连接概率

    我想知道 igraph 中是否有一个函数可以计算加权图中顶点之间的连接概率 其中边的权重是相邻顶点的连接概率 我基于这样的邻接矩阵构建了一个图 其中相邻连接概率形成权重 这是针对河流网络 因此图的每个节点仅连接到单个下游节点 我本来希望使用
  • 目标必须是节点索引的密集双精度数组。怎么解决?

    我正在尝试构建一个网络图词邻接 http www personal umich edu mejn netdata 数据 但我收到错误 目标必须是节点索引的密集双数组 以下是我的代码 fileName adjnoun gml inputfil
  • 从绘图中删除线

    只是一个简单的问题 我正在尝试在 R 中绘制图表 并且我已经介绍了如何做到这一点 但是如何删除刚刚创建的线 例如 x lt c 1 2 4 5 6 7 7 8 10 y lt c 40 30 10 20 53 20 10 5 plot x
  • 寻找有向或无向图中的最短循环

    我正在寻找一种算法来找到有向或无向图中的最短周期 例如 对于节点 3 算法可能返回 周期1 3 gt 10 gt 11 gt 7 gt 8 gt 3 周期2 3 gt 10 gt 9 gt 8 gt 3 对于这些循环 最短的是循环 2 位于
  • 匈牙利算法的最少行数

    我想知道匈牙利算法覆盖所有零的最少行数 我已经关注了这个链接 但是那里的代码是一个贪婪的代码 匈牙利算法 如何用最少的行数覆盖0个元素 https stackoverflow com questions 14795111 hungarian
  • 为什么A*的复杂度在内存中是指数级的?

    维基百科关于 A 复杂度的说法如下 链接在这里 http en wikipedia org wiki A search algorithm 比当时更成问题 复杂度是A 的内存使用量 在 最坏的情况 也必须记住 指数数量的节点 我不认为这是正
  • Floyd Warshall 算法的时间复杂度

    Skiena 的算法书包含以下解释弗洛伊德 沃歇尔算法 http en wikipedia org wiki Floyd E2 80 93Warshall algorithm floyd adjacency matrix g int i j
  • R/Javascript:崩溃和扩展的网络

    我正在使用 R 编程语言 我有以下图形网络数据 library igraph library visNetwork from lt c Boss TeamA TeamA TeamA SubteamA1 SubteamA1 SubteamA1
  • 为什么使用 Dijkstra 算法而不是最佳(最便宜)优先搜索?

    从我到目前为止所读到的来看 这最佳优先搜索 https en wikipedia org wiki Best first search在找到到达目标的最短路径方面似乎更快 因为 Dijkstra 算法在遍历图时必须放松所有节点 是什么让 D
  • 用均匀的彩色表面替换颜色点

    这是我的数据和当前的绘图 require ggplot2 a rep c 2 5 10 15 20 30 40 50 75 100 each 7 b rep c 0 001 0 005 0 01 0 05 0 5 5 50 10 c c T
  • 在 Python 中使用邻接表构建节点图

    我有一个Node类如下 class Node def init self val 0 neighbors None self val val self neighbors neighbors if neighbors is not None
  • boost::property_map 在 boost 中是如何实现的以及如何更改它

    我想知道属性映射是如何在提升图中实现的 例如 我的顶点和边属性定义如下 vertex property gt struct NodeInfo int a b c actual bundled property struct NodeInfo
  • 在无向图中查找强连通分量

    我想在无向图中找到强连接的组件 即如果我从节点开始A然后我会回到节点A并且每条边都被恰好访问一次 对于有向图可以使用Tarjan算法来寻找强连通分量 但是对于无向图怎么办 我认为您错过了强连通分量的含义 强连接组件 如果所有顶点对之间都存在
  • Floyd-Warshall 算法:获取最短路径

    假设一个图由一个表示n x n维数邻接矩阵 我知道如何获得所有对的最短路径矩阵 但我想知道有没有办法追踪所有最短路径 Blow是python代码实现 v len graph for k in range 0 v for i in range
  • 使用 d3 进行多级/分组轴标签

    我想知道是否有一种简单的方法可以在 d3 中添加多级 分层 分组轴标签 例如 如果我有一个折线图 其中 x 轴的月份名称跨越多年 那么我还希望将年份作为月份名称下方的标签 因此它看起来像这样 Oct Nov Dec Jan Feb Mar
  • Flash 图表和图形的最佳解决方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道融合图表 http www fusioncharts com 还有其他好的解决方案或 API 用
  • Bokeh 中单独的节点和边缘悬停工具?

    我正在尝试为 Bokeh 中的节点和边缘获取单独的悬停工具提示 但未能使其正常工作 有人可以指出我做错了什么吗 我相信代码应该如下所示 from bokeh io import show output notebook from bokeh
  • Silverlight 中的图形可视化

    我有一个表示有向图的数据结构 我正在寻找一个好的 Silverlight 可视化 以允许我从一个节点导航到另一个节点 最好带有一些漂亮的动画 有谁知道这种显示有什么好的 UI 控件或框架吗 甚至是来自另一个领域的样本 也许是社交网络 我的图
  • 数据聚合和缓存:如何按时间间隔快速绘制大型时间序列数据集的图表

    我有一个巨大的时间序列数据集 我想绘制图表 时间序列可以追溯到 5 年前 从后端的角度来看 以各种分辨率 间隔 显示这些数据的常用方法是什么 本质上我想绘制这样的数据图表 https bitcoinwisdom com markets bi
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而

随机推荐