深度学习在智能助理中的应用
一、什么是智能助理
随着智能手机和移动互联网的普及,越来越多原来发生在线下的交互场景,逐渐从线下转移到线上。人们也开始习惯通过在线沟通的方式来获取各种服务:让秘书安排出差的机票和酒店,向英语老师咨询学习中的问题,找旅行达人制定旅游计划等等。类似这样的场景,今天都逐渐从面对面或电话沟通,转移到线上沟通。
因为沟通从线下变为线上,大量的数据能够被沉淀下来,基于数据我们可以通过机器学习等方法来辅助人提升效率,甚至在某些场景下替代人,从而实现智能助理。我们给智能助理的定义是:基于人工智能技术,通过理解语音或文本形式的自然语言来满足用户需求的软件应用或平台。
那么智能助理是不是就是智能客服呢?我们认为智能客服是智能助理的一种形态,但智能助理比智能客服有更深层次的意义和更广泛的应用。与智能客服不同,智能助理有以下3个特点:
1. 更主动的双向交互:在客服场景下,通常是用户主动联系客服,客服被动响应。而在助理场景下,助理和用户的交互是双向的,助理可以主动联系用户,在适合的时候主动为用户提供合适的服务。
2. 更长期的伙伴关系:在助理场景下,用户和助理的关系是长期,用户可以在长时间内通过同一个助理持续获得专属化的服务。相反,在客服场景下,用户和客服之间的关系往往是短暂的,双方的连接只在服务的那一刻建立,服务完成后即断开。
3. 更丰富的价值场景:因为双向的沟通与长期的关系,助理能够为用户提供更丰富和更有价值的服务。这些服务不仅仅限于售后,还包括售前咨询,甚至一些专业化的服务也可以通过在线助理的方式来完成。
通过智能助理来获得信息、商品和服务将成为趋势。那么,这个趋势会首先发生在哪些行业中?我们通过两个维度来思考这个问题。第一个维度是在线交互需求度,即该行业中在线交互的需求强不强,场景多不多。第二个维度是领域知识专业度,即这个行业的领域知识是否比较复杂,用户的决策过程是否需要借助外部知识。
只有当这两个维度都比较强的时候,以自然语言对话为主要交互方式的助理产品才能给用户带来比较高的价值。比如,在线秘书是一个非常典型的例子。今天,如果我有一个秘书,大部分时候我不需要和秘书见面,通过在线沟通的方式就可以把我想让他做的事情交代清楚了。再比如说,母婴、教育、旅游等行业都是非常典型的在线交互需求度较强和领域知识专业度较高的领域,适合智能助理的落地。可以预见,随着越来越多线下交互场景迁移到线上,智能助理会在更多的行业中成为一种主流的产品形态。
二、基于深度学习的自然语言处理框架
在线交互的场景会产生大量自然语言对话数据,基于这些数据我们可以训练机器学习模型,让机器具备一定自然语言处理和理解的能力,从而打造智能助理。
自然语言处理在智能助理产品的各个环节中都有应用,从分词、词性标注,到意图识别、实体抽取,再到问答、对话等。过去两年,学术界和工业界开始将深度学习应用在自然语言处理任务上,取得了很多不错的进展。在某些特定任务下,基于深度学习的方法明显优于基于传统机器学习模型的方法。因此,本节我们主要介绍深度学习技术在智能助理中的应用。
上面提到自然语言处理中有很多种不同的任务,但从机器学习模型的角度来说这些任务都有相同之处:模型的输入都是自然语言文本,输出都是某些预测结果,只不过在不同任务下模型需要预测的东西不一样。比如,在意图识别中,模型需要预测的是一段文本表达的用户意图;在实体抽取中,模型需要预测的是一段文本中的每个字或词所对应的实体;在问答或对话中,模型需要预测的是用户的问题和机器的回答的匹配度。虽然预测的内容不同,基于深度学习的自然语言处理框架可以总结为以下4步:
1,Embed。这一步所做的事情是将待处理文本中词或字用分布式向量的方式表示,作为下面步骤的输入。这些向量又称为词向量或字向量,可以事先训练得到,也可以先初始化成随机向量,然后在训练当前任务的过程中调整。当然,这一步中也可以将其他对实现当前任务有价值的信息作为输入,如用户行为等。
2,Encode。当我们把一句话用词向量表示后,这些词向量并不能表示这句话的语义,因为一句话的意思并不等于其包含的词的意思的简单组合。因此,Encode 这一步所做的主要工作是对整段文本进行编码,编码的过程考虑到每个词和它上下文之间的关系。 我们通常使用卷积神经网络(CNN)或者循环神经网络(RNN)对文本进行编码,这样可以充分利用词与词之间的关系。编码的输出是一个新的向量或矩阵,能更好地表征整段文本。
3,Attend。这个步骤又称为注意力机制(Attention Mechanism), 其主要思想是通过训练让模型关注在文本中能够解决当前任务的最重要的部分。用通俗的话来说,注意力机制就是给文本“划重点”,从而提升模型预测的效果。
4,Predict。这一步目标非常清晰,即将上一步中的输出通过一个网络完成当前的预测任务,通常使用到的网络模型是全连接的前馈神经网络。根据预测任务的不同,预测结果可以是一个标签的概率、一个实数值或者一个向量等。
下面我们来看一下,基于上述框架使用深度学习能够应用在智能助理的哪些场景中,解决哪些具体问题。
三、深度学习的应用:意图识别
第一个场景是意图识别。意图识别的作用是根据自然语言判断用户的意图。例如,在助理来也的场景里,当用户通过自然语言发起一个需求时,用户的意图是问天气、订机票还是其他,是意图识别模型需要解决的问题。上面介绍的框架能够非常好的应用在解决意图识别问题上。
首先,意图识别模型的底层是一个双向的 LSTM网络,即一种特殊的循环神经网络,该网络的输入是经过向量化表示(Embed)的用户消息,该网络的作用是对用户的消息进行编码(Encode),输出是若干个隐向量。编码后的结果经过一个注意力层(Attend),使模型学习到不同词对应的隐向量对于预测结果的权重。最终,经过注意力层加权后的隐向量经过Softmax层来预测(Predict)用户消息对应意图的概率。
和基于传统机器学习模型的方法相比,该方案最大的优点是完全靠数据驱动,无需人工进行特征工程,能最大化的利用数据本身蕴含的信息来进行意图预测。同时,基于深度学习的方法效果也明显优于传统的方法。
在助理来也的产品中,我们在20多类的意图识别问题上对不同的方法进行了对比。最初,在缺乏数据的情况下,我们使用传统基于规则的方法,准确率只有70%左右。随着数据的积累,我们切换到基于传统机器学习的方法,准确率迅速提升到90%。但是,当传统机器学习模型准确率到达90%之后,我们发现很难进一步提升,因为传统的方法依赖于特征提取,怎么选择和构造特征直接决定了模型的效果。随着特征数的增加,构造新的特征变得更难,而增加新的特征对模型效果的影响也越小。
为了解决这些问题,我们切换到基于深度学习的模型上,不依赖特征提取,完全靠数据驱动,效果明显比传统方法好,准确率达到96%以上。当然,在实际使用过程中还会遇到很多其他的挑战,比如用户的意图不仅仅和当前用户消息有关,可能和用户的历史消息甚至历史行为有关。基于此,我们可以在模型中引入更多的输入,如历史消息、历史行为等,来进一步提升意图识别的准确率。
四、深度学习的应用:知识挖掘
接下来介绍深度学习在知识挖掘上的应用。在智能助理的场景中,用户会问各种各样和该领域相关的问题,每个问题都有特定的答案,我们把这些问题和答案称为领域知识。要让智能助理具备自动问答的能力,首先需要把这些知识从非结构化的对话语料中挖掘出来,作为自动问答模型的训练数据。具体而言,知识挖掘的目标是从自然语言对话语料中将用户问题挖掘出来,并将相同语义的问题归到同一个知识点下。下面是母婴助理场景中两个例子。
表达方式不同,但属于同一个知识点:
· 刚出生1个多月的小孩能晒太阳吗?
· 新生儿是不是要满月才可以晒太阳?
表达方式接近,但属于不同的知识点:
· 新生儿晒太阳,每次多久比较合适?
· 新生儿晒太阳,多大开始比较合适?
在上面的两个例子中,知识挖掘需要将第一个例子中的两句话归为同一个知识点(宝宝多大可以晒太阳),而将第二个例子中的两句话归为不同的知识点(宝宝每次晒太阳时间 vs宝宝多大可以晒太阳)。因此,知识挖掘的主要难点是对文本进行语义表示,然后进行聚类。
传统的知识挖掘方法使用基于词向量的无监督聚类。具体的做法是,对于任意两句文本,使用它们包含的词和词向量来计算文本间的距离,再基于文本间的距离来实现无监督的聚类。这种方法有两个比较明显的缺陷:1)基于词向量来计算文本间的距离,不能很好的反映文本的语义相似度;2)使用无监督的聚类,很难确定类的数目,导致结果聚类结果不可控。
针对这两个问题,我们采用基于深度学习的方法,在词向量的基础上训练句向量,将无监督的方法和有监督的方法结合起来。具体而言,我们首先通过传统的方法挖掘出一部分知识点,人工审核后进入知识库,我们称之为种子知识库。在种子知识库的基础上,我们能够构造训练数据:同一知识点下的问题对作为正样本,不同知识点下的问题对作为负样本。基于上述训练数据,我们能训练出一个针对问题对的语义匹配的模型。这个模型和上面提到的框架完全一致,也包括Embed、Encode、Attend、Predict这4个步骤。
模型训练好之后,我们将其中的编码器(Encoder) 单独拿出来使用,对语料中的其他问题进行编码,编码结果可以认为是句向量,能够表征句子的语义。基于句向量,我们再做基于聚类,效果和效率比基于词向量的方法都会有很大的提升。
五、深度学习的应用:自动问答
最后再来看一看深度学习在自动问答中的应用。自动问答模型的主要目标是针对一个用户的问题,返回知识库中最适合回答该问题的知识点。传统的自动问答使用基于检索的方法,将用户问题作为输入去检索知识库,并返回相关性最高的若干个结果。基于检索的方法存在两个问题:1)检索是基于关键词的,检索相关性不能代表语义相关性;2)实际场景中的问答通常和上下文有关,在这种情况下仅基于单句用户消息的检索无法返回合适的结果。针对这个问题,我们采用基于上下文检索加深度学习匹配排序的方法。下面详细介绍。
首先,我们从用户当前消息和上文中抽取关键词,去知识库或历史语料中进行检索,返回若干个候选回复。因为检索关键词不仅来自于当前用户消息,也来自当前对话的上文,检索结果会既包含和当前消息相关的回复,也包含和上文历史消息相关的回复。
接下来,这些候选回复逐一输入到一个基于深度学习的文本匹配模型中,模型返回每个候选回复和当前对话上文的语义匹配度。最后,根据匹配模型返回的分数,系统返回分数最高的若干个候选回复。
深度匹配模型使用 CNN 对一个候选回复与当前用户消息以及历史消息序列进行匹配,最终计算出候选回复和整个对话上文的匹配分数。模型的训练数据来自于历史语料,将历史对话切割成若干个“上文”和“真实回复”的配对作为正样本,将“上文”和“随机回复”配对作为负样本。基于此,该匹配模型能够充分利用历史数据,同时考虑到上下文关系,实现候选回复和上文历史消息的匹配。
这个模型也完全符合我们前面介绍到的框架:候选回复和若干条上文消息的匹配可以看作是 Encode 步骤,而若干个匹配后的向量进行池化等操作可以认为是 Attend步骤,最终输出语义匹配度则是 Predict 步骤。
六、智能助理在行业中的落地
前面提到,不同行业的在线交互需求度和领域知识专业度都有所不同。因此,靠数据驱动的智能助理产品更适合在不同行业中以行业助理的形态落地,而不是以通用助理的形态落地。当我们聚焦行业后,能够积累足够多的领域对话数据,打造更加智能、用户体验更好的智能助理产品。
基于这个思路,我们首先针对在线秘书行业打造了一款助理产品“助理来也”。用户可以通过自然语言的方式获取20多项和工作、生活相关的服务,包括日程提醒、打车、咖啡、跑腿等。目前,“助理来也”是微信平台上深受欢迎的助理产品,为超过300万用户提供一站式的在线助理服务。在这个过程中,我们积累了大量的交互数据,将深度学习技术成功的应用在意图识别、实体抽取、问答、对话等各环节中,提升模型的效果和产品的体验。除此之外,我们也通过“吾来”输出语义、问答、对话等技术,帮助各领域企业客户打造行业助理。目前已经在母婴、汽车等行业的标杆企业实现商业化落地。
七、结束语
最后我们进行总结。首先,随着移动互联网的普及和物联网时代的来临,基于自然交互的智能助理产品将逐渐成为主流。不同于智能客服,智能助理更加强调双向的沟通,长期的关系和个性化的服务。在这个场景下,基于数据驱动我们可以使用深度学习等技术提升语义理解、问答、对话等模型的效果。现阶段,针对行业、针对具体场景的智能助理产品更有用户价值和商业价值。
参考文献
1,Honnibal M. Embed, Encode, Attend, Predict: The NewDeep Learning Formula for State-of-the-art NLP Models. Available at https://explosion.ai/blog/deep-learning-formula-nlp, 2017.
2,Conneau A, Kiela D, Schwenk H, et al.Supervised Learning of Universal Sentence Representations from Natural LanguageInference Data. In Proc. EMNLP, 2017.
3,Wu Y, Wu W, Xing C, et al. SequentialMatching Network: A New Architecture for Multi-turn Response Selection inRetrieval-Based Chatbots. In Proc. ACL, 2017.