PATCHY-SAN - Learning Convolutional Neural Networks for Graphs ICML
文章目录
- 1 背景
- 2 PATCHY-SAN模型
- Node Sequence Selection - 根据节点排序选择要进行卷积的节点
- Neighborhood Assembly - 找到Node的领域,确定感受野
- Graph Normalization - 图规范化过程
- Convolutional Architecture - 卷积网络结构
- 3 实验
- 4 小结
论文:Learning Convolutional Neural Networks for Graphs
作者:Mathias Niepert, Mohamed Ahmed, Konstantin Kutzkov
美国印第安纳州普渡大学统计系和计算机科学系
来源: ICML 2016
论文链接:
Arxiv: https://arxiv.org/abs/1605.05273
论文PPT:http://www.matlog.net/icml2016_slides.pdf
GitHub代码:https://github.com/seiya-kumada/patchy-san
GitHub上搜索Patchy-san可以找到由seiya-kumada提交的代码,代码虽然不是原作者公布,但是也可以参考
1 背景
核心思想:把graph转换成标准CNN可输入的样子,而不是GCN那样改CNN的结构去适应graph。
先看下CNN的卷积方式:
卷积计算分两步:
- a:确定感受野(红色节点是感受野的中心)
- b:将感受野按照空间位置从左到右,从上到下的顺序映射为一个和卷积核一样大小的vector,然后再进行向量的內积运算
2 PATCHY-SAN模型
Node Sequence Selection - 根据节点排序选择要进行卷积的节点
首先对于输入的一个Graph,首先从图结构中选择固定个数(w)的nodes。w相当于图像的宽度。选出的node就是我们将要做卷积操作的小矩形的中心node。换句话说,就是w的个数也是我们针对这个图结果做的卷积操作的个数。如下图所示,w=6,意味着我们需要从图结果中选择6个node做卷积操作:
那么具体如何进行nodes的选择?实际上,paper当中说根据graph当中的node的排序label进行选择,但是本文并没有对如何排序有更多的介绍。主要采取的方法是:centrality,也就是中心化的方法,越处于中心位置的点越重要。在图论和网络分析中,中心性(Centrality)是判断网络中节点重要性/影响力的指标。具体的,有点度中心性(degree centrality)、中介中心性(betweenness centrality)、接近中心性(closeness centrality)、特征向量中心性(eigenvector centrality)。
在图论和网络分析中,中心性(Centrality)是判断网络中节点重要性/影响力的指标:
- 点度中心性(degree centrality):在无向网络中,可以用一个节点的度数来衡量中心性。这一指标背后的假设是:重要的节点就是拥有更多的连接节点。例如,在一个社交网络中,点度中心性网络中的“名人”,相当于一个人的好友数或者粉丝数,那么这个值越多,说明社会关系越多,影响力就越强。
- 中介中心性(betweenness centrality):计算网络中任意两个节点的所有最短路径,如果这些最短路径中有很多条都经过了某个节点,那么就认为这个节点的Betweenness Centrality高。例如,在一个计算机网络图中,交换机或者路由器就是中介中性较大的节点。
- 接近中心性(closeness centrality):如果节点到图中其他节点的最短距离之和越小,那么它的接近中心性就越高。相比中介中心性,接近中心性更接近几何上的中心位置。点度中心性仅仅利用了网络的局部特征,即节点的连接数有多少,但一个人连接数多,并不代表他/她处于网络的核心位置。接近中心性和中介中心性一样,都利用了整个网络的特征,即一个节点在整个结构中所处的位置。接近中心性高的节点一般扮演的是八婆的角色(gossiper)。他们不一定是名人,但是乐于在不同的人群之间传递消息。
- 特征向量中心性(eigenvector centrality):在特征向量中心度算法中,其认为与具有高得分的节点相连接比与具有低得分的节点相连接所得的贡献更大。
当然,这只是一种node的排序和选择的方法,其存在的问题也是非常明显的。Paper并没有在这次的工作当中做详细的说明。
Neighborhood Assembly - 找到Node的领域,确定感受野
第二步是Neighborhood Assembly,即对于选出来的每个节点逐个构建邻域,方法很简单就是BFS,先搜索直接相邻的一级邻域,再搜索下一级邻域,直到找到超过k个邻居,然后使用这超过k个的邻居构成下一步图规范化的候选集。
Graph Normalization - 图规范化过程
假设上一步Neighborhood Assemble过程当中一个node得到一个邻域nodes总共有N个。那么N的个数可能和k不相等的。因此,normalize的过程就是要对他们打上排序标签进行选择,并且按照该顺序映射到向量当中。
如果这个node的邻域nodes的个数不足的话,直接全部选上,不够补上哑节点(dummy nodes),但还是需要排序;如果数目N超过则需要按着排序截断后面的节点。如下图所示,表示从选node到求解出receptive filed的整个过程。Normalize进行排序之后就能够映射到一个vector当中了。因此,这一步最重要的是对nodes进行排序。
上图表示对任意一个node求解它的receptive filed的过程。这里的卷积核的大小为4,因此最终要选出来4个node,包括这个node本身。因此,需要给这些nodes打上标签(labeling)。当然存在很多的方式,那么怎样的打标签方式才是最好的呢?文中采用的是The Weisfeiler-Lehman algorithm/betweenness centrality来对节点打标签。如上图所示,其实从这7个nodes当中选出4个nodes会形成一个含有4个nodes的graph的集合。作者认为:在某种标签下,随机从集合当中选择两个图,计算他们在vector空间的图的距离和在graph空间图的距离的差异的期望,如果这个期望越小那么就表明这个标签越好!具体的表示如下:
得到最好的标签之后,就能够按着顺序将node映射到一个有序的vector当中,也就得到了这个node的receptive field。
Convolutional Architecture - 卷积网络结构
文章使用的是一个2层的卷积神经网络,将输入转化为一个向量vector之后便可以用来进行卷积操作了。具体的操作如下图所示。
首先最底层的灰色块为网络的输入,每一个块表示的是一个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,也就是图的特征表示。有了它便可以进行分类或者是回归的任务了。
CNN的卷积核通道数 = 卷积输入层的通道数
CNN的卷积输出层通道数(深度)= 卷积核的个数
3 实验
数据集和实验结果:
在社交网络数据集上的实验结果:
4 小结
优点:
- 不需要设计图核
- 在多个数据集上优于图核方法(速度和精度)
- 可以整合节点和边的特征(离散和连续)
- 支持可视化
缺点:
- 在较小的数据集上容易过度拟合
- 从设计图核转向调整超参数
- 图的规范化不是学习的一部分
PATCHY-SAN - Learning Convolutional Neural Networks for Graphs ICML相关推荐
- 论文解读二代GCN《Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering》
Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...
- Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering 论文阅读
Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering Code link:https://git ...
- Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering论文解读( and code)
<Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering> 提供了已实现的GCN,并且 ...
- 论文笔记:Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
前言 初代频域GCN简单粗暴的将diag(g^(λl))diag(\hat{g}{(\lambda_l)})diag(g^(λl))变成了卷积核diag(θl)diag(\theta_l)diag ...
- Graph Convolutional Neural Networks for Web-Scale Recommender Systems(用于Web级推荐系统的图形卷积神经网络)
Graph Convolutional Neural Networks for Web-Scale Recommender Systems 用于Web级推荐系统的图形卷积神经网络 ABSTRACT R ...
- CV:翻译并解读2019《A Survey of the Recent Architectures of Deep Convolutional Neural Networks》第一章~第三章
CV:翻译并解读2019<A Survey of the Recent Architectures of Deep Convolutional Neural Networks>第一章~第三 ...
- 目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking 原文:https://zh ...
- Essentials of Deep Learning: Visualizing Convolutional Neural Networks in Python
Introduction One of the most debated topics in deep learning is how to interpret and understand a tr ...
- 【论文阅读】Multisource Transfer Learning With Convolutional Neural Networks for Lung Pattern Analysis
Multisource Transfer Learning With Convolutional Neural Networks for Lung Pattern Analysis main idea ...
最新文章
- [转]预备知识—程序的内存分配
- C语言位运算实现加法
- 2021夏季每日一题 【week3 完结】
- Elasticsearch 集群中增加专用master节点
- 西安活动 | 2019年1月13号 拥抱开源, 又见.NET 线下交流活动报名进行中
- Cisco asa 5520 oid
- matlab 读取mov文件格式,VideoReader 支持的文件格式 - MATLAB VideoReader.getFileFormats
- MathWorks 中国...
- Linux select/poll/epoll
- Resharper上手指南转
- php工程师绩效考核表_如何对程序员绩效考核?
- Android系统下扫描枪的设置
- Linux---ALSA音频工具arecord、aplay、amixer使用
- KEIL MDK中的RO、RW和ZI DATA理解及KEIL中ROM和RAM使用大小计算
- golang sync/atomic
- python Beautifulsoup4爬取凡人修仙传仙界篇连载中文章并生成txt
- 稳踞三大价值高地!昆仑万维角逐AIGC“新大陆”
- Android常见页面布局
- 蹦蹦鸟游戏代码-JavaSE版本
- 计算机历史ppt 英文儿童,第一课-计算机发展历史ppt
- 发个谷歌,百度网盘,谷歌学术可用的网站
热门文章
- 电脑dns服务器未响应啥意思,电脑诊断出DNS服务器未响应是什么意思
- 最新转转验机源码+独立后台管理
- java比较两个对象_java判断两个对象是否相等的方法
- 计算机管理 合并分区,如何分区,删除和合并计算机02
- css样式 向下补白,DIVCSSpadding内补白(内边距)leftrighttopbottom_html/css_WEB-ITnose
- 怎样把电脑默认安装C盘的位置改成D盘?
- 软考高级信息系统项目管理师如何备考?
- 292. Nim 游戏(简单题)
- Python按照不同的后缀把文件存入不同的文件夹下面(后缀分类)
- 谈小米内忧外患的困境