关于输入为graph的CNN:Graph CNN

大千世界,所有可见的数据可分为两类:Euclidean Data & Non-Euclidean Data。

目前在Deep Learning的范畴里,CNN和RNN的世界里,广泛应用的images,sentences,waves,等等,都属于Euclidean data。欧式数据,直观理解为具有工整(栅格化的:grid-like)对称性的数据。

然而,网络的概念在现实生活中也是普遍存在的。社交网络,航路网,蛋白质分子联系网,等等等等。注意,这些网络常常是不对称的,即每个节点的degree(neighbor数量)是不确定的,数据是不工整的。网络的数学描述是通过图论的理论,即用网络的边和顶点来描述顶点之间的连接关系。

那么问题就来了。传统ConvNet在Euclidean data上的卷积操作,是完全对称的工整的。一个3*3的Conv filter,就是一个九宫格,要求每个pixel都有8个工整的neighbor(抛去边沿效应)。

因此,CNN可以很好地在image这种euclidean的数据上进行feature learning & extraction。可是,如果input是不工整的graph时,该怎么办呢?该怎么继续使用CNN来提graph里含有的特征呢?

这就引出了Graph CNN的理论,即可以在graph数据上操作的CNN。

好。对于GCNN,我们的期待也很简单。给你输入一个graph,你用某种filtering的操作,给我把这个input graph刷一遍,刷出一个output graph来。

对于euclidean data例如image input,filtering操作是很直观的,是一种按顺序不断重复的convolution计算。而这个顺序,也因由其grid属性,而异常简单。

可是对于graph,无法简单地重复地操作convolution,因为数据的不对称性,滑窗位置的不可重复性。

所以,对graph做CNN操作,首先要将不是euclidean的spatial域(顶点域),转换到spectral域(频域)。期待在频域中,非euclidean的事物就变得euclidean了。

这就引出了GCNN的一个分支,就是spectral methods(频域方法)

简单说,频域方法的本质动机就是把顶点域的卷积转化为频域里的乘积再求逆傅里叶变换。

上述显式地计算频域变换的方法包括SCNN和ChebNet,然而这些方法的计算代价太大。

一个很好的简化solution就是GCN(Graph Convolution Network)《Kipf ICLR2017》:

关于输入为graph的CNN:Graph CNN_第1张图片

另一种更泛化的策略,就是spatial methods。image上用的普通CNN,就是属于spatial method CNN,即在原输入的空间(pixel空间)中直接卷积。

关于输入为graph的CNN:Graph CNN_第2张图片

你可能感兴趣的:(Deep,Learning,GNN,机器学习)