图神经网络相关问题
作者:互联网
一、问:图神经网络一般用几层?是否像CNN、RNN一样层数越多越好?
答:一般2-3层效果就比较好了,层数过多会出现过平滑问题,即经过多次邻居节点特征的聚合,所有节点的特征都会变得相似,就不能进行区分了。
图卷积会使同一连通分量内的节点的表征趋向于收敛到同一个值。
二、问:如果要使用多层图神经网络可以采取什么方法避免过平滑?
答:残差网络。
- 针对“图卷积”:在当前任务上,是否能够使用 RNN + RandomWalk(数据为图结构,边已然存在)或是否能够使用 Attention(数据为流形结构,边不存在,但含有隐式的相关关系)?
- 针对“同一连通分量内的节点”:在当前任务上,是否可以对图进行 cut 等预处理?如果可以,将图分为越多的连通分量,over-smooth 就会越不明显。极端情况下,节点都不相互连通,则完全不存在 over-smooth 现象(但也无法获取周围节点的信息)。
- 如果上述方法均不适用,仍有以下 deeper 和 wider 的措施可以保证 GCN 在过参数化时对模型的训练和拟合不产生负面影响。个人感觉,这类方法的实质是不同深度的 GCN 模型的 ensamble:
- 巨人肩膀上的模型深度 —— residual 等
早期的研究认为这是由 GCN 过分强调了相邻节点的关联而忽视了节点自身的特点导致的。 所以 Kipf 给出的解决方案是添加残差连接,将节点自身特点从上一层直接传输到下一层 - 另辟蹊径的模型宽度 —— multi-hops 等
- 巨人肩膀上的模型深度 —— residual 等
- 与 over-smooth 相关的其他问题
- under-reaching 网络不能太浅(具体表现:加深网络性能提升)
- over-squashing 网络不能太挤(具体表现:加深网络性能不变)
- over-fitting 网络不能太宽(具体表现:加宽网络性能下降)
三、问:如果有多个图应该怎样进行分布式存储?
答:
- 1.在图学习架构中,如果所使用的图节点是超大规模图节点,则需要将图学习架构部署为分布式图学习架构,并且通过图分区算法来将节点分散到各个分布式设备上。分散时,会存在临界节点。即节点的部分邻居节点与其存储在同一设备,而其余邻居节点存储在其它设备中。
- 2.临界节点所在的设备需要存储其节点数据,其节点数据也需要被映射到该临界节点的其余邻居节点所在的设备,即,该临界节点的其余邻居节点所在的设备需要存储其节点数据的映射信息。设备中存储的节点可以称为master节点,master节点的节点数据可以称为master数据,以及被映射到其它设备中的节点的节点数据可以称为节点的mirror数据(镜像数据)。在这种情况下,被映射到其它设备中的节点也可以称为mirror节点(镜像节点)。
- 3.在上述图节点数据存取方式下,在master节点的master数据发生数据更新时,需要同步更新分布在其它设备中的所有mirror数据,以确保master节点与其mirror节点之间的数据一致性。按照这种处理方式,需要在各个mirror节点所在的设备内存中存储master数据的完整备份,从而造成图学习设备的内存空间浪费。
- 4.解决办法:在具有mirror节点的设备处设置公共缓冲区,用于缓存在进行图学习时需要使用的mirror节点的节点数据。在存取用于图学习的mirror数据时,对设备处的节点进行分组,所得到的多个分组在进行mirror数据存取时具有优先级,并且各个分组的优先级基于节点依赖关系确定。根据分组的优先级,从设备的公共缓冲区中为各个分组所依赖的镜像节点分配缓存空间。然后,针对完成缓存空间分配的节点,向该节点所依赖的镜像节点的对应节点所在的设备发起数据存取过程,由此拉取对应的节点数据并缓存在所分配的缓存空间中。
- 5.在实现图计算框架时首先考虑图的分布式切分问题。因为百亿级甚至千亿级的图,单机是难以存下的。目前Angel-Graph基于参数服务器的架构,将顶点信息存储在全内存的ps上,在图计算或图算法如PageRank的迭代计算过程中,边结构是不变的,数据的频繁更新发生在顶点上。Graphx低效的原因之一是RDD的immutable特性,RDD的每次更新需要生成新的RDD,因此占用了大量的内存开销。为了保障在受限共享资源环境下图计算任务的稳定运行,Angel-Graph引入了batch计算的逻辑,业务侧可以根据资源配置调整计算速度,保障资源不足的情况下仍能稳定运行。
在百亿级的图数据上对比Graphx 和Angel-Graph的性能,Angel仅用1/3的资源,性能可以达到Graphx的10倍以上。因为同样融合了spark生态,Angel-Graph也可以像Graphx一样保障图计算的ETL能力,即图数据读取、预处理和结果保存可以在一个图计算任务中,从而避免了中间数据的中断、落盘和二次加载。
四、问:是否有处理过实时的图数据?
答:以 Pregel框架为代表的大图数据分布式计算技术。Pregel[4]是Google基于BSP计算模型设计的分布式计算框架,其目的是解决在单机环境下无法计算的大图数据的计算问题。其开源版本Giraph已获得广泛应用。第三类成果主要是对图数据提供底层支持的图数据库技术。在图数据库领域,Neo4j公司开发的 Neo4j[7]图数据库具备嵌入式、基于磁盘、完全事务特性等特点,是目前应用最为广泛的图数据库系统;Google为满足其应用需求,也开发了开源图数据库系统 Dgraph。国内一些科技公司也分别研发了GeaBase和ByteGraph。
这几类技术成果虽然有着各自的技术特点与优势,但仍不足以解决大规模动态时序图的实时处理问题。
- 针对时空高效的时序图构建,首先提出了基于时序聚合边结构进行图数据表达,构造时序中间态,大幅度降低了时序图处理的时空开销。
- 其次,针对任意时间窗口的图数据动态追溯查询问题,采用时间切片动态漂移与增量归并技术,实现了动态时间窗口数据追溯查询。进而,在分布式内存计算体系下实现了级联查询分解。
- 最后,设计了具备时间戳回溯、时段关联等时序语义的图查询语言,可对时序图计算任务进行灵活描述与解析处理。基于上述突破性技术成果,研发了“图立方”大规模时序图实时处理技术。
五、问:DGL与pyG的区别?
答:
- pyG是基于pytorch的,DGL的底层框架兼容pytorch、tensorflow、MXNet
- pyG构造边时,如果有1000条边,则是[1000×2]的维度,而DGL是[2×1000]
参考资料:
如何解决图神经网络(GNN)训练中过度平滑的问题?
用于分布式图学习架构的数据存取方法及装置与流程
Tigergraph
邦盛科技:基于大规模动态时序图计算平台“图立方”
图数据库在腾讯的应用实践
面向实时数据分析的流式图数据处理系统及方法
标签:时序,问题,神经网络,master,mirror,相关,数据,节点,设备 来源: https://www.cnblogs.com/ttyangY77/p/16226045.html