图神经网络:带有边特征的异构多重图神经网络Attributed
关键词:GNN
,异构图神经网络
研究背景
目前生产环境上线的图算法基于GraphSAGE+GAT的策略,该策略的核心是把周边节点的特征聚合到中心节点上,而边的特征全部忽略,边仅仅作为GraphSAGE采样的概率依据,不区分边的方向,类型,属性,这个做法明显不合理,业务同事也经常因为这个问题对图算法提出质疑。目前传统的图算法GNN,GCN,GAT,GraphSAGE的实现都是基于同构图的,即节点类型和边的类型都只有一种,且都没有考虑边的方向和属性,因此需要引入异构图神经网络,该算法要能够对不同的关系区别对待,且要能将关系的特征加入整体节点的表征。
异构图神经网络业界现状
目前能在互联网上搜到的异构图神经网络有R-GCN,HAN,CompGCN,以上三个算法不在本文的讨论范围之内,本文介绍蚂蚁金服ACM CIKM(2020)发表的一篇多重图GNN,该算法在客户违约预测上取得了9%的KS增益。该算法基于各种不同的关系构建多重图,在目标节点表征的时候加入了边的信息,以及在最终采用了自适应的融合函数对所有不同关系进行表征融合。链接如下:
图算法在蚂蚁集团信用风控场景的应用
Loan Default Analysis with Multiplex Graph Learning
论文解析
(1)业务研究
论文的研究场景是客户贷款违约预测,基于用户之间的多种关联关系构建多重图,即同一对用户之间可能有多种不一样的关系,基于一种关系边就可以构建一个图,那么通过利用多种不同类型的边,就可以组织起若干层图,每层代表一种类型的关系,如下图所示
先以蚂蚁的场景通过数据分析目标客户的周边有多少已违约其他客户,发现关联关系在客户之间传导的影响作用
业务数据研究上图分类了3类人群,分别是周边没有违约人群,周边有1个人已违约,周边有超过1个人违约,分别刻画后两个人群,在几个月后违约概率相比于第一个人群的提升度,得到以下结论
- 不同的关联关系对违约传导的强度不同,有交易关联的相比于社交关联的导致自身违约概率的提升更大,另外不同的关系对违约预测的贡献可以互补,从而提升整体预测精度
- 不论什么关联,周围有更多的已违约人群,则自身违约的风险更大,证明了风险传导的存在,正好契合图算法这种自动聚合周边信息的能力。
(2)网络结构
网络分为3层,分别是输入层,特定关系感知层,输出层。
2.1 输入层
输入层输入节点的特征和关系的特征,由于是异构网络,会存在不同类型的节点和关系,对原始特征做离散化处理成稀疏矩阵。
2.2 特定关系感知层
该层是网络的核心,它包含特征空间映射,邻居特征聚合,聚合信息传播三个模块。
2.2.1 特征空间映射
对于输入层的节点特征和关系特征,不同类型之间的特征维度不同,都有自己单独的特征空间,例如以关系为例,一种是交易关系,一种是社交关系,假设,对于交易关系特征只有两个分别是交易总金额和交易总此书,而社交特征有3个分别是聊天总次数,总时长,平均聊天时长,两者不仅维度不一样,同时特征空间也不一样。因此需要在网络之前加入特征映射层,期望把各种不同类型的数据输入映射同一个空的embedding,使得他们的维度相同。
- 对于节点,每一个不同的类型都有有个独特的映射矩阵Mv
- 对于关系每一个不同类型的关系都有一个独特的映射矩阵Me
完成映射之后,所有输入的边和节点的维度都是统一的d。举例交易关系特征维度是(batch_size, 2),则M交易矩阵的维度就是(2, d),社交关系特征维度是(batch_size, 3),则M社交矩阵的维度就是(3, d)。
2.2.2 邻居特征聚合
特征聚合部分和传统的同构图神经网络不一样了,加入和边的特征,首先加入和同关系在多个邻居的自适应融合权重,该权重由节点A映射后的向量hu,节点B映射后的向量hi,以及AB的边映射后的向量eui三者拼接后通过各种变化得到一个值,再通过softmax的方式得到AB的聚合权重。
同种关系下的邻居聚合权重这个注意力权重的计算和GAT基本是一致的,看下GAT的
GAT注意力机制计算区别就在于最后GAT的a和该论文里面的v,前者在激活函数里面,后者在外面。
确定融合权重之后,下一步每个邻居自身的信息量如何定义,作者在传统GNN只融合节点特征的基础上,加入边的特征,相当于这个邻接的边和节点的信息都要融合进来,配合上一步计算得到的权重最后加权求和得到该层邻居聚合的最终结果。
同种关系下的邻居信息表征和聚合
上面两个式子中的f代表激活函数,作者采用的tanh。
2.2.3 聚合信息传播
这步就是将上一步邻居聚合的信息传递到中心节点身上,采用如下公式
信息传递
这步和传统的GNN是一样的,中心和邻居拼接,再套全连接和激活函数Relu,得到最终的下一层表征,这是一个递归的过程。
2.3 输出层
输出层同样采用加权求和的方式得到最终的中心节点所有关系融合的表征,具体的做法是将不同的关系在特定关系感知层的输出进行融合,通过自适应的注意力函数得到权重。
多关系融合表征
到这里完成多个关系的融合,实际上是集成学习的思想,每一个关系构建一个图,单独构建一个递归的GNN获得该关系下节点的表征,最后一个节点的所有关系下的表征融合,最终套一个全连接交给y值计算交叉熵损失进行模型迭代
模型损失这个模型作者配了一张图,流程还是非常清楚的
模型流程图
模型的主要结构完毕
(3)模型效果对比
作者对比了该算法和另外三类算法策略:
- 第一种是直接基于节点特征二分类,比如MLP和Xgboost算法
- 第二类是无监督的embedding算法,又分为仅使用embedding和embedding加节点自身属性,这种以Xgboost作为最终的分类器,可以看到加入embedding补充信息之后Xgboost效果有所提升
- 第三类是GNN算法,包括基于单图的GrapohSAGE,GAT,和异构图HAN等
最终作者的该算法相比其他三类算法取得了最优效果,KS和AUC都有大幅提升,提升的值是百分比,而不是直接相减的值,从这个图还可以看出,之前的先进方法中,GAT图注意力网络是效果最优秀的。另外从时间衰减角度看,未来一个月违约是最难预测的,未来3个月违约是最好预测的,在往后慢慢降低。
(4)模型过程分析
4.1关系融合分析
作者将每一个关系得到的网络单独建模对比和融合后的结果的AUC和KS结果
仅使用一种关系和融合对比
结论是融合确实获得了最佳效果,单从某个关系的效果看,交易关系和社交关系对预测的作用最大。
4.2注意力机制分析
作者分别拿掉了邻居聚合层的注意力函数(绿线)和多关系融合时的注意力函数(蓝线),每个月的KS,AUC效果都比带有注意力函数(红线)的模型要下降
image.png
作者进一步绘制了融合层每个关系的注意力权重
各关系的融合权重
由此可见交易关系的权重最大。然后作者又拿邻居聚合时的注意力机制进行分析,基于交易关系下,发现同属于一个标签(是否违约,蓝色代表未违约,红色代表违约)下的客户之间,权重比不是一个标签的要大(线条的粗细)。
邻居集合权重4.3 传播层数分析
作者对比了信息传播层数对模型精度的影响,设置最大递归2层,很明显2层比1层好
传播层数的影响4.4 向量表征可视化分析
最后作者对比了同属于图算法框架的其他算法GraphSAGE,GAT等和该算法的embedding降维图,可以看到
GraphSAGE得到embedding不能很好地把坏客户分辨开来,而该算法的embedidng可见非常清晰的分辨轮廓和更密集的聚类,如下图
embedding降维图