图神经网络基础
图神经网络用于挖掘事物的“普遍联系”,理解原理、应用技术。本文汇总图神经网络相关介绍和基础模型。
图及特性
图是由顶点和边组成的,如下图左所示。一般图中的顶点表示实体对象(比如一个用户、一件商品、一辆车、一张银行卡等都可以作为顶点),边代表事件或者实体之间的特殊关系(比如用户和商品之间的购买关系)。
在数学中一般使用邻接矩阵来表示图,如上图右所示。邻接矩阵中的值为 1 表示顶点之间有边,即有连接关系,所以邻接矩阵可将图的这种结构信息表达出来。
图数据类型的类别有:
- 同构图(Homogeneous Graph):图中节点类型和关系类型都仅有一种。
- 异构图(Heterogeneous Graph):图中节点类型和关系类型多于一种。
- 属性图(Property Graph):在图数据上增加属性信息,节点和关系都有标签和属性。
- 非显式图(Graph Constructed from Non-relational Data):数据之间没有显示定义出关系,需要依据某种规则或计算方式将数据关系表达出来。
关于属性图,图中的顶点和边都带有属性(这也是一种信息)。如下图所示:
这个图里的用户顶点有姓名、性别,而话题顶点有具体的话题类别,公司顶点有名称,注册时间等属性信息。边的属性信息,比如开始工作时间是边”工作于”的一种属性。所以,属性图就是顶点和边带有自己的属性信息,同时每个顶点又有自己的拓扑结构信息。这是工业界最常用的一种图表示方法,因为我们需要更丰富的信息。图神经网络将图数据和神经网络进行结合,在图数据上进行端对端的计算。
现实生活中的大量的业务数据都可以用图来表示。万事万物皆有联系,顶点+关系这样一种表示覆盖很广。比如人类的社交网络,个体作为顶点,人与人之间的各种关系作为边;电商业务中,用户和商品也可以构建成图网络;而物联网、电网、生物及化学分子这些是天然的顶点+关系结构;甚至,可以将实物物体抽象成 3D 点云,以图数据的形式来表示。
为什么需要图神经网络
图神经网络提出的目的是针对图这种非欧几里得数据来学习图网络中的实体、关系的向量表示以及构成它们的规则,保存结构化输入数据之间的拓扑关系,并通过对输入数据的节点处理来跟踪节点中的图结构。 在欧几里得数据类型上,神经网络已经取得了非常显著的效果,比如说二维图片上应用卷积神经网络,一维的语音 文字数据上应用RNN等, 而对于一般的graph或者说network来说,每个节点的邻居数量不固定,邻居排序也不固定,因此在graph上应用神经网络模型是比较困难的。
图数据的相关任务一般有:
- 节点层面(Node Level)任务:如在线社交网络中用户标签的分类、恶意账户检测等。
- 边层面(Link Level)任务:如社交用户的推荐等。
- 图层面(Graph Level)任务:如药物分子的分类、酶的分类等。
图神经网络的强大能力可以归纳为三点:对图数据进行端对端学习、擅长推理、可解释性强
支持端对端学习
深度学习带来了人脸识别、语音助手以及机器翻译的成功应用,这三类场景分别代表了三类数据:图像、语音和文本。深度学习在这三类场景中取得突破的关键是其端对端学习机制。端对端代表着高效,能够有效减少中间环节信息的不对称,一旦在终端发现问题,整个系统每一个环节都可以进行联动调节。既然端对端学习在图像、语音以及文本数据上的学习有效,那么将该学习机制推广到具有更广泛业务场景的图数据有所前途。
擅长推理
业界认为大规模图神经网络是认知智能计算强有力的推理方法。图神经网络将深度神经网络从处理传统非结构化数据(如图像、语音和文本序列)推广至更高层次的结构化数据(如图结构)。大规模的图数据可以表达丰富和蕴含逻辑关系的人类常识和专家规则,图节点定义了可理解的符号化知识,不规则图拓扑结构表达了图节点之间的依赖、从属、逻辑规则等推理关系。以保险和金融风险评估为例,一个完备的AI系统不仅需要基于个人的履历、行为习惯、健康程度等进行分析处理,还需要通过其亲友、同事、同学之间的来往数据和相互评价进一步进行信用评估和推断。基于图结构的学习系统能够利用用户之间、用户与产品之间的交互,做出因果和关联推理。
可解释性强
图具有很强的语义可视化能力,这种优势被所有的GNN模型所共享。比如在异常交易账户识别的场景中,GNN在将某个账户判断为异常账户之后,可以将该账户的局部子图可视化出来,如下图所示:
可以直观地从子图结构中发现一些异常模式,比如同一设备上有多个账户登录,或者同一账户在多个设备上有行为。还可以从特征的维度,比如该账户与其他有关联的账户行为模式非常相似(包括活跃时间集中,或者呈现周期性等),从而对模型的判断进行解释。
图神经网络的机制
首先从一种最简单的图结构,也就是如上图所示的链条结构开始,实际上这个结构可以看作是一种有向图。 这种结构很容易让我们联想到用循环神经网络来模拟图中节点信息的传递。例如RNN的传播模式是节点从它的上一个邻居节点中获得信息,把自身包含的信息融合进来,再传递给下一个节点。在每一步中,隐状态向量的更新不但考虑了上一步,或者在这里即上一个节点传递过来的信息,同时考虑了当前的节点特征。 从这个角度来看,针对序列输入的RNN模型完全可以视为一种特殊的图神经网络模型。
如果把刚才简单的链状数据结构扩展成连接更加复杂的图结构,此时在有向图中每个节点可能包含多个邻居,同样可以采用循环单元从邻居节点收集他们包含的信息,并和节点自身的信息进行融合,得到当前节点的新的特征向量。 图中NN1和NN2代表不同类型的边, 在图神经网络中,可以为不同类型的边设计不同的消息传递函数。
图神经网络的关键是步骤包含聚合和更新:根据节点的邻居来更新节点的特征向量表示,比如这张图上A是我们的目标节点,它的领域有B,C,D这三个节点,那么我们通过聚合操作融合BCD的信息来更新A的表示,实现信息在图结构数据上的传播。由此我们可以粗浅地给图神经网络模型下一个定义,针对图结构这一非欧几里得结构数据,利用神经网络来聚合邻域信息,从而更新节点或者边的表达的模型就可以称为是图神经网络。 它可以应用到各种问题中,比如节点分类,连边预测,或者在整张图的尺度上进行graph的分类回归等等任务。
图神经网络是直接在图上进行计算,整个计算的过程,沿着图的结构进行,这样处理的好处是能够很好的保留图的结构信息。而能够对结构信息进行学习,正是图神经网络的能力所在。
聚合操作
以graphsage中的mean-aggregator为例,该聚合操作包括两个步骤,step 1 是平均所有邻居的信息,也就是把它们的embedding vector进行平均操作得到一个新的vector; step 2 把聚合后的向量输入给神经网络进行特征的提取。
更新操作
聚合后的邻居节点信息通常是用一个向量表示的,GNN模型下一步需要做的事情就是将邻域节点向量和中心节点本身的表征进行结合,更新中心节点的表示,融入从图中传递过来的邻域信息。
这里我们以某个节点v为例,先看紫色的框,第0层节点的隐向量表示就是它的初始特征, 当我们需要获得它在第k层的表达时, 我们看红色的框的这部分,搜集了节点v的领域节点在当前的向量表达,并且求它们的平均向量,再经过可训练参数W_k的变换得到邻域信息表征, 黄色框的部分则是节点v当前的隐向量表达,乘上另外一个参数B_k, 该例中选取的更新操作是相加,最后通过激活函数获得非线性表达。 实际上整个公式和神经网络中的全连接层数学表达基本上一致的。 训练过程中我们要学习的实际上就是这两组参数W_k和B_k。
经过K层的图神经网络模型可以将k-hop的邻域信息传递给中心节点。
现在我们来概括一下图神经网络的基本流程。 第一步我们要定义邻域信息聚合时候采取的操作, 比如说mean-pooling/max-pooling/加或者循环神经网络等等,刚才我们介绍的了其中的一种,但是这里的可以定义的聚合函数其实是有很多选择的,如果能提出一种合理地效果好的聚合函数,就能发一篇好paper了。 第二步是定义好我们的损失函数, 这里可以根据有监督的方式比如具体的节点分类任务我们就可以把学习到的embedding当做特征进行分类,从而就可以采用交叉熵等损失函数,也可以用无监督的方式训练,比如定义两个相似节点的embedding距离作为损失函数,类似自编码器的方式,具体的选择要根据应用的场景考虑,总之必须要有一个合适的损失函数,我们才能对图神经网络里的权重参数进行更新。
图神经网络模型
GNN paper list: https://github.com/thunlp/GNNPapers
GNN model list: https://github.com/EdisonLeeeee/GraphGallery
GCN
GCN模型是将针对欧几里得结构数据的卷积神经网络模型扩展到非欧图结构数据上的模型,经过三代发展逐渐从谱域方法向空间域方法过渡。
傅立叶变换:
拉普拉斯算子:
拉普拉斯矩阵:
傅里叶变换可以将时域或者说空间域上的信号映射到谱域或者叫频域上,
被称为是傅里叶变换的基函数,它是
拉普拉斯算子的特征函数。傅里叶变换实际上就是时域信号与拉普拉斯算子特征函数的积分。 函数上的拉普拉斯算子我们可以简单理解成二阶导数。 在graph上用拉普拉斯矩阵来表示图上的拉普拉斯算子,具体的理论依据需要从图谱理论来解释。 拉普拉斯矩阵是图的度矩阵减去邻接矩阵,度矩阵是一个对角矩阵,第i行第i列的数值代表第i个节点有多少个邻居, 邻接矩阵是0-1矩阵,代表两个节点之间是否有连边。 一般用下面这个标准化的形式作为图的卡普拉斯矩阵,I_N为单位矩阵。
类比到图的拉普拉斯矩阵上,对拉普拉斯矩阵进行奇异值分解,得到特征向量矩阵U和由特征值构成的对角矩阵Λ, U的转置就是图拉普拉斯矩阵的对应的特征向量矩阵, 所以对于图节点的特征向量矩阵,只要乘以U的转置就可以映射到谱域上了,进行同样的操作我们可以把卷积核也映射到谱域中, 根据卷积定理,在谱域上进行乘法运算,通过反傅里叶变换后得到的结果就是空间域上的卷积操作了。
`$g * x = U(U^Tg\cdot U^Tx) \ g_{\theta}(\Lambda) = U^Tg $’
作为图卷积的filter函数 ,我们希望它具有很好的局部性。就像CNN模型里的filter一样,只影响到一个像素附近的像素。那么我们可以把卷积核g定义成一个laplacian矩阵的函数 g(L).作用一次laplacian矩阵相当于在图上传播了一次邻居节点。进一步可以把 g的傅里叶变换结果看做是一个拉普拉斯特征值的函数,参数为θ。到这里实际上已经完成了谱域上的图卷积,称之为第一代的图卷积,但是我们很容易发现整个流程下来计算的复杂度非常高。为了提高效率和空间局部性,2016年nips上发表chebnet提出使用切比雪夫多项式来构造卷积核函数:
微信截图_e2c8def2-474c-4fa7-b0f5-977a6acb2371.png
如果把 g_θ写成Λ矩阵的多项式形式,并且结合特征分解的性质,再代回刚才介绍过的卷积公式,最终可以得到一个只和参数θ, 图拉普拉斯矩阵和节点信号相关的公式。 另外原论文提出用切比雪夫多项式展开,用T_k来代替Lk,应该是为了在数值计算的时候的能够用切比雪夫多项式递推公式来加速计算。 Chebnet的时间复杂度降低到了O(KE),而且从数学上证明了卷积时只考虑K-hop的领域,使得图卷积的k空间局部性得到了理论保证。
之后提出的GCN中实际上是对Chebnet的修改,特别地限定了K等于1,也就是只考虑1-hop的领域,并且把A^定义为A+I_N, D为对应的度矩阵,再加上激活层就可以写出GCN每个卷积层的公式了。 实际上在GCN中我们训练过程中对kernel的更新是体现在参数矩阵W的学习上的。
尽管GCN的形式非常简单,直观地体现了每一层GCN实现1-hop邻居节点信息的传播,但它背后是复杂完整的图谱理论的支撑。
GraphSage
Graphsage方法主要有三个特点,第一是引入采样技术,通过对中心节点的邻居均匀采样,得到一个包含中心节点和它的邻居节点的子图,对这个子图进行节点信息聚合操作。采样技术的引入,一定程度上缓解了计算和内存压力,使模型可以在大规模图数据上训练;第二是抽象出一个 aggregate architectures,在卷积阶段聚合传递过来的邻居节点的特征。原始GCN中对passing message累计加权平均是aggregate architecture的一种形式。实际中可以根据需要选择不同的aggregate function。第三是聚合邻域信息的时候采取concat中心节点本身的特征和aggregate的到的邻居节点表达的方式,达到了在神经网络不同层之间skip-connection的效果。
GAT
由于需要对邻居节点的信息聚合成一个向量,常见的做法是对节点的n个邻居节点向量表示计算平均向量。考虑到对于一个节点而言,它的邻域节点对它的影响可能是不同的,有些节点对它的影响力比较大,有些节点虽然是它的邻居,但是可能和它的关联性不大。 所以直接将邻域的信息简单加和不是一种理想的聚合操作。
在GAT中, 对于节点v的邻居节点u, 设置了一个注意力权重α_u,v,相当于是对v的邻居节点采用了加权平均的操作,使得那些和v关联性大的节点的向量表示在聚合时有更大的权重。
注意力机制可以通过多种方式实现, 原论文的方式是将当前节点i和邻居节点j的隐向量经过线性变换后拼接在一起,再训练一组参数a, 这个结果用softmax归一化得到注意力权重,这种注意力权重训练的方式其实也是我们常用的,只不过将它迁移到了图神经网络中用于邻域节点隐向量的加权求和,GAT在2018年的多个benchmarks上达到了state of the art的效果。
GAE
GAE(Graph Autoencoder)模型的原理很简单,对于输入的图和节点,使用GCN作为encoder得到节点的embedding矩阵Z,decoder则使用简单的inner-product,因为Z是一个N*f的矩阵,所以decoder变换回来之后得到的是一个N×N的矩阵,将之视为重构后的邻接矩阵,网络拟合的目标是重构后的邻接矩阵和原始输入的邻接矩阵尽可能相似。
GAE的作用是通过无监督的方式学习图中的结构信息和邻域节点的特征信息,帮助生成更加具有表达能力的节点表征。 该节点表征可以作为特征输入给下游的预测任务。
在上述基础模型之上扩展的应用模型有:
PinSage
用户在Pinterest中 自己感兴趣的东西用图钉(pin)钉在钉板(broad),包扩10亿pin ,10亿board 以及180亿边(若pin在broad中,则它们之间存在一条边)。目标是利用pin-broard二分图结构和属性(如描述文本、图片特征),生成pin的高质量的embedding用于推荐任务,如相关pin推荐,或者作为机器学习系统的输入特征。
模型每次进行卷积时,得到一个节点新的表示,可以通过将卷积层堆叠起来,以聚合节点K跳邻居内的特征。
- 初始化:设置二跳内任意节点的输入层为自身特征:S(1)
- 进行两层卷积及叠加操作:
- 第一次卷积,生成S(1)中节点embeddinng,作为第二层卷积的输入。(这个操作等价为一次传播:将二跳邻居信息传播到一跳邻居上,以及将一跳邻居原有信息传播到自身节点。 不传播到二跳邻居原因是接下来不会用到二跳邻居信息了)
第二次卷积:以第一层卷积的输出作为输入,生成S(1)中节点embedding (这个操作等价继续做一次传播) - 全连接:将卷积结果输入到全连接层。
Danser
DANSER由两个双重GAT组成:一个针对用户的双重GAT(包括用于捕获社会同质性的GAT和用于捕获社会影响力的GAT),另一个用于商品的双重GAT。具体来说,在用户域中,一个用于捕获社交同质性的GAT会集中地聚集相邻用户的嵌入内容,以反映他们的偏好,并输出静态用户偏好的表示形式。另一个捕获社会影响力的 GAT 旨在卷积相邻用户的上下文感知偏好,以表征用户的评分项目与候选项目的相关性,并输出动态用户偏好的表示形式。在项目域中,设计了两个类似的GAT作为双重体系结构,分别在物料之间的同质性和相关物料之间的影响下,对物料的静态和动态属性进行建模。这种双重机制具有两个优点:i)捕获同质性的GAT,并且影响可以通过利用全局视图和局部视图来调查用户项交互而共同建模两个社会效应。 ii)项目域中的两个GAT合并了相关项目的信息,这可以进一步缓解数据稀疏性问题。
SocialGCN
大多数的社交推荐模型利用用户局部邻居(应该指的是直接信任的用户)的偏好去缓解数据稀疏性的问题。然而,他们只考虑了每个用户的局部邻居,忽略了用户偏好受信息在社交网络传播的影响过程。图卷积网络利用图结构和节点特征信息对图中的信息扩散过程进行建模。为此,本文提出了一种有效的基于图卷积神经网络的社会推荐模型。基于一个经典的CF模型,提出的模型的核心思想是利用GCNs的优势来捕捉用户的偏好如何受到社交网络中社交扩散过程的影响。用户偏好的扩散建立在分层扩散的基础上,初始化用户嵌入由当前用户特征和不包含用户特征的潜在向量进行函数处理得到的,初始化项嵌入也类似。
item embeddinig:
vi 由两部分组成:项的特征嵌入 yi 和 来自潜在矩阵Q ∈ RL×N 的潜在向量 qi,通过一个全连接神经网络层计算得到:
user embedding:
给定一个社交网络 S, GCN 的目标是用分层的多层结构对来自其社交邻居的每个节点嵌入进行建模。
对于每个用户 a,让hk_a表示 a 在第 k 层的潜在嵌入,给定他的社交邻居在这一层的潜在嵌入,图卷积运算定义了 a 在 k+1 层的潜在嵌入hk+1_a
GraphRec
基于GNN建立社交推荐系统有很多的挑战,因此作者提出了GraphRec框架。提供了一种有原则的方法来联合捕获用户-项目图中的交互和意见,并提出了框架GraphRec,该框架连贯地对两个图和异构优势进行建模。整个框架包含三个部分: user modeling包含两个部分 item aggregation:利用用户与item的联系生成一个embedding Social aggregation:利用用户与用户之间的关系生成一个embedding user modeling部分的输出由上述两个embedding连接成的向量 item modeling利用用户对物品的关系与意见产生一个embedding rating prediction部分利用上述两部分的向量,对用户对某个item的打分进行预估。
DiffNet
A Neural Influence Diffusion Model for Social Recommendation 社交推荐系统利用每个用户的局部邻居偏好(local neighbors’ preferences)来缓解数据稀疏性,从而更好地进行用户emb建模。对于每一个社交平台的用户,其潜在的嵌入是受他信任的用户影响的,而这些他信任的用户也被他们自己的社交联系所影响。随着社交影响在社交网络中递归传播和扩散(diffuse),每个用户的兴趣在递归过程中发生变化。然而,目前的社交推荐模型只是利用每个用户的局部邻居来构建静态模型,没有模拟全局社交网络中的递归扩散,导致推荐性能不理想。 本文提出了一个deep influence propagation model。对于每个用户,扩散过程(diffusion)用融合了相关特征和一个caputure了latent behavior preference的free的用户隐向量。本文的key idea是,设计了一个layer-wise的influence propagation结构,可以随着social diffusion process的进行,对用户emb进行演化。
图表示学习的模型有:
Deepwalk: https://arxiv.org/pdf/1403.6652.pdf LINE: https://arxiv.org/pdf/1503.03578.pdf Node2vec: https://arxiv.org/pdf/1607.00653.pdf Metapath2vec: https://dl.acm.org/doi/10.1145/3097983.3098036 BANE: https://ieeexplore.ieee.org/document/8626170 Node2vec+: https://arxiv.org/pdf/2109.08031.pdf
其中阿里的一篇对大规模物品的图表示学习论文:
Billion-scale Commodity Embedding
本文提出根据用户历史行为构建一个item graph,然后使用DeepWalk学习每个item的embedding,即Base Graph Embedding(BGE)。BGE优于CF,因为基于CF的方法只考虑了在用户行为历史上的items的共现率。但是对于少量或者没有交互行为的item,仍然难以得到准确的embedding。为了减轻该问题,本文提出使用side information来增强embedding过程,提出了Graph Embedding with Side information (GES)。例如,属于相似类别或品牌的item的embedding应该相近。在这种方式下,即使item只有少量交互或没有交互,也可以得到准确的item embedding。在淘宝场景下,side information包括:category,brand,price等。不同的side information对于最终表示的贡献应该不同,于是本文进一步提出一种加权机制用于学习embedding with side information,称为Enhanced Graph Embedding with Side information (EGES)。
side information embedding
在训练deepwalk的同时,利用商品的side information来训练不同边界信息的表达,并且得到不同边界信息的权重矩阵
Av×(n+1),v是不同的节点,n是商品信息的维度。
图神经网络的应用
图数据的结构普遍存在,所以图神经网络的应用场景丰富多样。
**推荐
可解释推荐
可解释性推荐,就是不仅要预测推荐的商品,还要给出推荐的理由。**推荐中有一个概念叫元路径。在电影推荐的场景里,如下图所示。用 U 表示用户,用 M 表示电影,那么 UUM 是一条元路径。它表示一位用户关注了另一位用户,那么我们可以将用户看过的电影,推荐给关注他的人。
当然,还有比如 UMUM 表示与你看过相同电影的人还在看什么电影这条路径;UMTM 表示与你看过同一类型电影的路径…元路径有很多,不同元路径对于不同的业务语义。在这个场景中,图神经网络模型有两个任务,一个是推荐影片给用户,二是给出哪条元路径的权重更高。而这正式 GNN 可解释性的体现。
基于社交网络的推荐
利用用户之间的关注关系,我们也可以实现推荐。**用户的购买行为首先会受到其在线社交圈中朋友的影响。**如果用户 A 的朋友是体育迷,经常发布关于体育赛事、体育明星等信息,用户 A 很可能也会去了解相关体育主题的资讯。
其次,社交网络对用户兴趣的影响并非是固定或恒定的,而是根据用户处境(Context)动态变化的。举例来说,用户在听音乐时更会受到平时爱好音乐的朋友影响,在购买电子产品时更会受到电子发烧友的朋友影响。目前有许多的电商平台,包括像京东、蘑菇街、小红书等都在尝试做基于社交的推荐。
基于知识图谱的推荐
要推荐的商品、内容或者产品,依据既有的属性或者业务经验,可以得到他们之间很多的关联信息,这些关联信息即是我们通常说的知识图谱。知识图谱可以非常自然地融合进已有的用户-商品网络构成一张更大、且包含更加丰富信息的图。
其实不管是社交网络推荐,还是知识图谱,都是拿额外的信息补充到图网络中。既能有聚合关系网络中复杂的结构信息,又能囊括丰富的属性信息,这就是图神经网络强大的地方。
国外图片社交媒体 Pinterest 发表了利用图神经网络做推荐的模型 PinSage,参考Pinterest:将GCN应用于图像推荐
风控
风控的业务场景,尤其是在高QPS的网络请求下,需要实时判断每个请求是真实用户流量还是机器流量。一个简单的模型,使用的数据包括设备ID、IP、用户以及他们的行为数据,如下图:
一个案例,如全网一天有将近十亿次网络请求,全部日志构成一张图,包括 1.6 亿节点、12亿边。相较于之前的深度学习方法,AUC 指标提升1.2倍,上线测试该模型的稳定性指标最优,提升 1.5 倍。另一个案例是对 2800 万的网站业务(包括 IP、UA、域名、访问时间等等)以及第三方的威胁情报库数据。该场景下的任务是预测网络请求是否为恶意请求。比如说黑产可能通过 POST 端注入一些恶意代码,操作数据库。解决方案使用了 4 个字段。某个请求在某个IP哪个域名注入了某种脚本,以及 POST 特征码。前三个字段(请求事件ID,IP,域名)构成了一个图,是模型的输入。最后一个 POST 特征码是网络需要预测的或者说在预测时候的监督信号。模型结果的输出首先是攻击语言的识别,2800 万的流量里面有 70% 的是异常流量,分别来自于六个不同的攻击语言,并且识别出相应的作案手段。攻击目标的识别,输出了对应被攻击的域名列表 2000 条。仅仅用了4个字段,就完成了异常流量、攻击目的以及攻击语言的识别。
在很多互联网营销场景里存在着大量薅羊毛的恶意账户。识别恶意账户就是对图中的用户节点进行分类**。薅羊毛用户有一个非常本质的特点,就是他们的行为模式非常相似。由于恶意账户的资源不是无限的,会共用一些设备账号,包括手机号等。所以数据上会有非常多的关联和相似性。另一个特点是在短时间内活跃,薅羊毛用户往往是在做活动的时间段行为非常活跃,而在其他的业务场景里面,活跃度很低,具有短时高频的特点。**所以,要识别这样的恶意账户,主要用了两份信息,第一个是资源的关联信息,另一个就是时间上的行为信息, 这些用户和正常用户在时间上的行为模式是不太一样的。GNN 可以端对端的去学习这两类信息。这个场景阿里发了一篇论文去讲,恶意账户的识别,最后相比较其他的方法,比如像图分区去挖掘这种团伙,包括像 GBDT 这种浅层的机器学习模型,效果是比较突出的。