三年时间,图神经网络已经渗透到了各个领域
从视觉推理到开放性地阅读理解问题,从药物分子的研发到 5G 芯片的设计,从交通流量预测到 3D 点云数据的学习,仅仅三年时间,图神经网络技术的相关应用研究已经拓展到了及其宽广的局面上,展示出了及其重要且极具渗透性的应用能力。
图神经网络(Graph Neural Networks,GNN)的出现,很好地填补了将深度学习应用于关系数据建模的技术空白,实现了图数据与深度学习技术的有效结合,该项技术将成为未来 AI+ 的应用典范,并带来极高的产业价值。
前不久,OSCHINA 社区邀请到了 资深图神经网络技术专家、《深入浅出图神经网络:GNN 原理解析》一书的作者刘忠雨 做客「高手问答」栏目,与大家一同探讨图神经网络。
那么,该如何理解 GNN?如何对它进行建模?GNN 在风控等各个场景有着怎样的应用?其中又有哪些重难点呢?我们从刘忠雨老师与读者的互动中选取了部分问答内容,希望能够为大家带来一些启发。
GNN 在风控上的应用 ,风控的恶意人流分析,应该怎么做?有相应的框架吗?
刘忠雨:目前还没有专门的应用型框架可以直接使用,建议了解一下基本原理之后,使用 DGL 进行快速实验。
GNN 应用在风控上面的逻辑基于以下两个出发点:
- 风险的关联特性。黑产的资源实体(如账户、设备、卡号等)会存在各种关联,如共用设备、相互交易等,这是一种关系性风险。
- 风险的结构特性。高阶的黑产为了更好地隐蔽自己,弱化显性风险,其在业务数据上的表现形式往往会呈现出团伙模式,业务人员在逐一分析数据时,不会察觉其异常,只有将所有数据聚合到一起,通观全局才能发现其中的团伙结构,这种称之为结构性风险。
利用图,去找关联与结构化的社区,是最合适的。基于此,GNN 应用到风控领域将是一种趋势。
关于异常的登陆时间,如凌晨登陆数据异常;或同个 WiFi 下,有多个账号多个用户,怎么判断?怎么和人工智能结合起来?
刘忠雨:时序异常是另外一个关键视角,可以适当做一些特征工程。第二种情况,实际就是结构性风险的类型,可参这篇论文。
另外,可以结合一些实际的场景去体会 GNN 的应用细节,DGFraud 这个新开源的框架非常良心,总结了最近两年论文中一些基于 GNN 的风控算法,均有直接实现。
GNN 的主要的应用场景有哪些?我目前从事金融量化软件,在金融领域,除了上面所说的风控外,还有其他应用吗?
刘忠雨:GNN 擅长的是将多种存在关联的因素结合起来进行建模,然后进行推导预测。我这里随便想到一点,比如你做金融量化,是否可以将量化信号结合上板块或相关行业公司的相互关系进行联动建模? GNN 的应用场景非常广泛,比如用图作推荐、药研开发、交通网络流量预测等等,很多。
图在金融领域的应用非常广泛,比如银行业存在的应用场景:
- 利用交易网络去做交易反欺诈,薅羊毛等等;
- 零售营销中利用用户与产品的交互网络去做产品营销,客户肖像等。
另外在证券行业中,比较关心的是企业之间的信用网络,挖掘企业或者股东之间的投资、产业上下游等等关系,帮助梳理全局视角下的企业画像,可以为广大低端用户提供更加精准与智能的投资顾问服务。
相信在深耕这些业务场景的过程中,GNN 一定能够极大地提高相关产品服务的表现力。
想了解一下 GNN 在 3D 点云数据中的分析原理,以及对应的应用场景有哪些?
刘忠雨:在 3D 视觉中,一般流行的是 geometry learning ,GNN 只是其中的一种数据学习思路。我们知道点云数据具有很强的局部性,这种局部性反应的就是宏观世界中物体结构的先验特性,这样就可以将基于领域信息不断进行聚合学习的思路迁移到点云数据中。
由于 GNN 只是一种对点云数据的建模思路,因此上层可以对应各类应用场景,如点云的识别、分割,场景的识别等等。GNN 做点云,可以从 PointNet 相关的论文进行追踪。
关于 deep geometric learning,可以上这个网站,资料收集得非常全面。另外,作为 CV 当下研究的重要方向,3D 视觉的商业化应用应该会像之前的人脸识别一样快速到来。
GNN 在风控和推荐系统这些场景中,如何进行工程化落地?是依靠 TensorFlow,还是其他的一些深度学习框架来实现?
刘忠雨:工程向目前推荐使用 TensorFlow。目前 GNN 落地需要克服的主要问题在于分布式训练上,这一块需要投入一定的人力,进行定制开发。可以参考阿里新开源的 GraphLearn 框架。
请教一下,并行计算 GNN 都有哪些方法?
刘忠雨:GNN 并行目前主要在算法上面做文章,总体上分为采样和分区两种策略。
- 采样,分为两类,层采样(Layer Sampling),这种方法类似随机森林的思路,每次将大图采样成小图进行若干次迭代训练,代表如 FastGCN; 子图采样,典型的代表是 GraphSAGE,将每个节点的学习过程所涉及到的子图抽取出来,进行独立分批训练;
- 分区,即 Graph Partitioning,将大图运用算法分割成若干小图,然后进行分批训练,典型代表如 Cluster-GCN。
学习 GNN 的原理一定要细致到公式推导上吗?
刘忠雨:并不需要,如果仅仅是应用,你只需要知道图是如何构建的、GNN 的每层是如何计算的即可。
GNN 和传统的图数据库和 Spark GraphX 是否有结合应用的方式?
刘忠雨:GNN 处理的是图数据,数据的存储能放到图数据库里面是非常好的,比较方便我们做数据的基本分析。另外,结合 GraphX 可以对接上一些图计算的需求。所以,整个串起来的话,就成为了图数据的存储、分析、计算、建模一站式的图数据处理系统,当然这里面也需要进行一定的研发投入,主要是降低数据在不同组件中切换的序列化代价。
结合 GNN,您是否有其他开源的分布式图数据推荐?另外图数据这种存储,IO 吞吐量必然会比大数据存储要慢一些,不知道这方面有什么可以优化的思路呢?
刘忠雨:如果用 GNN 进行建模的话,主要面向的图数据是比较固定的,读多写少,而且讲究的是吞吐效率。基于此,我们改造底层图存储的话,要注意两点:
一是要回避数据库的事务特性,完全当成数仓的场景去开发是合适的,会减少很多开发工作量;
二是要注意图里面的关系存储跟属性存储可以分开设计,因为在实际场景中,属性查询跟关系查询的嵌套不会太多,分开设计的话,在主查关系的时候,IO 是有保障的。
请问图神经网络有什么酷炫而便捷的可视化手段?如何通过可视化图神经网络中的细节提升开发与调试效率?
刘忠雨:图的可视化能力最强,这一块有独特优势。对于图里节点属性与关系重要性的量化研究,GNNExplainer: Generating Explanations for Graph Neural Networks 这篇论文给出了一种可视化的方式。