您的位置:首页 > 其它

史上最全!阿里智能人机交互的核心技术解析

2017-12-05 15:57 776 查看
点击有惊喜



“连接“本身不是目的,它只是为“交互”建立了通道。在人机交互(Human-Computer Interaction)中,人通过输入设备给机器输入相关信号,这些信号包括语音、文本、图像、触控等中的一种模态或多种模态,机器通过输出或显示设备给人提供相关反馈信号。“连接”为“交互”双方架起了桥梁。

“交互”的演进方向是更加自然、高效、友好和智能。对人来说,采用自然语言与机器进行智能对话交互是最自然的交互方式之一,但这条路上充满了各种挑战。如何让机器理解人类复杂的自然语言?如何对用户的提问给出精准的答案而不是一堆候选?如何更加友好地与用户闲聊而不是答非所问?如何管理复杂的多轮对话状态和对话上下文?在阿里巴巴,我们从2014年初开始对智能对话交互进行探索和实践创新,研发成果逐步大规模应用在了智能客服(针对阿里巴巴生态内部企业的阿里小蜜、针对阿里零售平台上的千万商家的店小蜜,以及针对阿里之外企业及政府的云小蜜等)和各种设备(如YunOS手机、天猫魔盒、互联网汽车等)上。

本文将对阿里巴巴在智能对话交互技术上的实践和创新进行系统的介绍。首先简要介绍智能对话交互框架和主要任务;接下来详细介绍自然语言理解、智能问答、智能聊天和对话管理等核心技术;然后介绍阿里巴巴的智能对话交互产品;最后是总结和思考。强烈建议收藏细看!

本文作者:孙健,李永彬,陈海青,邱明辉

1 智能对话交互框架

典型的智能对话交互框架如图1所示。其中,语音识别模块和文本转语音模块为可选模块,比如在某些场景下用户用文本输入,系统也用文本回复。自然语言理解和对话管理是其中的核心模块,广义的自然语言理解模块包括对任务类、问答类和闲聊类用户输入的理解,但在深度学习兴起后,大量端到端(End-to-End)的方法涌现出来,问答和聊天的很多模型都是端到端训练和部署的,所以本文中的自然语言理解狭义的单指任务类用户输入的语义理解。在图2所示的智能对话交互核心功能模块中,自然语言理解和对话管理之外,智能问答用来完成问答类任务,智能聊天用来完成闲聊类任务。在对外输出层,我们提供了SaaS平台、PaaS平台和BotFramework三种方式,其中Bot
Framework为用户提供了定制智能助理的平台。



图1 智能对话交互框架

2 智能对话交互核心技术

智能对话交互中的核心功能模块如图2所示,本部分详细介绍智能对话交互中除输出层外的自然语言理解、智能问答、智能聊天和对话管理四个核心模块。

 


图2 智能对话交互中的核心功能模块

2.1自然语言理解

自然语言理解是人工智能的AI-Hard问题[1],也是目前智能对话交互的核心难题。机器要理解自然语言,主要面临如下的5个挑战。

(1)语言的多样性

(2)语言的多义性

(3)语言的表达错误

(4)语言的知识依赖

(5)语言的上下文表1 上下文示例



注:U指用户(user),A指智能体(agent)。下同。

整个自然语言理解围绕着如何解决以上难点问题展开。  

2.1.1自然语言理解语义表示

自然语言理解的语义表示主要有三种方式[2]。

(1)分布语义表示(Distributional semantics)

(2)框架语义表示(Frame semantics)

(3)模型论语义表示(Model-theoretic semantics)

在智能对话交互中,自然语言理解一般采用的是framesemantics表示的一种变形,即采用领域(domain)、意图(intent)和属性槽(slots)来表示语义结果,如图3所示。



图3domain ongology示意图

在定义了上述的domain ontology结构后,整个算法流程如图4所示。



图4 自然语言理解流程简图

2.1.2意图分类

意图分类是一种文本分类,主要分为基于规则的方法、基于传统机器学习的方法和基于深度学习的方法,如CNN [3]、LSTM [4]、RCNN [5]、C-LSTM [6]及FastText[7]等。针对CNN、LSTM、RCNN、C-LSTM四种典型的模型框架,我们在14个领域的数据集上进行训练,在4万左右规模的测试集上进行测试,采用Micro F1作为度量指标(注:此处的训练和测试中,神经网络的输入只包含word
embedding,没有融合符号表示),结果如图5所示,其中Yoon Kim在2014年提出的基于CNN[3]的分类算法效果最好。



图5 四种模型的分类效果对比

单纯以word vector为输入的CNN分类效果,在某些领域上无法超越复杂特征工程的SVM分类器。如何进一步提升深度学习的效果,其中一个探索方向就是试图把分布式表示和符号表示进行融合。比如对于“刘德华的忘情水”这句话,通过知识库可以标注刘德华为singer、忘情水为song,期望能把singer和song这样的符号表示融入到网络中去。具体融合方法,既可以把符号标签进行embedding,然后把embedding后的vector拼接到wordvector后进行分类,也可以直接用multi-hot的方式拼接到word
vector后面。分布式表示和符号表示融合后的CNN结构如图6所示。



图6 分布式表示和符号表示融合后的CNN分类网络结构

经过融合后,在14个领域约4万条测试数据集上,对比融合前后的F1值(如图7所示),从中可以看出,像餐厅、酒店、音乐等命名实体多且命名形式自由的领域,效果提升非常明显。



图7 在CNN中分布式表示融合符号表示前后效果对比

在以词为输入单位的CNN中,经常会遇到OOV(Out-Of-Vocabulary)问题,一般情况下会使用一个特殊向量(比如固定的随机向量或者已知词向量的平均值)来表示所有的OOV,这样做的效果肯定不够好。在我们的实现中,引入了FastText [8]来训练word vector,对于OOV,可以用其subword向量计算得到,有效地解决了OOV的问题。

在效果优化方面,除了本文中所述的word vector的动态训练和dropout之外,通过对训练数据进行数据增强(data augmentation),效果会有较大的提升。

2.1.3属性抽取

属性抽取问题可以抽象为一个序列标注问题,可以以字为单位进行序列标注,也可以以词为单位进行序列标注,如图8所示为以词为单位进行序列标注的示例。在这个例子中包含departure、destination和time三个待标注标签;B表示一个待标注标签的起始词;I表示一个待标注标签的非起始词,O表示非待标注标签词。



图8 序列标注示例

属性抽取的方法,包括基于规则的方法,基于传统统计模型的方法,经典的如CRF[9],以及基于深度学习模型的方法。2014年,在ARTIS数据集上,RNN[10]模型的效果超过了CRF。此后,R-CRF [11]、LSTM[12]、Bi-RNN[13]、 Bi-LSTM-CRF[14]等各种模型陆续出来。

在属性抽取这个任务中,我们采用了如图9的网络结构,该结构具有以下优点。



图9 属性抽取网络结构

(1)输入层

在输入层,我们做了三部分工作:① 采用了分布式表示(word vector)和符号表示(symbol vector)融合的方式,有效利用了分布式的上下文学习能力和符号的抽象知识表示能力;②采用了局部上下文窗口(local context window),将窗口内的词的表示拼接在一起送入一个非线性映射层,非线性映射具有特征学习和特征降维的作用;③采用了FastText
[8]进行word embedding的学习,可以有效解决OOV(Out-Of-Vocabulary)的问题。

(2)Bi-LSTM层

在中间的隐藏层,采用Bi-LSTM进行特征学习,既能捕捉上文特征,也能捕捉下文特征。

(3)输出层

在输出层有几种典型的做法,比如Bi-LSTM+Softmax、Bi-LSTM+CRF等,Bi-LSTM+Softmax是把属性抽取在输出层当成了一个分类问题,得到的标注结果是局部最优,Bi-LSTM+CRF在输出层会综合句子层面的信息得到全局最优结果。

2.1.4意图排序

在表1中,我们展示了一个例子,如果不看上下文,无法确定“后天呢”的意图。为了解决这个问题,在系统中我们设计了意图排序模块,其流程如图10所示。对于用户输入的utterance,一方面先利用分类抽取模型去判定意图并做抽取;另一方面,直接继承上文的意图,然后根据这个意图做属性抽取。这两个结果通过特征抽取后一起送入一个LR分类器,以判定当前utterance是应该继承上文的意图,还是遵循分类器分类的意图。如果是继承上文意图,那么可以把这个意图及其属性抽取结果作为最终结果输出;如果是遵循分类器分类的结果,那么可以把各个结果按照分类器分类的置信度排序输出。



图10 基于上下文的意图延续判定

2.2智能问答

在具体的业务场景中有三种典型的问答任务,一是用户提供QA-Pairs,一问一答;二是建立结构化的知识图谱,进行基于知识图谱的问答;三是针对非结构化的文本,进行基于阅读理解的问答。本文重点介绍我们在阅读理解方面做的工作,比如利用阅读理解解决淘宝活动规则的问答。

在阅读理解的方法上,目前针对斯坦福大学的数据集SquAD,有大量优秀的方法不断涌现,比如match-LSTM [15]、BiDAF [16]、DCN [17]、 FastQA [18]等。文献[18]给出了目前的通用框架,如图11所示,主要分为4层:① Word Embedder,对问题和文档中的词进行embedding;② Encoder,对问题和文档进行编码,一般采用RNN/LSTM/BiLSTM;③
Interaction Layer(交互层),在问题和文档之间逐词进行交互,这是目前研究的热点,主流方法是采用注意力机制(attention);④ Answer Layer(答案层),预测答案的起始位置和结束位置。



图11 阅读理解的通用框架

我们在具体实现中,参考BiDAF [16]网络结构,在此基础上做了大量优化。

(1)模型的业务优化

需要改进模型的结构设计,使得模型可以支持电商文档格式的输入。电商规则文档往往包含大量的文档结构,如大小标题和文档的层级结构等,将这些特定的篇章结构信息一起编码输入到网络中,将大幅提升训练的效果。

(2)模型的简化

学术文献中的模型一般都较为复杂,而工业界场景中由于对性能的要求,无法将这些模型直接在线上使用,需要做一些针对性的简化,使得模型效果下降可控的情况下,尽可能提升线上预测性能,例如可以简化模型中的各种bi-lstm结构。

(3)多种模型的融合

当前这些模型都是纯粹的end-to-end模型,其预测的可控性和可解释性较低,要适用于业务场景的话,需要考虑将深度学习模型与传统模型进行融合,达到智能程度和可控性的最佳平衡点。

2.3智能聊天

面向open domain的聊天机器人目前无论在学术界还是在工业界都是一大难题,目前有两种典型的方法:一是基于检索的模型,比如文献[19-20],其基本思路是利用搜索引擎通过计算相关性来给出答案;二是基于Seq2Seq的生成式模型,典型的方法如文献[21-22],其网络结构如图12所示。 



图12 Seq2Seq典型网络结构

检索模型的优点是答案在预设的语料库中,可控,匹配模型相对简单,可解释性强;缺点是在一定程度上缺乏对语义的理解,且有固定语料库的局限性,长尾问题覆盖率较差。生成模型的优点是通过深层语义方式进行答案生成,答案不受语料库规模限制;缺点是模型的可解释性不强,且难以保证回答一致性和合理性。

在我们的聊天引擎中,结合检索模型和生成模型各自的优势,提出了一种新的模型AliMe Chat [23],基本流程如图13所示。首先采用检索模型从QA知识库中找出候选答案集合;然后利用带注意力的Seq2Seq模型对候选答案进行排序,如果第一候选的得分超过某个阈值,则作为最终答案输出,否则利用生成模型生成答案。其中带注意力的Seq2Seq模型结构如图14所示。经过训练后,主要做了如下测试:如图15所示,利用600个问题的测试集,测试了检索(IR)、生成(Generation)、检索+重排序(Rerank)及检索+重排序+生成(IR+Rerank+Generation)四种方法的效果,可以看到在阈值为0.19时,IR+Rerank+Generation的方法效果最好。



图13AliMe Chat流程图



图14 带注意力的Seq2Seq网络结构示例



图15 IR、Generation、Rerank、IR+Rerank+Generation效果对比

此模型在阿里小蜜中上线后,示例如图16所示。在阿里小蜜中,针对之前的IR模型和AliMe Chat模型,利用线上流量做了A/B Test,结果如图17所示。从用户日志中随机选择2 136条数据,其中1 089是采用IR模型回答,另外1 047是采用AliMe Chat回答,AliMe
Chat Top1答案的准确率(accuracy)是60.36%,远远好于IR的40.86%。

点击有惊喜

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: