一、人机对话概述

人机对话(Human-Machine Conversation)是指让机器理解和运用自然语言实现人机通信的技术,如图1所示。通过人机对话交互,用户可以查询信息,如示例中的第一轮对话,用户查询天气信息;用户也可以和机器进行聊天,如示例中的第二轮对话;用户还可以获取特定服务,如示例中的最后两轮对话,用户获取电影票预定服务。




python人机交互开发窗体 python人机对话程序_python人机交互开发窗体


图1 人机对话示例

人机对话是人工智能的重要挑战,最近几年随着人工智能的兴起,人机对话的研究也越来越火热。图2是NLP顶级会议ACL和EMNLP自2010年以来对话相关论文的数量,可以看出从2016年开始对话论文的数量增长迅猛,2018年相比于2010年对话论文数量有数倍的增长。对话相关技术的逐步成熟也引发了工业界研发对话产品的热潮,产品类型主要包括语音助手、智能音箱和闲聊软件。

1、语音助手是指在硬件设备或APP软件上植入人机对话程序辅助用户通过语音方式使用宿主设备或程序上的功能,如内容搜索、信息查询、音乐播放、闹铃设定以及餐馆和票务的预定等功能,该类型的产品有百度小度、苹果Siri、Google Now、微软小娜、阿里小蜜;

2、智能音箱是为对话系统独立设计的音箱产品,和语音助手的区别是,智能音箱独立设计了一套语音输入输出系统,用于实现远场语音控制,即远距离的语音对话交互,如家居环境下家电设备的控制,该类型的产品有百度小度音箱和小度在家、亚马逊Echo、Google Home、阿里天猫精灵、小米小爱等;

3、闲聊软件主要是借助情感计算技术和用户进行情感交流,如微软小冰。


python人机交互开发窗体 python人机对话程序_编程语言_02


图2 对话论文在NLP会议上的增长趋势

二、人机对话技术

人机对话技术的研究最早可以追溯到上世纪六十年代,自阿兰·图灵提出通过图灵测试[1]来检验机器是否具有人类智能的设想以来,研究人员就开始致力于人机对话系统的研究。1966年MIT的计算机科学家Joseph Weizenbaum开发了Eliza[2]聊天系统,用于模拟心理治疗师对精神病患者进行心理治疗。1972年精神病医生Kenneth Colby基于Eliza的原理开发了Parry[3]聊天系统,只不过模拟的不是心理治疗师,而是精神病患者。1998年CMU的Randy Pausch开发的Alice[4]被认为是最像人类的聊天机器人,还获得了三届人工智能竞赛大奖-罗布纳奖(2000年、2001年和2004年),同时孕育了用于开发聊天机器人的AIML语言。

随着深度学习技术的兴起,以对话语料为基础使用神经网络模型进行对话学习是近几年人机对话的主流研究方法。人机对话根据功能不同可以分为任务完成、问答和聊天三种类型,不同类型采用的技术手段和评价方法也不同。下面我们对这三种类型对话进行简单的介绍:

1、任务完成类型

用于完成用户的特定任务需求,比如电影票预订、机票预定、音乐播放等,以任务完成的成功率作为评价标准。这类对话的特点是用户需求明确,往往需要通过多轮方式解决,主流的解决方案是2013年Steve Young提出的POMDP[5]框架,如图3所示,涉及语言理解、对话状态跟踪、回复决策、语言生成等技术。


python人机交互开发窗体 python人机对话程序_机器学习_03


图3 POMDP框架

(1)语言理解(Natural Language Understanding),理解用户输入中的语义和语用信息。语义信息通常由意图和槽位信息构成,一个意图表示一个用户需求,每个任务有多种类型的意图,每个意图有多个槽位信息。在电影票预定中,意图类型有电影票预定、取消预定、修改预定等意图,槽位有影院、日期、人数等;语用信息主要是指交际功能(Dialogue Act),如询问、回答、陈述等,语言学家Harry Bunt 等人设计了一套通用的交际功能分类标准[6],共有88类,一般选用其中的几类即可。

(2)对话状态跟踪(Dialogue State Tracking),一个用户需求会包含一个意图和多个槽位信息,而一次对话交互只能提供其中的一部分信息,因此对话状态跟踪是根据每轮对话信息完善用户的完整需求信息。

(3)回复决策(Policy Modeling),根据DST输出的结果决策当前的回复动作,如槽位询问、槽位澄清或结果输出等,每个回复动作由一个交际功能和几个槽位构成。

(4)语言生成(Natural  Language Generation),根据Policy输出的动作生成一个自然语言句子。

系统实现上分为Pipeline方式和End2End方式。Pipeline方式指每个技术模块单独实现,然后以管道形式连接成整个系统[7]。End2End方式是指一个模型同时实现各个技术模块的功能,使模块之间进行充分的信息共享[8]。

2、问答类型

用于解决用户的信息查询需求,主要是一问一答的对话形式,如“美国总统是谁”,以回复答案的准确率作为评价标准。和NLP传统Question Answering (QA)任务不同的是对话中的问答会涉及上下文的成分补全和指代消解技术。

3、聊天类型

用于解决用户的情感倾诉需求以及其它类型对话之间的衔接需求。和前两种对话类型的区别是该类型对话是开放性对话,用户的输入是开放的,用户可以输入任何合理的自然语言句子;系统的输出也是开放的,比如图1示例中用户输入“看来今天不适合出门啊”,系统可以回复“是啊,还是呆在家好”,也可以回复“可以去电影院看电影”,甚至可以回复“知足吧,至少你有机会出门,我没脚只能天天呆机房”等等。由于对话的开放性,其技术难度和挑战性要远高于其它类型对话,目前的解决方案主要是检索和生成两种。

(1)检索方案

检索方案采用的是信息检索的技术,分为候选回复召回和候选回复排序两个阶段,如图4所示。召回阶段先离线对对话语料建立倒排索引库,在线对话时根据用户输入从索引库中检索候选回复。排序阶段根据对话上下文进一步计算候选回复的相关性,以选出最佳候选作为系统输出,2016年Zhou等人提出在字粒度和句子粒度级别分别计算对话上下文和候选回复的相关性然后进一步融合,有效改善了排序效果,提升回复质量[9]。

检索方案从百亿级的语料库中检索回复,可以有效解决聊天类型对话的开放性问题,而且检索出的回复语义丰富度和流畅性都很好,在单轮对话中表现很好,但在多轮对话中,检索方案就问题重重了。对话具有很强语境关联性,多轮对话确立的语境在语料库中基本不存在,使用检索方案从语料库中选出的回复很难适用于当前的语境,会存在多轮逻辑冲突、语义相关性差等问题,这是检索方案的致命缺陷。


python人机交互开发窗体 python人机对话程序_机器学习_04


图4 检索方案

(2)生成方案

生成方案不是从语料库中选出历史回复,而是生成全新的回复,语料库只用于对话逻辑的学习,是目前学术界的一个研究热点。生成方案主要采用机器翻译的Seq2Seq对话框架,对话的上文作为模型输入,下文作为模型输出[10],使用Encoder表示输入,Decoder预测输出,如图5所示。除了Seq2Seq框架,有不少研究人员也开展了基于GAN和强化学习的对话框架,GAN模型中generator模型用于生成回复,discriminator模型用于判断输入回复是标准回复还是预测回复[11];强化学习模型中reward为语义相关性、句子流畅性等,action为生成的回复句子[12]。

生成方案训练时从对话语料中学习对话逻辑,预测时根据用户输入预测和上下文相关的回复输出。目前生成模型还存在安全回复、机器个性化和效果评估等几个挑战性问题。


python人机交互开发窗体 python人机对话程序_编程语言_05


图5 生成方案

由于聊天型对话的开放性特点,对话模型的效果评估上具有很大的挑战性,常见的评估方法——预测结果和标准结果的匹配程度,难以准确的衡量聊天型对话的效果,目前可靠的评估方法依然是人工评估,2017年Bengio团队提出用模型拟合人工评估的方式探索自动评估的解决方案[13]。闲聊对话系统可以通过和用户交互的轮次来自动衡量系统的效果,交互轮次越多说明用户对聊天效果越满意,也可以间接说明聊天系统效果越好。这和任务完成类型的评估是截然相反的,任务完成类型在成功完成任务的前提下对话轮次越少说明模型的效果越好。

三、人机对话语料

早期的对话系统依赖于模板匹配技术,通过文本匹配查找相似输入的回复作为输出回复,使得系统的对话能力和灵活性存在很大的局限性。因此上世纪九十年代以来,研究人员开始进行基于数据驱动的对话系统研究。1990年Hemphill等人建设了旅行信息系统(ATIS)数据集[14],用于机票预订对话系统的研究[15];2001年Walker等人建设旅行规划数据集,用于旅行规划系统Communicator的研究[16];2013年微软建设了公交时刻表查询对话数据集用于对话状态跟踪(DSTC)技术的研究[17];2015年Alessandro Sordoni等人在Twitter上整理了2900万人-人对话数据集[18],用于聊天对话技术的研究;2016年Ryan Lowe等人从Ubuntu技术论坛上整理了700万Ubuntu社区聊天数据集用于限定领域下的聊天技术研究[19]。2018年Nikita Moghe等人基于电影知识数据人工标注了电影领域的聊天数据集,用于知识对话技术的研究[20]。

四、人机对话技术展望

人机对话经过半个世纪的发展有了长足的进步,不过现在的技术水平还处于初级阶段,将来在以下几个方面需要进一步攻克:

(1)通用语言理解和语言生成技术:目前任务完成类型对话每个任务都有各自的语言理解和语言生成模型,领域迁移困难,通用的语言理解和语言生成技术是解决这一问题的关键。

(2)深度融合知识和常识信息:对话中话语背后蕴含了丰富的知识和常识等语境信息,话语的理解和生成与知识和常识信息密不可分。

(3)记忆机制:通过记忆机制记住、提炼并整合历史对话内容,对话时结合记忆信息辅助对话决策模型(Policy Model)进行下一步决策。

(4)多模态的对话技术:人类对话中不仅有语言交互,还有视频、图像等信息的交互,如对话中的手势、说话时的情绪等信息,语言理解时融合多模态信息可以使得机器掌握更完整的语境信息,语言生成时融合多模态信息可以使对话更加生动形象。