图神经网络介绍3

1. 图同构网络:Weisfeiler-Lehman 测试与图神经网络的表达

        本节介绍一个关于图神经网络表达力的经典工作,以及随之产生的另一个重要的模型——图同构网络。图同构问题指的是验证两个图在拓扑结构上是否相同。Weisfeiler-Lehman 测试是一种有效的检验两个图是否同构的近似方法。当我们要判断两个图是否同构时,先通过聚合节点和它们邻居的标签,再通过散列函数得到节点新的标签,不断重复,直到每个节点的标签稳定不变。如果在某些迭代中,两个图的节点标签不同,则可以判定这两个图是不同的。在Weisfeiler-Lehman测试的过程中,K次迭代之后,我们会得到关于一个节点的高度为K 的子树。Weisfeiler-Lehman子树常被用于核方法中,来计算两个图的相似度。

        类似于消息传递网络中所归纳的框架,大部分基于空域的图神经网络都可以归结为两个步骤:聚合邻接点信息和更新节点信息。

c8428ad2f6d640e8a0f12c2bd3e0e649.png

与Weisfeiler-Lehman测试一样,在表达网络结构的时候,一个节点的表征会由该节点的父节点的子树信息聚合而成。在图同构网络的论文中,作者证明了Weisfeiler-Lehman测试是图神经网络表征能力的上限。

        定理 :设G₁和G₂ 为任意非同构图。如果一个图神经网络遵循领域聚合方案, 将G₁和G₂ 映射到不同的嵌入,则Weisfeiler-Lehman测试也判定G₁和G₂不是同构的。这说明,图神经网络的表达能力不会超过Weisfeiler-Lehman测试的区分能力。那么,我们有没有办法得到和Weisfeiler-Lehman测试一样强大的图神经网络呢?Weisfeiler-Lehman 测试最大的特点是其对每个节点的子树的聚合函数采用的是单射的散列函数。那么,是否将图神经网络的聚合函数也改成单射函数就能达到和Weisfeiler-Lehman测试一样的效果呢?

        定理4:设A:G→Rd(上标)是一个遵循邻域聚合方案的图神经网络。通过足够的迭代次数(在图神经网络层数多的情况下),如果满足以下条件,则 A可以通过 Weisfeiler-Lehman测试把非同构的两个图G₁   和G₂   映射到不同的嵌入:

        (1)A 在每次迭代时所采用的节点状态更新公式:

460b9a668a554066b53eba1c326b9607.png

        其中φ是单射函数,f 是一个作用在多重集上的函数,也是单射函数。

        (2)从节点嵌入整合到最终的图嵌入时,A 所采用的读取函数运行在节点嵌入的多重集{ hvk}上,也是一个单射函数。单射指的是不同的输入值一定会对应到不同的函数值。这个结论说明,要设计与Weisfeiler-Lehman一样强大的图卷积网络,最重要的条件是设计一个单射的聚合函数。

        其实,求和函数在多重集上就是一个单射函数。由此,我们得到了一个新模型——图同构网络,只需要把聚合函数改为求和函数,就可以提升图神经网络的表达力:

e5adfc3334224d5da5829a667655d6a3.png

2.图卷积网络实战

init部分

#导入确保代码在Python 2中也能使用Python 3的特性
from __future__ import print_function
#从layers模块导入所有内容
from __future__ import division
from .layers import *
#从models模块导入所有内容
from .models import *
#utils模块导入所有内容
from .utils import *

layers部分

import math
import torch
#从 PyTorch 的 nn 模块中导入 Parameter 类,它用于定义可学习的参数
from torch.nn.parameter import Parameter
#从 PyTorch 的 nn 模块中导入 Module 类,它是所有神经网络模块的基类
from torch.nn.modules.module import Module
#定义一个名为 GraphConvolution 的类,它继承自 Module 类
class GraphConvolution(Module):
#bias=True 是一个常见的参数设置,它用于决定是否在模型的某些层中添加偏置项。偏置项是神经网络中的一个参数,它允许模型在特征空间中进行平移
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值