摘要
聊天机器人(chatbots)近来在产业界和学术界都得到了很大的关注。对于产业界中大多数用于完成任务的聊天机器人而言,人类干预是避免其在复杂的现实世界中出错的唯一方法。但是,就我们所知,目前还不存在对任务完成型聊天机器人与人类工作者协作建模的研究工作。我们在本论文中介绍了 CoChat,这是一种能够实现聊天机器人与人类工作者之间有效协作的对话管理框架。在 CoChat 中,人类工作者可以随时引入新的动作来应对之前未曾见过的情况。我们提出了一种记忆增强型分层 RNN(MemHRNN),以在 CoChat 中处理由即时引入新动作所导致的单样本学习(one-shot learning)难题。我们在真实世界数据集上进行了大量实验,结果很好地表明 CoChat 能够大量减轻人类工作者的工作量;与其它之前最先进的框架相比,CoChat 也能得到更好的用户满意率。
引言
任务完成型聊天机器人得到了产业界和学术界的很大关注。它们的目标是通过更自然的交互方式(即对话)来帮助用户完成特定任务(比如预订电影票)。任务完成型聊天机器人(简称 bot)的重点是成功完成任务,同时实现较高的用户满意度。对于这样的任务完成型 bot 而言,优良的对话管理器是一大关键组件。对话管理器以语言理解的结果为输入,然后决定应该采取哪种动作(比如询问电影名称)。因此,对话管理器直接控制对话流程,决定任务完成得成功或失败,并且还会影响用户满意度(Lee et al. 2010; Young et al. 2013)。
尽管用于开发自动对话管理器的方法有很多,但这些自动系统存在潜在的问题,因为它们没有与人类工作者一样的经验来帮助避免会对用户产生负面影响的严重错误,比如任务失败或让用户厌烦。目前,人类干预是在复杂真实世界环境中避免这种错误的唯一方法(Saunders et al. 2017)。此外,人类工作者已经深入参与了很多常见的任务完成型系统,比如呼叫中心。因此,建模 bot 与人类工作者之间的协作是一种合理的方法。这甚至可能是在很多真实世界应用中学习和使用对话管理器的唯一实用的方法。
在这篇论文中,我们提出了一种名叫 CoChat 的实用型对话管理框架,它可以实现 bot 与人类工作者之间的有效协作。就我们所知,我们的工作是首个建模任务完成型 bot 与人类工作者协作的研究,这种协作对很多真实世界应用而言都是必需的和合理的。在 CoChat 中,人类工作者可以随时干预学习过程;而且通过从标注过的对话日志中学习,从人类工作者的反馈中学习,和从用户的反馈中学习,对话管理器可以得到持续不断的改进。如图 1 所示,对话管理器首先通过监督学习进行初始化。之后,该 bot 可以与人类工作者协作,向他们提供动作建议以降低他们的工作量以及通过在线学习(online learning)持续不断地根据他们的反馈进行学习。当没有人类工作者时(比如下班时),如果用户愿意尝试该 bot,那么该 bot 可以直接与用户交互,其对话管理器可以通过强化学习得到进一步改进。简而言之,对话管理器可以不断得到提升以实现用户满意度的最大化以及在协作过程中减轻人类工作者的工作量。
图 1:CoChat 框架示意图
人类工作者的参与使得引入新的动作来处理复杂或未曾见过的情况成为可能,而这又为对话管理器带来学习新动作的难题。在(Lee et al. 2010; Su et al. 2017)等之前的研究中,对话管理器需要固定的动作集合,然后再学习从其中选择一个动作来处理每种情况。但是,当有人类工作者参与进来处理复杂或未曾见过的情况时,这种设定是不现实的,因为为了促进任务完成,可能会对原始动作集之外的新动作有迫切的需求。比如,客户支持中心可能会收到他们最新产品的问题的相关问题,这些问题可能前所未见,所以这样的 bot 无法处理。然后“告诉用户如何处理这些新问题”就成了新的必要动作,而且这些动作将会由负责处理这些情况的人类工作者提供。对话管理器也应该学习这个新动作,以便之后更好地提供动作建议和处理类似的情况。这种学习新动作的难题之前从未得到过很好的研究。尽管之前的研究工作可以通过重新训练它们对应的模型来适应新动作,但强化学习等学习过程往往无法完全准确地重现,因此这个方法有丢失已经积累的习得知识的风险。
为了实现我们提出的 CoChat 框架和更好地处理学习新动作的难题,我们进一步提出了一种全新的对话管理器模型 MemHRNN。我们提出的 MemHRNN 由一个分层循环神经网络(HRNN)(Li, Luong, and Dan 2015; Xie et al. 2016; Yang; and Huang 2016; Sordoni et al. 2015)和一个外部记忆构成。其中 HRNN 将对话历史、语言理解结果和 API 调用结果等外部信息组合起来作为输入,然后输出所有动作的概率分布以用于动作选择。当出现新动作时,该 HRNN 的架构可以相应地改变,而不会丢失在之前的学习过程中积累的知识。最重要的是,我们还在 MemHRNN 中进一步引入了外部记忆来处理由即时引入新动作所导致的单样本学习难题,即这些新动作出现的次数太少,让 HRNN 难以学习与它们有关的有效策略。具体而言,我们会将新动作的出现记录在记忆中,然后利用它们来推导选择这些新动作的概率,然后这些概率会与 HRNN 的输出合并起来提升动作选择的表现。
我们在两个真实任务上进行了实验:i)预订餐厅;ii)预订电影票。实验结果表明:1)在 CoChat 中,当有人类工作者时,可以实现很高的用户满意度。此外,通过为这两个任务提供动作建议,由 MemHRNN 学习得到的对话管理器可以将工作者的工作量分别减少 91.35% 和 86.32%。2)在连续学习后,所学习到的对话管理器能实现很高的用户满意率,分别能达到人类工作者所实现的用户满意率的 97.04% 和 92.62%。3)当新动作出现时,MemHRNN 可以通过平滑的架构适应和利用外部记忆来快速学习策略以应对这些新动作。
我们的工作的贡献总结如下:
- 我们提出了 CoChat,这是一种实用的对话管理学习框架,能建模 bot 与人类工作者之间的协作来完成任务。
- 我们提出了一种记忆增强型分层 RNN 模型(MemHRNN)来实现 CoChat 框架和处理由即时引入新动作所导致的单样本学习难题。
相关工作
在任务完成型 bot 中,对话管理器决定了在当前对话状态条件下的下一个动作应该是什么(Young 2006; Zhao and Eskenazi 2016)。一般而言,对话状态是根据消息历史、之前的动作、自然语言理解(NLU)结果等信息推导得出的。除了人工设计规则之外,研究者们已经为开发这样的对话管理器提出了多种不同的基于学习的方法。
受非面向任务型 bot(Vinyals and Le 2015; Shang, Lu, and Li 2015)的启发,研究者们已经提出了多种通过监督学习训练对话管理器的方法。Wen et al. (2016) 提出了一种基于神经网络的可训练对话系统和一种收集对话数据的新方法。Bordes and Weston (2016) 报告了一种基于记忆网络的端到端对话系统,可以得到出色但还不完美的表现。Eric and Manning (2017) 描述了一种复制增强型(copy-augmented)序列到序列架构,该架构也可实现优良的对话管理表现。
对话管理器也可以通过强化学习方法学习得到(Levin, Pieraccini, and Eckert 1998; Williams and Young 2007; Young et al. 2013)。具体而言,该学习过程可以被建模为部分可观察马尔可夫决策过程(POMDP)。这种对话管理器会直接与用户进行交互,然后它能在“试错”过程中根据有延迟的奖励进行学习。但是,对于产业界 bot 而言,通过强化学习从头开始学习对话管理器可能会有风险和无法实现。这种过程可能会执行随机探索,甚至有时候无法学习到可接受的结果,Williams and Zweig (2016) 的实验就表明了这一点。
最近还有研究者提出通过结合监督学习和强化学习来学习对话管理器。Zhao and Eskenazi (2016) 提出了一种结合两者优势的算法,可以实现更快的学习速度。Williams and Zweig (2016) 报告指出使用监督学习进行预训练可以显著加速强化学习的学习速率。Su et al. (2016) 表明监督学习是有效的,而且在监督学习之后再使用强化学习可以进一步实现性能提升——尤其是在高噪声条件下。
在这篇论文中,我们提出了一种名为 CoChat 的新型对话管理学习框架。CoChat 可以为完成任务建模 bot 和人类工作者之间的协作——就我们所知这之前还从未被考虑过。CoChat 不仅像之前的工作一样结合了监督学习和强化学习,而且还结合了在线学习以在 bot- 工作者协作过程中更好地向人类工作者学习。此外,不同于之前的工作预设对话管理器有固定的动作集,CoChat 支持由人类工作者引入的新动作。因为新动作一般出现次数较少,所以学习如何选择它们本质上是一个单样本学习问题(Santoro et al. 2016; Graves, Wayne, and Danihelka 2014)。为了解决这个问题,我们提出了一种记忆增强型分层 RNN 模型(MemHRNN)来实现 CoChat。带有外部记忆的神经网络已经在机器翻译等多种 NLP 问题(Tang et al. 2016; Wang et al. 2016)上被成功用于解决类似的难题。
CoChat 框架
如图 1 所示,我们提出的学习框架 CoChat 能够实现 bot 与人类工作者之间的协作,从而可以最大限度降低失败风险和确保用户满意度。同时,它还有助于最小化协作过程中人类工作者的工作量。简而言之,CoChat 结合了基于可用有标注日志的监督学习、基于人类工作者给出的反馈的在线学习和基于用户给出的有延迟奖励 / 反馈的强化学习,以便持续不断地改进对话管理器。
具体而言,当只有少量可用的有标注用户 - 工作者对话时,对话管理器首先会通过监督学习进行初始化,从而有一个更高的起点。
然后上线该对话管理器以向人类工作者提供动作建议,实现协作以及帮助他们更高效地工作。一般而言,人类工作者可以毫不费力地选择一个建议的动作,或在建议动作不适宜时输入一个新动作。建议动作的接受 / 拒绝和新输入动作等都是反馈,可以被用于进一步通过在线学习增强该对话管理器。特别是当人类工作者输入新动作时,CoChat 也有望学习它们以便更好地建议动作和处理未来相似的情况。实际上,引入新动作可能会带来单样本学习难题。我们提出的用于实现 CoChat 的模型 MemHRNN 利用了外部记忆来处理这样的难题,具体将在下面论述。
当没有人类工作者(比如下班时)而用户又愿意尝试该 bot 时,对话管理器可以直接与用户交互。在这些情况下,对话管理器可以根据用户给出的有延迟的奖励 / 反馈通过强化学习获得进一步的提升,这些奖励 / 反馈与任务完成的成败、用户满意度等有关。
在 CoChat 中,在通过监督学习初始化之后,又会根据是否有人类工作者与 bot 协作的情况依次执行在线学习和强化学习。每一步都可以根据之前的步骤而获得进一步的提升。因此,对话管理器可以通过监督学习、在线学习和强化学习而获得持续提升。
用于实现 CoChat 的 MemHRNN
为了实现 CoChat 框架,我们提出了一种名为 MemHRNN 的记忆增强型分层 RNN 模型。MemHRNN 由一个基于分层 RNN 的学习模型(即 HRNN)和一个外部记忆构成。其中外部记忆仅在在线学习阶段工作,而 HRNN 则在所有学习阶段都会一直工作。用 θ 表示 HRNN 中的所有参数,θ 在所有学习过程中是共享的而且会持续得到优化。我们将在以下小节中详细阐述 HRNN 和所有学习过程。
图 2:我们提出的用于实现 CoChat 框架和学习对话管理器的 MemHRNN 模型示意图,另外还给出了一个来自餐厅预定任务的真实完整示例。其中带下划线的词是标记的实体,加框的词是对应话语的动作标签。
用于所有学习过程的 HRNN
MemHRNN 中的 HRNN 由单回合对话特征编码器(turn-level feature encoder)和动作选择器(action selector)构成。任意对话都可被分割为多个回合,每个回合都包含一个用户话语和人类工作者或 bot 所采取的动作。这里会应用单回合对话特征编码器来处理一场对话中的每个回合,以得到该回合对应的特征向量。然后动作选择器会以这种单回合对话层面的特征向量为输入来决定选择哪个动作。下面我们将对这两者进行介绍,其中重要的符号标记总结在表 1 中。
表 1:与第 m 回合对话相关的特征向量
单回合对话特征编码器 设在第 m 回合对话,用户话语 _u_m 被定义为\(u^m = \){\(w^{m,1},w^{m,2},…,w^{m,n_m}\)},其中 nm 是词的数量。然后再利用如下用 LSTM1 表示的长短期记忆网络(LSTM)(Hochreiter and Schmidhuber 1997)来逐个编码每个词的嵌入向量。
其中 ωm,j 是词 wm,j 的嵌入向量, um,j-1 是为之前的 (j-1) 个词所编码的特征向量。因此,_u_m 的特征向量 um 是 LSTM1 的最后一个输出,即\(u^m=u^{m,n_m}\)
对于第 m 回合对话,我们也考虑以下特征。1)实体表格(entity form),收集用于完成任务的信息。如图 2 所示,它一般包含两类信息,即从用户话语中提取的实体和由 API 调用返回的信息。这里我们只简单地将实体表格编码成二元(0 或 1)特征向量 vm,表示是否提取出了实体或 API 调用是否返回了真实 / 可用的数据。2)在第 m 回合所 _ 采取的动作(taken action)_,表示为 na 维的 1-hot 向量 wm,其中 na 是动作的数量。仅有对应于所采取的动作的元素值为 1,其余元素皆为 0。
对于第 m 回合对话,um、vm 和 wm 被连接合并在一起成为特征向量\(\hat{x}^m=[u^m,v^m,w^m]\),然后再被送入一个全连接层 FN 以学习新的特征向量 xm。
使用 xm 而不用 \({\hat{x}}^m\) 的原因是使用 FN 可以帮助更好地保留积累的知识,尤其是当涉及到新动作且需要更改 HRNN 时。这将在后面关于在线学习的小节中更详细地解释。
动作选择器 动作选择器的输入是历史对话回合和当前对话回合,然后再据此预测每个候选动作被选中的概率。
设当前对话回合为第 m 回合。再利用与分层 LSTM(Li, Luong, and Dan 2015; Xie et al. 2016; Yang; and Huang 2016; Sordoni et al. 2015)类似的另一个 LSTM(记为 LSTM2,如下所示)来将之前的 (m-1) 个对话回合逐个编码到向量 zm 中。
其中 zm-1 是编码了之前 (m-2) 回合对话的特征向量,并且可以以一种相同的方式递归式地导出。对于当前回合,因为还没有采取任何动作,所以我们只能导出用户话语的特征向量 um 和实体表格的特征向量 vm,如表 1 中的定义。然后 zm、um 和 vm 会连接合并成一个综合向量 sm=[zm, um, vm],然后再被送入一个二层全连接神经网络 FN2。注意我们为第二层使用了一个 softmax 函数,以得到用于选择所有候选动作的概率分布 pm:
根据日志进行学习:监督学习
当有可用的有标注用户- 工作者对话日志时,对话管理器通过监督学习进行初始化以模仿人类工作者。具体来说,在这些日志的每一个对话回合中,由人类选择的动作都被视为基本真值(ground-truth),表示为 one-hot 向量\(y^m\in\)\(\{0,1\}^{n_a}\),其中 m 是对话回合编号,na 是候选动作的数量。我们使用 HRNN 进行监督学习的目标是最小化 ym 与公式 (4) 中在所有动作上预测的概率分布 pm 之间的交叉熵,正如以下损失函数所示:
其中 θ 表示 HRNN 的所有参数,nd 是有标注日志中对话的回合数。
向人类工作者学习:在线学习
当该 bot 与人类工作者开始合作时,其对话管理器可以使用来自人类工作者的反馈获得提升。具体来说,在每个对话回合,该 bot 会向人类工作者建议 k 个动作。这 k 个动作是由 HRNN 与外部记忆共同决定的。人类工作者可以接受其中一个(即在前 n 个建议的动作中选择一个并直接将其用于与用户交互)或拒绝所有并输入另一个可以更好地处理当前对话状态的动作。然后HRNN 和外部记忆会进行对应更新。
更新 HRNN 根据人类工作者是否输入了已有动作集之外的新动作,HRNN 的更新方式也不一样。
情况 1:当人类工作者接受了一个建议的动作或输入了一个已有的候选动作时,这样的反馈可以被当作是新标注的日志并被直接用于更新对话管理器。该模型会使用这些新收集的日志持续更新,从而使对话管理器更好地适用于随时间变化的动作选择。当有一小批新收集到的日志时,我们的目标是最小化以下的用于在线学习的损失函数。
其中 no 是这一小批新收集的日志中对话回合的数量,E( pm) 是用公式 (5) 中一样的方式定义的交叉熵,θ 表示 HRNN 的所有参数,θ’ 表示在收集到该小批量的日志之前 θ 的值。考虑到大多数情况下对话管理策略都是渐进变化的,我们增加了这个第二项以避免 θ 在在线学习过程中急剧变化,这也可以使学习过程更加稳定。这里的 λ 是一个平衡因子,我们根据实践经验将其设为 0.05。
情况 2:如果人类工作者输入了一个新动作,它就将被加入到候选动作集中,然后 HRNN 的网络架构就需要相应地更新。具体来说,HRNN 的单回合对话特征编码器和输出层将会改变。
对于单回合对话特征编码器的输入层,表 1 中特征向量 wm 的维度将会因新动作而增大 1;而 FN 的输出维度不会改变。然后我们在新添加的维度和 FN 的输出单元之间加入全连接。FN 原来的权重全部都会保留,而在新添加的连接上的权重会被初始化为接近 0 的值,这样在刚加入新动作时,FN 的效果仍能与之前的近乎一样。因为 FN 的输出维度不变,所以 LSTM2(这是编码历史对话回合的关键部分)的架构需要改变。因此在 HRNN 上加入新动作的影响就显著降低了,所以该学习模型可以尽可能多地保留积累的知识。这也是引入 FN 的原因。
至于 HRNN 的输出层(即 FN2 的最后一层),我们增加一个对应新动作的新维度,并且还在它与该层的输入单元之间加入全连接。类似地,为了使 HRNN 的效果在新动作刚加入时接近之前的效果,我们也将在新加入的连接上的权重初始化为接近于 0 的随机值。
在改变架构之后,HRNN 就将以情况 1 中一样的方式更新。
利用外部记忆 引入外部记忆的原因是为了处理由即时引入新动作所导致的单样本学习难题。具体而言,新动作的出现会被记录在外部记忆 M 中,然后再与 HRNN 一起被用于提供动作建议。下面详述了外部记忆的用法,其中为了简洁省略了对话回合编号 m。
在监督学习阶段中预定义的动作集之外的动作被视为新动作。新动作 a 的出现在记忆中被记录成关键值对 <a,r>,其中 r 表示动作发生的对话状态。因为 HRNN 为某个对话状态所推导出的表征总是会随其参数在优化阶段的更新而变化,所以我们这里利用了一种简化的方法来为记忆推导 r。具体来说,r 由两部分组成,即 r=[v, c],其中 v 是表 1 的实体表格,c 是一个背景向量(context vector),其是作为最后一个用户话语中词的嵌入向量的平均池化而得出的。
此外,当发生的新动作超出了预定义的阈值时,其对应的记录会被从记忆中删除。实际上,对于这些被删除的新动作,它们的出现应该足以让 HRNN 学习到有关它们的有效策略,使单样本学习难题得到很好的缓解,因此来自外部记忆的帮助对它们而言是微不足道的。这里我们将外部记忆中记录的动作表示为 A。
给定一个对话回合,HRNN 可以像公式 (4) 那样直接预测概率分布 p,以用于选择每个候选动作。而对于记忆,设对话回合的状态表示为\(\hat{r}=[\hat{v},\hat{c}]\) 且是按记录中对话回合状态一样的方式得到的。我们可以按以下方式将外部记忆与 HRNN 一起利用。
第一步:我们按以下方式计算\(\hat{r}\) 与任意记录中的情况 r 之间的相似度。
其中 α 是一个平衡因子,根据我们实验的经验设为 0.1,而 σ 是一个平滑参数。
第二条:我们定义了一个所有候选动作的相似度向量 h,其中 hi 的定义如下。
其中 ai 是第 i 个候选动作,R(ai) 表示记录中所有 ai 的出现情况。
因为新动作仅有少数出现情况记录在记忆中,所以应该以一种泛化更弱的有局限性的方式使用它们。也就是说,只有当对话状态\(\hat{r}\) 非常近似于其对应的记录中出现的某种出现情况时,我们才有可能选择 A 中的一个新动作。否则,我们可能倾向选择其它动作。为了实现这一点,我们推导了折现因子(discounted factor)β=sigmoid(max( h)),其中 max(h) 是 h 的最大值,sigmoid 表示一个 sigmoid 函数。然后我们以如下方式推导一个折现概率分布 q,以选择 A 中的新动作。
第三步:我们将 q 与来自 HRNN 的概率分布 p 融合成一个综合的概率分布\(\hat{P}\),如下所示。
然后 MemHRNN 将\(\hat{P}\) 中概率最高的 k 个动作建议给人类工作者。
向用户学习:强化学习
当 bot 有机会自己直接与用户交互和选择动作时,其对话管理器可以使用来自用户的有延迟奖励/ 反馈通过强化学习获得进一步提升,这些奖励/ 反馈一般是在整个对话结束之后收到的而且大都与任务完成的成败、用户满意度等有关。
在强化学习中,对话管理器在任意状态 sm(其中 m 表示对应的对话回合编号)的目标是选择能最大化累积的未来奖励的动作 am。因此,强化学习要按如下方式定义一个最优的动作- 价值函数。
其中 γ∈[0, 1] 是一个折现因子,r(m) 和 r(m+j) (j=1,2,…) 分别是第 m 个对话回合和后续回合所收到的奖励,π是最优的对话管理策略,因此 Q∗(s,a) 是当观察到 sm 是对话状态 s 时采取动作 a 作为 am 的最大折现累积奖励。
我们使用的 HRNN 类似于深度 Q 网络(DQN)(Mnih et al. 2015),并且已经通过监督学习和在线学习预训练过,以近似最优动作- 价值函数 Q(s,a;θ) ,其中 θ 是 HRNN 的所有参数。然后我们最小化以下损失函数以便为迭代式地更新θ执行 Q 学习(Mnih et al. 2015)。
其中θ− 表示该算法(Mnih et al. 2015)中目标网络的参数,s’ 和 r 分别是在状态 s 采取动作 a 后的新对话状态和收到的奖励,a’ 是 s’ 下的一个新动作。
总结
尽管监督学习、在线学习和强化学习可以具有不同的损失函数(即 LSL、LOL 和 LRL)和不同的模型参数更新方式,但它们都使用了同样的神经网络(即 θ)来分享它们学习到知识和根据彼此持续改进对话管理器。
实验
数据集和用户模拟器
我们雇佣了对预订餐厅和预订电影票这两项现实任务很熟悉的人类工作者和用户,并收集他们的对话为我们的实验构建了两个数据集。图 2 中有一个完整的对话示例,表 2 列出两个数据集的一些基本统计数据。这样的现实数据集可以更好地评估对话管理器的学习框架和模型的实用性。一般而言,我们将一个动作定义为在某些(可能为空)槽(slot)上所执行的一项或多项操作。操作包括“Get(取)”、“Select(选择)”和“ChitChat(闲聊)”等,如图 2 中所示。槽的值可以通过 API 调用获得,而且不同的值(比如不同的餐厅名)可以对应同一个动作。补充材料( http://irip.buaa.edu.cn/Research/luoxufang/CoChat_supp.pdf )提供了完整的动作列表。在收集这两个数据集时,我们还发现对话管理策略通常会随时间改变,动作集也会随时间增大。在我们的实验中,所有对话都会根据它们的收集时间戳按顺序输入学习过程。
表 2:所收集的数据集的基本统计情况
因为实验需要与用户进行大量交互,所以我们按照之前的工作(Schatzmann et al. 2007)使用收集到的对话构建了用户模拟器。然后我们使用它们生成了更多对话,以用于通过强化学习训练对话管理器和测试每个学习后的对话管理器。注意,为了更好地模拟真实用户,用户模拟器会随时间重建。与(Lipton et al. 2016)相似,我们设置强化学习奖励的方式如下:每个回合一个固定惩罚(即 -0.025)、一个用于成功完成任务的大奖励(即 1)和一个用于任务失败的小奖励(即 0.5)。
评估 CoChat 框架
我们通过在不同的框架下训练所提出的 MemHRNN 而对这些不同框架进行了比较,以了解 CoChat 能否更好地最大化用户满意度和最小化工作者的工作量。
设置 为了清楚说明 CoChat 中的每个学习过程,我们执行了如下实验。首先,为了跟踪真实世界情况,对话管理器是使用少量收集到的对话(即前 50 个)通过监督学习训练得到的。然后再在后续的对话上交替执行在线学习和强化学习。一个在线学习过程及其后续的强化学习过程组成一个学习期(learning period)。在每个学习期中,在线学习是在收集到的对话上执行的,而强化学习的执行使用的是根据在线学习中的对话所构建的用户模拟器。
参与比较的框架包括强化学习(RL)、监督学习(SL)和两者的组合方法(SL+RL)。在 RL 中,对话管理器仅使用强化学习从头开始训练。在 SL 中,对话管理器使用前 50 个收集到的对话通过监督学习训练得到,并且不会更新。SL+RL 是在使用监督学习进行初始化后再应用强化学习。在每个学习期,RL 框架和 SL+RL 框架的对话管理器的训练都使用了与 CoChat 所用的一样的用户模拟器。
至于表现指标,用户满意度是以奖励衡量的。具体来说,我们将测试奖励定义为框架在与用户模拟器交互了 100 次对话之后获得的每次对话平均奖励。为了衡量工作者的工作量,我们重点关注了 bot 与人类工作者协作并为他们提供动作建议的情况。为了衡量动作建议的表现,我们使用了前五命中率(top 5 hit rate),即工作者接受前五个建议动作中某个动作的对话回合所占百分比。命中率更高表示工作量越少。
结果 图 3 给出了不同框架的测试奖励跟踪曲线。我们可以观察得出:1)在最大化用户满意度方面,人类工作者的表现优于所有学习到的对话管理器,因此我们提出的有人类工作者参与的 CoChat 在有人类工作者时当然能够实现用户满意度的最大化;2)当学习到的对话管理器与用户直接交互时,通过 CoChat 学习到的对话管理器的表现优于使用其它框架学习的对话管理器,这充分表明了 CoChat 的优越性;3)由于对话管理策略的改变或出现的新动作,通过 CoChat 学习到的对话管理器的表现可能会在在线学习阶段(即 CoChat 中的在线学习)下降,但它在下降之后可以快速恢复,而不会像 SL 那样一直保持下降后的表现,这说明 CoChat 能更好地适应新策略/ 动作;4)除了策略改变或出现新动作的情况,一般情况下 CoChat 中的监督学习、在线学习和强化学习会共同让对话管理器的表现获得持续的提升。
图 3:人类工作者和所学习到的对话管理器的测试奖励的跟踪曲线
表 3 给出了不同的对话管理器在结束阶段(即最后 400 个对话)的平均测试奖励。在经过 3 个学习期之后,通过 CoChat 学习到的对话管理器在这两个任务上所获的奖励分别达到了人类工作者所获奖励的 97.04% 和 92.62%。
表 3:人类工作者和所学习到的对话管理器在结束阶段的测试奖励
我们报告了 CoChat 的 3 个在线学习过程中动作建议的前五命中率,并与 SL 的结果进行了比较,结果见表 4。可以看到,当 bot 建议 5 个动作时,通过 CoChat 学习到的 bot 可以减轻工作者 80%∼90% 的工作量。
图 4:在 3 个在线学习过程中动作建议的前五命中率
关于新动作的分析
关于新动作的统计情况 为了阐明解决新动作难题的必要性,我们进一步分析了真实世界数据集中某些关于新动作的统计数据。
图 4 给出了两个数据集中动作数量随所收集的对话数量的增多而增多的情况。可以看到,新动作随时间推移不断出现。
图 4:动作数量随所收集的对话数量而增多的跟踪曲线
此外,图 5 表明带有新动作的对话的比例在两个数据集中都大约为 20%,这说明新动作在出现之后在后续对话中也有频繁使用。因此,妥善处理新动作对学习得到优良的对话管理器而言是必要的。
图 5:两个数据集中带有新动作的对话的数量和相应百分比
用于处理新动作的 MemHRNN 为了验证我们提出的 MemHRNN 能否在在线学习过程中更好地处理新动作,我们在同样的学习过程中将其与其它之前最佳的模型进行了比较。
设置 在这里,所有模型首先都使用了前 50 个对话进行训练,然后再使用后续的 1440 个收集的对话来执行在线学习。这个学习过程将会涉及到新动作。对于这些用于比较的模型中不能处理新动作的模型,在训练时会略过带有新动作的对话回合。
结果 表 5 给出了所比较的模型给出的动作建议的前五命中率。可以看到,通过允许引入新动作和妥善处理对应的单样本学习难题,我们提出的 MemHRNN 可以向人类工作者提供更好的建议以减轻他们的工作量。
表 5:所比较的模型在两个数据集上的动作建议的前五命中率
利用外部记忆的优越性
设置 这里的实验设置和上面的实验一样。我们将我们提出的 MemHRNN 与没有使用记忆的 HRNN 进行了比较,以便了解外部记忆是否真的有助于解决由新动作所导致的单样本学习难题。
结果 表 6 给出了我们提出的 MemHRNN 和没有使用记忆的 HRNN 的动作建议的前五命中率,这表明引入外部记忆确实能增强 MemHRNN 处理新动作的单样本学习难题的能力。详细的案例分析可参考补充材料。
表 6:MemHRNN 和 HRNN(无记忆)在在线学习阶段的动作建议的前五命中率
结论
在本论文中,我们提出了一种对聊天机器人与人类工作者协作共同完成任务进行建模的学习框架 CoChat。CoChat 的目标是最大化用户满意度和最小化工作者的工作量。此外,CoChat 还将监督学习、在线学习和强化学习结合到了一起,来持续地改进有待学习完成的对话管理器。我们还在这里提出了一种用于实现 CoChat 框架的记忆增强型分层 RNN 模型,即 MemHRNN。特别需要指出,在外部记忆的帮助下,MemHRNN 可以解决由即时引入新动作所导致的单样本学习难题。我们在真实世界数据集上进行了大量实验,结果很好地表明了我们提出的 CoChat 框架和 MemHRNN 模型的有效性。
致谢
本研究得到中国国家自然科学基金(No. 61421003)和微软亚洲研究院合作项目(FY17-RESTHEME-033)的部分支持。
如果您也有论文被 AAAI录用或者对论文编译整理工作感兴趣,欢迎关注AI前线(ai-front),在后台留下联系方式,我们将与您联系,并进行更多交流!
评论