随着人工智能的飞速发展以及广泛落地应用,越来越多的设备将会被植入智能问答技术,人机交互场景随处可见,智能问答在未来将会成为一个非常重要的入口。
腾讯小知凭借着业界领先的智能AI引擎算法和海量大数据仓库,已将智能问答技术落地实施,并且经过大量的业务考验和优化,知识点匹配度和准确率都已达到90%以上,在2018 年 GITC 全球互联网技术大会上,腾讯小知荣获年度互联网最具价值产品奖。
腾讯小知算法负责人陈松坚也在会场发表了关于智能问答技术原理及其在To B场景下的应用的专题演讲,从自己的角度为我们展现智能问答技术的最新成果。
他首先从智能问答是什么,为什么和怎么做的三个问题出发,阐明了他对当前智能问答技术的定位和价值,首先,现阶段的智能问答是信息检索技术的升级,是量变而未达到质变。但是无论在To B还是To C的场景下,当前的技术都能够切实解决一些用户的痛点,提升用户体验,是亟待推进和充满想象的方向。
在回答怎么做这个问题时,他详细介绍了几种不同的问答机器人的实现路径,包括单轮问答机器人,多轮问答机器人及阅读理解机器人。其中重点阐述了单轮问答机器人的实现原理,包括字面匹配,词向量匹配,深度语义匹配,迁移学习等技术。
此后他还分享了小知团队将上述技术产品化的经验,包括智能客服机器人和电话机器人两大块,主要分享了当前产品的形态,亮点和实际项目中取得的一些成果。
最后,他简单总结了小知目前完成的工作以及就智能问答的发展提出了自己的几点看法。
————————————————————–
以下是演讲稿全文:
各位下午好,很高兴今天能在这里给大家做分享报告。先介绍一下,我们腾讯小知是致力于为政府和各行业提供一揽子智能问答解决方案的团队,目前已经落地的包括基于文本的智能客服机器人和基于语音的电话机器人等。
在大多数人的认知里,智能问答很可能是以上的3个印象,2011年打败了人类取得问答竞赛冠军的waston;2017年被沙特授予公民身份的机器人sofia;更为大家熟知的钢铁侠中的机器人管家jarvis。在大家心目中,智能就意味着能够像真人一样交流。然而作为从业者,很遗憾地告诉大家,目前的技术还远没有达到这个目标,我认为本质上目前的智能问答技术是对信息检索技术的一次升级,是量变而未到质变。这个皇冠上的明珠还等待我们去摘取。
既然问答技术还不成熟,那为什么还要投身到这个领域呢。我想从To B和To C两个角度去回答。对企业来讲,当前的问答技术虽然无法解答复杂的咨询,但是大部分的简单的头部问题是可以比较好的解答的。从本轮AI大潮NLP赛道的几名种子选手都从智能客服这个方向切入就可以看出企业是确实存在对智能问答的刚性需求。而对普通用户来讲,一方面siri等语音助手每天都在为用户提供便捷的交互界面,另一方面像amazon echo这一类的智能家居产品也逐步进入千家万户,成为物联网生态的中心入口之一,这便是智能问答的价值所在。
那如何实现智能问答机器人呢?我们先来看最基本的单轮问答机器人的实现原理。
熟悉搜索引擎的朋友会发现这个架构跟搜索引擎的很类似。单轮问答一般来说就是FAQ问答,是基于业务问答对组成的问答库进行检索匹配。其中FAQ问题集包含多个相似问法供用户问题去匹配。预处理阶段一般会进行文本纠错,标准化和底层NLP特征提取;召回阶段会在倒排索引中召回若干个候选问题(粗排),而最后的匹配阶段会基于各种模型进行匹配打分并返回得分最高的结果(精排)。匹配阶段还会引入其他模块,如知识图谱和拒识模型,目的是辅助提升匹配的最终准确率。
retrieval中的匹配可以看做是naive solution,词袋+VSM, 筛选候选够用了,但是精排需要更精致的策略,第一,要利用监督信息做拟合,我们构建基于问题对的训练语料,拟合是否匹配这个二分类目标。第二,特征上抛弃稀疏的词袋模型,而是构造各种相似度来做base scorer,然后利用非线性的抗噪能力强的xgboost来做融合,比如我们用到词bigram, 字bigram, 核心词,名词等特征集合的相似度。这种方法的优缺点是一体的,由于模型只学习字面相似的特征,因此不受领域影响,通用性强,适合用在冷启动阶段;但也因为只考虑字面相似,无法处理更深层的语义匹配。
那如何度量语义的相似呢。词向量技术的兴起是语义匹配的前提,所谓词向量,是将孤立的传统的token表示映射到相互关联的向量空间中,这种关联性,或者说是相似性,是通过词语的上下文的来描述的。也就是说,上下文越相似的词语,他们的语义就越相似,词向量的欧式距离就越近。这是很容易理解的,更妙的是,通过对向量进行简单加减运算,能够呈现出概念的关系,比如king-man+woman的结果非常接近于queen, 因此说明词向量能够一定程度刻画语义。那对句子如何做向量表示呢?一个简单的想法是直接求和平均,WMD是另一个比较有意思且有效的做法,他将计算句子到句子的相似度建模成一个运输的问题,把句子p的各个词,运输到q的各个词上,也可以说是变换;运输成本是词向量的cosine相似度,而要运输的是各个词在句子中的权重,用线性规划求解一个最优解,即为p到q的距离。另外还有个有效的方法是SIF,思路是做词向量加权求和,但是突显出句子中非通用的部分,即权重用词频倒数来计算权重,实验效果也很不错。
上面的方法有一个问题就是没有利用有监督信息,所以效果有明显的天花板。下面介绍这个工作是基于深层网络做有监督学习的匹配的,做法也比较简单,首先把句子文本用one-hot编码,假如词典大小是500K,那编码完长度就是500K维,其实等于是词袋模型,然后输入到一个多层的神经网络去学习,最终得到一个128维的向量作为句子的语义表示,然后用cosine计算两个句子与文档的相似度作为模型输出。这个方法其实是将高维稀疏的token特征映射到低维语义空间,跟词向量的思路很类似,只不过训练目标不同,并且这里使用了深层网络结构。
上面工作的问题是对句子的输入进行建模时还是词袋模型的思路,没有考虑词的位置和顺序信息,因此我们需要考虑引入特征提取能力更强的网络单元。先介绍左边这位大名鼎鼎CNN, 卷积神经网络,原来是图像领域上的关键技术,通过不同的卷积核用来处理邻近区块信息提取。就好比一个人透过各种不同的过滤镜片逐块逐块地观察一副图片,所谓横看成岭侧成峰,关注到不同的影像然后记忆下来,再用这些不同的影像来对原始图片做表达,有点类似把信息分出了多个层次,显然鲁棒性更好。移植至到NLP上,CNN可以用来捕捉局部上下文的信息,如左边这个例子,CNN观察范围为3,不同的卷积核关注不同的词语组合,然后再通过最大池化选出关注度最高的部分,完成一次特征抽取过程。
但是CNN对上下文的处理能力依赖于窗口大小,远距离就没办法处理了,因此要考虑另一种网络单元RNN,这种单元是专门为时序模型量身打造的,简单来说,每一时刻t上的隐藏状态,或者说第t个词上的语义编码,都由两个输入共同决定,即上一时刻的隐藏状态和当前时刻的原始输入,而为了解决远距离传递导致的梯度消失和梯度爆炸等问题,RNN有一些变种结构来应对,比如 LSTM和GRU等。
CNN和RNN都是对原始输入进行语义编码的基本单元,编码后的向量就可以接入多层感知机进行相似度计算,如果是直接计算cosine相似度,那就是dssm的升级版,而更常见的做法是把两个句子的编码向量拼接在一起,再经过一个多层感知机计算相似度,而这种方法统称为表达式建模;
另一种方案考虑到两个句子之间的交互信息对学习他们是否匹配显然更为重要,这一类方案被称为交互式建模,右边是一个典型的例子,他最大的不同是首先对两个句子的所有窗口组合进行拼接和卷积,得到交互信息。然后再进行多次卷积和池化得到表示。其他的交互方式还包括编码之后,进行交互操作,如作差,点乘等,还有计算attention表示,也是常见的交互方式。
下面介绍我们的方案,跟上面介绍的模型相比,我们的方案主要做了两处改动,一个是使用了稠密连接的网络结构,让rnn层的输入和输出拼接在一起做为下一层的输入,第二个是混合注意力机制,即在计算attention向量进行交互式建模的基础上,增加self-attention向量计算,然后把两个attention向量经过门机制进行融合,这样做一方面引入了问句间的交互信息,同时又增强了对自身的表达建模。
上面的模型是比较复杂的模型,参数量有5.8M。在实际中应用中训练语料会严重不足,为了解决这个问题,我们引入了迁移学习的策略。首先第一种是多任务联合学习,比如在拟合两个问句是否匹配的同时,也对问句进行分类预测;另外还可以同时对匹配的问题对做seq2seq的翻译模型训练。这两个策略都证明能有效提升准确率。
而另一个思路更加直观,即引入其他领域的语料,所谓多语料迁移。Fine-tune即参数微调是其中一种做法,即先用通用语料训练网络,固定底层表达层的参数,然后再使用领域语料调整上层参数;另一种思路参考了对抗学习的思想,即引入一个新的任务“混淆分类器”去判别当前样本是来自源语料还是目标语料,通过在损失函数中增加反向的混淆分类损失项,让混淆分类器尽可能地无法区分样本的来源,从而保证共享了参数的表达网络能够学习到两部分语料中共性的部分。
以上的介绍都是为了完成一个基本的单轮对话机器人,而实际应用中,往往存在需要需要交互的场景,比如查询社保余额,就需要用户提供指定信息,如姓名,身份证号,手机号等。这种是所谓任务导向型机器人,而另一种,基于知识图谱的机器人也往往会涉及到多轮交互。这里简单介绍一下多轮对话机器人的架构,整体上是一个对话管理系统,总的来说是管理会话状态,包含4个模块,分别是输入部分:自然语言理解模块NLU,负责意图识别和抽取槽位实体,比如这里匹配到了意图是查询社保余额,抽取到了社保号1234。得到的意图和槽位值会送入到对话状态追踪模块,DST,他负责会话状态的更新,形式化来说是一个函数,输入是当前状态s和当前的query经过NLU处理过得到的意图和槽位值q, 输出新的状态s‘,下一步是把s’送入DPL,对话策略模块,这个模块是根据新的状态s‘输出行动a,通常这个决策选择会依赖于一个外部数据库或知识图谱,最后,由输出部分,自然语言生成模块NLG负责将行动转换为自然语言文本,返回给用户。
以上是多轮对话的原理框架,可以用不同的方式实现,近年来研究的热点是所谓end-to-end的神经网络模型,希望可以利用神经网络的语义编码能力和深层网络的堆叠实现端到端学习,减少各个模块的拟合bias导致的损失。但实用中我们并不会真正实现输入到输出的end-to-end学习,主要是因为模型深度过深不且多轮对话的语料非常欠缺,模型不好训练。实际中是分开各自的模块进行训练的,比如NLU中的槽位抽取就可以用基于神经网络的序列标注模型来建模,意图识别则可以通过之前的语义匹配模型或者分类模型来做都可以,NLG则是用seq2seq的翻译模型来训练,这样做比较灵活。而在多轮对话中比较受关注的是对话状态和策略的建模,做法有多种,比如对上一次的agent输出,本次的用户输入,当前的状态下可用的数据集合一起进行编码,然后输入到一个神经网络中学习action的选择,即policy learning,这里除了使用有监督学习,还可以进一步使用强化学习的技术,即构造一个用户模拟器,让agent跟他不断交互,根据交互是否完成任务和交互轮数来给agent不同的奖励和惩罚,从而最终学习出高成功率的对话策略。这部分的内容也特别有意思,希望以后可以单独展开来说。
前面提到的单轮FAQ机器人,有一个问题是问答准确率依赖于问答库的质量,而问答库的构建耗时费力,所以针对数据较大的非结构化文档,如果可以直接从中抽取答案,是非常理想的做法。比如斯坦佛大学开源的drQA,就是基于wikipedia的语料做的一个开放域上的问答机器人,我们来看看这种阅读理解机器人的架构示意,他也是基于检索重排的思路,首先把可能的文段从语料库中摘取出来,然后送入阅读理解模型进行答案定位,打分,排序和选择得分最高的答案。阅读理解模型与匹配模型是类似的,需要先对问题和候选文段进行编码表示,不同之处在于最终预测的目标是答案的起始和结束位置。我所在的团队在去年,在阅读理解的权威公开测评Squad v1中取得过第一的成绩,同时参加这个测评的包括了google, facebook, 微软,阿里idst, 科大讯飞等国内外同行。说明业界对这种技术还是非常看重的。
下面分享小知在把以上技术落地产品化的经验。首先我们来看看小知的整体架构图,核心引擎有两部分,一块是上面重点阐述的深度语义匹配模型,另一块是本次分享没有展开的知识图谱引擎,在此之上,我们构建了FAQ机器人,多轮会话机器人(任务机器人),闲聊机器人等。以下是我们单轮和多轮机器人的示例。
在我们实际的落地项目中,得益于深度迁移模型的语义匹配能力和行业知识图谱的的精准匹配和辅助追问,小知机器人能够做到95%左右的问答准确率,并且节省了50%以上的服务人力,切实为政府和企业提升效率和降低成本。
在智能客服的基础上,我们又打造了基于语音的电话机器人,力主融合智能客服,人工在线客服,工单系统和电话机器人,为客户打造从售前售中售后的整体解决方案。
以下是电话机器人的整体架构图,核心是自然语言理解NLU模块,负责识别用户提问意图
提取相关实体。根据NLU输出的结果,内置的对话管理引擎会进行流程状态流转和跟踪。
另外,ASR语音识别和TTS语音合成是不可或缺的重要服务,这三个模块相互协作,共同完成与用户的交互。
最后对智能问答的未来发展提几点我的看法。目前学术界比较公认的一个方向是,需要更有机地结合模型和规则,而在问答领域,规则的一大组成部分就是知识图谱,包括开放领域的知识图谱和专业领域知识图谱。而更进一步地,我们需要研究带有推理性质的事理型知识图谱去描述领域内的规则和知识,让机器人能够处理带有复杂条件的问题,提供更智能的回复。在我看来,智能问答的一个突破口就在于解决以上三个问题。以上就是今天分享的内容,谢谢大家。
主讲人介绍:
陈松坚,腾讯数据平台部算法高级研究员,有着8 年的 NLP 研发经验,2017 年加入腾讯 TEG 数据平台部,负责智能客服产品腾讯小知的算法规划和落地。负责过多个智能客服项目,对封闭领域的智能问答有丰富的实战经验。