写点什么

超越 TensorFlow!未来我们需要基于图的全新计算模式

  • 2019-06-23
  • 本文字数:5051 字

    阅读完需:约 17 分钟

超越TensorFlow!未来我们需要基于图的全新计算模式

图神经网络是当前 AI 领域最为火爆的研究热点之一,学术界与工业界各大公司纷纷投入大量资源研究。它在因果推理上拥有巨大潜力,有望解决深度学习无法处理的关系推理、可解释性等一系列问题,而这些问题被业界认为是能够推动 AI 出现实质性进展的关键。目前图神经网络尚处于发展早期,虽然研究成果和论文频出,但真正在业界落地并对外分享的案例仍然偏少。为了更好地了解图神经网络在实际业务落地中可能遇到的挑战和解决方案,InfoQ 采访了极验 Geetest 的算法负责人刘忠雨,对 GCN 的落地场景和实际效果、图计算框架和模型的选型经验、算法落地部署的难点等话题进行逐一探讨。


“图数据本身非常复杂,深度学习数据样本之间可以随意切割,但图数据不行,因为节点之间存在关联。深度学习时代,我们通常基于 TensorFlow 框架,将数据 Tensor 放到一个计算图里在显卡中做计算。未来,我们的计算模式可能是完全基于一张图,通过节点之间的信息传递与聚合这样一个视角去组织新的计算模式。那可能就称之为 GraphFlow,而不是 TensorFlow 了。”

GCN 天然适合关联模式识别

极验 Geetest 深耕交互安全领域,业务方向包括行为验证、身份认证、风控等。这些业务场景无一不需要收集大量用户行为数据或异常数据,从中挖掘出异常行为的模式,进而提供实时拦截、标记和风险控制。而这正是图神经网络擅长处理的:挖掘海量数据之间的关联模式。


极验在 2014 左右开始使用机器学习和深度学习解决行为验证过程中的人机判别问题,主要是利用 CNN 对用户行为轨迹数据进行自动学习和建模。在这个过程中,研发团队逐渐发现了隐藏其中的数据风险关联模式。黑产在进行攻击的时候,往往是调用某些打码平台的 API 接口或者不断复用自己构建的一套破解代码,这都导致黑产的数据之间存在一些或明或暗的关联模式,风险的传递性很强。最初,研发团队只能通过手工规则来定义这些关联模式,但这种规则定义方式过于简单,很容易被黑产绕过。


后来极验开始使用图聚类的方法挖掘异常,比如最早的社群检测,再到后来的高密子图等算法。这些算法是无监督算法,优点是不需要人工添加标签,但灵活性比较差。如果数据有了更多信息,或有更好的标签质量,这些信息很难融合到原来的算法模型中。如此一来,信息融合和关系建模成为了突破的关键。


2017 年,图神经网络研究开始在业界崭露头角,也进入了极验研发团队的视线。图蕴含了大量多元化信息,能够建立起更全的数据维度,进而比较全面地识别黑产数据。极验从 2018 年开始引入 GCN(图卷积神经网络),利用 GCN 技术实现防御模型升级,进而提升数据挖掘与安全分析的能力。


对于极验来说,GCN 是一套行之有效且拥有巨大潜力的建模方法,只要场景中存在数据和标签,就可以尝试用 GCN 学习其中的模式。以极验深知这款产品为例,GCN 主要用来提升其人机判别能力。极验拥有大量的行为数据户,包括用户操作行为的序列数据、IP 及设备的关联数据等,这些数据涵盖了几乎所有行业的用户,数据之间存在或明或暗的关联性。借助 GCN,研发团队可以对这些海量数据进行集成建模,达到更好的模式识别效果。从模型的 AOC 指标和稳定性指标这两个考察维度来看,相比原来的模型,引入 GCN 之后的算法模型在这两个维度上分别有 1.2-1.5 倍的提升,不论从最终效果还是模型鲁棒性来说都十分有益。据介绍,即使将网络中的节点属性特征全部抹去,只提取节点之间的关联特征,当前的模型依然能够得到非常好的效果。这些都离不开 GCN 模型强大的关系建模能力和极验海量数据的支持。

GCN 落地实践经验

GCN 落地应用难在哪?

从考虑引入 GCN 到真正落地,极验用了一年多的时间,到现在为止,相关计算模型已经经过了两次大版本的迭代。对于 GCN 落地实际业务过程中遇到的问题,刘忠雨总结为三个方面:


  1. 如何解决大规模图的训练问题。比如 GraphSage 通过图采样操作把大图切分成很多小图再进行训练,并且这个操作一定是要有 online 的效率保障,这样才能使 GPU 的计算资源不会被 CPU 上的数据采样操作所拖累,因此如何保证图采样操作的高效性是至关重要的。而现在的图数据库对这类图采样算子并没有原生的支持。

  2. GCN 模型怎么做实时预测。我们的业务场景不同于推荐营销,数据的表征可以定时更新,然后把数据推到业务线去做实时的推荐;在风控领域,一般我们需要不断地去判断每一次新的业务事件是否带有风险,这需要我们把模型推到业务线上去做实时的预测。图神经网络是一个协同式的训练与预测过程,需要把数据累计到一定量之后再进行预测,这是 GCN 的优势所在,但同时也大大提升了模型实时预测的难度。如何在线上预测输出接下来的数据的表现,需要对算法模型本身做一些改造工作,并且配套大量工程化的工作。

  3. 图数据建模 Pipleline 的各个环节设计。其中最为核心的是图数据的预处理和图模式(Schema)的设计。图模式反映的是对于业务问题的理解,需要基于数据本身的路径和上层业务建模的特性来设计图的模式。刘忠雨认为,图数据预处理和图模式设计比后面的算法模型更重要,做好前两项对于算法模型的效果提升大有裨益。


因此,从算法落地层面考虑,极验花费了很大精力解决包括图采样效率、实时数据预测、图数据建模流水线、图数据预处理等问题。


针对大规模图的分布式训练问题,极验重点完成了图采样操作所需要的存储层重构工作,数据库选用了非常成熟的 HBase 将数据组织管理起来,同时在索引上做了大量的开发,尽量保证图上相近的数据在一个数据分片上,同时优化了数据的遍历性能。这一套配合下来,基本满足了团队对大规模图数据的分布式训练要求。


同时团队也在稳步推进基于 Graph Partitioning 的数据存储方案,这样不仅能更进一步地提高模型的训练效率,同时也能将分布式训练拓展到超大规模(如百亿边量级以上)的图数据上。这一套方案的开源也在计划中,等方案打磨得更加稳定成熟后,极验希望提供给工业界一套扎实可用的图数据分布式训练方案。


另外,极验针对数据建模的整体流程,如数据导入、数据预处理、图模式设计、模型配置与训练、模型评估等环节,开发了一套 Web 平台来辅助高效便捷的建模工作。磨刀不误砍柴工,事实证明,这是一本万利的工程性投资,加快了模型调研的同时,也大大降低了模型的后期维护成本。

图计算框架选择

图神经网络当前已经有不少专门的框架,比如亚马逊的 DGL、阿里的 Euler、基于 PyTorch 的 PyG,同时主流的深度学习框架也会支持图神经网络和图计算。但在 2017 年极验开始调研图神经网络的时候,还没有这么多开源框架可供选择,为了解决前面提到的三个落地问题,极验自己开发了一个内部的图计算引擎,做了一些图数据存储底层组件的定制化开发和优化工作,上层再与 TensorFlow 做整合。


在刘忠雨看来,图神经网络计算框架是未来深度学习计算框架一个新的主流,因此今年以来各类框架层出不穷。对于目前市面上主流的几个图神经网络计算框架,刘忠雨认为各个框架都有自己的鲜明的特点。比如,基于 PyTorch 的 PyG 非常适合用于学术研究,其内部已经汇聚了很多任务模型的实现。如果图数据规模比较小,用户希望做一些学术研究或开发新算法,DGL 也非常合适,它提供了一个非常通用的图神经网络的编程模式,并且最新的 0.3 版本也对性能做了比较大的优化。刘忠雨认为 DGL 未来的开发方向会朝着学术和工业两条线并行发展。阿里开源的 Euler 定位更加精准,就是如何在一个工业级别的大图上高效地训练算法。

算法模型选择

当前图神经网络已经有非常多的算法模型,包括大量变体,比较出名的有 GraphSage、Graph Attention Network、RGCNN,在这之上还有一个比较通用的 GNN 编程模式叫做 message passing 机制,稍微改造一下就可以适配属性图的学习,而属性图可以代表最广泛的图数据格式。这些功能基本上已经能够覆盖极验实际业务中非常多的场景。因此,对于模型选择,刘忠雨认为一个 Message Passing 方法就够了,其他变体算法其实没有什么本质上的区别。真正在实际业务落地中,重心应该放在数据本身和业务特点上,根据特定的业务数据和相关任务进行落地模型的考量。变体虽多,但在实际业务中使用的可能性或者性价比比较低,比如 Graph Attention Network 对于显卡计算负载过大,相比较而言,给业务带来的收益却并不明显。

模型更新问题

图蕴含的数据量往往特别大,全量更新的成本比较高,但是新产生的数据(如用户行为数据)时效性更强,价值也更大,那么如何做好 GNN 模型更新的工作?刘忠雨认为可以分三个层面来做。


首先可以直接用 GNN 模型去预测,现在的图模型大多是支持 inductive learning 的,基本可以直接对新数据进行预测,这本身就是在衡量模型算法的泛化能力。其次,如果数据变化比较快或者新出现的数据比较多,模型需要快速跟进并适配这些数据,就可以采用一些小技巧。比如将变化比较大的节点以及部分采样出来的就数据结合到一起,对这部分数据进行模型的 FineTune,从而做到模型的快速更新。第三步,还是需要选择一个适应业务指标需求建模的窗口数据来进行模型的训练,从而得到更好的校正效果。总体来说,极验的思路就是上述三个步骤的循环,优先保证模型本身的泛化性,再通过对新数据的微调来补充模型的快速响应能力。

GCN 未来展望

图神经网络在工业界尚未成为现象级技术

刘忠雨告诉 InfoQ,目前图神经网络在工业界并没有成为现象级的技术,但在大公司已有尝试,比如阿里将图神经网络用在了搜索排序和欺诈用户检测,国外的图片社交网站 Pinterest 发布了第一篇大规模图神经网络落地应用的论文等。虽然整体来看图神经网络的落地应用尚处于早期,还没有大范围推广开,但刘忠雨非常看好图神经网络的落地前景。图神经网络天然适用于大规模业务数据挖掘的需求,而前一波深度学习浪潮积累下来的软硬件设施也为图神经网络的落地打下了基础。


首先,很多公司的业务数据本身就存在大量的关系模式,关系建模可以帮助解决很多业务问题,典型场景比如反欺诈、营销推荐等,这给 GNN 的发展奠定了很好的数据与业务的基础。其次,很多企业已经在这波 AI 浪潮中搭建了自己的建模团队和机器集群,GNN 和 CNN、RNN 是一脉相承的,都是深度学习在新领域的推进,这又给 GNN 的发展奠定了很好的技术基础。基于这两点,刘忠雨认为 GNN 后续的研发和应用都会十分迅速,2 年之内应该就能真正落地


图神经网络的典型应用场景主要包括以下 5 类:


  1. 反欺诈。通过 GNN 对数据进行更深层的挖掘,识别恶意用户的模式,从而进行风险控制。

  2. 营销推荐。原来我们可能只是关注用户与商品之间的交互矩阵,但其实用户可能与商品还有更多层次的交互,比如用户与商家、商品跟商品之间的交互,而且用户与商品本身也有很多属性信息。这些信息以及前面提到的交互性的关联信息怎么做端到端的学习?图神经网络就提供了对应的解决方案,这可能是未来推荐系统非常普适的一个方向。

  3. 推理。推理现在可以说是学术界研究 GNN 非常火的一个方向,它指的是把信息或概念融合之后得到推断。很多信息和概念之间是存在一定关联的,因此可以协同考虑,这一过程与 GNN 的计算模式不谋而合。常见的应用包括视觉问答、视觉推理、语义图等。

  4. 3D 视觉。前几年业界主要使用 CNN 来解决 2D 图形的分割检测等问题,而现在 CVPR 接收论文有相当大的一部分都在做 3D 视觉,比如 3D 点云识别分割等,其中有大量工作都是基于图神经网络的思想。

  5. 学术场景,如生物的蛋白质活性检测、RNA 分类、物理领域的研究等。

图神经网络落地的瓶颈

刘忠雨告诉 InfoQ,图神经网络本身是一个产学研结合非常紧密的方向,但当前还存在几大瓶颈问题待解决。


首先是算法的可扩展性。虽然以采样操作为核心的 GraphSage 算法可以适应数十亿边规模的图,但它不是最优的解决方案。未来业界还需要考虑更高效的针对图建模的通用优化算法,这对于 GCN 在工业界全面落地能够提供非常大的帮助。目前来看,学术界已经逐渐有一些关注图学习优化的论文出来,这在未来会成为一个比较重要的学术研究方向。


另一个瓶颈是 GCN 的过平滑问题。目前图神经网络不能设计成特别深的层,否则节点的表达就趋于一致了,导致这个问题的一个主要原因就是过平滑,这个问题现在也已经有了一些解决方向。(注:参考论文 https://arxiv.org/abs/1806.03536https://arxiv.org/abs/1810.05997


未来极验在 GCN 的工作重点会继续放在图建模流水线的优化上,以加快业务产出的效率;另外也会把部分精力放在更高效的图的优化方法上,包括如何更快速地进行图算法模型的迭代等。

采访嘉宾介绍

刘忠雨,毕业于华中科技大学,极验算法负责人。负责极验各项目的算法研究以及技术路线制定,在图神经网络方面有比较深入的研究。


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2019-06-23 09:0010599
用户头像
蔡芳芳 InfoQ主编

发布了 780 篇内容, 共 493.0 次阅读, 收获喜欢 2748 次。

关注

评论

发布
暂无评论
发现更多内容

Java之String重点解析,成功定级腾讯T3-2

Java 程序员 后端

Java基础16 集合(ArrayList、LinkedList,linux操作系统教程电子版

Java 程序员 后端

Java学到什么程度才算精通?,springmvc原理图解

Java 程序员 后端

Java中高级核心知识全面解析——常用框架(Spring常用注解

Java 程序员 后端

Java到Kotlin入门,这一篇就够啦,java开发岗高频面试题全解析祖国的花朵

Java 程序员 后端

Java基础22 网络编程(HTTP和UDP),java基础入门课后编程题答案

Java 程序员 后端

java入门基础三(执行语句),Java多线程面试题大全含答案

Java 程序员 后端

Java学习笔记——String,java程序开发实战教程在线

Java 程序员 后端

Java实现文件切割拼接,MongoDB数据分布不均的解决方案

Java 程序员 后端

linux中删除特殊文件

入门小站

Linux

Java安全之反序列化回显与内存码,java面试个人规划

Java 程序员 后端

Java中高级核心知识全面解析——系统设计(RestFul-API[概念

Java 程序员 后端

Java匹马行天下之一顿操作猛如虎,框架作用知多少?,HTTPS面试常问全解析

Java 程序员 后端

Java各种锁详情,java中间件技术及其应用开发

Java 程序员 后端

Java学习笔记——内部类,linux底层架构

Java 程序员 后端

Java基础 - 正则,Math,Random,零基础学java电子书

Java 程序员 后端

Java基础面试题——IO流,Netty时间轮调度算法原理分析

Java 程序员 后端

Java中高级核心知识全面解析——常用框架(Spring中都用到了那些设计模式-)

Java 程序员 后端

Java基础15 Java常用类,深入剖析

Java 程序员 后端

Java多态实现原理,java同步锁原理

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day20,从java后端到全栈百度云

Java 程序员 后端

Java常用类使用总结,linuxshell教程

Java 程序员 后端

Java并发系列终结篇:彻底搞懂Java线程池的工作原理(1)

Java 程序员 后端

JAVA多线程和并发基础面试问答,吊打面试官你也可以,看完这一篇你就懂了

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day14,mybatis常见面试题

Java 程序员 后端

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day34,rabbitmq集群同步原理

Java 程序员 后端

Java并发原理抽丝剥茧,读写锁ReadWriteLock实现深入剖析

Java 程序员 后端

Java中高级核心知识全面解析——JVM,java全套视频教程

Java 程序员 后端

java使用poi操作world生成饼图,柱状图,折线图,java微服务架构训练营

Java 程序员 后端

Java基础 - 单列集合,ArrayList,Vector,从零开始学springboot百度网盘

Java 程序员 后端

Java基础面试题——IO流(1),mysql数据库开发面试

Java 程序员 后端

超越TensorFlow!未来我们需要基于图的全新计算模式_AI&大模型_蔡芳芳_InfoQ精选文章