从社交网络建模到分子性质预测,图神经网络(GNN)在诸多应用中都展现出了巨大的前景。
其中一个领域是欺诈检测,GNN有望对该领域产生巨大影响:(GNN可以帮助)分析个人、金融工具、交易地点,以及其他欺诈活动相关的数据点之间的复杂关系。
在本文中,我们将使用在Graphcore(拟未) IPU上运行的PyTorch Geometric,进一步研究用于欺诈检测的GNN。我们将充分利用该处理器的独特架构以及它对运行图神经网络的适用性。
您可以使用我们在Paperspace上的教程notebook免费运行参考示例。
https://ipu.dev/7ditt8
为什么GNN非常适合欺诈检测?
任何在线金融交易所涉及的数据点数量和种类都非常多。这些数据点包括信用卡号、信用卡所有者的地址、进行交易的物理地址或IP地址、在该地址注册的其他信用卡、交易性质、与某个供应商之间的活动历史、相关物品被欺诈交易的可能性等等。
直到最近,欺诈检测的计算方法才开始涉及模式识别或基于规则的系统。但是,它所涉及的诸多数据点以及其间的复杂关联,使它非常适合用图结构来描述,图中的某一个节点的相邻节点,或是更广泛一些的相邻节点,可能就是欺诈活动的一个重要指标。
GNN能够从这种复杂的图结构中学习,因此非常适合解决这个问题。
为什么使用Graphcore IPU
进行GNN欺诈检测?
IPU在运行GNN时能够带来出色的性能。这篇文章详细介绍了IPU在不同GNN应用上的性能,包括我们在OGB-LSC(行业GNN基准测试)中所获的两项第一。
IPU架构的许多方面都使其非常适合GNN,其中一项是IPU的大容量片上SRAM(在Bow IPU中几乎高达1Gb),这使得它在处理收集和分散操作时能够以极高的速度运行——该操作对GNN的消息传递过程十分重要。
在处理大型异构图(代表许多不同类型的实体)时,可能会有许多消息传递步骤,因此也会有许多收集和分散操作。
构建图
为了使用PyTorch Geometric解决类似问题,我们采用了和AWS博客[1]中所述方法类似的操作。它使用Deep Graph Library(DGL)来解决该问题,而我们则使用PyTorch Geometric。
我们使用的是IEEE Kaggle竞赛数据集[2],它是表格型的数据,包含交易和许多其他“列”,这些列代表交易金额、账单地址和发件人电子邮件域名等等。
AWS博客中的方法是以这个表格型的数据构建一个异构图,其中的目标节点类型是交易。这些交易节点有一个指示该交易是否是欺诈性的标签,以及一个由表格中的分类列和数字列组成的特征。
数据中的某些列可用于构建额外的节点类型,例如,发件人的电子邮件域名“gmail.com”可被视为该列节点类型的一个节点,许多交易都与之相关联。
遵循这样的过程,一个由交易节点构成的异构图就构建好了,这些交易节点的特征向外连接到其他节点类型,每个交易与节点类型的关系都是异构图中的一个新关系。然后这就变成了一个识别交易节点是否是欺诈性的节点分类问题。
在PyTorch Geometric中重新创建此图非常简单,您可以在我们的数据集预处理notebook中进行实验。
https://ipu.dev/UdY8lk
在PyTorch Geometric中构建了异构图之后,我们就可以使用带有Graphcore的Poplar SDK及其PopTorch Geometric包的PyG功能进行实验,我们可以用Paperspace Gradient Notebook来实验训练一个模型。
https://ipu.dev/7ditt8
应对挑战

我们以这种方式使用GNN时,会遇到两个主要挑战:大型图采样和异构图功能。Graphcore面向PyG的PopTorch支持解决了这两个问题。您可以在我们的文章[3]中了解更多关于异构图和大型图采样的内容。
大型图采样
我们从表格数据中构建的图非常大。对大型图进行全批训练所需的存储容量往往远超加速器的存储容量,因此,我们需要以某种形式的采样来进行迷你批训练,而不是全批训练。
为了解决这个问题,我们可以使用`poptorch_geometric.FixedSizeNeighborLoader`,它对PyG数据加载器进行了薄层封装,在使用相邻采样创建样本的同时,还提供了适合IPU超前编译模型使用的固定大小的迷你批。更多详情,请查看我们的大型图采样教程。
https://ipu.dev/uN5BYV
异构图
由表格数据构建的图是异构的,它涉及许多不同类型的实体。PyTorch Geometric提供了一些灵活简洁的功能来构建强大的异构模型。我们利用这一功能构建了一个模型,其中每种关系类型(包括反向关系)都有自己的卷积层。
在最新的Poplar SDK 3.3中,PyG异构图功能开箱即用,用户可以直接在Graphcore IPU上使用PyG所有强大易用的功能。
这个问题的另一个挑战是,数据集中的欺诈样本数量很少,约为5%。这种类别上的巨大不平衡会在训练过程中导致偏差,使预测非欺诈样本比预测欺诈样本更准确。
有几种方法可以帮助缓解这一问题,包括在损失函数中分配类别权重,为欺诈样本分配比非欺诈样本更多的权重。
这就带来了一个额外的问题,即如何确定模型的性能。我们可能会获得一个很高的准确率,但同时却无法准确预测欺诈样本。在这种情况下,我们可以绘制ROC曲线(接受者操作特性曲线),并计算曲线下的面积,将其作为一个实用的指标。这是一个非常实用的方法。
https://ipu.dev/7FQhRb
结论
通过将PyTorch Geometric与Graphcore的Poplar SDK 3.3和PopTorch Geometric结合使用,我们可以使用Graphcore IPU轻松启用并加速在大型异构图上训练的模型。
我们创建了一系列Paperspace Gradient Notebooks作为本文相关内容的教程,Paperspace的新用户可以免费获得长达6小时的IPU计算时间。
  • 使用PyG在IPU上训练用于欺诈检测的GNN[4]
  • 将表格数据集预处理为用于欺诈检测的PyG数据对象[5]
  • 使用PyG进行面向IPU的大型图采样[6]
  • IPU上的异构图学习[7]
[1]https://aws.amazon.com/blogs/machine-learning/build-a-gnn-based-real-time-fraud-detection-solution-using-amazon-sagemaker-amazon-neptune-and-the-deep-graph-library/
[2]https://www.kaggle.com/competitions/ieee-fraud-detection/data
[3]https://www.graphcore.ai/posts/extending-our-pytorch-geometric-on-ipus-support-for-large-and-heterogeneous-graphs
[4]https://ipu.dev/7ditt8
[5]https://ipu.dev/UdY8lk
[6]https://ipu.dev/uN5BYV
[7]https://ipu.dev/7FQhRb
获取更多Graphcore资讯,阅读深度技术文章,并与其他创新者们一起交流,请至中国官网graphcore.cn,以及关注Graphcore微信、微博和知乎创新社区。
Graphcore中国官网
Graphcore官方微信
Graphcore微博创新社区
Graphcore知乎创新社区
点击阅读原文,查看英文blog。
继续阅读
阅读原文