最新综述:对话系统之用户模拟器

本文探讨了用户模拟器在对话系统中的基础,包括对话目标和泛化能力。介绍了几种实现方法,如基于议程的模型和序列到序列模型,并指出其局限性。此外,讨论了评价方式和面临的主要挑战,强调了自动化和一致性的重要性。文章引用多篇相关研究,为该领域的进一步发展提供了参考。
摘要由CSDN通过智能技术生成
640
作者丨唐呈光、戴音培、李永彬、孙健 单位丨阿里巴巴智能服务事业部小蜜北京团队

用户模拟器基础


用户模拟器产生背景
近几年来,强化学习在任务导向型对话系统中得到了广泛的应用,对话系统通常被统计建模成为一个马尔科夫决策过程(Markov Decision Process)模型,通过随机优化的方法来学习对话策略。
任务导向型对话系统用于帮助用户完成某个任务如查电影、找餐馆等,它一般由四个模块组成:自然语言理解模块(Natural Language Understanding, NLU)、对话状态跟踪模块(Dialog State Tracking, DST)、对话策略模块(Dialog Policy, DP)和自然语言生成模块(Natural language Generation, NLG),其中 DST 和 DP 合称为对话管理模块


在和用户的每轮交互过程中,对话系统利用 NLU 将用户的语句解析成为机器可理解的语义标签,并通过 DST 维护一个内部的对话状态作为整个对话历史的紧凑表示,根据此状态使用 DP 选择合适的对话动作,最后通过 NLG 将对话动作转成自然语言回复。对话系统通过和用户进行交互得到的对话数据和使用得分则可用于进行模型的强化学习训练。


然而在实际中,和真实用户的交互成本昂贵,数据回流周期慢,不足以支持模型的快速迭代,因此研究者们通常会构建一个用户模拟器(User Simulator, US)作为对话系统的交互环境来进行闭环训练。有了用户模拟器产生任意多的数据,对话系统可以对状态空间和动作空间进行充分地探索以寻找最优策略。


一个效果良好的用户模拟器,我们期望它具备以下 3 个特征:


  • 有一个总体的对话目标,能够生成上下文连贯的用户动作;
  • 有足够的泛化能力,在语料中未出现的对话情形里也能生成合理的行为;
  • 可以给出定量的反馈评分用于指导模型学习优化。

为了实现以上目标,学术界做了大量的研究工作,从最基础的 bi-gram 模型 [4],到经典实用的 Agenda-based的方法 [2],再到最近基于深度学习的用户模型 [9, 10],用户模拟器的效果得到了显著提升,也为对话模型的训练提供了有效的方法。


用户模拟器的基本结构
图 1 是一个比较典型的用户模拟器 [1],对话开始时用户模拟器基于 User Goal(用户目标)发出一个话术:“Are there any action movies to see this weekend?”(这个周末有什么动作片可以看的吗?),这句话进到对话系统的自然语言理解模块和对话管理模块后,生成一句系统动作:“request_location”(询问地点)。
简便起见,这里省略掉系统的 NLG 模块,系统回复直接送到用户模拟器的用户模型(User Model),通过用户状态更新和行为策略选择,生成用户对话行为:“inform(location=San Francisco)”(告知地点为旧金山),接下来经过 Error Model(可选)和 NLG 模块,生成对应的自然语言,比如:“San Francisco, please.”(帮我订旧金山的)。以此往复,用户模拟器和对话系统持续多轮交互,直到对话结束。


640  图1. 用户模拟器(蓝色部分)和对话系统(红色部分)


从上面的过程我们可以看到,典型的用户模拟器和对话系统的结构比较相似,包含以下 4 个基本组成部分:
1. 用户目标(User Goal):用户模拟的第一步就是生成一个用户对话的目标,对话系统对此是不可知的,但它需要通过多轮对话交互来帮助用户完成该目标。一般来说,用户目标的定义和两种槽位相关: 可告知槽(informable slots)和可问询槽(requestable slots),前者形如“槽=值”是用户用于查询的约束条件,后者则是用户希望向系统问询的属性。
例如:用户目标是 “inform(type=movie, genre=action, location=San Francisco, date=this weekend),request(price)”表达的是用户的目标是想要找一部本周在 San Francisco 上映的动作片,找到电影后再进一步问询电影票的价格属性。有了明确的对用户目标的建模,我们就可以保证用户的回复具有一定的任务导向,而不是闲聊。
2. 用户模型(User Model):用户模型对应着对话系统的对话管理模块,它的任务是根据对话历史生成当前的用户动作。用户动作是预先定义好的语义标签,例如“inform, request, greet, bye”等等。用户动作的选择应当合理且多样,能够模拟出真实用户的行为。用户模型是用户模拟器的核心组成部分,在接下来的章节里我们将会详细介绍各种具体模型和方法。
3. 误差模型(Error Model):它接在 User Model 下游,负责模拟噪声,对用户行为进行扰动以模拟真实交互环境下不确定性。简单的方式有:随机用不正确的意图替换正确的意图、随机替换为不正确的槽位、随机替换为不正确的槽值等;复杂的方式有模拟基于 ASR 或 NLU 混淆的错误。


4. 自然语言生成(NLG):如果用户模拟器需要输出自然语言回复,就需要 NLG 模型将用户动作转换成自然语言表述。例如用户动作标签“inform(type=movie, genre=action, date=this weekend)” 进行 NLG 模块后生成自然语句“Are there any action movies to see this weekend?”。

用户模拟器的实现方法


我们将用户模拟器的实现方法大致分成两类:基于规则的方法基于模型学习的方法。我们将介绍这些方法中各自具有代表性的论文。

基于规则的方法


基于规则的方法需要专家手动构建,它的优点是可以冷启动,用户行为完全可控;缺点是代价大,覆盖度不够,在对话行为灵活性和多样性上比较不足,适用于话术简单清晰的填槽式对话任务。


基于规则的方法中使用最为广泛的是基于议程(Agenda-based)的方法 [2, 3],该方法对用户状态表示、状态转移、Agenda 更新、Goal 更新进行了精细建模,逻辑清晰,可落地性强,业界很多工作 [1, 15] 都基于该方法进行扩展和优化。
基于议程的方法通过一个栈的结构把对话的议程定下来,对话的过程就变成进栈和出栈的动作,上下文关联性很强,保证了用户动作生成的一致性,一般不会出现异常用户行为。但是,该方法在对话行为灵活性和多样性比较欠缺,在实操层面可以通过引入一些随机性提升灵活度。
基于议程的方法

代表论文:The Hidden Agenda User Simulation Model


论文链接:https://ieeexplore.ieee.org/document/4806280/?arnumber=4806280


640?wx_fmt=png


首先,作者认为人机对话可以形式化为一系列状态转换和对话行为序列。在任意时刻 t  ,用户在状态 S,采取动作640?wx_fmt=png ,过渡到中间状态 S',收到对话系统回复的动作640?wx_fmt=png,然后转换到下一个状态 S'',然后以此往复,循环下去。


640


根据马尔科夫假设,用户行为可以分解为三个模型:640?wx_fmt=png 用于建模用户动作选择,640?wx_fmt=png用于建模发出用户动作 640?wx_fmt=png 后用户状态转移到 S' 的概率,640?wx_fmt=png用于建模接收到系统动作 640?wx_fmt=png 后用户状态转移到 S'' 的概率。


用户状态 S 被分为 2 部分表示:Agenda 的内容 A 和用户目标 G。


640?wx_fmt=png


G 由约束条件 C 和问询内容 R 组成。在对话的过程中,G 能保证用户行为是一致的且是任务导向的。


用户 Agenda 是一个类似堆栈的结构,它存储着待执行的用户对话行为(user dialogue act)。在对话开始时,使用系统数据库随机生成新的用户目标,然后会将用户目标中所有目标约束转换为告知行为(inform acts),所有的目标问询转换为问询行为(request acts)填充到用户 Agenda。在 Agenda 的底部,会添加一个 bye act 用于结束对话。


随着对话的进行,Agenda 和 Goal 会动态更新,并从 Agenda 的顶部弹出用户对话行为以形成本轮用户动作640?wx_fmt=png在接收到系统回复640?wx_fmt=png后,根据写好的规则新的用户动作会被压入到 Agenda 的栈顶,不相关的用户动作会被删除。当需要考虑动作的优先级时,栈顶的用户动作也可以临时被缓存起来先执行优先级高的动作,从而为模拟器提供简单的用户记忆模型。图 2 给出了用户目标和 Agenda 变化的示例。


640  图2. 表示用户目标和agenda的状态变化的示例
用户动作选择模型640?wx_fmt=png ,其中 δ 为狄拉克函数,A[N] 代表栈顶的元素, A[1] 代表栈底的元素, A[N-n+1..N] 代表在 Agenda 栈顶的 top-n 的用户动作 acts,该模型的直观理解是如果 640?wx_fmt=png 在 top-n 的 acts 里,那么 P 趋于 1,此时
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值