专访明略数据技术合伙人孟嘉:SCOPA 架构升级下的实践与优化

  • 孟嘉

2016 年 11 月 22 日

话题:大数据语言 & 开发架构AI

随着“数据爆炸”时代的来临,数据挖掘成为一项重点工作,针对海量,混杂的大数据而非少量、随机化、样本化的精准数据,其关键是找到并建立不同数据间的相关性,并对其进行模式分析。

数据挖掘在明略数据构建的数据生态中处于极其重要的一环,为最大程度发掘数据中所隐含的关系、知识和规律,明略数据成立了科学家团队,不断打磨在人工智能、深度学习等领域的经验,同时它也组建了自己的 GPU 集群,以发挥其天生的计算优势,加快对深度学习平台的训练速度。在一些深度学习最新算法应用上,明略数据也具有较为领先的创新。

为更好的了解明略技术背后的原理和机制,我们专访了明略数据技术合伙人孟嘉,跟他聊聊数据关联分析产品 SCOPA 的技术应用、架构演进及其对知识图谱和图数据库相关技术的一些思考。

SCOPA2.0 架构演进背后的技术突破

今年,明略对 SCOPA 2.0 做了一次大规模的架构升级,目的是拓展 SCOPA 的平台化战略。具体内容包括三方面。

一是为向平台化方向发展,开放了 API 和插件体系。这样,SCOPA 项目团队成员以及合作伙伴都可以基于 SCOPA 快速开发和部署新的应用或功能。

二是在数据存储方面,把存储层抽取成一个独立的数据库,或者说,开发了一个面向知识图谱存储的独立 NoSQL 产品。SCOPA 底层存储的是一张巨大的知识网络(知识图谱),这样的独立数据库可为二次开发的人员提供独立使用并调试的可能,同时还可让开发过程直接以插件的形式接入到 SCOPA 的整体平台中。

三是在数据整合方面,SCOPA 2.0 已统一对非结构化数据和结构化数据的视图描述规范,提升了知识构建到存储的效率。之前明略数据的很多任务都是靠人工或者是半自动化的形式处理,这就好比是由几百甚至上千个离线任务组成的复杂的系统,互不相干的任务并不能并发执行。例如,在进行知识抽取的过程中只有先抽取实体,才能抽取到实体之间的关系。这样,面对任务多、串行时间太长等问题,SCOPA 2.0 加入基于 DAG 的任务调度系统,轻量级任务调度系统可以把抽取实体关系执行条件组织成一张有向无环图(DAG),将离线和在线任务紧密结合在一起,同时还支持一部分任务重试、错误的监控,从而能极大提升 SCOPA 后端的整体效率。

知识图谱中的数据噪声清除及知识推理构建

知识图谱由节点和边构成,提供了从“关系”角度分析问题的能力。在 SCOPA 中,知识图谱是关系挖掘的载体,它将数据抽象成实体、关系和事件,利用包括属性图(Property Graph)在内的混合结构组织数据,点代表实体,边代表关系,再把各个实体通过带有属性的关系联系起来。

但同时,知识图谱中还存在着对关系挖掘最终结果形成影响的数据噪声。其出现原因在于数据错误、数据缺失,或大量的数据冲突和数据冗余。处理错误数据最简单的办法是在数据治理的过程中做离线的规则过滤。例如,对于结构化数据的冲突,可以在治理过程中设置治理规则和增加数据优先级的概念,而对于非结构化数据,可采用自然语言处理中的实体消歧分析技术。另外,在 SCOPA 中,数据支持溯源与多版本,机器暂时无法处理的噪声会在用户分析的时候留给用户进行判断。 

 

此外,在清除数据噪声之外,关系挖掘还有一项重要能力是发现已有结果中可能隐含的新知识,即利用算法完成对知识的推理。知识推理以知识图谱的构建为基础,SCOPA 的目标是通过数据挖掘,机器学习等方法,让机器学会人类的推理过程,使用户从海量而繁琐的业务数据中解脱出来,比如公安领域的团伙自动发现,重大事件预警都有知识推理的过程。另外,知识推理还可以用于发现实体间新的关系的预测与发现。

图数据库的优势及选型策略

大数据时代,包括文本、图片、视音频等都是未经过处理的非结构化数据。为更好地挖掘非结构化数据中有价值的成分,SCOPA 对结构化和非结构化数据进行了统一的元数据描述,也称为视图,视图是链接其各个模块的桥梁。SCOPA 在结构化数据和非结构化数据上使用了不同的分析处理方法:在关系挖掘使用的技术上,结构化数据主要运用了基于规则和机器学习的方法,非结构化数据运用了大量的自然语言处理方面的算法,而基于图的算法被同时应用到治理后的结构化与非机构化数据。

目前,基于图的数据模型比较常用的有两种,一种是 RDF(Resource Description Framework),一种是 Property Graph 属性图。RDF 是 W3C 标准,目前用作研究较多,市场表现比较平淡,优势在于数据交换。而属性图是从工程实践中总结出来的,得到了市场的认可,越来越多的企业和项目采用基于属性图的图数据库产品。

因为 SCOPA 是用图的形式来存储点边关系,因此会采用分布式图数据库。图数据库在多层关系挖掘分析方面比传统关系型数据库有着明显的优势。传统关系型数据库是按照表的结构来保存数据的,在查找数据间关系时往往需要对表之间做 join 操作。当需要 join 多个表,且每个表的数据量都很大时,这种关系查找就会变得很吃力。而图数据库更加符合现实世界对数据的描述。特别是处理关系数据,进行关系推演等的时候就有着天生的优势。例如,在查询命令执行上,一旦查询度数过多,关系型数据库可能就没法满足查询需求。而图数据库因为采取了邻接表的方式存储,随着查询深度的增加,它的代价是线性的,所以图数据库天生就适合这类的关系推演。

SCOPA 在进行图数据库选型时,主要考虑的是其与大数据平台的整合度、功能集与易用程度、性能等方面的因素。基于此,SCOPA 使用了分布式图数据库 Apache Titan,Apache Titan 在实现 Apache Tinkerpop 图协议的接口,使用 Gremlin 查询语言上具有很大优势,为存储和处理大规模图做了大量优化。

此外,源码级别的掌控能力也是图数据库选型时需重要考虑的因素。为使图数据库的代码和操作流程更接近于自然语言机制,SCOPA 研发团队又在 Titan 的基础上进行了多处优化,包括处理并发读取实体,超级节点的优化等。

人工智能 = 机器学习 + 大数据

从研究生阶段专注的应用服务器分布式集群方向,到后来工作过程中不断接触高并发、高吞吐的网络应用,再到近几年参与多个实际落地的大数据项目。孟嘉经历过无数次的试错和复盘,在他看来,架构师既要见多识广,从整体提掌握、了解系统全局,又要深入到关键细节,思考如何突破系统的瓶颈。此外,他认为架构师也需要对业务具有深层次了解,尤其作为 To B 系统架构师,需要不断接触最终用户,理解需求。

为更好的把握数据挖掘技术接下来的突围点,孟嘉也提出了他对国内数据挖掘发展方向的预测——“人工智能 = 机器学习 + 大数据”。从目前的使用趋势看,人工智能已在更多领域得到广泛应用,在很多事情上也将会慢慢取代人力。因此,一方面,数据量不断增大为机器学习提供了更多的训练样本,另一方面数据的特征维度的不断变大也使越来越多的数据可以参与到训练学习中并发挥其价值。

大数据语言 & 开发架构AI