主讲人:灵智优诺CTO 许可

屈鑫 颜萌 整理编辑

量子位 出品 | 公众号 QbitAI

作为人工智能和语言学的重要分支,自然语言处理(NLP)的相关研究一直充满魅力与挑战。

8月2日(上周三),量子位邀请到灵智优诺的CTO许可,他以“怎样为智能投顾打造一个对话系统”为题,分享了NLP在保险智能投顾中的应用和相关技术问题。

这次分享逻辑严密,全程干货满满,不少读者在后台留言希望回看。为了方便大家学习交流,量子位将分享内容编辑整理如下:

智能投顾实现方式(如何为智能投顾打造对话系统)(1)

欢迎参与量子位和灵智优诺共同举办的线上分享活动,今天分享的主题是怎样为智能投顾打造对话系统。

我大致会从三个方面来讲,一是智能投顾的起源,主要的参与者和他们涉及到的业务和技术,二是我们在证券方面的智能投顾的尝试,三是我们在保险智能投顾方面做的尝试和产出。

智能投顾实现方式(如何为智能投顾打造对话系统)(2)

智能投顾的兴起

智能投顾实现方式(如何为智能投顾打造对话系统)(3)

传统的投资顾问分两种,一种是在用户端,需要通过一系列细致深入的访谈来了解用户的风险偏好,这是一个很漫长的过程。第二种连接产品端,根据不同用户的风险偏好和资产状况来定制资产配置的组合。

所谓智能投顾就是用智能化的技术来代替或者部分代替这种投资顾问的角色。

智能投顾实现方式(如何为智能投顾打造对话系统)(4)

当时证投兴起的时候面临这样一个市场环境。经过20年的价格战,券商佣金率已经接近运营成本,并且由于金融危机的影响,所有的金融市场的交易量都有明显的下跌。

金融市场的参与者都想提升自己的收益,而个人投资者已经转向机构的投资代理服务,会去采用像ETF这样的投资方式对个人资产进行打理。在这样的情况下,所有的金融机构都有动力去扩大自己的市场的覆盖范围和市场份额。

智能投顾实现方式(如何为智能投顾打造对话系统)(5)

扩大市场份额的必然选择如这张图所说。

整个美国各阶层家庭的可投资资产分布大概是这样:头部10%的家庭大概占据了80%的资产,尾部90%的家庭只占20%的资产。传统的券商和资管的业务主要覆盖头部人群,因为他们的边际成本是一样的,但边际收益头部会明显更高。

这样的情况下,要覆盖90%的家庭就需要一个降低边际成本的方式。而这个方式就是技术,所以早期智能投顾的公司都是通过技术的手段降低边际成本,扩大获客的范围。

智能投顾实现方式(如何为智能投顾打造对话系统)(6)

早期的公司类型如图所示。资产从投资者到个股市场,可能有不同的途径。下面我将分别详述。

信息集成商:如sigfig,把所有的投资账户整合到一起。比如说个人的投资账户有做股票、期货和其他衍生品,而它会把所有的账户打通,然后集成到一起。所以技术在里面起的作用并不大,但仍然获得了一个很好的市场反响。

经纪商:如charles,通过技术手段来生成个性化的投资分析报告。通过结构化的财报数据和生成文章的模板来生成投资报告,再把投资报告卖给个人用户。他们也获得了一定的市场份额。

社会化投资:如motif,找一些投资很厉害的高手,把他们的投资组合推荐给其他普通投资者。所以在他们的技术里面最核心的是关联推荐。推荐准不准确,能不能被其他受众所接受,就是他们需要解决的核心问题。

个性化的基金指数:如wisdomtree,相对比较有技术含量。比如说传统的资产配置指数可能是通过市场市值来进行复权,而他们可能会采取通过例如股息率复权的方式来生成新的基金指数产品。

新的这种产品的收益率可能会远远高于传统的ETF指数基金。他们花的绝大部分精力都是在做指数量化,也取得了很好的收益和市场份额。

自动化的资管:如wealthfront,对传统的不是很有钱的美国家庭,一般投资顾问不会帮他们做资产配置,那他们就可以去wealthfront这样的网站上注册,输入个人信息,他们会帮你做一个风险偏好的分析,根据风险偏好分析性和个人信息自动生成一份投资组合让你去投。

这就相当于把传统投资顾问的工作线上化,实现了用技术的模型做服务。后来跟进的公司也采取了相同的技术手段和方案,都获得了较好的市场反响。

智能投顾实现方式(如何为智能投顾打造对话系统)(7)

总结:这时期的智能投顾主要是通过单一算法管理投资组合的在线站点,他们的主要目标其实是为了降低准入门槛和边际成本。

在这种情况下,他们能提供的服务就会包括简单的一些投资收益的投资组合,或者是做一些再平衡和税收统划这样的服务,把这些简单功能通过技术实现线上化。

智能投顾在证券领域的尝试

在国内做智能投顾探索的时候,做的第一件事情就是证券领域智能投顾的尝试。

智能投顾实现方式(如何为智能投顾打造对话系统)(8)

首先来看看中美市场的对比。美国从1999年,个人投资交易占60%以上,到2014年的时候这个占比已经降到了16%以下。

所以美国可以说已经完成了从散户市到机构市的转变,而中国的话,从财报中能看出来,2013年和2014年散户的交易达到40%甚至有变多的趋势,所以中国仍然还是散户市场,散户行为会主导整个市场。

在这种情况下,我们就需要思考如何服务好散户,或者说如何利用散户的行为

智能投顾实现方式(如何为智能投顾打造对话系统)(9)

所以把问题大致拆分成三个方向,首先需要解决散户信息不对称的问题,而解决这个问题一定需要知识图谱做支撑。

其次是做舆情挖掘,因为散户在市场上占主导,而且散户是有舆情驱动的因素在里面的,所以如果我们能预测散户舆情,我们也就能够预测市场的走向。

那么在有了知识图谱和舆情挖掘的基础上,就可以去生成一个量化指数,这个量化指数可以产生新的资产配置组合,那么预期就可以得到比较好的收益。这就是大概问题的一个拆解。

在这个问题的拆解下,首先要知道我们能获取怎样的数据。我们通过获取数据的结构化程度,和获取的一些难度,把他们分成两个维度。

智能投顾实现方式(如何为智能投顾打造对话系统)(10)

最基本的是交易数据和财务数据,他们具有很好的结构化并且很容易得到;再就是一些公告、文档和调研报告;再上一层是一些新闻、事件、热点和社交网络的一些输出;再上一层就是一些网络舆情、搜索日志和零散信息;更上一层是消费者与供应链。

我们所能看到的是,最容易获取的肯定是交易数据和财务数据,我们现在努力一点能达到的就是网络舆情这一层,想再更上一层的话,在当前的阶段比较难实现,所以我们可以先暂时不关注这一部分数据。基于这样一个认知我们搭建出来的一个知识图谱大概是这样。

智能投顾实现方式(如何为智能投顾打造对话系统)(11)

其中包括一部分外部采购,外部采购就包括像财报等一些有很好的处理和结构化的数据。另外一部分是实体关系,实体关系需要我们从网络上去挖掘和获取例如:公司的关系,行业的关系,不同的股票之间的关系。

还有一些最基本的股票的实体,比如股票的属性,名称和交易量价的基础数据和基本信息。另外一部分是对于新闻资讯的数据,这是非结构化的数据,其中可能会反应一些热点和舆情。右边是在左边数据基础上的一个再挖掘。

比如舆情的话,我们可以从搜索和UGC数据里面挖掘。另外一部分是热度和热点数据,这些可以从日志和资讯里面挖掘。然后概念数据是通过实体抽取行为拿到的,最后是用户行为的统计的数据。这些都会对整个舆情的系统构成影响。

这里面的“挖掘”的思路就是传统的知识图谱挖掘会用到的,包括像模板和一些基本的NLP实体抽取的技术。最重要的其实是工程化和优化的问题。

在这个基础上我们可以去看看怎么去生成日志舆情。

智能投顾实现方式(如何为智能投顾打造对话系统)(12)

基本思路就是我们从搜索日志中可以找到和证券实体相关的搜索词,通过搜索词的状态构建一个正负舆情打分的模型,在这个基础上对证券的收益进行拟合。

对日志的大量数据的整体拟合可以得到一个舆情总分。所以基本过程是:最开始去挖掘股票实体和概念实体,通过搜索日志对舆情进行打分,拿到分数后做一个线性拟合,从而得到整个实体的舆情打分。

而获取舆情打分有很多不同的方法。

传统方法是通过关键词规则化,也可以在规则化的基础上做一个简单的机器学习,这就转化成一个简单的二分类的机器学习的问题。当我们攒够足够的语料样本后就可以进行打分。过程的持续优化可以得到一个比较好的对某个实体的整个舆情的打分。

而这个打分里,实时性是一个比较重要的问题,会影响到整个舆情指数在实际量化应用中的效果。所以这些参数都是需要进行调整和实验。

智能投顾实现方式(如何为智能投顾打造对话系统)(13)

那么如何在舆情指数模型的基础上去拟合多因子,也就是如何生成投资组合。首先是怎么选择量化模型。量化模型有很多,包括高频的,低频的,中频的,还有很多不同思路的。如果想应用这些舆情指数,最好的方式其实是采用中低频的模型。

因为应用高频模型的话我们的数据达不到实时性要求,而且在国内环境里面没法进行高频的交易。所以做量化能够选择的模型其实不多,普通的选择就是这样一个多因子的模型。

大家如果想去了解可以去看一本书叫《主动投资组合管理》,里面对多因子模型的量化做了很详尽的解答。

这里面主要是拟合各个因子的权重,也就是这样的权重如何反映到投资组合之上。模型中对量化因子进行拟合后可以得到一个投资组合,用这个投资组合去和沪深300比较的话大概是下图右边这样一个曲线。

智能投顾实现方式(如何为智能投顾打造对话系统)(14)

从2012年到2015年的回测的量化的话可以得到一个远高于它的收益水平。从数据来看,最大回撤只有3%左右,周胜率和月胜率都是非常高的一个数值。有一个重要的指标叫信息比率,做到了三点多。

这是一个什么样的概念呢?在美国这样一个成熟市场,传统的多因子的量化模型做得好的话可能有一个接近1的水平,因此这已经是一个远超于平均水平的收益了。

另外一个指标是和传统因子的差异性。差异越大,说明指标越能够提供额外的信息,有额外的价值。

我们和易方达这样的公司合作,去和他们原有的因子做对比,相关性从-0.01到0.21之间,这是一个相对较低的一个相关性的指标,所以整个舆情指标的价值还是比较突出的。

我们结合舆情指数和其他三个因子的情况下去构成基金,对像易方达这样的基金会有10%左右的这样的一个收益的提升。整个产出是很不错的。

智能投顾实现方式(如何为智能投顾打造对话系统)(15)

关于舆情指数的其他的应用我们还做了一些这样的尝试。

第一个是机器读研报的尝试,这个是类似机器读法律文档这样的应用。从一篇复杂的报告中提取出一些核心的描述,把这些句子抽取出来提供给分析人员去看。

这里面涉及到的技术也比较多和杂,比如说像实体识别,句对抽取,数据清洗。

这项技术我们也卖到了一个很好的价格。还有一个应用是整体的数据的结构化,比如研报的。其他的比如UGC和新闻的数据的结构化,拿到一些时事热点或公司治理的一些情况,行业相关地位,管理层股东的风险,这样一些结构化数据,这个做好可以产生很大的价值。

智能投顾在保险领域的探索

下面我们看看智能投顾在保险领域的探索。我们先看看保险领域有哪些问题需要去解决。

智能投顾实现方式(如何为智能投顾打造对话系统)(16)

第一是用户选择难,用户无法选择,对条款陷阱无防备或后续服务脱节,我们采取条款解读,结构化呈现和服务集成来解决。第二是对条款陷阱无防备。第三就是出险后保险购买和后续服务脱节。

另外传统的保险由销售人员去沟通,可能存在销售知识匮乏,可能以推销为目的,会导致明显的误导,而且人员的流动性很大。

这里我们会有这样一些解决方案,其中最核心的就是智能对话技术,在这里面集成标准话术,解决对话不标准的问题。

考虑到专用知识的回答,就必须集成知识图谱。进行这样的问题分解我们就能知道我们大概要做什么。

下面就是我们从种子用户中收集到的问题。我们可以看见这项问题是很复杂的,涉及到很多深度的知识,在传统的sequencemodel是很难解决的,不论是在中间增加一些attention的技术手段还是用生成式对抗网络去学习都很难得到比较好的结果。

智能投顾实现方式(如何为智能投顾打造对话系统)(17)

智能投顾实现方式(如何为智能投顾打造对话系统)(18)

那么这样的问题是否可解?是否能做工业应用?这项是很多做智能问答的公司都要面临的。

在这一个垂直领域的限定环境下,问答的句式和内容是相对的有限的,说出第n个词的时候,后面接第n 1的词的选择空间远小于泛领域的情况,所以在这里所需要的训练语料比较小,这样至少能迈出第一步。

因为原始语义空间相对小,所以在使用同样大小的语义向量进行描述的时候损失的语义信息会更小,因此生成的回答可能会相对更接近期望语义。

如果只做单一领域,我们可以跳过意图识别这一层,并且所有模型系统可以只对单一领域进行深度优化。

这些都是使问题简化的一些思路。但最重要的是必须结合知识图谱,必须要预先知道一些问题的答案,才可能使回答集合满足真正的问题的需求。

智能投顾实现方式(如何为智能投顾打造对话系统)(19)

我们来看看这种问题的解决路径。

必须首先做知识图谱的挖掘。在这个基础上做语料的产生和收集,然后我们需要搭建一个对话的框架和对话模型。最后是需要把知识库的对接支撑到这个对话模型里。

智能投顾实现方式(如何为智能投顾打造对话系统)(20)

对于保险领域知识图谱的构成,这里面包含产品,地域,人群等这样几个大的方面。每个方向深入下去还有很多分支。比如产品扩展开还涉及到费率、险种、计划、标签、不同的疾病的关联关系。疾病的话可能会设计到成因,部位,发病率等等。

构建这样一个关系图谱最关键的是要保证准确率。如果只是去做一个舆情的挖掘,来判断到底是一个正向舆情还是负向舆情,这只是概率性的,中间可以有一些不准,但只要整体是有效的就行。然而做问答的时候,错误是不可接受的。所以如何去保证准确率是一个很核心的问题。

基于这样的考虑我们构建了这样一个挖掘框架。

智能投顾实现方式(如何为智能投顾打造对话系统)(21)

先在一个广泛的数据集的基础上做数据清洗和主题过滤,把清洗过后的数据进入语料平台,生成问答数据库和实体数据库,对这两个数据库做抽样轮流和迭代优化,必须在当中加入一个人工的监督的过程,来提升整体的效果和准确率。

还需要存储一个图关系,因为所有的存储并不是一个扁平的KV存储,还涉及到实体之间复杂的关系,可能是包含,可能是关联,也可能更复杂,所以就需要把图关系存储下来。

我们再来说智能对话框架

智能投顾实现方式(如何为智能投顾打造对话系统)(22)

用户从提问进来,最基本的就是预处理,包括切词和词的指代关系分析。为什么会有一个多服务调度呢?

因为最后我们的对话触发不是一个简单的deep learning的sequence model的触发方式,而是一个多层触发。因为单纯的sequence model的触发是很难达到准确率的要求,就需要其他方式去补充,尤其是检索和模板有很大的作用,语义索引主要起到一个扩大召回的作用。

这样我们就可以尽量去平衡召回率和准确率。使得整个系统的效果达到一个相对可用的状态。拿到多个模型和系统产生的结果后,就可以在结果基础上做一个结果的reranking,找出最适合当前对话的结果。

这里要解决的问题就是什么东西和用户的提问关联度是最高的,会涉及到很多feature,包括字面匹配度,语义的匹配度和其他模型给出的置信度,这些都会用到结果里面。最后对结果进行整合数据库的后处理。

在这样一个复杂的系统处理后我们仍然不能保证准确率是足够高。至少要达到90%以上才能直接去面对c端客户。在这样的情况下,在过程中可能需要集成一个人工审核和处理的过程。

这样的一个系统才是工业可用的系统,我们日常见到的对话系统比如说像siri,小冰。他们基本都是通过sequence2sequence的模型end 2 end来做的,能够解决的是短句的回答。但当遇到包含知识的一些精准问答的时候,就需要更工程化的架构来处理问题。

智能投顾实现方式(如何为智能投顾打造对话系统)(23)

刚刚说到了主动引导的问题。我们通常见到的智能客服都是解决售后问题的,它的过程是解决用户遇到的问题,所以它只需要一个对话问答的系统。

而我们要做的是一套售前的客服支持系统,尤其是一个重决策的售前支持系统,需要有一个引导,需要发现用户的需求,采集用户的信息,在这个基础上再去完成对话或推荐,需要融入主动引导,而不是等用户的问题出来了再被动的触发。主动引导就需要解决几个核心的问题

  1. 当前我应该说什么。我们需要识别用户所处的场景,场景触发的因素是什么

  2. 客服主动发起一个对话的时候,触发机制是什么。这个触发机制会形成一整套的模板引擎。

  3. 在这个基础上再说怎么生成和拼接语料。

在这样一个对话场景下才能去做售前客服。这些就是当前要解决的主要问题之一。

说一个模型语料的选择的问题,一套对话其实是有不同的对话的场景的。最开始可能是寒暄,然后就是问答,客服在采集信息。接下来可能就是客服已经推荐产品了,用户有很多问题提问,这样一个问答场景。最后可能就是下单交易,做一些流程介绍。

在不同的场景下,对话模式和语料可能是完全不同的。基于这样的认知,在做模型训练的时候。可先做一个对话场景的识别,并在不同的场景选择不同的模型,这是我们目前在做的核心优化之一。

当一个纯粹的端到端的模型很难达到高准确率的时候,就可用尝试把模型细化,把要解决的问题集缩小,变简单,然后再去做模型组合。这是工业上解决复杂问题比较常用的一个手段。

另外怎么去尽量促成用户下单和购买,涉及到问题是:在对话的工程中怎么去找到推荐的时间节点和一些说话的方式,这也是在模型里面需要不断去优化和解决的问题。

比如,最后成单和没有成单两批用户,他们的语料和模型上会不会有差别,这里面可不可以把他们分割开放到不同的模型里面去做训练,这个也是比较有意思的话题。

最后一个问题,我们在单纯的模板触发上,能不能做一些更深入的模型的整合,比如能不能把sequence model直接整合到模型检索里面去,这样的思路是我们目前正在探索和尝试解决的思路。

Q&A

1. 知识图谱怎么搭建?

知识图谱的搭建其实是一个苦力活的过程。我们通常会先定出一个结构,在结构的基础上思考信息怎么去获取。我们从网站上抓取语料后再从中抽取实体。

抽取实体的方式有很多,常用的是基于模板,模板可以人工配置或自动生成。还有一些垂直网站本身做了比较好的结构化,可以直接使用。比较重要的三个问题是:你需要什么样的数据,这些数据在什么地方有,用什么手段去得到。

购买,提取或自己采集数据,可能一个数据全网都没有,只能自己去生成,这个过程很可能是人工的,另外也可能是通过其他的方式把别的领域的数据转化过来。

整个过程是相对比较综合的。其中还有一些其他的苦力活,比如说数据的清洗,模板的配置和生成,这些都会影响最后知识图谱的效果。

2. 模板是指算法还是人工?

一个模板引擎本身是算法,通常是一个语法树的解析算法。但最终模板的生成可能是一个半人工的过程。初始模板一定是人来制定的,然后做模板的挖掘迭代,通过初始的模板去挖掘语料,反馈到另一批语料中寻找是否有类似的模板。

这个是在NLP领域比较常用的模板挖掘方式。模板挖掘出来后还有大量像模板的过滤这样人工的工作。可以说这是一个人工和算法相结合的过程。

3. 盈利模式是什么样子的?

证券的盈利模式有两种:一是生成指数基金,和基金公司合作或者自己去发基金然后收取管理费用;二是卖服务或数据。读取研报数据并进行售卖,这个是一个to B的盈利模式。

智能投顾的盈利模式和证券不同,它类似卖保险的盈利模式,也就是在保险的推荐达成之后交易佣金的收取。更深一层去解析这种盈利模式的话就是边际成本的降低,也就是通过技术降低整个销售人员的成本,可以带来规模效应。

4. 多因子指数模型的数据源是什么?

最大的数据源是百度是搜索数据,这个表达了用户当前在关注什么,可以得到正负向的舆情。但并不是唯一的数据来源。还有就是UGC数据,用户生成数据。

比如微博,论坛等UGC网站发出来的数据,表达了和搜索日志同样的数据,关注哪些方面,有什么看法。分开训练会得到一个近似的结果,结合起来可以得到更好的结果。

5. 每天数据量大概是多少?

每天的抓取量大概几十万,但随着迭代会变少。新生成的对话的数据量会比抓取的数据量少。

6. 股票知识图谱数据来自不同行业的网站,如何打通在一起?

主要通过实体和实体关系打通,比如来自不同的网站,但描述的是同一只股票或同一个公司,可以实现数据的整合。用户行为也是找到实体关系的重要依据。

7. 怎么解决歧义性?

通常很难解决,尤其在单独面对一个实体的时候。通常的语义消歧都是通过结合上下文来做的,sequence model也是这样一个思路。一个词可以生成一个语义向量,这个语义向量上有语义分布。

词的序列就能对这种语义分布进行叠加,从而使一个词在不同的语境下有不同的语义分布表达,从而达到消歧的作用。

8. 怎么解决原始信息的冗余冲突?

这个主要是在数据清洗阶段解决。最重要的就是聚类整合。原始信息的冗余冲突可能涉及两个方向,第一个是在知识图谱的挖掘里面。当出现一个实体,它在不同的场景有不同的属性,有些属性对应或融合,做同义词近义词的挖掘来进行整合。

第二个是在对话里面,一般是通过简单的聚类来处理。两个句对用词的相似度程度如何。接下来需要考虑怎么去判断相似问答中哪一种说法更好。最简单的是先通过人工过滤,或看客服在使用过程中是怎么样回答的,或者根据用户的反馈判断。

9. 网络新词可以自动发现吗?

这是一个在NLP领域很常见的问题,但在证券或保险里这个问题主要体现在热点上,也就是新的热点和新词爆发时能不能被找到。

但我们限定了范围后就会发现是可解的,因为新词出现的范围是相对固定的,比如出现在新闻标题里,搜索的核心关键词里,所以可以通过词频聚合或简单的pattern的手段去发现新词。

10. 实体机构全称简称可以自动归一化处理吗?

不是能够完全自动化的,仍然需要人机结合。这里的处理有几种方法。第一类是同位语挖掘,在不同的句子中出现在同一个地方,我们可以认为是有关联的。第二类是模板挖掘。第三类是制定规则。但所有的解决方案目前都是半人工的,要融合到算法里面去。

11. 刚刚所说的是不是一个马尔可夫链?

在关联挖掘里面,马尔可夫链是一个重要的模型。特别是在实体挖掘的时候会经常使用马尔可夫链,但并不是所有领域都能用到。

12. 大概支持多少种算法,机器学习算法比重如何?

主要模型就是四个。sequence model的算法比重目前不超过20%,很多深度问答的对话暂时不是由sequence model触发的。但希望这个比重可以随着模型的优化不断提升。

13. 第一轮对话后主谓宾缺失,能否形成多轮对话?

多轮对话在很多对话模型中都是作为基础功能加入的。多轮对话的核心问题就是指代消解。

这个在第一轮里面会实现实体识别,然后在后一轮里面做指代消解,不同的算法准确率不一样,但能够结合模板的算法是可以达到很高的准确率的。所以多轮对话可实现,但覆盖率和准确率需要得到提升。

14. 目前的平台会开放吗?

暂时不会开放。之后可能会实现开放。

以上就是灵智优诺CTO许可的分享内容,在量子位微信公众号对话界面回复“170802”几个字,还可得到分享报告及视频回看地址。

—— ——

活动报名

8月9日(周三)晚,量子位邀请三角兽首席科学家王宝勋,分享基于对抗学习的生成式对话模型,欢迎报名 ▼

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI

վ'ᴗ' ի 追踪AI技术和产品新动态

,