胶囊图神经网络(capsgnn)是在gnn启发下诞生了基于图片分类的新框架。capsgnn在10个数据集中的6个的表现排名位居前两名。与所有其他端到端架构相比,capsgnn在所有社交数据集中均名列首位。
本日reddit上热议的一个话题是名为“胶囊图神经网络”(capsgnn)的新框架。从名字不难看出,它是受图神经网络(gnn)的启发,在其基础上改进而来的成果。
capsgnn框架的作者为新加坡南洋理工大学电气与电子工程学院的zhang xinyi和lihui chen,该研究的论文将在iclr 2019上发表。
目前,从图神经网络(gnn)中学到的高质量节点嵌入已经应用于各种基于节点的应用程序中,其中一些程序已经实现了最先进的性能。不过,当应用程序用gnn学习的节点嵌入来生成图形嵌入时,标量节点表示可能不足以有效地保留节点或图形的完整属性,从而导致图形嵌入的性能达不到最优。
胶囊图神经网络(capsgnn)受到了胶囊神经网络的启发,利用胶囊的概念来解决现有基于gnn的图嵌入算法的缺点。capsgnn以胶囊形式对节点特征进行提取,利用路由机制来捕获图形级别的重要信息。因此,模型会为每个图生成多个嵌入,从多个不同方面捕获图的属性。
capsgnn中包含的注意力模块可用于处理各种尺寸的图,让模型能够专注处理图的关键部分。通过对10个图结构数据集的广泛评估表明,capsgnn具有强大的机制,可通过数据驱动捕获整个图的宏观属性。在几个图分类任务上的性能优于其他sota技术。
胶囊图神经网络基本架构
上图所示为capsgnn的简化版本。它由三个关键模块组成:1)基本节点胶囊提取模块:gnn用于提取具有不同感受野的局部顶点特征,然后在该模块中构建主节点胶囊。 2)高级图胶囊提取模块:融合了注意力模块和动态路由,以生成多个图胶囊。 3)图分类模块:再次利用动态路由,生成用于图分类的类胶囊。
注意力模块
在capsgnn中,基于每个节点提取主胶囊,即主胶囊的数量取决于输入图的大小。在这种情况下,如果直接应用路由机制,则生成的高级别的胶囊的值将高度依赖于主胶囊的数量(图大小),这种情况并不理想。因此,实验引入一个注意力模块来解决这个问题。
注意力模块架构。首先压平主胶囊,利用两层全连接神经网络产生每个胶囊的注意力值。利用基于节点的归一化(对每行进行归一化)来生成最终注意力值。 将标准化值与主胶囊相乘来计算标度胶囊。
实验设置与结果
我们验证了从capsgnn中提取的图嵌入与大量sota方法的性能,与一些经典方法的最优性能做了对比。此外还进行了实验研究,评估胶囊对图编码特征效率的影响。我们对生成的图/类胶囊进行了简要分析。实验结果和分析如下所示。
表1为生物数据集的实验结果,表2为社会数据集的实验结果。对于每个数据集,以粗体突出显示前2个准确度。
与所有其他算法相比,capsgnn在10个数据集中的6个的表现排名位居前两名,并且在其他数据集上也实现了基本相当的结果。与所有其他端到端架构相比,capsgnn在所有社交数据集中均名列首位。
表1:生物数据集的实验结果
表2:社交数据集的实验结果
胶囊的效率
在胶囊的效率测试实验中,gnn的层数设置为l = 3,每层的通道数都设置为cl = 2。通过调整节点的维度(dn)、图(dg)、胶囊和图形、胶囊的数量(p)来构造不同的capsgnn。
表3:胶囊效率评估实验中经过测试的体系结构详细信息
图3:特征表示效率的比较。横轴表示测试架构的设置,纵轴表示nci1的分类精度。
图胶囊的可视化
分类胶囊的可视化
胶囊图网络:基于gnn的高效快捷的新框架
capsgnn是一个新框架,将胶囊理论融合到gnn中,来实现更高效的图表示学习。该框架受capsnet的启发,在原体系结构中引入了胶囊的概念,在从gnn提取的节点特征的基础上,以向量的形式提取特征。
利用capsgnn,一个图可以表示为多个嵌入,每个嵌入都可以捕获不同方面的图属性。生成的图形和类封装不仅可以保留与分类相关的信息,还可以保留关于图属性的其他信息,这些信息可能在后续流程中用到。capsgnn是一种新颖、高效且强大的数据驱动方法,可以表示图形等高维数据。
与其他sota算法相比,capsgnn模型在10个图表分类任务中有6个成功实现了更好或相当的性能,在社交数据集上的表现尤其显眼。与其他类似的基于标量的体系结构相比,capsgnn在编码特征方面更有效,这对于处理大型数据集非常有用。
关于开源代码和模型的一些补充信息
运行环境
代码库在python 3.5.2中实现。用于开发的软件包版本如下:
networkx 1.11tqdm 4.28.1numpy 1.15.4pandas 0.23.4texttable 1.5.0scipy 1.1.0argparse 1.1.0torch 0.4.1torch-scatter 1.1.2torch-sparse 0.2.2torch-cluster 1.2.4torch-geometric 1.0.3torchvision 0.2.1
数据集
代码会从input文件夹中获取训练图,图存储形式为json。用于测试的图也存储为json文件。每个节点id和节点标签必须从0开始索引。字典的键是存储的字符串,以使json能够序列化排布。
每个json文件都具有以下的键值结构:
{edges: [[0, 1],[1, 2],[2, 3],[3, 4]], labels: {0: a, 1: b, 2: c, 3: a, 4: b}, target: 1}
边缘键(edgeskey)具有边缘列表值,用于描述连接结构。标签键具有每个节点的标签,这些标签存储为字典- 在此嵌套字典中,标签是值,节点标识符是键。目标键具有整数值,该值代表了类成员资格。
输出
预测结果保存在output目录中。每个嵌入都有一个标题和一个带有图标识符的列。最后,预测会按标识符列排序。
训练capsgnn模型由src /main.py脚本处理,该脚本提供以下命令行参数。
输入和输出选项
--training-graphs str training graphs folder. default is `dataset/train/`. --testing-graphs str testing graphs folder. default is `dataset/test/`. --prediction-path str output predictions file. default is `output/watts_predictions.csv`.
模型选项
--epochs int number of epochs. default is 10. --batch-size int number fo graphs per batch. default is 32. --gcn-filters int number of filters in gcns. default is 2. --gcn-layers int number of gcns chained together. default is 5. --inner-attention-dimension int number of neurons in attention. default is 20. --capsule-dimensions int number of capsule neurons. default is 8. --number-of-capsules int number of capsules in layer. default is 8. --weight-decay float weight decay of adam. defatuls is 10^-6. --lambd float regularization parameter. default is 1.0. --learning-rate float adam learning rate. default is 0.01.
振弦式传感器数据采集到水库大坝监测云平台进行监控和报警
如何打造一套属于你的智能家居
高压固态软起动日常维护保养的注意事项说明
锂电池保护板的技术指标与重要参数有哪些?专业介绍来了
拜腾首款量产SUV细节公布 配备了一块48英寸的超大液晶屏
ICLR 2019论文解读:胶囊图神经网络的PyTorch实现
太阳能发电光伏板
如何安全实现车载网络通信?
扫地机器人最不能容忍的23个问题
颠覆你的想象-WALL-E瓦力机器人机箱
配置案例丨EtherCAT转Profinet网关连接凯福科技总线步进驱动器
多模光纤收发器的主要分类、应用领域及基本参数
三星推出业界首款集成巴龙 5000 基带的 5G 芯片麒麟 990 5G
340亿美元收购红帽,蓝色巨人在开源世界开疆拓土
手机摄像头:成就独一无二的产业链
电子节气门控制系统的工作原理和检测步骤
硬核MCU技术为汽车智能化控制保驾护航
VR与文旅高度融合,打开了新世界大门
提升工业相机性能,YXC扬兴科技:YSO110TR石英振荡器助力稳定信号传输
一种修饰符能使变量在处理器复位而不被初始化