-->

AI内参_114_109_对话系统之经典的对话模型

你好,我是洪亮杰。

今天我和你分享的主题是对话系统之经典的对话模型。

在文本分析这个重要的环节里,我们已经分享了word to wake模型,包括模型的基本假设、模型实现,以及一些比较有代表意义的扩展模型。

我们还讨论了基于深度学习的文本分析模型,特别是对序列建模的深度学习利器。

Inn包括INN的基本框架、流行的IN模型式,以及INN在自然语言处理中的应用场景。

今天我们要来看另外一类和文字相关的人工智能系统,对话系统的一些基础知识,对话系统在整个人工智能领域,甚至是计算机科学领域都占据着举足轻重的地位。

著名的人工智能测试图灵测试,其实就是建立在某种意义上的对话系统上的。

在经典的图灵测试场景中,一个最主要的论述就是看一个人和一个机器进行对话。

今和这个机器系统的问答过程中,能否猜出这个系统,是一个真人,还是一个计算机程序系统。

从这也可以看出,即便是在计算机科学的早期对话系统,或者说是智能的对话能力,就已经成为了计算机科学家衡量智能水平的一个重要标准。

实际上,从上个世纪五十、六十年代开始,研究人员就致力于研发早期的对话系统。

即便是在今天看来,在一些简单的应用中,早期的对话系统也表现出了惊人的智能。

比如麻省理工大学的约瑟夫维森鲍姆教授研发了一款叫伊丽莎的早期对话系统。

尽管这个对话系统只能对语言进行最肤浅的反馈。

但是在伊丽莎系统的使用者中,有人真的产生了这个系统有智能的幻觉。

这说明对于如何界定智能,如何理解对话以及语言能力,这些的确是非常深邃的计算机科学乃至哲学问题。

早期的对话系统多是基于规则的系统。

这些系统的一大特征就是并不只是真正的去理解对话,理解文字,而是针对某一种模式,或者说是预定好的模板,对对话进行简单的模仿。

不过如果你认为这样基于规则的系统在今天的对话系统中毫无用武之地的话,那就大错特错了。

实际上,通过机器学习的手段,辅以规则的方式,这样的系统能够在绝大多数的场景下表现出惊人的水平。

很多机器学习背景的工程师在接触对话系统研发的时候,其实往往有轻视规则系统的这样一个情况。

从基于统计学习的机器学习崛起以后,研发人员就开始希望利用自然语言处理和机器学习的一系列方法,从根本上来改变对话系统的构建方式。

其中有一个核心的想法,就是真正理解对话的内容,从而达到真正的智能。

在实际的应用中,真正基于机器学习的系统在很长时间里,都并不能完全代替基于规则的系统。

直到最近几年,出现了更加复杂的基于深度学习的模型。

我们也会在之后的分享中,对这样的系统进行一些介绍。

从方法上,对话系统可以大致分为基于规则的系统和基于机器学习的系统。

除此之外,从应用场景上,对话系统也可以分为基于任务的对话系统和非任务的对话系统。

基于任务的对话系统其实很容易理解。

比如我们打电话到航空公司查询订票,打电话到酒店查询订房信息,亦或打电话到餐厅预订、晚餐等。

这样的对话系统有一大特点,就是我们的对话基本上都有一个明确的目的,或者说我们要完成一个任务。

对于对于查询机票而言,通常情况下,我们的任务可以是成功查询到机票信息,或者成功预定了到某个目的地的机票。

对于基于任务的对话系统而言,整个对话的范畴是限定好的,很多任务其实都有流程或者叫做套路可以参考。

因此,从本质上来说,基于任务的对话系统还是相对比较容易的场景。

在对话系统发展的历史中,很长时间里基于规则的系统,其实就已经可以对于基于任务的对话系统提供很高质量的服务了。

很多用户针对基于规则的系统来应付任务型对话系统,往往会觉得系统缺乏一定的灵活度,但其实已经可以完成任务了。

实际上,即便是今天的各类智能对话系统,对于任务型对话系统的支持,依然是这些智能系统的核心业务能力。

另外一类对话系统就是非任务型对话系统这类系统的一个代表就是聊天机器人。

聊天机器人取决于我们构建这类系统的目的,可以非常接近于任务型的对话系统,也可以是非常难以模仿的。

真正具有一定语言理解能力的系统。

典型的聊天机器人需要对一定的知识库进行建模。

比如当用户问到今天的天气,喜马拉雅山的高度,现在美国的总统是谁等问题。

聊天系统要能从某种先前存储的知识库中提取信息。

这一部分的功能其实和数据库信息查询很类似,更加复杂的模式无疑是我们不仅需要对已经有的信息进行执行来查询,还需要进行推论。

这就是智能的某种体现,往往是能对现有的数据进行简单推导。

比如,如果用户问这样的问题,比纽约现在气温高的美国西海岸城市有哪些首时?就需要理解比较词高的含义,并能够把这个词汇的含义转换成对气温数值的比较。

从这些邻领总总的情况来看,非任务型的对话系统更加难以建模,对研发者的挑战也更加艰巨。

尽管不同的对话系统有不同的目的,但是从大的架构上来看,所有的对话系统都有一些基本共同的组件。

首先,一个对话系统需要有一个模块,对人的语音进行识,应转换成计算机能理解的信号。

这个模块常常叫做自动语音识别器,简称ASR.比如现在很多手机终端或者是智能家居都有一些简单的对话系统,可以根据你的指令来进行回应。

第二,在通过了语音识别之后,就是一个自然语言理解器,也简称为NLU.在这个组件里,我们主要是针对已经文字化了的输入进行理解。

比如,提取文字中的关键字,对文字中的信息,例如数字、比较词等进行理解。

第三,对话系统往往有一个叫对话管理器,简称是DM的组件。

这个组件的意义是能够管理对话的上下文,从而能够对指代信息上下文的简称以及上下文的内容进行跟踪和监测。

第四,在任务型的对话系统中,我们还需要一个叫任务管理器,简称TM的模块,用于管理我们需要完成的任务的状态。

比如预定的机票信息是否完备,酒店的房间预定是不是已经完成等等。

第五,我们需要从管理器的这些中间状态中产生输出的文本,也简称是NLG.这个部分是需要我们能够产生语言连贯,符合语法的有意义的自然语言。

最后在一些产品中,我们还需要把自然语言能够用语音的方式回馈给用户。

这个组件往往简称为TTS.今天呢我为你介绍了对话系统的一些基础的背景信息,一起来回顾一下要点。

第一,我们讲了什么是对话系统。

对话系统从方法论上来说有什么流派?第二,我们聊了对话系统的分类。

第三,我们分析了对话系统的基本架构。

最后给你留一个思考题,你认为让对话系统能够真正智能的最大挑战是什么呢?欢迎你给我留言,和我一起讨论。