写点什么

超越 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 的工作重点会继续放在图建模流水线的优化上,以加快业务产出的效率;另外也会把部分精力放在更高效的图的优化方法上,包括如何更快速地进行图算法模型的迭代等。

采访嘉宾介绍

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


2019-06-23 09:0010694
用户头像
蔡芳芳 InfoQ主编

发布了 797 篇内容, 共 535.8 次阅读, 收获喜欢 2777 次。

关注

评论

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

干掉 Postman?测试接口直接生成API文档,这个工具贼好用

程序员小富

Java 编程 程序员 开发工具 大学生

网络攻防学习笔记 Day76

穿过生命散发芬芳

网络攻防 7月日更

我可以减肥失败,但我的 Docker 镜像一定要瘦身成功!

尔达Erda

Docker 开源 云原生 镜像 瘦身

北鲲云超算与传统的超算中心有什么不同?

北鲲云

手写冒泡排序和选择排序算法

实力程序员

【大数据面试之对线面试官】MapReduce/HDFS/YARN面试题70连击

王知无

Vue进阶(幺陆贰):vue render函数介绍

No Silver Bullet

Vue 7月日更 render

阿里云低延时直播 RTS 能力升级 让直播推流效果更佳

阿里云视频云

阿里云 音视频 直播技术 视频云

科创人|决策易赵祝维:从满足应用需求到服务业务目标,从SaaS服务商到业务合作伙伴

科创人

ClickHouse大数据领域企业级应用实践和探索总结

王知无

数仓是如何与“夏令时”愉快的玩耍!

华为云开发者联盟

数仓 时区 GaussDB(DWS) 夏令时 夏令

电脑有什么超简单的录屏方法

淋雨

视频剪辑 Camtasia 录屏软件

10分钟理解REACT概念

加百利

React 7月日更

视觉生产技术入门篇

若尘

视觉 7月日更

Ubuntu Server 20.04搭建Redis集群

玏佾

redis redis集群 搭建 redis cluster

【Flutter 专题】85 Flutter Attach 调试 Flutter Code

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

从零开始学习3D可视化之3D界面

ThingJS数字孪生引擎

大前端 可视化 3D 3D可视化 数字孪生

【从零开始学爬虫】采集京东商品信息

前嗅大数据

大数据 爬虫 数据采集 采集商城 采集京东

了解一下缓存分类、更新、清理策略以及如何处理缓存带来的风险

Jokay

缓存 缓存穿透 缓存击穿 缓存雪崩 缓存设计

Vue进阶(幺肆拐):利用Vue中keep-alive快速实现页面缓存

No Silver Bullet

Vue 7月日更 keep-alive

邮件误删不用怕,试试这个方法帮你找回来

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

华为云GaussDB(for openGauss)推出重磅内核新特性

华为云开发者联盟

高可用 华为云 内核 GaussDB(for openGauss) 存储引擎

Redis on AEP 实践

BUG侦探

redis 傲腾AEP

爬虫入门到放弃02:如何解析网页获取数据

叫我阿柒啊

爬虫 CSS选择器 xpath lxml

ZooKeeper 分布式锁 Curator 源码 01:可重入锁

程序员小航

zookeeper 源码 分布式锁 curator

从Encoder-Decoder模型入手,探索语境偏移解决之道

华为云开发者联盟

神经网络 ASR 语境偏移 CLAS ASR模型

MapReduce的参数优化

大数据技术指南

7月日更

测试开发之系统篇-常用系统命令

禅道项目管理

测试 命令 测试开发

MySql 通过定义变量更新多表

Flychen

事件Event:带你体验鸿蒙轻内核中一对多、多对多任务同步

华为云开发者联盟

鸿蒙 任务 OpenHarmony 事件 LiteOS-M

深度解析HashMap底层实现架构

华为云开发者联盟

Java hashmap 底层 底层架构 Map接口

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