对话系统综述

在人工智能领域,模仿人类交谈能力的尝试可以追溯到人工智能的早期阶段。在1950年,艾伦·图灵(Alan Turing)提出了一种方法来测试一台机器的智能水平,这个机器被普遍称为图灵测试或模仿游戏。在图灵测试中,一台机器被要求与人交谈。机器的智能水平取决于机器如何能够欺骗人类评估者,使其相信机器是基于文本响应的人类。如果人类的评估者无法区分机器和人类的区别,那么就说机器已经通过了图灵测试,这意味着人工智能的高度智能化。详见图灵测试wiki百科与强图灵测试与弱图灵测试。

自从提出图灵测试的想法以来,已经提出了各种尝试来通过测试,但是还没有通过测试。本文主要参考李纪为博士的博士论文。在这篇文章中,简要回顾几十年来提出的对话系统,并且讨论已经成功应用的案例,利弊,以及为什么仍然无法通过图灵测试。

1.1 已有对话系统的简要回顾

具体来说,目前主要有以下三种对话系统:

The Chit-chat Style System(闲聊系统)

The Frame-based Dialogue Systems(基于框架的目标导向系统)

The Question-Answering (QA) Based Dialogue System(交互式问答系统(QA))

本论文的重点是如何改进闲聊系统和交互式问答系统(QA)。

1.1.1 The Chit-chat Style System

现有的闲聊系统主要分为以下三个子类:

  1. The Rule-based Systems(基于规则的系统)

    使用规则是产生对话的最有效方法之一。通常,消息输入会经过一组预定义的规则(例如,关键词查找字典,if-else条件或更复杂的机器学习分类器)来对输入进行处理。在评估完输入之后,将执行相关的动作,比如输出存储器中的入局,改变输入消息或选择一些相关的历史上下文进行输出。最著名的例子是ELIZA。

  2. The IR-based Systems(基于IR的系统)

    基于IR的方法依赖于信息检索或最近邻技术。假设输入为s1,输出为s2,IR-based的规则为R,那么基于规则的对话系统的模式为s1,s2——>R,即s1和s2符合一定的规则。通常生成的响应与对话存在语义相关性(VSM、TF-IDF、page-Rank、推荐等排序方法)。该方式优点是比生成模型简单,直接从训练集中选择答案,且可以添加自定义规则干预排序函数较为灵活;缺点是无法应对自然语言的多变性、语境解构、连贯性等,对语义的细微差别也无法识别,并且无法生成新的回答,因此也无法对未训练的问题作出回答。

    在本专栏中,简单实现了一个基于检索的聊天机器人的实现,可以简单看一下实现过程。

  3. The Generation-based Systems (基于生成的系统)

    基于生成的系统通过一个词一个词地生成句子,而不是复制来自训练集的response。假设输入为s1,输出为s2,那么基于生成的对话系统的模式为s1——>s2,即s1生成s2。在给定历史对话的训练集的情况下,系统需要输出连贯且有意义的单词序列。

    基于生成的对话系统最早使用统计机器翻译(statistical machine translation)的方式。但是基于MT的系统的缺点不仅在于MT模型的复杂性,单独建立了许多不同的组件,而且MT模型在处理input and response pairs之间的隐式语义和句法关系时的固有不灵活性。由于这个原因,基于MT的系统仅仅善于处理少数情况。

    近年来神经网络的发展,神经模型提供了隐式地学习input and response pairs之间的语义和语法关系的能力,并以常规SMT-based和IR-based都不可能的方式捕获上下文相关性。由于这些优点,神经生成模型能够产生更具体,一致和有意义的对话反应。但是,还有一些重要的问题仍然没有解决:现在的系统往往会产生简单而迟钝的反应,比如

    “我不知道你在说什么”,这明显阻碍了谈话继续进行;
    
    很难保持对话系统一致的身份或角色元素(背景事实或用户简介),语言行为或交互风格;
    
    目前的系统往往只关注单轮对话,或者最多两次,因为很难赋予系统长期的计划能力,进行流畅,连贯,有意义的多回合对话。
    
    该博士论文将在以后几章解决这些问题,我也会在我的[对话系统专栏](http://blog.csdn.net/column/details/18405.html)详细分析解决方法。
    

1.1.2 The Frame-based Dialogue Systems

基于框架的对话系统常用方法是有限状态机,它根据框架向用户提出一系列预定义的问题,如果客户提供答案,则转向下一个问题;如果客户提供的不是答案,则忽略客户的任何事情。更复杂的体系结构允许系统和用户之间的对话的主动性在各个点上移动。

基于框架的系统已经成功地用于各种应用,例如预订机票,预订餐馆等等,其中一些已经在我们的日常生活中被使用。基于框架的系统最大的优点是系统的目标是明确定义的,预定义的框架对对话应该如何进行给出了非常明确的指导。但是另一方面,它的局限性很明显:基于框架的系统严重依赖复杂的手工模式或规则,而这些规则是昂贵的;当系统适应新的领域或旧的领域变化时,规则必须被重建,使得系统难以扩展。更广泛地说,它并没有触及人类交谈中涉及的复杂的语言特征,例如语境连贯性,词语使用(包括语义和句法),个性化,因此不能捕捉人类交谈的复杂性和本质。

基于框架的对话系统并不是本文研究的重点。

1.1.3 The Question-Answering (QA) Based Dialogue System

第三种对话系统是基于QA的对话系统,它与开发自动化的个人助理系统(如苹果的Siri)密切相关。对话代理需要回答客户关于不同主题的问题,例如天气状况,交通堵塞,新闻,股价,用户时间表,零售价格等。

在现有文献中缺乏开发交互式QA机器人如何从在线反馈中学习:在犯错的时候调整自己的模型;在得到的反馈是积极的时候强化模型。机器人最初是在一个特定领域的数据集上,以监督的方式进行训练的,因此在发布之前将机器人暴露在不同的环境中(例如,更多样化的自然语言与真人交谈时的话语使用,以及各种特殊情况等)。目前没有任何文献讨论如何通过包含各种反馈信号来有效地从在线反馈中改善问答系统的状况。本文试图解决这些问题。

1.2 本文解决的问题

1.2.1 开放领域的对话生成

该博士论文解决的问题:

  1. 无聊的对话
  2. 对话系统一致的身份
  3. 长期对话的生成
  4. 对话生成的对抗性学习

无聊的对话

一个实用的对话生成系统,应该能够输出多样和有趣的语法和连贯的反应。然而,在实践中,神经交谈模型表现出倾向于产生沉闷,琐碎或无聊的反应,通常涉及高频短语,”I don’t know.” 或者 “I’m OK”。这是因为在实际的数据集中”I don’t know.” 或者 “I’m OK”这样的短语与其他的回答相比出现的更频繁,然后通过模型的训练,这样的短语会被认为是更安全的回答。那么要怎样对模型进行改变,来消除无聊的对话的生成?

直观地说,我们不仅需要捕获response对query的依赖,还需要反过来,捕获query对response的依赖。即对于大多数query,”I don’t know.”这样的序列回答的可能性很高,但是反过来却不一样,因为给定”I don’t know.”却很难猜测原始的输入query。

所以,建议通过使用最大互信息(MMI)来实现这个直观的想法,作为衡量输入和输出之间相互依赖性的优化目标,而不是从传统MLE目标函数中的源到目标的单向依赖。我们提出了使用MMI作为目标函数的神经生成模型的实际训练和解码策略。这在第三章将会被重点讲到。

对话系统一致的身份

当前对话系统的另一个问题是缺乏对话系统身份的一致性:如果一个人向机器人提出几个问题,那么不能保证机器人的答案在身份,性格和语气等方面是一致的。因为目前的对话系统响应是根据预先训练的模型分配的概率来选择的,因此模型没有身份一致性的能力。

作者基于Seq-to-Seq模型提出了两种角色模型,一个是单bot的Spearker Model,另一个是双bot的Spearker-Addressee Model。这部分内容可以参考博士论文的第四章以及他在2016年发表在ACL的论文“ A persona-based neural conversation model”。

长期对话

当前的对话生成模型一般是单轮对话的会话语境。但是,这并不能模仿我们人类的说话方式。在人类的日常交谈中,每个人类对话事件都包含数十次,甚至数百次对话,而不仅仅是一次。因此我们需要一个对话框架,能够(1)描述开发者定义的奖励,更好地模仿chatbot开发的真正目标(2)在持续的对话中模拟生成的响应的长期影响。因此作者采用已经在MDP和POMDP对话系统中广泛应用的强化学习的方法,优化对话系统中的长期奖励。并且提出了三种奖励的公式:forward-looking、informative、coherent,最后使用policy gradient的方法进行训练。这部分内容请参考博士论文的第五章进行详细介绍,或者参考其在2016年发表在EMNLP的文章“Deep Reinforcement Learning for Dialogue Generation”

对话生成的对抗性学习

开放领域的生成对话旨在根据输入产生有意义和一致的对话响应。目前的系统使用模仿学习或模仿学习的变种来逼近这样一个目标:根据对话历史预测人类对话中的下一个对话话语。尽管取得了成功,但由于这个过于简化的培训目标而出现了许多问题:答复非常单调乏味,重复性和短视。一个好的对话系统应该产生与人类对话无法区分的回答,即通过图灵测试。

因此,作者使用了计算机视觉领域的对抗训练的方法,使用两个模型,一个生成器(SEQ2SEQ模型的形式)定义生成序列的概率;一个鉴别器,将对话标记为人类生成或者机器生成。这个鉴别器类似于图灵测试中的评估器。模型产生的回答的质量是通过使鉴别器相信它是一个人类的话语来衡量的。鉴别器的输出被用作对生成器的reword,推动模型产生与人类生成的对话不可区分的话语。

实验结果表明,对抗性学习的方法比使用MLE目标函数训练的标准SEQ2SEQ模型产生更多的交互式,有趣和非重复性响应。这部分内容会在第六章进行介绍,或者参考其在2017年发表在EMNLP上的文章“Adversarial learning for neural dialogue generation”。

1.2.2 交互式QA对话机器人

接下来讨论模型如何通过online学习完善自己,使得交互性更强。要求其可以:

  1. 学会向人类提问,何时何处问什么
  2. 从online学习,根据错误改进自己

通过提问进行交互学习

目前问答系统遇到自己回答不了的问题时(没见过的表达形式,自己不知道的东西等情况),往往会做出很差的回应或者重定向到其他资源(展示搜索网页的结果)。但我们更希望机器人在遇到这种问题时可以通过向对方提问的方式来进行交互式问答进而解决该问题。可以通过离线学习或者在线强化学习的方式进行训练。这部分内容将会在第七章进行介绍,也可以参考其在2017年发表在ICLR上的论文“Learning through dialogue interactions by asking questions”。

Human-in-the-Loop的对话学习

目前的对话机器人大都使用固定的数据集提前训练好之后就开始使用,但很多情况下我们需要机器人上线之后不断地根据具体环境改善自己,也就是要进行在线学习,根据对方的反馈来不断地调整自己。所以作者使用一个teacher-student的对话数据集并结合强化学习进行训练。这部分工作将在第八章进行介绍,也可以参考其2017年发表在ICLR上的文章“Dialogue learning with human-in-the-loop”。

第二章 背景知识

第二章主要介绍论文中会使用的数学知识,主要包括seq2seq、记忆网络和策略梯度方法。如果都看过的同学可以略过该章节。

2.1 seq2seq生成

SEQ2SEQ 模型可以被视为一个用输入内容生成目标句的基础框架,适用于多种自然语言生成任务,例如利用给定的英文句子生成法语句子的机器翻译;通过生成响应功能在接收到源信息时生成响应;在问答任务中针对问题做出回答;或是对一段文档生成总结性短句等等。

该节介绍了语言模型基础,循环神经网络和长短期记忆网络(LSTM),它们被视为SEQ2SEQ 模型的基础。随后,详细解读 SEQ2SEQ 模型的基础。最后,讨论不同 SEQ2SEQ 模型的算法,如注意力 (attention) 机制。

2.2 记忆网络

记忆网络是一类神经网络模型,可以通过操作内存中的内容(存储、取回、过滤和重用)来进行自然语言推理。记忆网络中的存储器部分可以嵌入长期记忆(例如,关于真实世界的常识)和短期上下文(例如,最近的几段对话)。记忆网络已被成功地应用于很多自然语言任务中了,例如问答系统,语言建模以及对话。

2.3 策略梯度方法

策略梯度法是一类强化学习模型,通过使用梯度下降预测奖励的参数化策略来学习参数。与其他强化学习模型(如 Q 学习模型)比较而言,策略梯度方法不会受到如缺乏价值函数等方面的问题(因为它不需要明确估算价值函数),或由于高维空间连续状态或动作导致难以控制。

第三章及以后

第三章以后,作者就开始分别介绍在博士期间发表的论文,详细的解析会陆续发表在该专栏。

你可能感兴趣的:(深度学习Tensorflow,对话系统,对话系统)