《Sequicity:带有单seq2seq结构的简化面向任务型对话系统》阅读笔记
题目:Sequicity: Simplifying Task-oriented Dialogue Systems with Single Sequence-to-Sequence Architectures
来源:ACL 2018
原文链接:http://www.comp.nus.edu.sg/~xiangnan/papers/acl18-sequicity.pdf
论文代码:https://github.com/WING-NUS/sequicity
转载请注明出处:apex&momoco
Abstract
本文中,作者提出了一个可通过监督学习和强化学习的方式进行优化的基于一个单一Seq2Seq的全新可拓展的框架。同时,作者还提出了一钟关键的文本空间——标注空间,这种摘要空间主要记录了对话语句的标注信息,这允许了任务型对话系统可以通过Seq2Seq来进行建模。
除此之外作者还提出了一个简化版的Two Stage CopyNet实例化,这个模型不但在参数数量上和训练时间长度上显著下降,还在两个数据集CamRest676和KVRET上获得了优于所有pipeline-based方法构建的对话系统的OOV匹配率。
Introduction
由于构建一个任务型对话系统的核心任务就是追踪对话数据中的标注信息,在当时的手法中,一个标注追踪器(belif tracker)的构建意味着要给每一个slot单独构建一个多分类器,而这种方法会在追踪的标注信息种类变多以后使模型复杂度显著升高,同时,这样的方法构建的slot分类器还无法追踪OOV的values,即由于语言的多样性,这样的belif tracker的可拓展性并不好。
由于这样的belif tracker的构筑需要预训练阶段,故这样的任务型对话系统无法运用端到端的设计思维。早期对运用seq2seq模型来构建任务型对话系统的常识就由于缺乏一个较好的belief tracker导致构建对话系统方法较为初级以及任务完成度和回复质量都不好。
因此基于以上诸多问题以及对belef tracker构筑问题在深度学习上的发展研究,作者提出了一个全新的概念——belief span标注空间,通过这个新概念引出了一个新的框架——Sqeuicity,这个框架主要是通过端到端的方法用一个seq2seq模型来实现的。
Sequicity对任务型对话任务的完成主要分为两步:
- 对belief span解码出来的信息进行知识库搜索。
- 通过知识库搜索结果和belief span信息对机器回复进行解码。
作者也通过两个基准数据集的大量实验验证了该方法的有效性。
本论文主要工作:
- 提出了Sequicity的框架,这种端到端的单seq2seq框架兼顾了任务的完成能力和回复的人性化程度。
- 通过一个叫做Two Stage CopyNet (TSCP)的模型来搭建Sequicity,使模型复杂度和训练时间显著下降。
- 在两个大规模数据集上对Sequicity进行了包括OOV场景的实验,均获得了优秀的成绩。
- 作者开源了TSCP的源码以便于他人继续研究Sequicity
Method
Belief Spans for Belief Tracking
与传统的监督分类方法不同,bspan把对话过程中的标注信息记录到一个文本空间中,这个过程运用了seq2seq模型来学习并且可以在对话过程中动态地生成。
bspan有两种领域(filed),一个是information filed(被记作),information filed主要用来保存需要在知识库中搜索的重要的value。另一个是requested filed(被记作),requested filed主要用来保存用户的请求slot,当这个slot被提及时。
bspan的处理方法是相对来说简明扼要的:首先它通过只用一个序列模型极大地简化了复杂的分类器;其次由于固定的结构,它还可以作为隐含信息结构对知识库进行快速搜索。即通过informable slots 的 values直接对数据库的所有实体进行匹配。
The Sequicity Framwork
依照作者的研究,在一轮对话进行中,系统只需要根据上一轮的bspan ,上一轮系统答复 $\boldsymbol{R_{t-1}}$ ,以及本轮用户的输入语句 就可以生成一个新的标注空间belief span 以及本轮的系统答复 ,而不用知晓以往所有对话。
在马尔可夫假设下,Sequicity每轮把 , , 直接拼接(标记为 )作为一组输入序列传入seq2seq模型,以获得 和 作为目标输出序列。
故完整的对话文段可被表示为:
其中 和 在第一轮对话时并不存在,故输入空序列。
这样,在一个统一的seq2seq模型中,Sequicity同时实现了任务完成和响应生成,并且需要注意的而是对 和 的处理是分开的:对于本轮的标注状态的生成仅仅依赖于,而且响应 则取决于 和基于知识库的搜索结果;
主要包括了三个概率:
假设用户请求了一个意大利餐馆
- 多重匹配:在多重匹配的场景中,系统应该提示添加用于消除歧义的约束。(如餐厅价格范围)
- 完全匹配:在完全匹配的场景中,一个目标(即,餐厅)已被找到,系统应通知用户他们所要求的餐厅资料。(例如,餐厅地址)
- 无法匹配:如果没有获得实体,系统应该通知用户,并可能生成一个协作响应来重试另一个约束。(如,进一步询问用户其他需求来寻找符合条件的餐厅)
因此,Sequicity的工作原理可被描述为以下两条公式:
虽然Sequicity对进行联合编码,但对和 的解码却是分开的,其解码主要分为两步:
- 无条件地对按照公式 进行解码,一旦得到,则解码立刻暂停,转而对知识库基于进行搜索,最后得到。
- 得到后,模型继续进行第二步解码,根据公式 依照条件 和 进行解码获得。
Sequicity是一种通用的结构,这种结构可以被任何seq2seq模型完成,只需要在普通seq2seq模型上添加基于 和对响应进行解码的环节即可。
Sequicity Instantiation: A Two Stage CopyNet
作者对Sequicity的实践主要基于一种叫做Two Stage CopyNet(TSCP)的模型,这种模型是由CopyNet改进而来。
目标序列记作 ,其中目标序列的前$m_t$个token作为,其余作为,即:
选择拷贝网络的原因是因为当前问题中,目标序列中往往含有输入序列中的关键词;而与其按照传统的编解码器通过结合隐状态对整个词汇表进行从而获得生成概率最高的词的方法,不如直接从输入序列 中对关键词进行拷贝直接用于目标序列的生成,这样就扩大了解码的输出空间,从原来的变成了。
故第$j$ 个词的最终生成概率就变成了生成概率加拷贝概率之和:
然而再当前问题中,由于和 拥有不同的分布,所以在解码器中设置了两个,一个用于解码,另一个用于解码 。
- 解码第一阶段:
对输入序列采用了一个叫做 的机制来解码,除了传统seq2seq根据对的计算出来的生成概率,还有根据以下式子计算出来的对任意的拷贝概率:
其中 是一个正则项,而 则是对于字符的”拷贝“分数,其主要通过以下公式计算而来:
- 解码第二阶段:
运用预测生成的 的最后一个隐藏状态来初始化预测生成的的隐藏状态,然而预测时主要希望能够显示依赖,故把机制运用在了上,而非上。
通过以下公式可计算拷贝概率以及对的权值:
因为对的关键信息都被整合进了中,这样可以就减少生成响应所需要的信息的搜索空间。
bspan的聚合了历史轮次对话关键信息的做法一方面可以减少生成响应的搜索空间,从原本的到仅仅;另一方面由于bspan每轮对话都通过的固定长度进行回顾,TSCP的时间复杂度下降到了。
- 解码$R_t$ 过程中包括知识库信息 :
由于包含三种情况的信息,但每次只会出现一种情况:匹配一个实体,多个实体或零个实体,则把定作一个三维的向量和拼接后一起传入用于生成隐藏状态:
训练所用的损失函数为标准交叉熵:
Experiment
Dataset
实验采用了两个数据集:Cam676和KVRET
CamRest676里记录的对话主要是餐馆搜索的单一领域,而KVRET则更广泛些,主要包含三个领域:日期计划、天气信息检索和point of interest Navigation(?)。
result
实验主要从任务完成能力、语言生成质量和效率三个方面来评估序列的有效性。评估指标如下所示:
主要包括了:
实验主要对比对象为:
- : 通过pipeline方法实现的带有抽取式标注追踪器的模型
- :NDM模型 + Attention机制 + snapshot learning 机制
- :NDM模型 + 强化学习神经变化推理
- :由一个seq2seq模型构成并且也与外部知识库进行交互,然而却没有标注追踪功能
对于主要是在原始数据集进行测试,由于没有开放源码,作者表示还在复现中。
作者还对本文的Sequicity进行消融测试:
- 在解码过程中去除了的参与
- 在响应生成过程中去除了强化学习环节
- 采用标准Seq2Seq
- 不用belief span的方法记录标记而采用传统的把历史所有轮对话进行拼接送入拷贝网络生成用户信息slots用于知识库搜索和响应生成
OOV 实验
早期的设计会把所有slot的值都预定义在一个belief tracker中,但这种做法在面临用户的请求带有新值时会造成无法匹配的问题。
而运用了拷贝机制,对解决OOV问题比较有优势,故在三个具有代表性的模型:之间设计了一个OOV测试,首先手动构造OOV数据:
例: 把 “ I would like Chinese food . ” 变成
” I would like Chinese_unk food. “
让不同比例的测试数据变成如上描述的OOV数据进行测试,结果如下:
Conclusion
这篇论文提出了两个比较有意义的概念: 和 结构,belief span改变了传统的把用户标记信息当作分类任务来处理的方法,转而变为一种序列填充的问题,极大地优化了存储能力和对于OOV的处理能力;由belief span引出的Sequicity则是首次将任务型对话通过一个seq2seq用端到端的方式实现出来,避开了对belief tracker的与训练,同时文章使用的TSCP通过拷贝机制极大地降低了运算复杂度,并且在OOV问题上能够有很好的匹配能力