通过图卷积网络识别网络中的重要节点
识别网络中的重要节点一直以来是一个热门话题。收到图卷积网络的启发,本文将节点的影响力识别转换为一个回归问题。通过考虑网络的邻接矩阵和卷积神经网络,提出了RCNN方法,来更高效率的识别网络中有影响力的节点。整体思路如下:为每个节点产生一个特征矩阵,用卷积神经网络训练、预测节点的影响力。
1 背景知识
1.1、卷积神经网络
有关神经网络的详细清晰介绍请移步这里: CNN笔记:通俗理解卷积神经网络.
大神讲的十分清楚,这里截取片段做个总结。
上图中CNN要做的事情是:给定一张图片,是车还是马未知,是什么车也未知,现在需要模型判断这张图片里具体是一个什么东西,总之输出一个结果:如果是车 那是什么车。
最左边是数据输入层,对数据做一些处理,比如去均值(把输入数据各个维度都中心化为0,避免数据过多偏差,影响训练效果)、归一化(把所有的数据都归一到同样的范围)、PCA/白化等等。CNN只对训练集做“去均值”这一步。
中间是
CONV:卷积计算层,线性乘积求和。
RELU:激励层,ReLU是激活函数的一种。
POOL:池化层,简言之,即取区域平均或最大。
最右边是FC:全连接层
2 提出的方法
和卷积神经网络相似,我们从输入的网络建立局部连接邻居。 这些邻域作为卷积体系结构的接收域,允许框架学习网络表示。RCNN具体步骤如下:
(1)特征矩阵和标签:首先,为每个节点找到
l
−
1
l-1
l−1阶邻居,这里重点找最近的邻居(1阶或者2阶)。 如果两个节点具有相等的跳数,则优先选择度较大的节点;
从原图中生成子图
G
u
G_u
Gu:
G
u
G_u
Gu包含节点u和其
l
−
1
l-1
l−1阶邻居,
A
u
A^u
Au则是该子图的邻接矩阵;
u
0
,
u
1
,
.
.
.
,
u
l
−
1
u_0,u_1,...,u_{l-1}
u0,u1,...,ul−1为节点u和其
l
−
1
l-1
l−1个邻居,
B
u
B^u
Bu是节点u的特征矩阵,从
A
u
A^u
Au转化而来,转化规则如下:
其中
k
u
i
k_{u_i}
kui是节点
u
i
u_i
ui在原图中的度。也就是说,第一行和第一列,以及对角线的值对会对应改变。
通过SIR模型得到所有节点的影响程度作为标签。
(2)卷积体系结构:此论文提出的方法中卷积神经网络包含了2个卷积层和2个池层(pooling layers)以及1个全连接层。 在第一卷积层中,核大小为5×5,输入通道为1,输出通道为16,步长为1,填充为2;在第二卷积层中,核大小为5×5,输入通道为16,输出通道为32,步长为1,填充为2。 两个池层为2×2最大池,完全连接层为32∗(L/4)∗(L/4)×1。 激活函数为ReLU,损失函数为平方损失函数。
(3)节点排序: 首先,使用训练集(为所有节点生成特征矩阵和标签)来训练CNN模型。 其次,选择任意网络,为所有没有标签的节点生成特征矩阵,并通过训练的CNN模型得到这些节点的分数。 最后,按节点的分数排序。
3 实验部分
该作者采用了BA模型生成了6个合成网络训练RCNN模型,九个合成网络以及十五个真实的网络来测试模型。