\

轻松应对两大挑战,Graphcore助您利用GNN和PyG进行欺诈检测

作者:

分享  

Share on weixin
Share on weibo
Share on linkedin

订阅

从社交网络建模到分子性质预测,图神经网络(GNN)在诸多应用中都展现出了巨大的前景。

其中的一个领域是欺诈检测,GNN有望对该领域产生巨大影响:(GNN可以帮助)分析个人、金融工具、交易地点,以及其他欺诈活动相关的数据点之间的复杂关系。

在本文中,我们将使用在Graphcore(拟未) IPU上运行的PyTorch Geometric,进一步研究用于欺诈检测的GNN。我们将充分利用该处理器的独特架构以及它对运行图神经网络的适用性。

您可以使用我们在Paperspace上的教程notebook免费运行参考示例。

使用PyG

在IPU上训练GNN进行欺诈检测

教程

为什么GNN非常适合欺诈检测?

任何在线金融交易所涉及的数据点数量和种类都非常多。这些数据点包括信用卡号、信用卡所有者的地址、进行交易的物理地址或IP地址、在该地址注册的其他信用卡、交易性质、与某个供应商之间的活动历史、相关物品被欺诈交易的可能性等等。

直到最近,欺诈检测的计算方法才开始涉及模式识别或基于规则的系统。但是,它所涉及的诸多数据点以及其间的复杂关联,使它非常适合用图结构来描述,图中的某一个节点的相邻节点,或是更广泛一些的橡林街店,可能就是欺诈活动的一个重要指标。

GNN能够从这种复杂的图结构中学习,因此非常适合解决这个问题。

为什么使用Graphcore IPU进行GNN欺诈检测?

IPU在运行GNN时能够带来出色的性能。我们的博客《运行GNN,为何IPU独擅胜场?》详细介绍了IPU在不同GNN应用上的性能,包括我们在OGB-LSC(行业GNN基准测试)中所获的两项第一。

IPU架构的许多方面都使其非常适合GNN,其中一项是IPU的大容量片上SRAM(在Bow IPU中几乎高达1Gb),这使得它能够在处理收集和分散操作时能够以极高的速度运行——该操作对GNN的消息传递过程十分重要。

在处理大型异构图(代表许多不同类型的实体)时,可能会有许多消息传递步骤,因此也会有许多收集和分散操作。

构建图

为了使用PyTorch Geometric解决类似问题,我们采用了和AWS博客中所述方法类似的操作。它使用Deep Graph Library(DGL)来解决该问题,而我们则使用PyTorch Geometric。

我们使用的是IEEE Kaggle竞赛数据集,它是表格型的数据,包含交易和许多其他“列”,这些列代表交易金额、账单地址和发件人电子邮件域名等等。

AWS博客中的方法是以这个表格型的数据构建一个异构图,其中的目标节点类型是交易。这些交易节点有一个指示该交易是否是欺诈性的标签,以及一个由表格中的分类列和数字列组成的特征。

数据中的某些列可用于构建额外的节点类型,例如,发件人的电子邮件域名“gmail.com”可被视为该列节点类型的一个节点,许多交易都与之相关联。

遵循这样的过程,一个由交易节点构成的异构图就构建好了,这些交易节点的特征向外连接到其他节点类型,每个交易与节点类型的关系都是异构图中的一个新关系。然后这就变成了一个识别交易节点是否是欺诈性的节点分类问题。

在PyTorch Geometric中重新创建此图非常简单,您可以在我们的数据集预处理notebook中进行实验。

将表格数据集预处理为适用于欺诈检测的PyG数据对象

教程

在PyTorch Geometric中构建了异构图之后,我们就可以使用带有Graphcore的Poplar SDK 及其PopTorch Geometric包的PyG功能进行实验,我们可以用Paperspace Gradient Notebook来实验训练一个模型。

使用PyG

在IPU上训练GNN进行欺诈检测

教程

应对挑战

我们以这种方式使用GNN时,会遇到两个主要挑战:大型图采样和异构图功能。Graphcore面向PyG的PopTorch支持解决了这两个问题。您可以在我们的文章中了解更多关于异构图和大型图采样的内容。

大型图采样

我们从表格数据中构建的图非常大。对大型图进行全批次训练所需的存储容量往往远超加速器的存储容量,因此,我们需要以某种形式的采样来进行迷你批次训练,而不是全批次训练。

为了解决这个问题,我们可以使用`poptorch_geometric.FixedSizeNeighborLoader`,它对PyG数据加载器进行了薄层封装,在使用相邻采样创建样本的同时,还提供了适合IPU超前编译模型使用的固定大小的迷你批次。更多详情,请查看我们的大型图采样教程。

使用PyG在IPU上对大型图进行采样

教程

异构图

由表格数据构建的图是异构的,它涉及许多不同类型的实体。PyTorch Geometric提供了一些灵活简洁的功能来构建强大的异构模型。我们利用这一功能构建了一个模型,其中每种关系类型(包括反向关系)都有自己的卷积层。

在最新的 Poplar SDK 3.3 中,PyG 异构图功能开箱即用,用户可以直接在Graphcore IPU上使用PyG所有强大易用的功能。

这个问题的另一个挑战是,数据集中的欺诈样本数量很少,约为5%。这种类别上的巨大不平衡会在训练过程中导致偏差,使预测非欺诈样本比预测欺诈样本更准确。

有几种方法可以帮助缓解这一问题,包括在损失函数中分配类别权重,为欺诈样本分配比非欺诈样本更多的权重。

这就带来了一个额外的问题,即如何确定模型的性能。我们可能会获得一个很高的准确率,但同时却无法准确预测欺诈样本。在这种情况下,我们可以绘制ROC曲线(接受者操作特性曲线),并计算曲线下的面积,将其作为一个实用的指标。这是一个非常实用的方法。

在IPU上使用PyG进行异构图学习

教程

结论

通过将PyTorch Geometric与Graphcore的Poplar SDK 3.3和PopTorch Geometric结合使用,我们可以使用Graphcore IPU轻松启用并加速在大型异构图上训练的模型。

我们创建了一系列Paperspace Gradient Notebooks作为本文相关内容的教程,Paperspace的新用户可以免费获得长达6小时的IPU计算时间。

使用PyG在IPU上训练用于欺诈检测的GNN

将表格数据集预处理为用于欺诈检测的PyG数据对象

使用PyG进行面向IPU的大型图采样

IPU上的异构图学习

More Posts

卢涛:后登纳德时代,IPU架构引领Transformer向高阶版演进

GACS 2023 | IPU:赋能生成式AI,不止生成式AI

Graphcore携手Pienso荣获CogX最佳创新类别的自然语言处理奖

Graphcore加入PyTorch基金会

促进低精度数字格式使用,Graphcore发布全新Unit Scaling库

情人节之“AI”跨山海——拟未“AI”的故事绘画连载(三)

获取最新的GRAPHCORE资讯

在下方注册以获取最新的资讯和更新:




    获取最新的GRAPHCORE资讯

    在下方注册以获取最新的资讯和更新: