对话管理模型背景
从人工智能研究的初期开始,人们就致力于开发高度智能化的人机对话系统。艾伦·图灵(Alan Turing)在1950年提出图灵测试[1],认为如果人类无法区分和他对话交谈的是机器还是人类,那么就可以说机器通过了图灵测试,拥有高度的智能。第一代对话系统主要是基于规则的对话系统,例如1966年MIT开发的ELIZA系统[2]是一个利用模版匹配方法的心理医疗聊天机器人,再如1970年代开始流行的基于流程图的对话系统,采用有限状态自动机模型建模对话流中的状态转移。它们的优点是内部逻辑透明,易于分析调试,但是高度依赖专家的人工干预,灵活性和可拓展性很差。
随着大数据技术的兴起,出现了基于统计学方法的数据驱动的第二代对话系统(以下简称统计对话系统)。在这个阶段,增强学习也开始被广泛研究运用,其中最具代表性的是剑桥大学Steve Young教授于2005年提出的基于部分可见马尔可夫决策过程(Partially Observable Markov Decision Process , POMDP)的统计对话系统[3]。该系统在鲁棒性上显著地优于基于规则的对话系统,它通过对观测到的语音识别结果进行贝叶斯推断,维护每轮对话状态,再根据对话状态进行对话策略的选择,从而生成自然语言回复。POMDP-based 对话系统采用了增强学习的框架,通过不断和用户模拟器或者真实用户进行交互试错,得到奖励得分来优化对话策略。统计对话系统是一个模块化系统,它避免了对专家的高度依赖,但是缺点是模型难以维护,可拓展性也比较受限。
近些年,伴随着深度学习在图像、语音及文本领域的重大突破,出现了以运用深度学习为主要方法的第三代对话系统,该系统依然延续了统计对话系统的框架,但各个模块都采用了神经网络模型。由于神经网络模型表征能力强,语言分类或生成的能力大幅提高,因此一个重要的变化趋势是自然语言理解的模型从之前的产生式模型(如贝叶斯网络)演变成为深度鉴别式模型(如CNN、DNN、RNN)[5],对话状态的获取不再是利用贝叶斯后验判决得到,而是直接计算最大条件概率。在对话策略的优化上大家也开始采用深度增强学习模型[6]。另一方面,由于端到端序列到序列技术在机器翻译任务上的成功,使得设计端到端对话系统成为可能,Facebook研究者提出了基于记忆网络的任务对话系统[4],为研究第三代对话系统中的端到端任务导向型对话系统提出了新的方向。总的来说,第三代对话系统效果优于第二代系统,但是需要大量带标注数据才能进行有效训练,因此提升模型的跨领域的迁移拓展能力成为热门的研究方向。
常见的对话系统可分为三类:
聊天型,任务导向型和问答型。聊天型对话的目标是要产生有趣且富有信息量的自然回复使得人机对话可以持续进行下去[7]。
问答型对话多指一问一答,用户提出一个问题,系统通过对问题进行解析和知识库查找以返回正确答案[8]。任务导向型对话(以下简称任务型对话)则是指由任务驱动的多轮对话,机器需要通过理解、主动询问、澄清等方式来确定用户的目标,调用相应的API查询后,返回正确结果,完成用户需求。通常,任务型对话可以被理解为一个序列决策过程,机器需要在对话过程中,通过理解用户语句更新维护内部的对话状态,再根据当前的对话状态选择下一步的最优动作(例如确认需求,询问限制条件,提供结果等等),从而完成任务。
任务型对话系统从结构上可分成两类,一类是 pipeline系统,采用模块化结构[5](如图 1),一般包括四个关键模块:
- 自然语言理解(Natural Language Understanding, NLU):对用户的文本输入进行识别解析,得到槽值和意图等计算机可理解的语义标签。
- 对话状态跟踪(Dialog State Tracking, DST):根据对话历史,维护当前对话状态,对话状态是对整个对话历史的累积语义表示,一般就是槽值对(slot-value pairs)。
- 对话策略(Dialog Policy):根据当前对话状态输出下一步系统动作。一般对话状态跟踪模块和对话策略模块统称为对话管理模块(Dialog manager, DM)。
- 自然语言生成(Natural Language Generation, NLG):将系统动作转换成自然语言输出。
这种模块化的系统结构的可解释性强,易于落地,大部分业界的实用性任务型对话系统都采用的此结构。但是其缺点是不够灵活,各个模块之间相对独立,难以联合调优,适应变化的应用场景。并且由于模块之间的误差会层层累积,单一模块的升级也可能需要整个系统一起调整。
图 1. 任务导向型对话系统的模块化结构[41]
任务型对话系统的另一种实现是端到端系统,也是近年来学界比较热门的方向9[11](如图 2),这类结构希望训练一个从用户端自然语言输入到机器端自然语言输出的整体映射关系,具有灵活性强、可拓展性高的特点,减少了设计过程中的人工成本,打破了传统模块之间的隔离。然而,端到端模型对数据的数量和质量要求很高,并且对于填槽、API调用等过程的建模不够明确,现阶段业界应用效果有限,仍处在探索中。
图 2. 任务导向型对话系统的端到端结构[41]
随着用户对产品体验的要求逐渐提高,实际对话场景更加复杂,对话管理模块也需要更多的改进和创新。传统的对话管理模型通常是建立在一个明确的话术体系内(即先查找再问询最后结束),一般会预定义好系统动作空间、用户意图空间和对话本体,但是实际中用户的行为变化难测,系统的应答能力十分有限,这就会导致传统对话系统可拓性差的问题(难以处理预定义之外的情况)。另外,在很多的真实业界场景,存在大量的冷启动问题,缺少足量的标注对话数据,数据的清洗标注成本代价高昂。而在模型训练上,基于深度增强学习的对话管理模型一般都需要大量的数据,大部分论文的实验都表明,训练好一个对话模型通常需要几百个完整的对话session,这样低下的训练效率阻碍了实际中对话系统的快速开发和迭代。
综上,针对传统对话管理模型的诸多局限,近几年学界和业界的研究者们都开始将焦点放在如何加强对话管理模型的实用性上,具体来说有三大问题:
- 可拓展性差
- 标注数据少
- 训练效率低
我们将按照这三个方向,为大家介绍近期最新的研究成果。
对话管理模型研究前沿介绍
对话管理模型痛点一:可拓展性差
如前文所述,对话管理器由两部分组成:对话状态跟踪器(DST)和对话策略(dialog policy)。传统的DST研究中,最具代表的是剑桥大学的学者们在2017年提出的神经信度跟踪模型(neural belief tracker, NBT)[12],利用神经网络来解决单领域复杂对话的对话状态跟踪问题。NBT 通过表征学习(representation learning)来编码上轮系统动作、本轮用户语句和候选槽值对,在高维空间中计算语义的相似性,从而检测出本轮用户提到的槽值。因此NBT可以不依赖于人工构建语义词典,只需借助槽值对的词向量表示就能识别出训练集未见但语义上相似的槽值,实现槽值的可拓展。后续地,剑桥学者们对NBT进一步改进13,将输入的槽值对改成领域-槽-值三元组,每轮识别的结果采用模型学习而非人工规则的方法进行累积,所有数据采用同一个模型训练,从而实现不同领域间的知识共享,模型的总参数也不随领域数目的增加而增加。在传统的Dialogue Policy研究领域中,最具代表性的是剑桥学者们6提出的基于ACER方法的策略优化。
通过结合 Experience replay 技巧,作者分别尝试了trust region actor-critic 模型和episodic natural actor-critic 模型,验证了AC系列的深度增强学习算法在样本利用效率、算法收敛性和对话成功率上都达到了当时最好的表现。