2021SC@SDUSC
到现在为止,我已经完成了第一篇论文分工后的关键代码分析工作。有了前面工作的基础,接下来的工作进一步深入神经网络领域,开启另一篇论文的探索:
XGNN: Towards Model-Level Explanations of Graph Neural Networks
-
作者:Hao Yuan、Jiliang Tang、Xia Hu、Shuiwang ji
综述:图神经网络通过聚合和结合邻居信息来学习节点特征,在许多图的任务中取得了良好的性能。然而,GNN 大多被视为黑盒,缺乏人类可理解的解释。因此,如果不能解释 GNN 模型,就不能完全信任它们并在某些应用程序域中使用它们。
在这项研究中,来自德克萨斯 A&M 大学(TAMU)和密歇根州立大学的研究者提出了一种新的方法,称为 XGNN,在模型级别上解释 GNN。特别地,他们提出通过训练图生成器来解释 GNN,使生成的图模式能最大化GNN模型的某种预测。研究者将图形生成器表示为一个强化学习任务,其中对于每一步,图形生成器预测如何向当前图形的节点中添加一条边。此外,他们还添加了一些图规则,使生成的图有效。
一.已有方法
目前的可解释性方面的研究,主要包括:实例级和模型级。
(1)实例级:确定输入实例的重要特征---->解释对给定实例的预测。几种方法如下:
- 基于梯度的方法
- 中间特征图可视化
- 基于遮挡的方法
通过解释大量的输入实例才能相信模型,需要大量人力物力。
如最近的GNN解释工具GNN Explainer ,将一个已经训练好的GNN和其预测结果作为输入,然后通过输出一个子图以及该子图上更少的特征,表示其输出最大程度的影响了该GNN的预测结果。
1、不去探究模型内部,专注于信息本身,研究哪些信息对预测结果是重要的。
2、从图结构+特征信息解释。
3、从实例级解释。
(2)模型级:确定哪些输入模式可以导致某种预测结果---->解释模型的一般行为。
更加普遍与高级。
- 主要方法:输入优化。类似于训练深度神经网络来训练参数,输入优化训练的是输入(子图、图模式)。首先随机初始化输入,然后依次迭代更新输入,直到达到某一目标比如预测某一类概率最大)。这样的输入优化可以被认为是对模型预测的解释。
- 局限性:不能用于图数据。
- ①图结构由离散的邻接矩阵表示,不能通过反向传播直接优化邻接矩阵。②抽象后的图是高层次的特征表示,这种情况下,抽象是没有意义的。③得到的图可能对生物、化学规则是无效的,需要添加一些图规则。(原子节点的度不能超过其最大化合价)
二.本文的方法XGNN
训练一个图生成器,用生成的图来解释GNN模型。这个过程可以看作一种强化学习,每一步,给定一个图,图生成器预测连接哪两个节点,生成一个图。此外,加入一些图规则,使生成的图是有效的。
注意:图生成器只是一个框架,可以根据具体数据集和要解释的GNN推广到任何合适的图生成方法。
1.论文目标
针对GNN图分类问题,找出模型级解释中的子图/图模式,即:G*=argmax P(f(G)=ci)
- G*:我们需要的子图/图模式
- argmax:最大值自变量点集,即:使函数取到最大值的自变量的集合。
- f(. ):训练好的GNN模型
- c:标签
- P:概率
解释公式就是:使得图G在训练好的GNN模型f(.)下的预测等于给定标签ci的概率最大时使用的输入模式就等于我们需要的图G的子图/图模式G*。
------------------------------------------------------GNN是做什么的?-----------------------------------------------
补充:GNN是做什么的?三步走:聚合、更新、循环来提取特征。
总结:给出每个节点特征、所有节点的关联图结构,通过聚合邻居节点的特征来更新完善自己的特征,经过多层聚合,得到二阶邻居、多阶邻居的特征来得到每个节点的包含所有图信息的最终特征表示。可以用这个结果进行节点分类、关联预测等。
----------------------------------------------------------------------------------------------------------------------------
2.图生成器描述
2.1目标
对每一步,图形生成器都会基于当前图形生成一个新图形,即:
- 输入:第t步的图Gt,包含:nt个节点
-
:第t步的节点特征矩阵,
-
:邻接矩阵
- gθ( ):以θ为参数的图生成器
- 输出:第t+1步的图Gt+1,包含Xt+1:第t+1步的节点特征矩阵,At+1:邻接矩阵
看作强化学习过程:就是一个序列做决策的问题。每一步都会对最终结果产生影响,每一步都会产生一个回馈,怎么做才能使得每一步都达到最优?
- 状态state: 第t步强化学习环境的状态是:部分生成的图Gt
- 行为action: 第t步的行为action记为at,表示:在当前图Gt的基础上生成新的图Gt+1。 选定一个初始结点
(Gt中)和结束结点
(Gt或C中)添加一条边。
- 策略policy: 图生成器gθ(.),就是学习如何在Gt中添加边来生成Gt+1。可通过reward机制和policy gradient来训练。
- 奖励reward: 第t步的奖励,记为Rt,用来评价第t步的动作,我们想要的结果是:每一步最优。包括2个部分:
- 来自预训练GNN f(.)的guidence。这个guidence会增加gθ(⋅)生成的图被分类为ci的概率。并用这个概率作为反馈更新gθ(⋅)
- 促进gθ(⋅)生成的图在graph rules之下是有效的,graph rules包括:社交网络中2个结点不可能有多条边,分子图中原子的度也不会超过它的化学价。
对于 t 时刻,action at 记为 。
gθ(⋅)的目标就是基于Gt和C来预测不同action的概率。
gθ(.)包括了多个GCN。
2.2应用示例
下图中有4个图均被预测为第3类,人类观测到有一个3角形图是4个图中的共有结构。图生成器最终目标也是生成相似的图,并且引入Graph rules(类似于人工验证)来增强有效性。
2.3图生成器gθ( )的工作过程
(1)用GCNs学习聚合节点的特征,即:
- Gt:当前图
- C:一个候选节点的集合
:GCNs学习到的节点特征
假设数据集中存在k种类型的节点,定义candidate set C = { s 1 , s 2 , ⋅ ⋅ ⋅ , s k } .
比如化学分子图中结点类型就是原子类型,有 C = { 碳 原 子 , 氢 原 子 , ⋅ ⋅ ⋅ , 氧 原 子 } 。
社交网络结点没有分类,则candidate set只有1个类型。
(2)用多层感知器MLP预测出开始节点的概率,再用softmax选一个概率最大的节点,作为初始节点。
:每个节点作为初始节点的概率
- Softmax()函数:归一化指数函数,将多分类输出转换为概率,可以分为两步:
- 分子:通过指数函数y=exp(x),将实数输出映射到零到正无穷。
- 分母:将所有结果相加,进行归一化。
:一个mask向量用来过滤掉C中的结点。
公式(6)表示,初始节点只能从图Gt中选
最大的,因为C中的候选节点不能作为开始节点。
最初时刻的图可以随机从C中随机选出一个结点组成。也可以人工选择,比如有机物结构图生成往往选择碳原子作为初始时刻的图。
(3)选择一个结束节点 。
x^start:的特征向量
:一个mask向量用来过滤掉初始结点
公式(8)表示,除去开始节点的剩余节点中,选择一个作为结束节点。
现在,我们选了两个节点,再将它们连接起来,生成新图。可能包括在Gt中的2个结点中添加一条边或者从C中添加一个结点连接。
上图的过程:
- 输入:一个4个节点的图G,3个候选节点C
- 将Gt的特征矩阵Xt和C中节点的特征向量拼接,得到特征矩阵X。并把Gt的邻接矩阵At(4x4)扩展成A(7x7).
- 特征矩阵X与邻接矩阵A结合,再用多个GCN学习所有节点的特征表示,形成各个节点的特征向量 X^(青蓝色的矩阵)
- 用第一个MLP 预测要新添加边的开始节点
。图中打X的结点即被mask的结点。可以看到 C 中的结点均被mask。
- 用第二个MLP预测新边的结束节点
,可以看到起始结点被mask了。
- 连接,得到生成图Gt+1,比Gt多了一个节点和一条边。
2.4图生成器gθ( )的训练过程
训练过程算法:
训练gθ(·)用到了策略梯度(policy gradient)。公式为:
:交叉熵损失
- Rt:t步的奖励函数(reward function),包括两部分 Rt,f 和 Rt,r。
- Rt,f:来自训练模型的反馈,包含中间奖励Rt,f(Gt+1)以及图 Gt+1 的最终图奖励。倾向于为类别 ci 产生高预测时为正。
- ℓ :图的标签数量
- λ1、λ2:超参数
- Rt,f(Gt+1):中间奖励,可以通过将 Gt+1 提供给训练后的f (·) 并检查类别 ci 的预测概率来获得
- 最终图奖励(②中的第二项):可以通过在中间图 Gt+1 上执行 m 次Rollout ()获得。 每次都基于 Gt+1 生成最终图,直到终止,然后使用等式① 通过 f (·) 进行评估。 然后对 m 个最终图的评估求平均值作为最终的图奖励。
- Rt,r:来自人工制订的graph rules,鼓励生成的图是有效的和人类可理解的。不符合这些规则的 Rt,r奖励会为负。规则可以包括:
- 两个节点之间只允许添加一条边
- 生成的图不能包含比预定义的最大值更多的节点。
- 特定于数据集的规则。 例如,在化学数据集中, 每个节点代表一个原子,所以它的度数不能超过相应原子的化合价。
至此,我们学习了XNN的具体实现理论思想,下面的博客将会对实现方法的代码及数据集进行分析。