©PaperWeekly 原创 · 作者|王馨月
学校|四川大学本科生
研究方向|NLP
近期的研究已经在端到端面向任务对话系统中取得了很多的进步,然而,大部分模型还是依赖于大规模的训练数据,且只适用于一些特定的任务如导航和时间安排。这样的模型很难扩展到一个只有少量标注数据的新领域。
目前很少有研究针对如何有效利用来自所有领域的数据去提升模型在各个领域以及未发掘的领域的表现进行研究。
对于这一问题,本文提出了能够充分利用领域知识的方法,并引入了一个共享-私有网络来学习一些共享的和特有的知识。此外,本文还提出了一种新颖的动态融合网络(Dynamic Fusion Network, DF-Net),能够自动地探索目标领域和各个源领域之间的相关性。
结果显示,此模型表现优于现有的多领域对话模型,获得了 SOTA 的效果。此外,在训练数据较少的情况下,模型的迁移能力比之前最好的模型平均超过了 13.9%。
论文标题:Dynamic Fusion Network for Multi-Domain End-to-end Task-Oriented Dialog
论文来源:ACL 2020
论文链接:https://arxiv.org/abs/2004.11019
代码链接:https://github.com/LooperXX/DF-Net
对话系统一般按照涉及的领域分为两类:开放域 (open-domin) 对话系统和面向任务 (task-oriented) 对话系统。面向任务的对话系统用于帮助用户达到特定的目标比如预定餐厅和询问导航。近年来,端到端的方法一般事 Seq2Seq 模型来基于对话历史生成回应。
如图,是一个加入来自 SMD 数据集的基于知识 (Knowledge base, KB) 的面向任务的对话的例子。
虽然已经达到了比较好的效果,但端到端的模型依赖于大量的标注数据,这就导致了模型在一个新拓展的领域上很难利用。而实际上,对于一个新的领域,总是很难收集足够多的数据。这就使得将知识从具有充足标注数据的源领域迁移到一个只有少量标注数据的新领域成为非常重要的问题。
已有的工作可以分为两类:第一类是简单地结合多领域的数据集进行训练,这种方法能够隐含地提取共享的特征却很难有效捕捉领域特有的知识,如图 (a);第二类是在各个领域单独地训练模型,能够很好地捕捉领域特有的知识,却忽视了不同领域间共有的知识,如图 (b)。
本文通过建模不同领域间知识的连接来解决已有方法的局限。已有的一个简单的baseline如图 (c),将领域共享的和领域私有的特征合并在一个共享-私有 (shared-private) 架构中。
这种方法区分了共享以及私有的知识,但还存在两个问题:一是面对一个几乎不具备数据的新领域时,私有模块无法有效提取对应的领域知识;二是这个架构忽略了一些领域子集间细粒度的想关性(比如和天气领域相比,导航领域和规划领域更相关)。
为了解决上述问题,论文进一步提出了一个新颖的 Dynamic Fusion Network (DF-Net),如图 (d)。相比于 shared-private 模型,即将介绍的动态融合模块明确地捕捉领域间的相关性。
特别地,本文用一个门来自动地找到当前输入和所有领域特有知识模型间的相关性,进一步在提取知识时对各个领域安排一个权重。这种机制可以用在 encoder 和 decoder 上,同时还有一个记忆模块来基于特征查询知识。这种模型能够在面对一个几乎没有训练数据的模型时最大程度利用已有的领域,这是 baseline 模型不能达到的。
模型在公开数据集 SMD 和 Multi-WOZ 2.1 上进行了实验,获得 SOTA 效果。同时本文也是第一个在多领域端到端任务型对话系统中探索 shared-private 架构的工作。
模型架构基于 Seq2Seq 对话生成模型。如图所示,模型由三个主要部分构成。首先是一个 shared-private 架构用于学习共享的知识以及对应的领域特有特征,接着用一个动态融合网络来动态地利用所有领域间的相关性提供给下一步细粒度知识迁移。
此外,本文还使用了对抗训练 (adversarial training) 来促使共享模块生成领域共享特征。
2.1 Seq2Seq对话生成
本文将基于知识的面向任务 Seq2Seq 对话生成定义为根据对话历史
和基于的知识 KB
找到系统回应
的过程。在普通的 Seq2Seq 面向任务对话系统中,一般用 LSTM 编码对话历史
来生成共享上下文敏感的隐藏状态
,再在 decoding 过程用 LSTM 预测输出。
区别于传统的 Seq2Seq 文本生成,成功的面向任务对话系统将很大程度上依赖于 KB 查询。因此本文采用了全局-局部的记忆指针网络 (global-to-local memory pointer mechanism, GLMP) 来查询 KB 中的实体。
GLMP: GLMP 是基于 Mem2Seq 的改进,整体框架基于 MemNN,包含 encoder 和 decoder,encoder 编码对话历史,输出全局记忆指针和全局上下文表示。decoder 提出 sketch RNN,先产生 sketch 的未填充 slot 的响应,再根据全局记忆指针过滤外部知识库查找信息,最后用局部记忆指针实例化未填充的 slot。
如图 (a) 外部知识 (EK) 中存储着 B 和 X,其中实体已三元组形式存储。对于一个 k 跳的记忆网络,外部知识是由一个可训练的 embedding 矩阵组 C 组成。接下来的问题就是在 Encoder 和 Decoder 中查询知识了。
在 Encoder 中查询知识采用了最后一个隐藏状态作为初始查询序列向量
,在 k 跳中循环时可以通过与 embedding 矩阵组中的记忆位置利用 Softmax 计算出 k 跳时的 attention 权重,利用 Sigmoid 算出全局记忆指针
,用于 filter 出外部知识用于 decoding 过程中的相关知识。最终模型通过加权记忆位置读取出机器并更新查询向量,计算出编码后的 KB 信息,用于初始化 decoder。
在 Decoder 中查询知识使用了一个用特殊 token 开头的 sketch tag 来标注所有可能的 slot 类型(比如,
表明所有的 Address 类型)。在 decoding 预测输出过程中,用隐藏层和隐藏层的 attentive 表示以及生成的 sketch tag 查询知识。过程类似 Encoder 中查询知识的过程。最终对一系列指示查询的概率取最大值作为生成的词。
2.2 共享-私有 Encoder-Decoder模型
在 2.1 中的模型是在混合多领域数据集中训练的,参数也是在所有领域共享的,这个模型叫做 shared encoder-decoder model。
下一步,是用一个包含了 shared encoder-decoder 的 shared-private 架构来描绘领域共享特征以及对于每个领域构造一个 private 模型来描述领域特有特征。对于每一个
都经过共享和私有的 encoder-decoder。
Enhancing Encoder
对于给出的一个实例以及其领域,shared-private encoder-decoder 生成一个 encoder 向量的序列标记为
,最终的 shared-specific 编码表示为:
此外,作者参照 SHAPED: Shared-Private Encoder-Decoder for Text Style Adaptation
[1]
一文中的方法,对
使用 self-attention 获得上下文表示向量
,用此处的上下文表示向量替换 2.1 初始化 encoder 使用的 encoder 状态,就能够使得查询向量结合了领域共享知识以及领域特有知识。
Enhancing Decoder
在第 t 步 decoder 中,私有及功效隐藏状态为:
同样利用 shared-specific fusion 函数并简化为:
最终,在 decoder 中将最后计算时的隐藏层状态改为经过 attention 后的包含了共享以及领域特有知识的 fused attentive 表示。
共享-私有架构可以捕捉对应的特有特征,但忽略了领域的一些子集之间的细粒度相关性。本文进一步提出了动态融合层来明确地利用所有领域知识。
如图,根据给出的任意领域的实例,首先将其放入多个私有 encoder-decoder 来从所有领域内获取领域特有特征,接着所有领域特有只是经过一个动态领域特有特征融合模块进行融合,进一步通过一个 shared-specific 特征融合获得 shared-specific 特征。
动态领域特有特征融合是指给出来自所有领域的领域特有特征,利用一个多专家 (Mixture-of-Experts mechanism, MoE) 机制动态地为当前 encoder 和 decoder 的输入收纳所有领域特有知识。
MoE:MoE 的思想是训练多个神经网络(也就是多个专家),每个神经网络(专家)被指定应用于数据集的不同部分。模型还有一个 managing neural net 用来判断一个输入应该交给哪一个神经网络来处理。
对于 decoding 过程第 t 步的 fusion 过程论文给出了详细描述,如下:
在 decoding 第 t 步时给出所有领域特征表示
,其中
表示领域的数量。接着将领域特征表示
作为 expert gate
的输入,输出一个度量各个领域与当前输入 token 的相关性的 softmax score
。这一步通过一个简单的前馈层达到:
最终的领域特有特征向量是所有领域输出的混合,由 expert gate 的权重
决定,可以写作:
在训练过程中,使用交叉熵损失作为 expert gate 预测回应的监视信号,
可以看作多个私有 decoder 预测的第 t 个 token 的领域概率分布。因此,更准确的专家预测结果为:
其中
为 encoder-decoder 的参数,
为 MoE 模块的参数。按照同样的方法可以得到 encoder 的预测结果
,最终得到:
用于促使源领域的实例使用正确的专家,然后每一个专家学习对应的领域特有特征。当一个新领域包含很少或没有标记数据是,expert gate 就能够自动地计算不同领域与目标领域间的相关性,接着更好地将知识从不同领域的 encoder 和 decoder 模块中进行迁移。
共享-特有特征融合 (Shared-Specific Feature Fusion) 直接应用了前文介绍过的 shiprivate 操作来融合共享以及最终的领域特有特征:
对抗训练用在共享 encoder 和 decoder 模块来促使模型学习领域私有特征,在领域分类器层后引入了一个梯度对抗层。将对抗训练的损失标记为
,最终动态融合网络的损失函数定义为:
其中
和 GLMP 中的用法一样,
、
和
是超参数。
实验
实验在 SMD 和 Multi-WOZ 2.1.数据集上进行:
将 Mem2Seq、DSR、KB-retreiver 和 GLMP 作为 baseline,实验结果如下:
实验结果显示:1) 基础的 shared-private 架构表现就在所有数据集上超过了 GLMP,这说明结合领域共享与领域特有知识相比只是利用领域共享知识能更好地提升模型表现。2) 本文提出的架构在 SMD 和 Multi-WOZ 2.1.达到了 SOTA 性能。
论文作者还在 SMD 数据集上做了消融实验 (ablation experiment) 来确定给出一个含有很少标注数据的新领域时模型的迁移能力。如图,w/o 表示去除模型的某部分进行的实验。结果证明领域共享特征和领域特有特征对于模型在领域内的表现都是有增强作用的。
论文作者还做了低资源设定下的实验,如下图,结果证明本文提出的模型在不同资源情况都超过了 GLMP,在 5% 数据的情况下,在所有领域平均超过 GLMP13.9%。且本文的模型在仅用 5% 的数据训练情况下表现依旧由于 GLMP 用 50% 的数据训练的结果,这也进一了模型能够有效的迁移到低资源新领域。
论文作者还为了方便读者理解动态融合层,在 5% 的低资源情况下,将每个领域 gate 的分布做了可视化,如图。一个领域的列包含 100 个例子,每一行是其对应的专家值(也可以理解为行列对应的线条颜色越深两个领域越相关,可迁移的知识越多)。
这篇文章主要是将 shared-private 应用在了多领域对话任务中,而 shared-private 的思想此前在多领域文本分类和文本风格转换上已经有了相关工作,本文的实验结果表明,这种思想在多领域任务型对话方面的应用也能取得很好的效果。
本文还提出了动态融合网络很有效地捕捉了领域间更细粒度的相关性,在低资源情况下也取得了很好的效果。代码开源,非常值得参考。
[1] https://www.aclweb.org/anthology/N18-1138.pdf
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得或技术干货。我们的目的只有一个,让知识真正流动起来。
📝 来稿标准:
• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)
• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接
• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志
📬 投稿邮箱:
• 投稿邮箱:hr@paperweekly.site
• 所有文章配图,请单独在附件中发送
• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关于PaperWeekly
PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。