论文略读 | Learning End-to-End Goal-Oriented Dialog with Multiple Answers

链接:https://github.com/IBM/permuted-bAbI-dialog-tasks
IBM发表于EMNLP 2018的一篇论文

1. 简介

(1)本文贡献:

  1. 现有端到端网络假设任何时候只有一个正确的下一句回复,而在实际中可以有多个有效话语。本文使用SL+RL的方法来解决这个问题。
  2. 并通过向原始的bAbI对话任务引入多个有效的回复来提供一个新的更有效的测试平台permuted-bAbI,更加贴近真实的对话场景。现有模型的per-dialog accuracy从81.5到30.3。
  3. 同时本文还提出了一个新的模型,并在permuted-bAbI中实现了per-dialog accuracy为47.3%。
  4. 就是End-to-end memory network 加了一个掩码,然后还用了match-type,找不到论文学习和相关的实现,数据集在git上: https://github.com/IBM/permuted-bAbI-dialog-tasks

(2)RL的不足

目前有两种方法可以训练现在的神经对话系统SL和RL。在RL的设置中,对话系统通过实验和错误来学习来自人或模拟器的强化(在最后或在关键对话点出的奖励)
RL的不足:

  1. 很难定义reward
  2. 需要大量的训练互动

(3)本文结构:

  • 第二章和第三章:定义了多重对话问题,并指出了当前学习方法的局限性。
  • 第四章:描述了本文提出的方法,它集合了SL和RL来处理多答案中的下一个对话
  • 第五章:介绍了permuted-bAbI任务,这是我们针对任务型对话提出的新的测试平台
  • 第六章:介绍来了在所有数据集和所有模型中的实验结果

2. 问题介绍

任务型对话:从用户处获得一些例子,与外部KB交互并将信息提供给用户,简单的(表格填写)例如:餐厅预订,酒店预订等。复杂的任务(涉及信息和表格填写任务)例如:IT支持,客户服务等。

问题:
对话系统必须在检索餐馆选项之前从用户处获取美食,位置,人数和价格范围信息。

  • 第一个问题:在原数据集中,询问的顺序不同会被看成两个对话A和B。即回复1和回复2都是对的,但是看做了两个对话框,网络在用A训练的时候,回复2的loss高(实际1和2都是可以的),而用B的时候会出现相反的情况。我们希望模型具有学习1对多的能力,但是每次只能产生一个有效的输出。
  • 第二个问题:可能存在对话框在开头上类似(语义上),但并不是完全相同的对话框

3. 本文模型

  1. SL阶段:对话系统尝试通过模拟数据集来学习如何从数据集执行对话
  2. RL阶段:通过反复试验来学习
  • SL阶段:
    考虑一个对话向量,它具有目前为止对话框中的所有信息,并用于下一句话的生成或检索(编码和产生对话向量s可用memory network(2014)或者HERD(2015))。为了避免系统对其他有效回复作出惩罚,我们的系统仅使用状态向量的一部分来产生下一个特定的话语,这使得仅产生该答案的部分神经网络会受到影响。对话系统可以保留状态向量的其他部分和网络中存储其他可能的正确回复信息的值。通过一个掩码向量m来决定状态向量s的哪一块应该被用来产生这个可能的回复。其中m通过s和实际回复a来学习。
  • RL阶段:
    但在RL阶段,如果对话系统产生的多答案属于任何一组有效的正确答案,则给与奖励。在SL阶段,对话系统可以在给定的时间访问实际答案a来产生掩码,在RL阶段,对话系统仅通过使用对话状态向量s来产生掩码(区别是能否访问答案a)。掩码产生公式如下:
    在这里插入图片描述
    mask产生方法:
    在这里插入图片描述

4. 提出的数据集

permuted-bAbI dialog task*

修改:

  • 任务1:用户请求定义一个查询,包含0-4个必需字段,系统会问问题来填充缺少的字段。修改数据集使其没有特定顺序,询问字段的顺序可以随机。
  • 任务3:对于匹配用户请求的API调用,将从KB检索事实并作为对话历史的一部分提供,系统按照排名(从高到低)为用户提出建议选项。修改数据集使其可以具有相同的排名,但仍按照从高到低来推荐。
  • 任务5:将修改后的任务1和3合并到任务5中。
    下图显示了permuted-bAbI对话的例子。
    在这里插入图片描述
    两个版本:
  • permuted-bAbI dialog task*:包含所有排列组合的完整数据集,train, val, test 和 test-OOV sets每组中大概有11000个对话
  • permutedbAbI dialog task:从完整数据集中随机选取的1000个对话(真实世界中可能没有那么大的数据集)
  • 同时修改了评估方式,只要预测正确多个中的一个即给予reward

5. 实验和数据

(1)实验概述

端到端存储网络使用存储器组件来存储对话历史和短期上下文预测所需要的响应,在original bAbI对话任务上表现良好,并且已经能证明由于基于RNN的其他一些端到端的架构。还使用了匹配类型特征match-type features进行试验(??),这些特征允许模型对实体使用类型信息type-information,如位置,美食,电话等。实验结果是通过选择多次运行中具有最高validation per-turn accuracy的数据来展示的。

(2)memN2N

在这里插入图片描述
参考(知乎用户:呜呜哈):https://zhuanlan.zhihu.com/p/29679742
翻译:来自上下文(对话历史)的给定句子(i)通过其输入表示(ai)存储在存储器中。每个句子(i)也具有相应的输出表示(ci)。为了识别存储器与下一个话语预测的相关性,通过点积计算对存储器的查询的关注,其中(pi)表示等式3中的每个存储器的概率。输出矢量(o)通过加权计算存储器嵌入(ci)的总和以及它们在等式4中的对应概率。输出向量(o)表示上下文的整体嵌入。输出向量(o)和查询(u)一起表示方程式5中的对话状态向量。
在这里插入图片描述
在三个数据集中的基线模型结果如上图。超参数在论文附录中有。
注意:

  1. 如任务5中所示,只要有一个正确则认为响应是正确的
  2. Per-dialog准确度计算所有响应都正确的对话框的百分比,即使有一个对话框响应错误,都有可能导致对话任务失败,不能完成餐厅预定的目标。
  3. 可以看到,在新数据集上,Per-dialog对话成功率非常低,即使加了match-type也只打到30.3%。

(3)本文网络:Mask-memN2N+REINFORCE

本文模型在memN2N基础上加了一个掩码(对对话状态向量s执行额外的屏蔽)

执行过程:
  • SL执行前150个epochs,基于验证集精度选择最佳的模型作为RL的起点。除了生成掩码的网络外,其他所有参数在两个阶段共享。(mask) 在SL阶段,RL阶段的掩码参数被用L2损失进行预训练来匹配SL阶段产生的mask(??)。通过这种方法,当模型在RL阶段转换时,它不需要从头开始探索有效模型,因此也不需要从头开始探索答案,相反,它的探索现在将更偏向于相关答案。
  • 在RL阶段,使用REINFORCE模型来训练,增加了一个额外的损失项来 增加熵 。超参数在附录中有提供。

(4)模型对比

这里match-type是什么呢?

三个模型的对比:
  • memN2N
  • memN2N + all-answers
  • Mask-memN2N

memN2N + all-answers模型中,我们扩展了作为Baseline的memN2N模型,在训练期间提供了所有正确的下一句话的信息,而不是仅提供一个正确的下一句话。该模型在输出层有一个逐元素的sigmoid而不是softmax,允许它预测多个正确的答案,以此来和我们提出的模型进行对比。可以看到,该模型和原模型相比表现不佳,这表明,即使在训练期间已知并使用了所有正确的下一个话语,现有方法也不会提高系统的准确性。

在OOV设置中,所有模型表现都不徍。

在这里插入图片描述

消融实验(ablation study):
  • 没有熵
  • 没有L2 mask预训练
  • 仅有强化学习阶段
    在这里插入图片描述
    可以看到,
    1. 增加RL阶段的熵提升了一点性能
    2. 删除L2掩码预训练时,性能会大幅度下降。在RL阶段,action space很大,在作为检索任务的bAbI对话任务重,可以检索形成动作集的所有候选答案。L2建模预训练将帮助RL阶段从一开始就尝试更相关的动作
    3. RL单独训练表现不佳。只做RL阶段时,系统可能很难通过反复试验来学习所有的东西,特别是因为动作空空间太大。在SL阶段和L2 mask预训练阶段将系统及其参数放在一个良好的位置,RL阶段可以从中提高性能。
    4. 注:检查测试集中SL阶段的性能是无效的,因为SL阶段需要实际答案才能创建掩码,特别是因为action space太大了。(action space是啥??)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值