闲聊机器人介绍(一)

举报
木头123 发表于 2020/10/21 10:38:37 2020/10/21
【摘要】 引言 对话机器人是一种通过自然语言处理模拟人类,进而与人进行对话的程序,是目前非常火热的一个人工智能研究方向,方法从当初的规则匹配逐渐演变成如今的深度学习方法,很多公司重点研发其相关技术,并陆续推出了自己的对话机器人产品,比如微软的小冰,苹果的Siri,阿里的小蜜,百度的度秘等等。 如此多的对话机器人很容易给人一种百花齐放的感觉。那么为什么那么多的公司都要推出自己的对话机器人产品呢?原因还是...

引言

 

对话机器人是一种通过自然语言处理模拟人类,进而与人进行对话的程序,是目前非常火热的一个人工智能研究方向,方法从当初的规则匹配逐渐演变成如今的深度学习方法,很多公司重点研发其相关技术,并陆续推出了自己的对话机器人产品,比如微软的小冰,苹果的Siri,阿里的小蜜,百度的度秘等等。

如此多的对话机器人很容易给人一种百花齐放的感觉。那么为什么那么多的公司都要推出自己的对话机器人产品呢?原因还是在于其巨大的市场需求背景,并且本人觉得对话机器人将是未来的趋势。

市场需求主要体现在两个场景,一个是针对企业(To B),另一个是消费者(To C)。在To B场景,一个典型案例是智能客服,在之前的企业服务中,客服人员处理的问题一般都是大同小异的,用智能客服取代人类客服可以节省更多的人力资源。针对于To C场景,一个比较典型的案例是闲聊机器人,主要功能就是和用户进行不限定主题的对话,从而起到情感陪护、慰藉的作用,比较代表的产品就是微软的小冰。

至于为什么说对话机器人是未来的趋势,主要原因在于对话机器人可以作为未来提供各种服务的入口。目前来说,对于移动端来说,实现不同的服务是需要下载不同的独立APP来分别处理,但是对于对话机器人来说,可以通过语音对话助手直接实现各种服务,比如查天气、订票、订餐等等之类的服务。在未来,可能很多APP将消失不见,取而代之的是各种对话机器人产品,所以作为未来各种服务的入口,其市场需求将会十分巨大。
总结一下,因为其巨大的市场需求,对话机器人将是现在以及未来的发展趋势。本文将对话机器人分为两类,任务完成型对话机器人和闲聊对话机器人,本文将聚焦在闲聊对话机器人,并从以下三个方面简要介绍一下:

1.  对话机器人的简要介绍

2.  闲聊机器人技术思路的简要介绍

3.   闲聊机器人技术问题的简要介绍


一、对话机器人的简要介绍

    

本篇文章主要将对话机器人分为两类,一种是任务完成型对话机器人,另一种是闲聊对话机器人,上面的表格简要对比了两种机器人,我们可以简要区分一下,一个偏理性,一个偏感性。

任务完成型对话机器人是偏理性的,它通常会调用服务API或者是知识库来帮助用户完成一些特定的具体的任务,因为考虑到要更有效率的完成目标,所以对话轮次越少越好。

闲聊对话机器人是偏感性的,它的主要目的就是和用户进行不限主题的聊下去,以达到情感陪护的作用,所以对话轮次越多越好,希望能够和用户一直持续不断的聊下去。

实现这两类机器人的技术也是有很大区别的,针对于任务完成型对话机器人,通常是采用规则或者统计学习的方法,其常用框架通常是包含三个模块,如下图所示,第一个模块是自然语言处理(LU),第二个是对话管理(DM),最后一个是自然语言生成(NLG)。

LU模块是将自然语言文本转成机器内部语义表示,主要为了识别出来用户语句中的领域(domain)、意图(intent)和槽(slot);DM模块主要就是根据LU模块得到的结果从而输出一个action,这个action告诉机器人应该去做什么,比如调用服务API或者知识库来得到相关的数据;NLG模块就是要把DM模块得到的数据转成一个用户能够理解的自然语言的描述。

举一个具体的例子,当用户问:“今天杭州天气怎么样?”,LU模块就是识别出来用户语句的领域是天气,意图是查天气,还是提到的时间槽位是今天,地点是杭州,在实际应用里,还会将今天转换成2020-10-19这样的时间表达,方便系统对接;

DM模块就是根据LU模块得到的输出,(意图是查天气,时间槽位是2020-10-19,地点槽位是杭州)到有关天气的服务API里调取结果,可能返回的结果是一个结构化语句,比如“天气:晴,温度:20-25摄氏度”;

接下来我们就要通过NLG模块把这样的结构化语句转化成方便用户理解的自然语言语句,比如:“今天杭州的天气是晴,温度是2025摄氏度。”

实现闲聊机器人的技术与任务完成型对话机器人有很大的不同,通常采用检索IRInformation Retrieval)或者基于Seq2Seq方法(sequence to sequence)的各种变型。

接下来将在第二部分简要介绍一下实现闲聊机器人的技术方法。


二、闲聊机器人技术思路的简要介绍


现在实现闲聊机器人的技术一般来说分为两种,一种是根据检索(IR),另一种是根据生成式的方法,大部分是根据Seq2SeqEncoder-Decoder)模型进行开发的。 

基于检索的模型,主要思想就是构建一个庞大的数据库,里面储存问题和答案对,然后根据用户语句选择一个ranking最高的答案返回给用户,系统结构如下图所示,细节可以参考An Information Retrieval Approach to Short Text Conversation [Ji 2014]https://arxiv.org/abs/1408.6988)这篇论文。

这样的做法有明显的优点和缺点,由于是纯手工打造的数据库,所以回复的质量很高,表达比较自然,不会产生语法错误,但是构建数据库的代价很高,并且没有办法处理没有预定义的场景,也就是说遇到一个新场景,就没有输出答案了,若是只能兜底回复,这对用户体验是一个毁灭性的打击。

第二种方法是生成式的方法,通常来说是根据Seq2Seq的方法进行改进的,也就是Encoder-Decoder方法,它的好处是显而易见的,它不依赖于场景的限制,可以覆盖任意话题的用户语句,是完全从零开始生成新的响应,并且方法比较简单,易扩展的,但是缺点是生成应答的语句质量很可能会出现问题,比如出现一些语句不通或者语法错误等比较低级的错误

对于目前而言,绝大多数技术是根据Encoder-Decoder框架进行改进的,所以本节就简要描述一下Encoder-Decoder模型,细节可参考论文Sequence to Sequence Learning with Neural Networks [Sutskever 2014]。(http://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf

Encoder-Decoder常用框架如上图所示,可以这么简单的理解,这个框架适合于处理由一个句子ABC生成另一个句子WXYZ,编码器Encoder就是对输入语句ABC进行编码,并通过非线性变化转化成中间语义表示,解码器Decoder就是根据语义编码和之前产生的历史信息来生成i时刻的单词,这样就生成了最终的语句WXYZ

编码器Encoder和解码器Decoder可以采取不同的模型进行处理,在这篇论文中,EncoderDecoder都采用了Long Short Term MemoryLSTM)模型,但是当语句长度特别长时,LSTMEncoder-Decoder模型表现不是很理想,其主要原因是在i时刻的输出可能更关心输入语句中的某些内容(几个单词),和其他部分的内容并没有什么关系。

所以在近几年的模型中,加入Attention机制的模型逐渐成为了主流,主要思想就是一种体现输出Y和输入X句子单词之间对齐概率的神经网络模型,对于长句子来说可以明显提升表现效果,详细内容可参考论文 Neural machine translation by jointly learning to align and translate [Bahdanau 2015] https://arxiv.org/abs/1409.0473

相对与比较传统的检索(IR)方式生成的闲聊对话机器人,深度学习Encoder-Decoder模型有一些明显优点:

1.      构建过程是端到端(End to End),只要给定一定数据的训练数据,就可以产生效果不错的对话机器人,省去了很多特征抽取以及各种复杂问题的处理,比如句法分析,使得开发效率大幅提升。

2.      只要增加训练数据,就能持续提升训练效果。


接下来第三节将简要介绍一下闲聊机器人遇到的技术问题和解决思路的简要介绍。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。