摘要:开源开放的数字世界开始成为时代的潮流,云原生、数据中台、智能PRA开始成为数字世界中的新一代中流砥柱。随着第四范式的普遍流行,各个行业中的数字化转型都会带了海量的具有无限关联的复杂图数据。本报告将以教育与开源两个场景为例,说明其背后的具有普适性规律的数据网络这一统一模型,并通过实际案例来说明这些数据网络的构建及其上层的典型应用,进而归纳出当下复杂图数据场景中的若干关键挑战,呼吁更多的专家学者们加入到这个前沿的研究领域中来。
本文为数据学院学术沙龙第8期的主题演讲,主题为:走向复杂图数据科学时代。
一、开篇:走向复杂图数据科学时代
观察数字化时代下各种复杂信息系统得到的大数据,直接反映的往往是一个个孤立的数据和分散的链接,但这些反映相互关系的链接整合起来就是一张图或网络。例如,基因数据构成基因网络,万维网数据反映出社会网络,GitHub开发者行为数据则反映了社会代码协作网络。数据的共性、网络的整体特征隐藏在数据网络中,往往以复杂关联的数据网络这样一种独特的形式存在,因此要理解这些图数据就要对其后面的复杂数据网络进行深入分析,催生出复杂图数据科学这一新兴研究领域。随着图数据的越来越普遍,数据科学所面临的科学问题本质上可能就是图数据网络科学问题,复杂图数据分析应该是数据科学的重要基石。
很高兴能够作为本次学术沙龙的主讲人为大家分享我们实验室最近正在思考和实践的一些关键问题。我们实验室长期从事教育和开源两个方面的研究工作,正好借此机会进行一下梳理。从这两个研究领域出发,我们大致凝练了一个能够同时支撑这两个方向的底层模型,复杂图数据是一个共性的对象。我们先通过几个实际的例子来看看,究竟会有些什么样的实际图数据问题。
Wuhan2020 开源项目最近开始被大家反复提及起来,一个重要的原因是大家看到了开放式协作的魅力所在。这已经超越技术,成为一个社会学问题了,而且我们也确实吸引到了不同学科的人一起来看这个例子。
整个 Wuhan2020 开放式协作过程中,开源代码协作只是其中的一环,发生在 GitHub 协作平台上,除此之外,整个协作社区还利用到了石墨文档、Slack、微信、Zoom 等各种数字化工具,形成了一个数字化协作链条。右边的图是我们根据 GitHub 上的协作数据所绘制出来的一个可视化图,从中可以非常明显的看到几个核心志愿者所处的位置,这个开发者协作网络就是一个典型的图数据网络。
再来看看教育领域,大家都知道“水杉在线”是我们正在构建的一个针对全民计算机科学教育(CS4All)的数字化在线学习平台。一个非常重要的理念就是希望打通整个教和学的全链路,做到全流程的线上教学。这件事情我们在疫情期间体会的非常深刻,后疫情时代的在线教学一定会成为一个非常重要的趋势,特别是在计算机教育领域,尤为如此。
“水杉在线”平台的设计哲学是开放式教育平台的模式,不仅仅是指业务层面的开放共享,技术层面的开源可控,还有一个很重要的关键点就是平台本身的开放性设计,即开放 API 生态的设计法则。这在很多大的互联网公司体现的非常好,特别是国外的,像 GitHub、StackOverflow 等平台为什么深受大家欢迎,这是个重要的原因。“水杉在线”通过开放 API 的形式将各个主要模块集成起来,这不仅仅有利于内部系统的协同、行为数据的采集,更重要的是和外部开放系统的协同,比如说第三方的视频服务、容器服务、认证服务、安全服务等等,这在当下这个开放的数字化时代非常重要。
这样,我们的数字化原住民学生所面对的就是这样一个数字化学习空间,一言一行都是有机会被记录下来,加上数字化的学习资源,就可以形成不同形态的交互网络,学生和学习资源之间、学习资源和学习资源之间、学生和学生以及教师之间,知识图谱、协作学习网络等就慢慢诞生了。
从计算机专业领域来看,开源协作开始变得越来越重要,工业界的需求巨大,高校也开始将这类技能融合到课程中。以 GitHub 为典型的协作平台上面越来越多的吸引着开发者、教师、学生将各种资源加入到里面,而这些协作行为的背后,同样构建出巨大复杂的数据网络,这个图里面能够有很好的说明,这种从复杂数据中构建出来的大图能够有着非常多的用途,让我们洞悉背后的本质规律。
大家可以看看这幅图,是我们实验室赵生宇同学最近绘制出的一副非常有意思的开源全景图,用他的话说“可以盯着看一天”。仅就这个视角看,就可以看出不少有意思的地方,左边是以Kubernetes为代表的云原生生态,右边是以 TypeScript & Node.js 为代表的 Web 前端生态,上面是以 TensorFlow & Pytorch 为代表的人工智能生态,下面是以 Azure & .Net 为代表的微软技术生态,而中间就是大家所广为熟悉的 VSCode 生态,足以看到 VSCode 在构建生态上的强大之处。而当你点击方大这幅图的时候,还会看到更多的一些景观,限于时间的关系,我们这里就不详细说了。
二、复杂图数据科学
接下来开始进入正题,为什么都是图?这个应该是能够上升到哲学高度的。
根据我从文献中的阅读和日常的观察,世界发展的本质在于相互交互,进而产生各种复杂现象、涌现与演化。物理实体之间的交互、人类与自然的交互、人类之间的交互、人与虚拟空间之间的交互等,使得人类社会发展出来各种机制与系统:科学、民主、政府、国际组织、市场、互联网等。
就像著名实验心理学家、认知心理学家和科普作家 Steven Pinker 在《当下的启蒙》中所指出的那样,这些机制与系统都是来自于人类自生理性驱动的进步,理性是不容商榷的,人类一定会在协作中获得演化进步。
而数字化技术的发展大大推动了这个进程,特别是数据技术,使得我们今天有机会通过数据的方式记录这些复杂系统与现象,进而洞察背后的发展原理。
我们可以利用已有的数学语言,结合海量的数据记录,来刻画、分析与推演这些复杂现象与系统,图论、数据科学、系统论等,是自然容易想到的方法。如何将这些方法结合起来解决实际的问题,甚至发展新的方法,是一个巨大的挑战。因此,一个新兴的研究领域已然出现:图数据科学。
大规模图数据网络在各个研究领域都开始大量的出现,一方面是的得益于数字化技术与手段的迅速发展,另一方面也是得益于各个领域的规模化,随着全球化、跨国公司、国际组织、互联网平台等的出现,使得很多科学家、工程师和商业人士能够有机会面对全人类尺度上的复杂系统,这给我们的各种活动带来了巨大的机会。
我这里做了一个简单的总结,图数据科学的研究可以从多种角度来看:
节点与边的多样性带来的是异质信息网络的研究;
复杂网络研究学派关注的是网络及其结构的整体统计特性;
知识图谱研究的是图的语义结构与节点的语义关系;
时空图关注的是图数据的时空演变特征;
从数据管理的角度看,图数据库突破关系型数据库迅速发展;
从图数据分析的角度看,各种图神经网络、图嵌入技术迅速蹿红;
图数据的可视化技术也成为可视化研究领域关注的焦点。
关于图的基本概念大家应该都比较熟悉了,而对实际问题的建模则往往需要更加复杂的图模型,例如右图里面就有一个异构图的示例,我们往往需要在这类图上做各种传统图上的问题:节点分类、链路预测、社区发现、图分类等等。
接下来我们从几个不同的视角再来看看图数据。
首先是系统视角,左边是图数据库在数据管理方面所处的位置,可以看到,在一个NoSQL的世界,图数据库是一个最复杂;而右边的图则显示了图数据的发展历史,我们可以看到,如果说 Web 2.0 时代的大规模数据涌现代表是 UGC,那么在 Web 3.0 下,GGG 则是将图数据的连接度与规模化推向了极致,这个数字化的发展是高度一致的,但内在的复杂性则远远没有引起人们的重视。
关于什么是图数据库,这里就没有时间详细说明了,大家可以直接从维基百科上面找到非常丰富的学习资料,这也是有着一定发展历史的研究领域,和关系型数据库类似,图数据库的研究成果非常丰富,也出现了为数众多的商业化产品。
这幅图中就展示了目前图数据库领域中的主流产品,而且也是有不同的细分领域的,像操作型图数据库、分析型图数据库、知识图、多模态图、实时图等。
这个是从著名的 db-engines 网站上截的,左边是目前整个业界图数据库领域流行度的排名情况,排在第一的是著名的 Neo4j,右边则是部分图数据库软件的评测对比。可以看到,这个领域还处在一个非常多变的形态,各种复杂需求的出现,也推动着新产品的不断涌现。
从查询语言的角度看也是如此,不像 SQL 那样统一了关系型数据库领域,图数据库上的查询语言(GQL)目前还是处于一个相互竞争的局面,每个产品都有自己倾向的查询语言。
而图数据上的分析技术就更加热闹了,特别是以图机器学习为代表的技术,发展迅速,一方面是因为图数据的规模性和复杂性,非常适合机器学习的分析范式,另外一个就是在深度学习的启发下,特别是神经网络技术,大量的新技术层出不穷,像图神经网络、图嵌入、图卷积网络、图注意力网络、图自编码器、图生成网络、图时空网络等等,虽然这些技术并不完全是一个层面的,但或多或少都是受图模式启发或和图模型关联的技术方法,必将持续走热。
从大量文献和著作的涌现也是可以看到这个趋势的,大家可以有空找来看看,还是非常有趣的,我们实验室现在每周三晚上就有一个“复杂信息网络与图机器学习”的讨论班(SIG.Graph),同学们相互地进行这方面的授课,有兴趣的可以一起来参加。
最后再来从工程的角度说一下,也是我最想说的一部分。因为我们目前实验室碰到的大多数问题实际上都还是工程上的,并且也愈发的觉得工程对实际应用与科研上的牵引作用。图数据科学与工程一定会有非常高的复杂度,这是现实问题本身的复杂性所决定的,如果能够在工程上迭代出合适的方法与套路,那一定是会非常有价值的。我们可以从其它方向中不断得到启发,包括软件工程、数据科学与工程、复杂网络等领域。
例如,DataOps 就是受目前比较流行的 DevOps 所启发的,复杂软件工程已经在 DevOps 的持续推动下取得了较大成功,今天各个大型的互联网软件都开始通过云原生与 DevOps 这样的技术进行的迭代与运营。图数据科学与工程也一样,需要基础设施的支撑与持续的工程迭代方法,甚至面临的环境更加复杂,数据与领域知识的耦合往往会使得问题更加复杂化,需要更多不同的角色专家来共同协作。例如右图,敏捷方法、DevOps 持续工程、统计过程控制等技术都开始应用到数据分析领域。
一个完整的 DataOps 过程也是由很多不同的流程所组成,涉及到人、工具、环境、数据等多方面因素影响,背后的供应商也是非常之多,而全流程的自动化与智能化能力也在不断提高,这些也都是大量需求所驱动的。
三、实例分析
最后,我们再来通过一个实际的例子来说明图数据科学上的科学研究与工程应用,“GitHub 全域数字年报”项目也是我们实验室目前正在重点开展的一个项目。
先说一下背景,GitHub 就是我们前面所说的 Giant Global Graph (GGG) 典型代表,目前是全球最大的代码托管与协作平台,将近 5000 万的开发者,以及数以亿计的仓库项目。
相对于 GitHub 上的代码数据本身,我们更关心的是开发者的行为大数据。从 GitHub 上的事件日志数据中可以观察到行为数据的复杂性,不仅仅是数量的庞大、增长迅速,其事件的类型也大大增加了分析任务的难度。
GitHub 行为大数据的复杂性来自于 Git 代码协作本身,我们知道 Git 协作是目前代码协作的事实标准,还是有非常高的专业程度,需要一个开发者进行大量的训练和实践才能熟练掌握,而基于 Git 协作的GitHub上的行为就更多了,把这些所有协作行为记录下来,就是协作行为大数据了。
这幅图是 GitHub 上行为数据的 49 种事件类型,具有一定的复杂度,而我们目前主要针对的是其中常见的 14 种行为。
这些为数众多的协作行为实际上构成了一个异质信息网络(Heterogeneous information network)模型,无论是节点类型还是边的类型,都具有一定的复杂程度。
关于异质信息网络的知识可以参考我们这个报告最后的一些参考文献,也是目前学术界的一个热点研究方向。
我们目前已经做的一个工作就是利用异质信息网络给 GitHub 上的行为数据进行了建模,然后开展一些全域的分析型工作。例如,在这副图中,我们就利用相关的协作经验知识,对 GitHub 行为异质信息网络进行降维,这样就可以得到传统的同质信息网络,就可以利用像 PageRank 这样的分析算法来做一些典型的分析任务,例如排序全网做活跃的 GitHub 开源项目。
这个是另一个将一个基于 commit 记录的同质合作网络构建的二部图,转化成一个开发者协作关系网络的示例,然后分析可以看到最大联通分量占全图的 86.3%,这是我们做分析的研究人员所非常乐于看到的。
上面举的只是两个小的示例,从数据工程的角度看,一个复杂异质信息网络可以从不同的视角分离出各种具备某一特定关系网数据网络,而每一个这种数据网络都是大规模的复杂网络,在上面可以开展各种数据分析的任务。这也直接导致了其背后科学问题的浮现,进而推动这个领域的理论发展。
有了某一视角的协作关系图(例如项目关系图),在上面就可以利用数据分析开展应用研究。例如,这个就是将排名算法应用到不同技术领域中的结果,我们可以分析出云计算、大数据、人工智能等各个细分领域的项目活跃度排名。
更进一步,我们可以利用开源社区的运营与治理经验,分析出更多的量化指标,进而构建出更加全面的大屏应用,活跃度、关注度、Issue / PR 指标、协作关系网、社区参与人、开发者活跃度等等。
我们还做了些好玩的事情,例如我们生成了一个由 GitHub 上最活跃的 10 万个项目的关键字组成的词云,一眼就可以看出现在开源世界里的一些流行元素。另外,我们还仿照 Apache 基金会下面的一个开源项目贡献时间分布可视化图,实现了生成任意一个项目的工作时间可视化分布图,从中大家可以观察到项目的贡献者行为属性。例如,某一个项目的主要的开发者是来自哪个时区,背后的含义为美国、欧洲还是亚洲主导的开源项目;或者从周末贡献度的特征分布,可以看出一个项目是由公司主导,还是社区主导。
这个是我们和微软联合作完成的一个开源项目的知识图谱示例,得益于微软的一个开源知识图谱工具,我们将 Apache 基金会下的 19 个来自中国项目协作知识网络进行了可视化,从中也可以看到很多有意思的现象。
在前面开源世界全景图(基于项目关系)的基础上,赵生宇同学还利用 ForceAtlas 2 工具构建了一个由 2.5 万个 repos 所组成的带边界限制的球形可视化图,可以形象的将其称之为:Open Galaxy,非常的有意思,下一步可以构建更大规模的、具备更强交互能力的、甚至三维的可视化模型。
总结一下,复杂图数据在科学与工程上的挑战都非常大,图数据的获取与采集、图数据的分析与管理、图数据的计算与可视化,都有着非常多非常好的研究点,欢迎大家共同来探索这一新兴领域。
最后再给大家几个网址入口,是我们基于 GitHub 行为大数据的开源年报项目,项目本身也是开源你的,欢迎大家参与!
这是部分相关参考文献,欢迎阅读。