大数据时代,如何充分利用起各种数据资源,通过大数据及 AI 的技术手段搭建起一套智能化的投资研究平台,成为广大金融资管机构的迫切需求。我们希望通过智能化的技术手段,简化投资研究的复杂度,帮助金融机构打造一站式的智能数据服务平台,实现数据驱动和降本增效。
智能投研系统是熵简科技在金融机构内部落地的主要场景之一。
本文将从以下几个方面进行展开:
投研数智化建设的重点和解决方案;
数据层:多源异构数据生产平台;
中台层:技术后端与业务前端的变速齿轮;
业务层:用于知识沉淀和量化分析的知识图谱;
总结。
投研数智化建设的重点和解决方案
1. 建设重点
投研是投资研究的缩写。我们需要运用各种各样的信息和工具,对于可能投资的标的进行详细的分析和研究,从而决定到底要不要进行投资。而传统投研以人为主要载体,进行信息的收集存储、加工流转和执行。因此,传统的投研流程是松散又高重复的,而且难以被继承。
那么什么是智能投研呢?智能投研以海量数据作为驱动力,通过采集研究标的的生产经营活动相关数据,在经过 NLP 的智能化处理技术后形成便于理解的数据指标,最后利用机器学习的建模分析,形成具有决策参考价值的投研情报。
资管机构在整个建设智能投研系统的过程中,最核心的需求就是平台化。具体来说,不管规模大小,一个资产管理公司都需要降低公司对于个体员工的依赖性,而提高公司作为一个大平台对于员工的赋能。
为了实现上面提到的几点,我们就必须要实现所谓的投研工业化,只有工业化的话才能够实现真正意义上的规模效应。那么如何实现工业化呢?我们就需要做到以下四点:
业务数据化;
数据资产化;
流程标准化;
I/O 最大化。
2. 解决方案
熵简科技围绕以上四点的方法论进行展开,设计解决方案。经过几年的探索后,熵简科技构建起一个完整的智能投研体系。整个产品的矩阵分为数据层、中台层和应用层。
在数据层,针对获取数据的核心任务,我们打造了一套将传统数据和另类数据相融合的数据生产平台,帮助客户以更低的成本触达更加丰富的研究素材。
在中台层,我们的核心任务是将多种来源多种类型的数据转变为投资可以直接使用的指标数据。针对这样的场景,我们首先利用 NLP 的处理系统将非结构化的文本数据转化为结构化的数据。在此基础上,熵简科技自主研发了一套低代码可视化的大数据 ETL 和科学建模引擎,可以将 NLP 结构化之后的数据以及其他的结构化的数据融合后进行统一的建模分析,进一步地将数据精炼为投资可以用的知识。
在应用层,核心任务就是将知识和事实转变为投资建议。我们提供了包括知识管理和过程管理的两大类产品。利用这其中代表性的产品——知识图谱系统,我们可以将上一阶段获取到的大量知识进行分析和推理,最终形成具有决策参考价值的投研情报。
总的来看,这三层系统可以构成一条从数据获取到数据处理,再到建模分析和逻辑推理的完整链条,实现一个完整的自动化工业化的、24 小时不停机的智能投研系统。
下图展示了整个智能投研平台对应的技术组件架构。从数据采集到数据存储、数据处理,再到数据应用,熵简科技提供了一套完整闭环的技术组件。
数据层:多源异构数据生产平台
金融竞争的本质来自于信息的不对称。因此但凡对于投资标的有一定参考价值的数据,我们都需要将其纳入进来。这就要求我们投研需要的数据是全域的,信息也要广泛而多样。针对这样的需求,熵简科技的数据生产平台就需要实现海量异构据源和数据类型的采集和监控,这包括研究资讯、宏观经济数据以及互联网公开数据等等。目前,整套系统已经监控了 2800 多个数据源,每天新增的数据量在 10TB 左右。
在整个数据生产平台中,最核心的任务就是构建一个可以兼容数千种不同数据类型且能每天处理 TB 级别新增数据量的大数据采集系统。在实际中我们主要面临三方面的技术挑战。
如何怎么做到海量数据和来源异构的数据的抓取?
如何在比较低的成本下,快速拓展新的数据?
在前面的基础上,如果同时抓取上千个数据源,如何保证数据的实时性和稳定性?
1. 海量数据和来源异构的数据的抓取
针对海量数据和来源异构的数据抓取问题,在整体上我们采用云原生的架构。整个系统以 Kafka 为消息中心,采用事件驱动模型,构建在高可用的 Kubernetes 集群之上。整个系统由四个大的功能模块构成,分别是用户控制台、数据采集引擎、数据存储服务和监控及日志服务。与此同时,我们将整个数据体系中涉及到的所有底层技术要素全部进行了封装。使用人员只需要通过简单的配置就可以实现整个数据采集任务,极大地简化了整个数据采集过程。
这里,云原生系统有两个重要的特点,微服务和容器化。
一方面,微服务主要体现在系统内的所有服务和组件都互相结合,独立部署,涵盖了从任务配置、任务调度、数据下载、数据解析到数据监控的完整过程。这种原子化的组件拆分使得我们的系统可以兼容多种异构的数据源。另一方面,整个系统采用的容器化方式使得我们能够利用容器编排引擎,具有快速动态扩容和缩容的能力,以应对海量数据的采集需求。
2. 低成本快速拓展新的数据
解决了海量异构的数据源问题之后,我们接下来看如何实现数据源的快速拓展。
针对这个问题,我们研发了一套智能化的网页抽取系统。这套信息抽取引擎能够自动地从网页当中抽取出特定区域特定含义的文本片段,比如说新闻正文和新闻标题。简单来说,对于这样一个系统,我们只需要给它一个网页网址,它就能够自动地识别出网页中哪些字段是标题,哪些是正文,哪些是日期,而不需要我们人工地去网页中进行配置。
那么这背后的原理是什么呢?根据 HTML 的知识,我们知道,每个网页其实可以等价为一棵树。网页上的文本、图片和超链接其实都是树上各个节点所携带的信息。因此,如果我们需要从原始网页提取出核心的片段或者字段,我们就可以在将不属于需要提取内容的节点删除后,根据节点在树上的位置,将节点中的信息序列化为一维的文本。
明确了这样的思路之后,我们的重点就是如何能够快速且高精度地将树上的节点删除。首先,我们需要解决的问题就是如何将网页的标签进行数字化的表示。受到 word2vec 思想的启发,我们团队提出了 Tag Embedding 算法模型,其中最关键的思想的话就是用当前的节点去预测父节点和子节点的 tag。
这个算法的好处非常明显,它可以在大规模的数据集上进行无监督的训练,可以学习出不同 tag 间的语义关系,而不依赖于人工标注。同时,它不仅可以显著提高后续模型的泛化能力,还可以降低后续的分类模型对于标注数据量的要求。
在有了前面 Tag embedding 背景的结果之后,我们提出了一个基于三层前馈网络的二分类器,用来判断一个节点到底应不应该保留下来。从下面的图中我们可以看到,输入特征包括三大类,前两类就是当前节点的父节点和子节点的标签信息。第三类特征是当前节点和兄弟节点的其他特征,比如说内部文本长度和超链接个数等。
接下来我们再以新闻资讯类的数据监控作为案例进行更加具体的介绍。我们的模型以十万个标注数据作为训练集,训练集的数据来自于 50 多个新闻咨询网站。之后多个网站的测试结果表明,标题准确率达到 97%,正文准确率达到 95%。这套方法不仅可以用于网页字段的判断,还可以推广到其他领域,例如网页类型判断。
但是实践的经验告诉我们,没有任何一个自动化的系统是完美的。我们的智能系统同样如此。但是我们可以将算法给出的结果作为参考,结合人类专家的辅助,让这套系统趋于完美。在这样设计理念下,我们在系统中提供了一套完善的专家辅助面板。这套面板提供了对于数据采集完整生命周期的管理。对于难以识别或者算法置信度低的网页,我们就可以通过这套辅助面板来完成这种高质量的数据采集。
3. 保证数据的实时性和稳定性
最后,为了保证整个系统高质量、高稳定性的采集和监控,我们在系统中也构建了一套完备的监控和报警体系。这套体系从三个层面对系统进行监控,包括基础设施层、组件层以及数据层。如果任何一层一旦被发现问题,这个体系都会第一时间地向运维人员报警,保证整个系统的稳定性。
实例
这样,有了上面这套自动化的采集系统之后,我们就能够以非常低的成本的方式实现快速的数据源拓展。下面举一个例子。通过这套系统,我们搭建了一套招投标大数据分析系统。这套系统可以实现 700 多个招投标网站中几千万份招标书的自动化监控。在这个基础之上的话,再结合后面 NLP 处理和建模分析,我们就可以帮助客户预测和跟踪 toB 行业的情况,实现对于标的公司发展状况以及竞争格局的分析。
中台层:技术后端与业务前端的变速齿轮
我们这里所说的数据中台,单单指面向资管场景业务的数据中台。这个数据中台具有以下两个大方面的价值:
提高数据管理和利用的效率,方便数据治理。
通过数据分层的方式,有效屏蔽原始数据的复杂度,为业务迭代提供更迅速的数据响应。
中台层最核心的两个组件分别是自然在语言处理(NLP)系统和数据融合引擎。我们首先来看自然语言处理系统。
1. 自然语言处理系统
根据相关研究,最近几年新增的数据当中有 80%都是非结构化的数据。在整个的投研场景里面,自然语言的处理任务丰富多样。下图列举了六大类的典型任务。
在刚刚提到的任务场景中,存在两个典型挑战。
第一个挑战是任务的庞杂和异构。这是因为投研场景面对的数据类型和数据源非常丰富;但是在实际的业务中,常常又需要我们针对新的需求,能够快速地提供解决方案。
第二个挑战是,我们经常会面临低资源的困境。这具体又体现在三个方面。首先,整个数据的收集成本很高,而因为很多问题跟具体的业务场景有关系,所以能够收集到的数据总量又非常有限。其次,整个数据的标注成本很高。对于金融领域的问题,数据的标注往往需要金融分析师的参与,这极大地增加了我们数据标注的成本。最后,整个机器的资源比较少。因为对于很多客户而言,由于合规和安全的考虑,需要将算法部署到他们的内网当中,这个时候机器资源就相对来说会很少,尤其是很少有 GPU 之类的资源。
接下来就看一下熵简科技针对这几个问题的具体解决方案。
针对任务庞杂的问题,我们就提出了分层次的 NLP 系统。自上而下一共分为三层,分别是应用层、组件层和语料层。应用层主要是直接对接业务逻辑,包括比如招投标文本分析系统、金融舆情监控等与业务场景直接关联的系统。在组件层中,我们提供自然语言处理中的常见的算法组件,比如智能分词等。语料层为上面两层提供用来训练和测试的语料。这里面既包括新闻资讯等等通用语料,也包括金融词典、研报等专用语料。通过这样的方式,我们就可以针对新的需求快速地搭建业务系统。
接下来我们以投研场景当中的一类典型任务作为案例,为大家介绍低资源场景下面对的挑战。
针对金融舆情的文本,我们按照中信一级行业进行分类。下图最下面给出了 3 条数据样点,分别对应 3 个不同的行业。我们可以看到这是一个典型的文本分类问题。根据经验,只要数据量足够,采用经典的 CNN 的就可以很好地解决这样的分类问题。但我们整体的数据量只有 1200 条,为了保证测试的精度,我们还将数据进行对半分开,最终分到训练集只有 600 条左右,而每个类别大概大约只有 20 条,这就是一个典型的小样本场景。
针对这个问题的话,我们首先就会想到采用迁移学习的思想。因此,我们提出了一个叫做行业记忆网络的方案,它与 CNN 构成一个混合的网络。简单来看,这个混合网络做了两件事情,首先它为输入文本当中的每一个词提供 industry 背景的嵌入。这样就可以在原有的词的基础上额外的提供行业的信息。其次,通过多层注意力的方式,可以将词的行业信息进行强化,从而更好地帮助模型进行行业分类。
下面这张图展示了我们构建 industry 背景的核心思想。其实主要就是通过一定方式,从外部海量的研报当中,将词的行业信息迁移到具体的任务当中。具体地,我们挑选了十万篇的研报,然后按照行业分成了 29 个数集。对于每个数据集,我们再训练一个 SVM 模型。最后我们再将每个词汇在 SVM 模型中的系数抽离出来,构成词汇的 industry embedding。下图右侧展示了降维之后的可视化效果。
下面展示了实验的结果。我们可以看到,行业记忆网络确实可以有效地降低模型对于数据量的需求。尤其在训练集比例只有 20%的小样本场景下,相对于 baseline 的话,它可以将模型 F1 值提升大概 50 个百分点。
虽然整个记忆网络的效果比较好,但是这个方案还是和具体的任务高度相关。因此我们需要针对一般性的任务,再考虑一些其他方法。因此,我们针对通用任务的小样本问题,提出了一套基于金融领域二次预训练的 FinBERT 解决框架。
首先,我们会用几千万的研报和财经新闻,对原生的 BERT 进行预训练,得到一个适用金融领域的 BERT 模型,我们称为 FinBERT。这之后,针对于具体的任务,我们还会进行一个两阶段的训练。在第一个阶段中,我们先用 FinBERT 再训练一个模型,然后用这个模型对任务相关的其他语料进行分类。这样就扩大了整个训练集。第二个阶段,我们在扩大后的训练集上进行模型二次训练。最后我们会反复地迭代这两个阶段。这是一套很通用的面向少语料场景的方案,效果还是不错的。
下图展示了实验的结果。我们可以得到两个结论。首先,从整体效果看,两阶段的 FinBERT 略微优于行业记忆网络;其次,我们可以看到,原生的 BERT 模型在原始数据集上(比例 100%)的效果与 baseline 的 TextCNN 相比,几乎没有提升,而两阶段的 FinBERT 能相对 baseline 提高 12 个百分点。
虽然两阶段的 FinBERT 有这么好的效果,但是这个方案依然存在一个严重的问题——预测效率比较低。因为这是很复杂的一个模型,它的训练速度只有 TextCNN 的 1/20,导致基本没法完成在线任务。这个问题我们留到最后再做简要介绍。
目前,我们基本介绍完了小样本场景的解决方案。接下来,我们来看看如何解决样本标注成本高的问题。
随着时间的积累,小样本场景下的任务数据总量也逐渐增加到一万多条,但依旧只有最初的 1200 条是经过人工标注的。那么,能不能在不引入额外人工标注的情况下,也能够把新增的这一万条数据有效地利用起来呢?这正是半监督学习的核心。这里我们引入了谷歌在去年提出的半监督学习框架 UDA。
下图给出了 UDA 的核心思想。对于有标签的数据,UDA 仍然是采用交叉熵的方式;对于无标签的数据,它就会通过一次性的数据增强来获取到学习信号。这个 UDA 框架本身不依赖于任何一个具体的模型的,因此我们可以将这个框架用在前面介绍的 FinBERT 模型上。
下图展示了进一步的实验结果。最后一行展示了 UDA+FinBERT 的实验结果。我们发现,半监督和 FinBERT 预训练模型融合后的系统可以有效地从新增的一万条无标签数据中进行学习。与 baseline 相比,即便只采用 20%的数据,它的模型表现也超过了 baseline 在整个数据集上的表现。
到目前为止,我们的方案似乎都是很好的。但如果我们将这个模型放到低资源的条件下,比如没有 GPU 的场景下,整个方案其实是无法实现的。针对于少机器的场景,熵简科技又提出了相对标准的蒸馏方案。整个方案具有相当的通用性,既可以用于文本分类,也可以用于序列标注。
下图左侧给出了整个模型的具体参数。我们看到,因为网络层数的减少,学生模型的 size 只有教师模型的 1/10,实际中的预测速度却达到了教师模型的 15 倍。这样我们就可以在只有 CPU 的机器上直接进行部署。下图右侧展示了实验结果,我们看到,虽然最后一行的模型相对于 UDA+两阶段训练的 FinBERT 确实存在一些准确率的降低,但在全数据集下的降低不到一个百分点,而整体的预测速度却提高了一个量级。因此,整体的模型压缩实现的性价比还是很不错的。
2. 数据中台引擎
介绍完 NLP 系统,我们接下来看数据融合引擎。
针对数据融合的需求,熵简科技自主研发了一套低代码可视化的大数据 ETL 和数据科学建模系统。它的核心目标就是帮助编程经验比较少甚至完全没有编程经验的用户,通过简单直观的方式,就能够实现大数据级别的数据清洗和分析任务。整个数据融合系统 Airwork 基于 SPARK 架构和 R、TensorFlow 等多个计算引擎,而且可以完全私有化部署在本地。
这一系统的技术细节可参考文章:
https://mp.weixin.qq.com/s/qWhZ3KdjHHbzj9kdICiuLw
实例
接下来我们以消费行业的应用列举一个案例。对于消费企业而言,比如零食品牌三只松鼠,其收入的很大一部分都来自于线上。因此对于覆盖消费行业的研究员而言,监控这些品牌的线上销售数据具有很高的投研价值。在数据层,我们通过采集、第三方采购或者合作的方式,获取到了电商网站全网 1.3 亿商品的高频数据。每个批次的数据量在 200G 左右。通过我们的系统,就可以从电商的原始数据开始构建各种数据分析模型,实现符合投研需求的个性化的数据聚合分析。
整个数据的处理过程可以分为四步,分别是数据输入、数据清洗、数据聚合和数据输出。
在数据输入中,我们需要将原始的大数据和代表各类映射关系的小数据同时导入。在数据清洗和数据聚合的步骤中,我们主要按照时间和品牌进行数据的聚合分析。整个过程并不复杂,用户可以很方便地实现这种大数据的处理。
最终,我们搭建起了如下所示的一个针对月度销量的计算模型,其中包含了七个不同的算子。如果我们明确了需求,整个过程可以在半个小时内完成。之后,我们就可以通过这套系统实现定时的自动化,将几百个 GB 的数据转化成销售额指标,再存到数据中心。
另外,我们还可以用这套系统搭建起其他个性化的数据聚合分析。例如,我们可以对商品属性进行分析,通过榜单对不同品牌间的竞争进行分析。这就相当于我们建立了一套高频且前瞻的线上财报,实现了对于目标公司的高频监控。
业务层:用于知识沉淀和量化分析的知识图谱
中台层往下就是我们的应用层,其中是各个业务部门接触到的应用系统。针对投研应用,整个应用层包含知识管理和流程管理两大类的应用体系,这里我们展开介绍下其中的代表系统——知识图谱系统。
1. 知识图谱系统
知识图谱平台的核心就是希望升级原有松散又难以被继承的投资研究方式,让我们的基本面研究量化起来。同时,知识图谱平台能同时依托数据和技术,用机器辅助投资,提升我们投资的效率和胜率。
在熵简科技看来,智能其实就等于数据加逻辑。在有了数据层的海量数据后,我们再结合专家的投研框架和逻辑,就可以将关于投资分析的基本面研究体系沉淀在知识图谱系统中。
这个系统目前主要有两大作用。首先,知识沉淀的系统可以实现投资分析框架的可视化,实现对于标的的全局分析和动态跟踪。其次,我们还可以将研究员的研究逻辑与方法沉淀为数字资产,实现内部的知识共享,实现平台化智能投研的目标。
另外,整个系统具有三大特色。首先,相对于传统的知识图谱,我们的知识图谱只会保留对于投资研究有价值的逻辑和信息,非常精简。其次,这里的知识图谱是存用一体的;最后,我们的图谱可以在专家图谱的基础上实现自动的生长。
除了知识沉淀之外,我们的知识图谱还能进行量化基本面的分析。系统提供了多种模型,可以建立图谱上多个影响因子和标的之间的量化关系,可以建立指标间的影响传导链。在此基础上,研究员就可以展开量化基本面的分析。
整个知识图谱主要又面临三方面的一个挑战:
AI 辅助的图谱的自动生长;
图谱动态数据的实时计算和更新。;
投研图谱的知识推理。
这里主要对第一点进行介绍。整个自动生长的解决方案大致可以分为四步。首先,我们以专家图谱的框架搭建初代的图谱;接下来,我们通过实体分类、实体对齐和属性对齐的方法,对节点进行标准化和对齐;然后,我们运用规则推理和表示学习这两种方式,完成新节点的生成;最后,专家再对节点进行二次确认,从而实现图谱不断的自动生长。
下面我们重点来看下表示学习的方案。第一步,我们需要对于知识图谱上的节点进行分布式表示。我们首先将节点的实体在金融类的海量文本语料上进行预训练,然后得到实体表示的空间。接下来,我们再构建一个目标函数,在数据集上训练得到一个转移矩阵。本质上其实我们是获取了实体的词向量空间到图谱表示空间的转移关系,最终实现少语料情境下节点的分布式表示。
在有了上面的基础之后,我们就可以进行图谱的自动生长。
2. 实例
最后介绍一下我们的图谱在 5G 行业分析上的应用。首先是数据,我们的图谱既包括了结构化的二级市场行业数据和财务数据等相关数据,也包括了 5G 产业舆情的非结构化数据。
有了数据之后,我们再利用结合专家的分析框架和知识图谱的自动生长技术,得到整个 5G 行业的知识图谱。这个图谱主要是从基础建设、物联网、5G 下游应用的投资机会以及基站建设等几个方面进行构建。在这个图谱当中,我们可以得到这种行业现状的分析以及受益于行业的下游产业和相应公司,最终发现一些不易被发现的投资机会。
在过去一年的时间里,熵简科技在数十家优质客户的支持下,迈出了图谱生态圈的第一步。在这个体系下,买方机构是研究成果的一个接收方和使用方,卖方机构的话是研究内容的输出方,而我们熵简科技则在其中做好基础设施的搭建工作,为我们的客户实现知识的结构化传输保驾护航。
总结
最后再做一个简单的总结。
针对智能投研在平台化和工业化的建设需求,我们提出了一套从数据层、中台层到业务层的端到端的整体解决方案。
在数据层,为了构建起全域的数据平台,我们打造了一套日处理 TB 级的大数据系统。
在中台层,针对于非结构化数据的处理,我们综合运用迁移学习、半监督学习和知识蒸馏等技术手段,构建了一套专门针对于低资源场景下的 NLP 方案。在这个基础上,为了实现多源异构数据的融合和建模分析,我们研发了一套低代码和可视化的大数据 ETL 和科学建模工具。这可以帮助不懂技术的业务人员实现海量数据的处理和分析。
在业务层,为了实现整个投研知识的沉淀和打造出每天自动复盘的投研机器助手,我们构建了一套具备自动生长能力的投研知识图谱系统,为量化基本面的研究提供了基础设施。
分享嘉宾:
李渔 博士
熵简科技 | 联合创始人
李渔,熵简科技联合创始人,博士毕业于清华大学电子工程系,以第一作者身份发表学术论文 10 余篇,申请专利 6 项,致力于将先进的自然语言处理及深度学习技术真正落地于金融资管领域,让科技赋能产业。目前负责熵简科技算法中台和知识中台的建设,包括层次化的分层架构、大数据泛采体系、持续部署的后台支持以及前沿算法的领域内落地等,为熵简科技的各大业务线提供底层技术支持和可落地的解决方案。
本文转载自:DataFunTalk(ID:dataFunTalk)
原文链接:熵简科技在投研数智化建设中的思考与实践
评论